@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap";:root{--bg-primary:#f8fafc;--bg-sidebar:#0f172a;--sidebar-active:#1e293b;--text-sidebar:#94a3b8;--text-sidebar-active:#f8fafc;--accent-primary:#4f46e5;--accent-hover:#4338ca;--accent-light:#e0e7ff;--success:#10b981;--success-light:#d1fae5;--warning:#f59e0b;--warning-light:#fef3c7;--danger:#ef4444;--danger-light:#fee2e2;--info:#0ea5e9;--info-light:#e0f2fe;--text-main:#0f172a;--text-muted:#64748b;--text-white:#fff;--border-color:#e2e8f0;--card-bg:#fff;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-glow:0 0 20px #4f46e526;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--font-heading:"Outfit", "Inter", sans-serif;--font-body:"Inter", sans-serif;--transition-fast:.15s ease;--transition-normal:.25s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background-color:var(--bg-primary);color:var(--text-main);-webkit-font-smoothing:antialiased;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:600}.app-container{min-height:100vh;display:flex}.sidebar{width:280px;color:var(--text-sidebar);-webkit-user-select:none;user-select:none;z-index:50;background:linear-gradient(#0b1329 0%,#0f172a 100%);border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;padding:20px 14px;transition:width .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative;box-shadow:4px 0 24px #00000040}.sidebar.collapsed{width:84px;padding:20px 10px}.sidebar-header{border-bottom:1px solid #ffffff12;justify-content:space-between;align-items:center;margin-bottom:20px;padding:4px 8px 20px;display:flex}.sidebar-brand{align-items:center;gap:12px;text-decoration:none;display:flex;overflow:hidden}.brand-logo{width:44px;min-width:44px;height:44px;color:var(--text-white);background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%);border-radius:12px;justify-content:center;align-items:center;transition:transform .25s,box-shadow .25s;display:flex;position:relative;box-shadow:0 0 20px #6366f173}.brand-logo:hover{transform:scale(1.05)rotate(-2deg);box-shadow:0 0 25px #7c3aed99}.brand-info{white-space:nowrap;opacity:1;flex-direction:column;transition:opacity .2s;display:flex}.sidebar.collapsed .brand-info{opacity:0;pointer-events:none;width:0}.brand-info h2{color:#fff;letter-spacing:.8px;font-size:15px;font-weight:800;line-height:1.2;font-family:var(--font-heading);background:linear-gradient(90deg,#fff 0%,#cbd5e1 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text}.brand-info p{color:#818cf8;letter-spacing:.3px;font-size:11px;font-weight:600}.sidebar-toggle-btn{color:#94a3b8;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;transition:all .2s;display:flex}.sidebar-toggle-btn:hover{color:#fff;background:#ffffff1f;transform:scale(1.08)}.sidebar.collapsed .sidebar-toggle-btn{margin:0 auto}.sidebar-nav{flex:1;padding-right:2px;overflow:hidden auto}.sidebar-nav::-webkit-scrollbar{width:4px}.sidebar-nav::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:4px}.sidebar-group{margin-bottom:20px}.sidebar-group-title{text-transform:uppercase;letter-spacing:1.2px;color:#64748b;white-space:nowrap;text-overflow:ellipsis;margin-bottom:8px;padding:0 12px;font-size:10px;font-weight:700;transition:opacity .2s;overflow:hidden}.sidebar.collapsed .sidebar-group-title{opacity:0;height:0;margin:0;padding:0}.sidebar-menu{flex-direction:column;gap:4px;list-style:none;display:flex}.parent-menu-item{color:#94a3b8;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;width:100%;margin-top:4px;padding:11px 14px;font-size:14px;font-weight:600;transition:all .2s;display:flex}.parent-menu-item:hover{color:#f1f5f9;background:#ffffff0a}.parent-menu-item .chevron-icon{color:#64748b;margin-left:auto;transition:transform .25s}.parent-menu-item.open .chevron-icon{color:#cbd5e1;transform:rotate(180deg)}.sidebar.collapsed .parent-menu-item{justify-content:center;gap:0;padding:12px}.sidebar.collapsed .parent-menu-item .chevron-icon{display:none}.submenu-list{border-left:1.5px solid #ffffff0f;flex-direction:column;gap:2px;margin-top:2px;margin-left:23px;padding-left:12px;list-style:none;transition:all .3s;display:flex}.sidebar.collapsed .submenu-list{border-left:none;margin-left:0;padding-left:0}.submenu-item{color:#8a99ad;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:9px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.submenu-item:hover{color:#f8fafc;background:#ffffff0a}.submenu-item.active{color:#fff;background:linear-gradient(90deg,#4f46e52e 0%,#6366f10a 100%);font-weight:600;box-shadow:inset 3px 0 #6366f1}.submenu-item.active .menu-item-icon{color:#818cf8}.submenu-placeholder{color:#475569;white-space:nowrap;padding:8px 12px;font-size:11.5px;font-style:italic}.sidebar.collapsed .submenu-placeholder{display:none}.menu-item{color:#94a3b8;cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;width:100%;padding:10px 14px;font-size:13.5px;font-weight:500;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative;overflow:hidden}.sidebar.collapsed .menu-item{justify-content:center;gap:0;padding:12px}.menu-item-icon{flex-shrink:0;justify-content:center;align-items:center;transition:transform .2s,color .2s;display:flex}.menu-item-text{white-space:nowrap;text-overflow:ellipsis;flex:1;transition:opacity .2s;overflow:hidden}.sidebar.collapsed .menu-item-text{display:none}.menu-item:hover{color:#f1f5f9;background:#ffffff0d}.menu-item:hover .menu-item-icon{color:#a5b4fc;transform:scale(1.15)}.menu-item.active{color:#fff;background:linear-gradient(90deg,#4f46e538 0%,#6366f10f 100%);font-weight:600;box-shadow:inset 3px 0 #6366f1}.menu-item.active .menu-item-icon{color:#818cf8;filter:drop-shadow(0 0 8px #6366f199)}.menu-badge{letter-spacing:.5px;text-transform:uppercase;border-radius:20px;flex-shrink:0;align-items:center;gap:4px;padding:2px 7px;font-size:9.5px;font-weight:700;display:flex}.sidebar.collapsed .menu-badge{display:none}.badge-live{color:#34d399;background:#10b98126;border:1px solid #10b9814d}.badge-wa{color:#4ade80;background:#22c55e26;border:1px solid #22c55e4d}.pulse-dot{background-color:#34d399;border-radius:50%;width:6px;height:6px;animation:1.8s infinite pulse-glow;box-shadow:0 0 8px #34d399}@keyframes pulse-glow{0%{opacity:.7;transform:scale(.95);box-shadow:0 0 #34d399b3}70%{opacity:1;transform:scale(1.1);box-shadow:0 0 0 6px #34d39900}to{opacity:.7;transform:scale(.95);box-shadow:0 0 #34d39900}}.sidebar-widget{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff08;border:1px solid #ffffff0f;border-radius:12px;flex-direction:column;gap:10px;margin-top:12px;margin-bottom:12px;padding:12px;display:flex}.sidebar.collapsed .sidebar-widget{align-items:center;padding:8px 4px}.widget-clock{align-items:center;gap:10px;display:flex}.widget-clock-icon{color:#6366f1}.widget-clock-details{flex-direction:column;display:flex}.sidebar.collapsed .widget-clock-details{display:none}.widget-clock-time{color:#f8fafc;font-size:13px;font-weight:700;font-family:var(--font-heading)}.widget-clock-date{color:#64748b;font-size:10px}.widget-status{color:#cbd5e1;border-top:1px solid #ffffff0d;align-items:center;gap:8px;padding-top:8px;font-size:11px;display:flex}.sidebar.collapsed .widget-status{border-top:none;justify-content:center;padding-top:0}.sidebar.collapsed .widget-status span{display:none}.status-indicator-dot{background:#10b981;border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:0 0 10px #10b981cc}.sidebar-footer{text-align:center;color:#475569;border-top:1px solid #ffffff0d;padding-top:12px;font-size:11px}.sidebar.collapsed .sidebar-footer p{font-size:9px}.main-content{flex:1;height:100vh;padding:32px 40px;overflow-y:auto}.page-header{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.page-title h1{color:var(--text-main);letter-spacing:-.5px;font-size:26px;font-weight:700}.page-title p{color:var(--text-muted);margin-top:4px;font-size:14px}.card{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:transform var(--transition-fast), box-shadow var(--transition-fast);margin-bottom:24px;padding:24px}.card-title{color:var(--text-main);align-items:center;gap:8px;margin-bottom:16px;font-size:16px;font-weight:600;display:flex}.grid-2{grid-template-columns:repeat(2,1fr);gap:24px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.grid-main-sidebar{grid-template-columns:2fr 1fr;gap:24px;display:grid}.form-group{margin-bottom:18px}.form-label{color:var(--text-main);margin-bottom:6px;font-size:13px;font-weight:500;display:block}.form-control{border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;font-size:14px;font-family:var(--font-body);transition:var(--transition-fast);background-color:#f8fafc;outline:none;padding:10px 14px}.form-control:focus{border-color:var(--accent-primary);background-color:var(--text-white);box-shadow:0 0 0 3px #4f46e51f}select.form-control{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%2364748b' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;background-size:1.15rem;padding-right:2.5rem}select.form-control:hover{background-color:#f1f5f9;border-color:#cbd5e1}select.form-control:focus{background-color:var(--text-white)}.btn{border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font-body);transition:var(--transition-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 18px;display:inline-flex}.btn-primary{background-color:var(--accent-primary);color:var(--text-white)}.btn-primary:hover{background-color:var(--accent-hover);box-shadow:0 4px 12px #4f46e533}.btn-secondary{background-color:var(--text-white);border-color:var(--border-color);color:var(--text-muted)}.btn-secondary:hover{background-color:var(--bg-primary);color:var(--text-main)}.btn-danger{background-color:var(--danger);color:var(--text-white)}.btn-danger:hover{background-color:#e11d48}.table-container{border:1px solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--text-white);overflow-x:auto}.table{border-collapse:collapse;text-align:left;width:100%;font-size:14px}.table th{color:var(--text-muted);border-bottom:1px solid var(--border-color);background-color:#f8fafc;padding:14px 16px;font-weight:600}.table td{border-bottom:1px solid var(--border-color);color:var(--text-main);padding:14px 16px}.table tr:last-child td{border-bottom:none}.table tr:hover td{background-color:#f8fafc}.badge{border-radius:9999px;align-items:center;gap:4px;padding:4px 10px;font-size:12px;font-weight:500;display:inline-flex}.badge-hadir{background-color:var(--success-light);color:var(--success)}.badge-sakit{background-color:var(--info-light);color:var(--info)}.badge-izin{background-color:var(--warning-light);color:var(--warning)}.badge-alfa{background-color:var(--danger-light);color:var(--danger)}.badge-masbuq{color:#d97706;background-color:#fef3c7}.badge-haid{color:#d946ef;background-color:#fae8ff}.badge-istihadhoh{color:#475569;background-color:#f1f5f9}@keyframes pulse{0%{transform:scale(.98);box-shadow:0 0 #4f46e566}70%{transform:scale(1);box-shadow:0 0 0 10px #4f46e500}to{transform:scale(.98);box-shadow:0 0 #4f46e500}}@keyframes slideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-slide{animation:.3s cubic-bezier(.16,1,.3,1) forwards slideIn}.time-indicator{font-family:var(--font-heading);border-radius:var(--radius-sm);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);background:#fff;align-items:center;gap:12px;padding:8px 16px;display:flex}.time-clock{color:var(--accent-primary);font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.time-date{color:var(--text-muted);border-left:1px solid var(--border-color);padding-left:12px;font-size:13px}.scanner-container{border-radius:var(--radius-lg);text-align:center;color:#fff;transition:all var(--transition-normal);background:radial-gradient(circle,#1e1b4b 0%,#030712 100%);border:1px solid #6366f159;flex-direction:column;justify-content:center;align-items:center;padding:50px 30px;display:flex;position:relative;overflow:hidden;box-shadow:0 15px 35px #0000004d,0 0 30px #4f46e526,inset 0 0 20px #4f46e51a}.scanner-container.enroll-mode{background:radial-gradient(circle,#581c87 0%,#030712 100%);border-color:#d946ef73;box-shadow:0 15px 35px #0000004d,0 0 30px #d946ef33,inset 0 0 20px #d946ef1a}.scanner-circle{z-index:2;width:140px;height:140px;transition:all var(--transition-normal);background:#6366f114;border:2px dashed #6366f166;border-radius:50%;justify-content:center;align-items:center;margin-bottom:24px;display:flex;position:relative;box-shadow:0 0 25px #6366f133}.scanner-container.enroll-mode .scanner-circle{background:#d946ef14;border-style:solid;border-color:#d946ef80;box-shadow:0 0 25px #d946ef59}.scanner-laser{z-index:3;background:linear-gradient(90deg,#4f46e500 0%,#6366f1 50%,#4f46e500 100%);height:4px;animation:2.5s ease-in-out infinite laserScan;position:absolute;left:0;right:0;box-shadow:0 0 12px #6366f1d9}.scanner-container.enroll-mode .scanner-laser{background:linear-gradient(90deg,#d946ef00 0%,#f04edb 50%,#d946ef00 100%);animation:1.8s ease-in-out infinite laserScan;box-shadow:0 0 12px #f04edbd9}.scanner-ripple{z-index:1;background-color:#4f46e508;border-radius:50%;width:260px;height:260px;animation:3s cubic-bezier(.215,.61,.355,1) infinite pulse-ring;position:absolute}.scanner-container.enroll-mode .scanner-ripple{background-color:#d946ef0a;animation:2.2s cubic-bezier(.215,.61,.355,1) infinite pulse-ring}@keyframes laserScan{0%{opacity:0;top:10%}15%{opacity:1}85%{opacity:1}to{opacity:0;top:90%}}@keyframes pulse-ring{0%{opacity:1;transform:scale(.65)}80%,to{opacity:0;transform:scale(1.1)}}
