body { font-family: 'Inter', sans-serif; background: #f8fafc; }
.glass { background: rgba(255, 255, 255, 0.75); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.4); }
.sidebar-active { background: rgba(99, 102, 241, 0.12); border-left: 3px solid #6366f1; }
.card { transition: transform 0.3s ease, box-shadow 0.3s ease; }
.card:hover { transform: translateY(-4px); box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1); }
.animate-fade { animation: fadeIn 0.6s ease-out forwards; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.dot-pulse::before { content: ''; position: absolute; top: 50%; left: -20px; width: 8px; height: 8px; background: #6366f1; border-radius: 50%; animation: pulse 1.5s infinite; }
@keyframes pulse { 0%, 100% { opacity: 0; } 50% { opacity: 1; } }
.status-present { @apply bg-green-100 text-green-800; }
.status-late { @apply bg-yellow-100 text-yellow-800; }
.status-absent { @apply bg-red-100 text-red-800; }
.status-pass { @apply bg-green-100 text-green-800; }
.status-fail { @apply bg-red-100 text-red-800; }
.status-pending { @apply bg-gray-100 text-gray-800; }
.zebra-table tr:nth-child(even) { @apply bg-gray-50; }
.view-container { display: none; }
#dashboardView { display: block; }
.nav-active { @apply sidebar-active bg-indigo-50; }

/* MOBILE MENU FIXES */
.sidebar {
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: 280px;
    transform: translateX(-100%);
    transition: transform 0.3s ease-in-out;
    z-index: 100;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(12px);
    border-right: 1px solid rgba(255, 255, 255, 0.4);
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.1);
}
.sidebar.open {
    transform: translateX(0);
}

/* MOBILE OVERLAY */
.mobile-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.5);
    backdrop-filter: blur(4px);
    z-index: 99;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
}
.mobile-overlay.show {
    opacity: 1;
    visibility: visible;
}

/* Desktop styles */
@media (min-width: 1024px) {
    .sidebar {
        transform: translateX(0) !important;
        position: fixed;
        width: 16rem;
    }
    .mobile-overlay {
        display: none !important;
    }
    #mobile-menu-btn {
        display: none;
    }
}