@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&display=swap";:root{--font-sans:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--bg-app:#f4f7f5;--bg-card:#fff;--bg-sidebar:#061f14;--bg-sidebar-hover:#0c3321;--border-color:#e2e8f0;--text-main:#0f172a;--text-muted:#64748b;--text-light:#94a3b8;--text-sidebar:#9eb6a7;--text-sidebar-active:#fff;--primary:#00923f;--primary-hover:#073;--primary-light:#e8f8ef;--primary-border:#9de0ba;--primary-dark:#005a26;--brand-red:#db241c;--brand-red-hover:#b91a13;--brand-red-light:#fef2f2;--brand-red-border:#fca5a5;--brand-gold:#d97706;--brand-gold-light:#fefce8;--secondary:#0284c7;--secondary-hover:#0369a1;--success:#00923f;--success-light:#e8f8ef;--success-text:#005a26;--warning:#d97706;--warning-light:#fef3c7;--warning-text:#92400e;--danger:#db241c;--danger-light:#fee2e2;--danger-text:#991b1b;--info:#0284c7;--info-light:#e0f2fe;--info-text:#0369a1;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000000d, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #00000014;--shadow-primary:0 4px 14px 0 #00923f40;--transition:all .2s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}.app-container{width:100vw;min-height:100vh;display:flex;overflow-x:hidden}.sidebar{background-color:var(--bg-sidebar);width:260px;color:var(--text-sidebar);transition:var(--transition);z-index:10;border-right:1px solid #ffffff0d;flex-direction:column;flex-shrink:0;display:flex;position:relative}.sidebar-header{border-bottom:1px solid #ffffff0d;align-items:center;gap:12px;padding:24px;display:flex}.sidebar-logo-icon{color:#fff;border-radius:var(--radius-md);background-color:#0000;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.2rem;font-weight:700;display:flex}.sidebar-logo-icon img{object-fit:contain;width:100%;height:100%}.sidebar-logo-text h1{color:#fff;letter-spacing:-.025em;font-size:1.1rem;font-weight:700;line-height:1.2}.sidebar-logo-text span{color:var(--text-light);font-size:.75rem}.sidebar-menu{flex-direction:column;flex:1;gap:6px;padding:20px 12px;display:flex;overflow-y:auto}.sidebar-menu::-webkit-scrollbar{width:4px}.sidebar-menu::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.menu-item-group{margin-top:14px;margin-bottom:6px}.menu-group-title{text-transform:uppercase;letter-spacing:.05em;color:#ffffff4d;margin-bottom:6px;padding-left:12px;font-size:.72rem;font-weight:700}.menu-item{border-radius:var(--radius-sm);color:var(--text-sidebar);cursor:pointer;transition:var(--transition);align-items:center;gap:12px;padding:10px 12px;font-size:.9rem;font-weight:500;text-decoration:none;display:flex}.menu-item:hover{background-color:var(--bg-sidebar-hover);color:var(--text-sidebar-active)}.menu-item.active{color:var(--text-sidebar-active);border-left:3.5px solid var(--brand-red);background:linear-gradient(90deg,#00923f 0%,#073 100%);font-weight:600;box-shadow:0 2px 8px #00000040}.menu-item svg{opacity:.8;width:18px;height:18px}.main-viewport{flex-direction:column;flex:1;min-width:0;height:100vh;display:flex;overflow:hidden}.main-header{background-color:var(--bg-card);border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;height:70px;padding:0 28px;display:flex}.header-title-area h2{letter-spacing:-.02em;font-size:1.25rem;font-weight:700}.header-right-area{align-items:center;gap:18px;display:flex}.role-switcher{background-color:var(--bg-app);border-radius:var(--radius-md);border:1px solid var(--border-color);align-items:center;gap:8px;padding:6px 12px;display:flex}.role-switcher label{color:var(--text-muted);text-transform:uppercase;font-size:.75rem;font-weight:600}.role-select{font-family:var(--font-sans);color:var(--primary);cursor:pointer;background:0 0;border:none;outline:none;font-size:.85rem;font-weight:600}.user-profile-badge{align-items:center;gap:10px;display:flex}.user-avatar{background-color:var(--primary-light);width:36px;height:36px;color:var(--primary);border:1px solid var(--primary-border);border-radius:50%;justify-content:center;align-items:center;font-size:.9rem;font-weight:600;display:flex}.user-meta{flex-direction:column;display:flex}.user-name{font-size:.85rem;font-weight:600}.user-role{color:var(--text-muted);font-size:.72rem}.content-body{flex:1;padding:28px;overflow-y:auto}.dashboard-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;margin-bottom:28px;display:grid}.kpi-card{background-color:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);transition:var(--transition);flex-direction:column;padding:24px;display:flex;position:relative;overflow:hidden}.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.kpi-icon-wrapper{opacity:.05;color:var(--text-main);position:absolute;bottom:-10px;right:-10px;transform:scale(1.8)}.kpi-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.025em;margin-bottom:12px;font-size:.85rem;font-weight:600}.kpi-value{letter-spacing:-.03em;margin-bottom:6px;font-size:1.85rem;font-weight:700;line-height:1.1}.kpi-change{align-items:center;gap:4px;font-size:.75rem;display:flex}.kpi-change.positive{color:var(--success-text);background-color:var(--success-light);border-radius:4px;width:fit-content;padding:2px 6px}.dashboard-actions-grid{grid-template-columns:2fr 1fr;gap:24px;display:grid}.card{background-color:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);margin-bottom:24px;overflow:hidden}.card-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.card-header h3{align-items:center;gap:10px;font-size:1rem;font-weight:700;display:flex}.card-body{padding:24px}.quick-actions-list{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.action-btn-card{border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-app);cursor:pointer;color:inherit;transition:var(--transition);flex-direction:column;align-items:flex-start;gap:8px;padding:16px;text-decoration:none;display:flex}.action-btn-card:hover{background-color:var(--primary-light);border-color:var(--primary-border);box-shadow:0 4px 12px #00923f1a}.action-btn-card:hover svg{color:var(--primary);transform:translate(2px)}.action-btn-card svg{width:22px;height:22px;color:var(--text-muted);transition:var(--transition)}.action-btn-title{font-size:.85rem;font-weight:600}.action-btn-desc{color:var(--text-muted);font-size:.72rem}.table-wrapper{border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-card);margin-bottom:16px;overflow-x:auto}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:.85rem}.data-table th{color:var(--text-muted);border-bottom:1px solid var(--border-color);white-space:nowrap;background-color:#f8fafc;padding:14px 18px;font-weight:600}.data-table td{border-bottom:1px solid var(--border-color);color:var(--text-main);white-space:nowrap;padding:14px 18px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background-color:#f8fafc}.payroll-table th{text-transform:uppercase;letter-spacing:.02em;padding:10px 12px;font-size:.75rem}.payroll-table td{padding:10px 12px;font-size:.8rem}.payroll-totals-row{font-weight:700;background-color:#f1f5f9!important}.payroll-totals-row td{border-top:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);color:var(--text-main)}.badge{text-transform:uppercase;letter-spacing:.025em;border-radius:9999px;align-items:center;width:fit-content;padding:2px 8px;font-size:.7rem;font-weight:600;display:inline-flex}.badge-success{background-color:var(--success-light);color:var(--success-text)}.badge-danger{background-color:var(--danger-light);color:var(--danger-text)}.badge-warning{background-color:var(--warning-light);color:var(--warning-text)}.badge-info{background-color:var(--info-light);color:var(--info-text)}.btn{border-radius:var(--radius-sm);font-family:var(--font-sans);cursor:pointer;transition:var(--transition);border:1px solid #0000;outline:none;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-size:.85rem;font-weight:600;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%);color:#fff;border-color:var(--primary-hover);box-shadow:0 2px 5px #00923f40}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg, var(--primary-hover) 0%, var(--primary-dark) 100%);box-shadow:0 4px 10px #00923f59}.btn-secondary{border-color:var(--border-color);color:var(--text-main);background-color:#fff}.btn-secondary:hover:not(:disabled){background-color:var(--bg-app);border-color:var(--primary-border);color:var(--primary)}.btn-danger{background-color:var(--brand-red-light);color:var(--brand-red);border-color:var(--brand-red-border)}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg, var(--brand-red) 0%, var(--brand-red-hover) 100%);color:#fff;box-shadow:0 4px 10px #db241c4d}.btn-sm{border-radius:4px;padding:4px 8px;font-size:.75rem}.btn:disabled{opacity:.5;cursor:not-allowed}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:24px;display:grid}.form-group{flex-direction:column;gap:6px;display:flex}.form-group-full{grid-column:1/-1}.form-label{color:var(--text-muted);font-size:.8rem;font-weight:600}.form-control{font-family:var(--font-sans);border-radius:var(--radius-sm);border:1px solid var(--border-color);transition:var(--transition);color:var(--text-main);background-color:#fff;outline:none;width:100%;padding:8px 12px;font-size:.875rem}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px #00923f2e}.form-row{align-items:center;gap:12px;display:flex}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background-color:#0f172a99;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background-color:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border-color);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-width:600px;max-height:90vh;display:flex;overflow-y:auto}.modal-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-header h3{font-size:1.1rem;font-weight:700}.modal-close-btn{cursor:pointer;color:var(--text-light);background:0 0;border:none}.modal-close-btn:hover{color:var(--text-main)}.modal-body{padding:24px}.modal-footer{border-top:1px solid var(--border-color);background-color:#f8fafc;justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.filter-panel{background-color:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);margin-bottom:24px;padding:20px}.filter-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));align-items:flex-end;gap:16px;display:grid}.salary-slip-container{border-radius:var(--radius-md);background-color:#fff;border:1px solid #d1d5db;max-width:800px;margin:0 auto;padding:30px}.salary-slip-header{text-align:center;border-bottom:2px solid #0f172a;margin-bottom:24px;padding-bottom:16px}.salary-slip-title{text-transform:uppercase;margin-top:6px;font-size:1.25rem;font-weight:700}.salary-slip-meta{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:24px;font-size:.85rem;display:grid}.salary-slip-columns{grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:24px;display:grid}.salary-slip-section-title{background-color:#f1f5f9;border-bottom:1px solid #cbd5e1;margin-bottom:10px;padding:6px 12px;font-size:.85rem;font-weight:700}.salary-slip-table{border-collapse:collapse;width:100%;font-size:.85rem}.salary-slip-table td{border-bottom:1px solid #e2e8f0;padding:8px 12px}.salary-slip-table tr.total-row td{border-top:1.5px solid #0f172a;border-bottom:2px double #0f172a;font-weight:700}.salary-slip-footer{justify-content:space-between;align-items:flex-end;margin-top:40px;font-size:.85rem;display:flex}.slip-signature-box{text-align:center;border-top:1px solid #94a3b8;width:180px;padding-top:6px}.svg-chart-container{border-bottom:1px solid var(--border-color);justify-content:center;align-items:flex-end;gap:16px;height:200px;padding-top:20px;display:flex}.svg-chart-bar-group{flex-direction:column;flex:1;align-items:center;display:flex}.svg-chart-bar{background-color:var(--primary);width:100%;transition:var(--transition);border-radius:4px 4px 0 0;min-height:4px}.svg-chart-bar:hover{opacity:.8}.svg-chart-label{color:var(--text-muted);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:60px;margin-top:8px;font-size:.7rem;overflow:hidden}.audit-logs-list{flex-direction:column;gap:12px;display:flex}.audit-log-item{border:1px solid var(--border-color);border-radius:var(--radius-sm);background-color:var(--bg-app);justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 16px;display:flex}.audit-log-meta{flex-direction:column;gap:4px;min-width:180px;display:flex}.audit-log-user{font-size:.8rem;font-weight:600}.audit-log-time{color:var(--text-muted);font-size:.72rem}.audit-log-content{flex:1}.audit-log-action{margin-bottom:2px;font-size:.85rem;font-weight:700}.audit-log-desc{color:var(--text-muted);font-size:.8rem}.attendance-input{text-align:center;border:1px solid var(--border-color);border-radius:4px;width:50px;padding:4px;font-weight:600}@media (width<=1024px){.dashboard-actions-grid{grid-template-columns:1fr}}@media (width<=768px){.app-container{flex-direction:column}.sidebar{border-bottom:1px solid #ffffff0d;border-right:none;width:100%}.main-viewport{height:auto;overflow:visible}.content-body{padding:16px}}@media print{@page{size:auto;margin:8mm 10mm 10mm}*,:before,:after{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;box-sizing:border-box!important}.no-print,.sidebar,.main-header,.filter-panel,.role-switcher,.modal-header,.modal-close-btn,button,.btn,nav,aside,input[type=checkbox]{display:none!important}html,body,#root,.app-container,.main-viewport,.content-body{color:#0f172a!important;width:100%!important;min-width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;box-shadow:none!important;background:#fff!important;border:none!important;margin:0!important;padding:0!important;font-size:10pt!important;position:static!important;overflow:visible!important}.modal-overlay{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;z-index:auto!important;background:0 0!important;width:100%!important;height:auto!important;margin:0!important;padding:0!important;display:block!important;position:static!important;overflow:visible!important}.modal-content,.modal-body{width:100%!important;max-width:100%!important;max-height:none!important;box-shadow:none!important;background:0 0!important;border:none!important;margin:0!important;padding:0!important;display:block!important;position:static!important;overflow:visible!important}.printable-statement,.salary-slip-container,.certificate-sheet{page-break-inside:auto;box-shadow:none!important;background-color:#fff!important;border-radius:0!important;width:100%!important;max-width:100%!important;margin:0 0 16px!important;padding:0!important;display:block!important;position:static!important}.certificate-sheet{border:8px double #00923f!important;margin:0 auto 20px!important;padding:24px 28px!important}.salary-slip-container{border:1.5px solid #0f172a!important;margin:0 auto 20px!important;padding:16px 20px!important}.table-responsive{border:none!important;width:100%!important;margin:0!important;padding:0!important;overflow:visible!important}table.table,table{border-collapse:collapse!important;page-break-inside:auto!important;width:100%!important}thead{display:table-header-group!important}tfoot{display:table-footer-group!important}tr{page-break-inside:avoid!important;page-break-after:auto!important}th,td{color:#0f172a!important;border:1px solid #cbd5e1!important;padding:5px 6px!important;font-size:8pt!important}th{background-color:#f1f5f9!important;font-weight:700!important}.badge{border:1px solid #cbd5e1!important;padding:2px 6px!important;font-size:7.5pt!important}.page-break-always{page-break-after:always!important;break-after:page!important}}
