@charset "UTF-8";:root{--primary-color:#dc3545;--primary-dark:#c82333;--primary-light:#e85d6d;--primary-gradient:linear-gradient(135deg,#dc3545,#c82333);--secondary-color:#6c757d;--success-color:#28a745;--warning-color:#ffc107;--danger-color:#dc3545;--info-color:#17a2b8;--text-primary:#333;--text-secondary:#666;--text-muted:#999;--bg-light:#f8f9fa;--bg-white:#fff;--bg-gray:#e9ecef}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.permission-denied{align-items:center;display:flex;justify-content:center;min-height:60vh;padding:2rem}.permission-denied-content{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000001a;max-width:500px;padding:3rem;text-align:center}.permission-denied-content h2{color:#dc3545;font-size:1.5rem;margin-bottom:1rem}.permission-denied-content p{color:#666;line-height:1.6;margin-bottom:1rem}.login-container{align-items:center;background:linear-gradient(135deg,#dc3545,#c82333);display:flex;justify-content:center;min-height:100vh;padding:2rem}.login-card{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-width:450px;padding:2.5rem;width:100%}.login-header{margin-bottom:2rem;text-align:center}.login-logo{height:64px;margin-bottom:1rem;object-fit:contain}.login-logo-wrap{align-items:center;background:#f5f5f5;border-radius:12px;box-shadow:0 2px 6px #00000026;display:inline-flex;justify-content:center;padding:8px}.login-header h2{color:#333;font-size:2rem;margin-bottom:.5rem}.login-header p{color:#666;font-size:.9rem}.success-banner{border-left:4px solid #28a745;border-radius:6px;font-size:.9rem;padding:1rem}.login-form,.success-banner{margin-bottom:1.5rem}.form-group input{border:1px solid #ddd;border-radius:6px;font-size:1rem;padding:.75rem;transition:border-color .2s}.login-footer{border-top:1px solid #eee;margin-top:1.5rem;padding-top:1.5rem;text-align:center}.login-footer a{color:#dc3545;font-weight:500;text-decoration:none}.login-footer a:hover{text-decoration:underline}.login-info{background-color:#f8f9fa;border-radius:6px;color:#666;font-size:.85rem;margin-top:2rem;padding:1rem}.login-info p{margin:.5rem 0}.login-info code{background-color:#e9ecef;border-radius:3px;font-family:Courier New,monospace;font-size:.9em;padding:.2rem .4rem}@media (max-width:480px){.login-card{padding:1.5rem}}.signup-container{align-items:center;background:linear-gradient(135deg,#dc3545,#c82333);display:flex;justify-content:center;min-height:100vh;padding:2rem}.signup-card{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-width:500px;padding:2.5rem;width:100%}.signup-header{margin-bottom:2rem;text-align:center}.signup-header h2{color:#333;font-size:2rem;margin-bottom:.5rem}.signup-header p{color:#666;font-size:.9rem}.error-banner{border-radius:6px}.signup-form{margin-bottom:1.5rem}.form-group input[type=email],.form-group input[type=password],.form-group input[type=text]{border:1px solid #ddd;border-radius:6px;font-size:1rem;padding:.75rem;transition:border-color .2s;width:100%}.form-group input:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a}.form-group input.error{border-color:#dc3545}.checkbox-group{display:flex;flex-direction:column;gap:.75rem;margin-top:.5rem}.checkbox-label{align-items:center;border-radius:4px;cursor:pointer;display:flex;gap:.5rem;padding:.5rem;transition:background-color .2s}.checkbox-label:hover{background-color:#f8f9fa}.checkbox-label input[type=checkbox]{cursor:pointer;height:18px;width:18px}.form-hint{font-style:italic;margin-top:.5rem}.btn{border-radius:6px}.btn-block{width:100%}.signup-footer{border-top:1px solid #eee;margin-top:1.5rem;padding-top:1.5rem;text-align:center}.signup-footer a{color:#dc3545;font-weight:500;text-decoration:none}.signup-footer a:hover{text-decoration:underline}@media (max-width:480px){.signup-card{padding:1.5rem}}.bell-button,.notification-bell{position:relative}.bell-button{background:none;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1.5rem;padding:.5rem;transition:background-color .2s}.bell-button:hover{background-color:#ffffff1a}.bell-button .badge{align-items:center;background-color:#dc3545;border-radius:50%;color:#fff;display:flex;font-size:.75rem;font-weight:700;height:20px;justify-content:center;position:absolute;right:0;top:0;width:20px}.notification-dropdown{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;margin-top:.5rem;max-height:500px;overflow-y:auto;position:absolute;right:0;top:100%;width:350px;z-index:1000}.notification-header{align-items:center;background:linear-gradient(135deg,#dc3545,#c82333);border-bottom:1px solid #eee;color:#fff;display:flex;justify-content:space-between;padding:1rem}.notification-header h3{font-size:1.1rem;margin:0}.mark-all-read{background:#fff3;border:1px solid #ffffff4d;border-radius:4px;color:#fff;cursor:pointer;font-size:.85rem;padding:.25rem .75rem;transition:background-color .2s}.mark-all-read:hover{background:#ffffff4d}.notification-list{max-height:400px;overflow-y:auto}.notification-item{border-bottom:1px solid #eee;cursor:pointer;padding:1rem;transition:background-color .2s}.notification-item:hover{background-color:#f8f9fa}.notification-item.unread{background-color:#e3f2fd;border-left:4px solid #2196f3}.notification-content{display:flex;flex-direction:column;gap:.25rem}.notification-title{color:#333;font-size:.95rem;font-weight:600}.notification-message{color:#666;font-size:.875rem;line-height:1.4}.notification-time{color:#999;font-size:.75rem;margin-top:.25rem}.empty-notifications{color:#666;padding:2rem;text-align:center}@media (max-width:768px){.notification-dropdown{right:-50px;width:300px}}.navbar{background:linear-gradient(135deg,#dc3545,#c82333);box-shadow:0 2px 10px #0000001a;color:#fff;padding:1rem 2rem;position:relative}.navbar-content{gap:2rem;justify-content:space-between;margin:0 auto;max-width:1200px;padding-left:70px}.navbar-brand,.navbar-content{align-items:center;display:flex}.navbar-brand{gap:10px}.navbar-nav{align-items:center;display:flex;flex:1 1;gap:1rem;justify-content:center}.nav-group{display:inline-block;position:relative}.nav-group-title{align-items:center;display:inline-flex;padding-right:1.5rem}.nav-submenu{background:#fff;border-radius:6px;box-shadow:0 4px 12px #00000026;color:#c82333;display:none;left:0;min-width:180px;padding:.35rem 0;position:absolute;top:100%;z-index:1000}.nav-group:hover .nav-submenu,.nav-sublink,.nav-submenu.open{display:block}.nav-sublink{color:#c82333;font-weight:500;padding:.5rem .75rem;text-decoration:none}.nav-sublink.active,.nav-sublink:hover{background:#fdecef}.nav-link{border-radius:4px;color:#fff;font-weight:500;padding:.5rem 1rem;text-decoration:none;transition:background-color .2s}.nav-link:hover{background-color:#ffffff1a}.nav-link.active{background-color:#fff3}.navbar-brand h2{font-size:1.5rem;margin:0}.navbar-logo{height:40px;margin-right:10px;object-fit:contain}.navbar-logo-wrap{align-items:center;background:#fff;border-radius:10px;box-shadow:0 2px 6px #00000026;display:inline-flex;height:44px;justify-content:center;padding:6px}.navbar-logo-fixed{background:#fff;border-radius:12px;box-shadow:0 2px 6px #0003;height:80px;left:65px;object-fit:contain;padding:8px 10px;position:absolute;top:50%;transform:translateY(-50%);width:80px}@media (max-width:1024px){.navbar-logo-fixed{height:60px;left:20px;width:60px}.navbar-content{padding-left:90px}}@media (max-width:768px){.navbar{padding:1rem}.navbar-logo-fixed{height:50px;left:0;margin:0 auto .5rem;position:relative;top:0;transform:none;width:50px}.navbar-content{flex-direction:column;gap:1rem;padding-left:0}.navbar-brand{text-align:center;width:100%}.navbar-brand h2{font-size:1.2rem}.navbar-nav{justify-content:center}.navbar-nav,.navbar-user{flex-wrap:wrap;width:100%}.navbar-user{justify-content:space-between}.user-info{align-items:center}}.employee-management{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem}.management-header{flex-wrap:wrap;gap:1rem;margin-bottom:2rem}.tabs{display:flex;gap:.5rem}.tabs button{background:#f8f9fa;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-weight:500;padding:.5rem 1rem;transition:all .2s ease}.tabs button:hover{background:#eee}.tabs button.active{background:linear-gradient(135deg,#dc3545,#c82333);border-color:#c82333;color:#fff}.search-container{flex:1 1;min-width:250px}.search-input{font-size:1rem;padding:.75rem}.search-input:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a;outline:none}.btn-danger{background-color:#dc3545}.btn-danger:hover{background-color:#c82333}.modal-overlay .bulk-modal{background:#fff;border-radius:8px;max-height:95vh;max-width:95vw;overflow:auto;position:relative}.documents-modal{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-height:90vh;max-width:1000px;overflow-y:auto;width:100%}.filter-group label{margin-bottom:.25rem}.date-input{border-radius:6px;font-size:1rem;padding:.75rem;transition:all .2s ease}.date-input:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a}.active-filters{align-items:center;border-top:1px solid #e9ecef;display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;padding-top:1rem}.filters-label{color:#495057;font-size:.875rem;font-weight:600}.filter-badge{align-items:center;background:#dc3545;border-radius:20px;color:#fff;display:inline-flex;font-size:.875rem;font-weight:500;gap:.5rem;padding:.5rem .75rem}.filter-badge button{align-items:center;background:#ffffff4d;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:1rem;height:20px;justify-content:center;padding:0;transition:all .2s ease;width:20px}.filter-badge button:hover{background:#ffffff80}.employee-list{overflow-x:auto}.employee-table{background:#fff;border-collapse:collapse;width:100%}.employee-table thead{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.employee-table th{font-weight:600;padding:1rem;text-align:left;white-space:nowrap}.employee-table td{border-bottom:1px solid #eee;padding:1rem}.employee-table tbody tr:hover{background-color:#f8f9fa}.badge-success{background-color:#d4edda;color:#155724}.badge-inactive{background-color:#f8d7da;color:#721c24}.badge-cdi{background-color:#cce5ff;color:#004085}.badge-cdd{background-color:#fff3cd;color:#856404}.badge-stage{background-color:#e2e3e5;color:#383d41}.badge-freelance{background-color:#d1ecf1;color:#0c5460}.badge-sivp{background-color:#fce4ec;color:#880e4f}.badge-karama{background-color:#e8f5e9;color:#1b5e20}.badge-gerant{background-color:#ede7f6;color:#4527a0}.btn-access{background-color:#e8f5e9}.btn-access:hover{background-color:#c8e6c9}.badge-access{background-color:#e8f5e9;border-radius:12px;color:#1b5e20;display:inline-block;font-size:.75rem;font-weight:600;margin-left:.5rem;padding:.25rem .5rem}.btn-edit:hover{background-color:#e3f2fd}.btn-documents{background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.2rem;padding:.25rem .5rem;transition:all .2s}.btn-documents:hover{background-color:#e8f5e9}.btn-leave{background:none;border:none;border-radius:4px;cursor:pointer;font-size:1.2rem;padding:.25rem .5rem;transition:all .2s}.btn-leave:hover{background-color:#fff3e0}.no-actions{color:#999;font-size:.875rem;font-style:italic}.actions-column{background:#fff;min-width:60px;padding:.5rem!important;position:-webkit-sticky;position:sticky;right:0;width:60px;z-index:10}.employee-table thead .actions-column{background:linear-gradient(135deg,#dc3545,#c82333)}.employee-table tbody tr:hover .actions-column{background-color:#f8f9fa}.action-menu-container{position:relative}.action-menu-container,.action-menu-trigger{align-items:center;display:flex;justify-content:center}.action-menu-trigger{background:none;border:none;border-radius:4px;color:#666;cursor:pointer;font-size:1.5rem;height:36px;line-height:1;padding:.5rem;transition:all .2s;width:36px}.action-menu-trigger:hover{background-color:#e9ecef;color:#dc3545}.action-menu-trigger:focus{outline:2px solid #dc3545;outline-offset:2px}.action-menu-overlay{background:#0000;bottom:0;left:0;position:fixed;right:0;top:0;z-index:998}.action-menu-dropdown{animation:slideDown .2s ease-out;background:#fff;border:1px solid #dee2e6;border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:220px;padding:.5rem 0;position:absolute;right:0;top:calc(100% + 5px);z-index:999}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.action-menu-item{align-items:center;background:none;border:none;color:#333;cursor:pointer;display:flex;font-size:.9rem;gap:.75rem;padding:.75rem 1rem;text-align:left;transition:background-color .2s;width:100%}.action-menu-item:hover{background-color:#f8f9fa}.action-menu-item-danger{color:#dc3545}.action-menu-item-danger:hover{background-color:#fff5f5;color:#c82333}.action-menu-info{color:#6c757d;cursor:default;font-style:italic}.action-menu-info:hover{background-color:initial}.action-icon{flex-shrink:0;font-size:1.1rem;text-align:center;width:20px}@media (max-width:768px){.employee-table{font-size:.875rem}.employee-table td,.employee-table th{padding:.5rem}.action-menu-dropdown{min-width:200px;right:-10px}.actions-column{min-width:50px;width:50px}}.modal-content{box-shadow:0 4px 20px #0000004d;max-width:800px;width:100%}.modal-header h2{font-size:1.5rem}.employee-form{padding:2rem}.form-row{margin-bottom:1rem}.form-group{display:flex;flex-direction:column}.form-group input,.form-group select{border:1px solid #ddd;border-radius:4px;font-size:1rem;padding:.75rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a;outline:none}.checkbox-group{margin-bottom:1.5rem}.checkbox-group label{align-items:center;cursor:pointer;display:flex;gap:.5rem}.checkbox-group input[type=checkbox]{cursor:pointer;height:20px;width:20px}.form-actions{border-top:1px solid #eee;padding-top:1.5rem}.tooltip-icon{color:#666;cursor:help;display:inline-block;font-size:.9em;margin-left:5px;vertical-align:middle}.tooltip-icon:hover{color:#d32f2f}.info-message,.warning-message{border-radius:4px;display:block;font-size:.85em;margin-top:5px;padding:5px}.warning-message{background-color:#fff3cd;border-left:3px solid #ffc107}.employee-form-section-title{border-top:1px solid #eee;color:#333;font-size:1.1rem;margin:1.5rem 0 .5rem;padding-top:1.25rem}.employee-form-hint{color:#666;font-size:.875rem;line-height:1.45;margin:0 0 1rem}.employee-loan-card{background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:1rem;padding:1rem 1.25rem}.employee-loan-card-header{align-items:center;border-bottom:1px solid #e8e8e8;display:flex;justify-content:space-between;margin-bottom:.75rem;padding-bottom:.5rem}@media (max-width:768px){.form-row{grid-template-columns:1fr}.modal-content{margin:1rem;max-width:100%}.employee-form{padding:1.5rem}}.document-manager{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin-top:2rem;padding:2rem}.document-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.document-header h3{color:#333;margin:0}.btn-sm{font-size:.9rem}.upload-form-container{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;margin-bottom:1.5rem;padding:1.5rem}.upload-form{gap:1rem}.upload-form,.upload-form .form-group{display:flex;flex-direction:column}.upload-form label{color:#333;font-weight:500;margin-bottom:.5rem}.upload-form input[type=file]{background:#fff;border:1px solid #ddd;border-radius:4px;padding:.5rem}.upload-form textarea{border:1px solid #ddd;border-radius:4px;font-family:inherit;padding:.75rem;resize:vertical}.upload-form textarea:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a;outline:none}.form-hint{color:#666;font-size:.85rem;margin-top:.25rem}.form-actions{margin-top:.5rem}.documents-list{overflow-x:auto}.documents-table{background:#fff;border-collapse:collapse;width:100%}.documents-table thead{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.documents-table th{font-weight:600;padding:1rem;text-align:left;white-space:nowrap}.documents-table td{border-bottom:1px solid #eee;padding:1rem}.documents-table tbody tr:hover{background-color:#f8f9fa}.file-icon{font-size:1.5rem;text-align:center}.file-name{color:#333;font-weight:500}@media (max-width:768px){.documents-table{font-size:.875rem}.documents-table td,.documents-table th{padding:.5rem}.document-header{align-items:flex-start;flex-direction:column;gap:1rem}}.leave-request-form{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem}.leave-request-form h3{color:#333;margin-bottom:1.5rem;margin-top:0}.balance-info{border-radius:6px;display:flex;flex-wrap:wrap;gap:1.5rem}.balance-item{display:flex;flex-direction:column;gap:.25rem}.balance-item span{color:#666;font-size:.875rem}.balance-item strong{color:#333;font-size:1.125rem}.balance-item.highlight{background-color:#e3f2fd;border-radius:4px;padding:.5rem}.balance-item.highlight strong{color:#1976d2}.form-group input,.form-group select,.form-group textarea{font-family:inherit}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{box-shadow:0 0 0 3px #dc35451a}.form-group input.error,.form-group select.error{border-color:#dc3545}.error-message{color:#dc3545;display:block;font-size:.875rem;margin-top:.25rem}.calculated-days{background-color:#e8f5e9;border-radius:4px;color:#2e7d32;margin-bottom:1rem;padding:.75rem;text-align:center}.form-actions{margin-top:1.5rem}.btn-primary:hover:not(:disabled){box-shadow:0 4px 12px #dc354566;transform:translateY(-2px)}.btn-primary:disabled{opacity:.6}@media (max-width:768px){.form-row{grid-template-columns:1fr}.balance-info{flex-direction:column;gap:1rem}}.edit-leave-balance-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.edit-leave-balance-dialog{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-height:90vh;max-width:500px;overflow-y:auto;width:90%}.dialog-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:1.5rem}.dialog-header h3{color:#333;font-size:1.25rem;margin:0}.close-btn{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;height:30px;justify-content:center;padding:0;transition:background-color .2s;width:30px}.close-btn:hover{background-color:#f0f0f0;color:#333}.dialog-body{padding:1.5rem}.employee-info{background-color:#f8f9fa;border-radius:4px;margin-bottom:1.5rem;padding:.75rem;text-align:center}.employee-info strong{color:#333;font-size:1.1rem}.balance-info{background-color:#f8f9fa;border-radius:4px;margin-bottom:1.5rem;padding:1rem}.info-row{align-items:center;display:flex;justify-content:space-between}.info-row .label{color:#666;font-size:.9rem}.info-row .value{color:#333;font-size:1.1rem;font-weight:600}.adjustment-input-group{align-items:center;display:flex;gap:.5rem}.adjustment-input{border:1px solid #ddd;border-radius:4px;flex:1 1;font-size:1rem;padding:.75rem}.adjustment-input:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.input-suffix{color:#666;font-size:.9rem}.help-text{color:#666;display:block;font-size:.85rem;margin-top:.5rem}.reason-textarea{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:.9rem;padding:.75rem;resize:vertical;width:100%}.reason-textarea:focus{border-color:#007bff;box-shadow:0 0 0 3px #007bff1a;outline:none}.preview-section{background-color:#e7f3ff;border-left:4px solid #007bff;border-radius:4px;margin:1.5rem 0;padding:1rem}.preview-row{align-items:center;display:flex;justify-content:space-between}.preview-label{color:#333;font-weight:500}.preview-value{color:#007bff;font-size:1.25rem;font-weight:600}.preview-value.negative{color:#dc3545}.error-banner{font-size:.9rem;padding:.75rem}.dialog-actions{border-top:1px solid #e0e0e0;display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem;padding-top:1.5rem}.btn-secondary:hover:not(:disabled){background-color:#5a6268}.btn-sm{padding:.5rem 1rem}.btn-outline{background-color:initial;border:1px solid #007bff;color:#007bff}.btn-outline:hover:not(:disabled){background-color:#007bff;color:#fff}.leave-balance{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin-bottom:2rem;padding:1.5rem}.leave-balance-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.leave-balance h4{color:#333;margin:0}.balance-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:1.5rem}.balance-card{background-color:#f8f9fa;border-radius:6px;padding:1rem;text-align:center}.balance-card.highlight{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.balance-label{color:#666;font-size:.875rem;margin-bottom:.5rem}.balance-card.highlight .balance-label{color:#ffffffe6}.balance-value{color:#333;font-size:1.5rem;font-weight:600}.balance-card.highlight .balance-value{color:#fff}.balance-value.used{color:#dc3545}.balance-value.pending{color:#ffc107}.balance-value.remaining{color:#28a745}.balance-card.adjustment{background-color:#fff3cd}.balance-value.positive{color:#28a745}.balance-value.negative{color:#dc3545}.adjustment-info{color:#666;font-size:.85rem;margin-top:1rem;padding:.5rem;text-align:center}.progress-bar{background-color:#e9ecef;border-radius:10px;height:20px;margin-bottom:.5rem;overflow:hidden;width:100%}.progress-fill{background:linear-gradient(135deg,#dc3545,#c82333);height:100%;transition:width .3s ease}.progress-text{color:#666;font-size:.875rem;text-align:center}.loading{padding:1rem}@media (max-width:768px){.balance-grid{grid-template-columns:repeat(2,1fr)}}.module-permission-table{border-collapse:collapse;margin-top:1rem;width:100%}.module-permission-table td,.module-permission-table th{border-bottom:1px solid #e0e0e0;padding:.5rem .75rem;text-align:left}.module-permission-table thead{background:#f5f5f5;font-weight:600}.perm-cell{text-align:center}.module-permission-modal{max-width:900px;width:100%}.module-permission-modal .modal-body{max-height:60vh;overflow-y:auto}.module-permission-modal .modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.default-bonus-modal{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-height:90vh;max-width:720px;overflow-y:auto;width:100%}.default-bonus-body{padding:1.25rem 1.5rem 1.5rem}.default-bonus-hint{color:#555;font-size:.9rem;line-height:1.4;margin:0 0 1rem}.default-bonus-error{background:#fee;border-left:4px solid #c33;border-radius:4px;color:#c33;margin-bottom:1rem;padding:.75rem 1rem}.default-bonus-table{border-collapse:collapse;margin-bottom:.75rem;width:100%}.default-bonus-table td,.default-bonus-table th{border-bottom:1px solid #eee;padding:.5rem;text-align:left}.default-bonus-table th{color:#666;font-size:.85rem;font-weight:600}.default-bonus-input{border:1px solid #ddd;border-radius:4px;font-size:.95rem;padding:.5rem;width:100%}.default-bonus-input:focus{border-color:#dc3545;box-shadow:0 0 0 2px #dc354526;outline:none}.default-bonus-input.amount-input{max-width:140px}.btn-sm{font-size:1rem;line-height:1;padding:.35rem .65rem}.add-bonus-row-btn{margin-bottom:1.25rem}.default-bonus-actions{border-top:1px solid #eee;display:flex;gap:.75rem;justify-content:flex-end;padding-top:.5rem}.leave-list{overflow-x:auto}.leave-table{background:#fff;border-collapse:collapse;width:100%}.leave-table thead{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.leave-table th{font-weight:600;padding:1rem;text-align:left;white-space:nowrap}.leave-table td{border-bottom:1px solid #eee;padding:1rem}.leave-table tbody tr:hover{background-color:#f8f9fa}.reason-cell{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge{border-radius:12px;display:inline-block;font-size:.875rem;font-weight:500;padding:.25rem .75rem}.badge-pending{background-color:#fff3cd;color:#856404}.badge-approved{background-color:#d4edda;color:#155724}.badge-rejected{background-color:#f8d7da;color:#721c24}.badge-cancelled{background-color:#e2e3e5;color:#383d41}.btn-approve:hover{background-color:#d4edda}.btn-reject:hover{background-color:#f8d7da}.approver-name{color:#28a745;font-size:.875rem;font-weight:500}.pending-text{color:#999;font-style:italic}@media (max-width:768px){.leave-table{font-size:.875rem}.leave-table td,.leave-table th{padding:.5rem}}.leave-calendar{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem}.calendar-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.calendar-header h2{color:#333;margin:0}.btn-excel{background-color:#28a745;color:#fff}.btn-excel:hover{background-color:#218838}.btn-pdf{background-color:#dc3545;color:#fff}.btn-pdf:hover{background-color:#c82333}.btn-clear{background-color:#6c757d;color:#fff}.btn-clear:hover{background-color:#5a6268}.calendar-filters{align-items:flex-end;background-color:#f8f9fa;border-radius:6px;display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:2rem;padding:1rem}.filter-group label{color:#333;font-weight:500}.filter-group input,.filter-group select{border:1px solid #ddd;border-radius:4px;font-size:.9rem;padding:.5rem}.calendar-container{overflow-x:auto}.calendar-grid{grid-gap:1px;background-color:#ddd;border:1px solid #ddd;display:grid;gap:1px;grid-template-columns:repeat(7,1fr)}.calendar-day-header{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff;font-weight:600;padding:.75rem;text-align:center}.calendar-day{background:#fff;display:flex;flex-direction:column;gap:.25rem;min-height:100px;padding:.5rem}.calendar-day.other-month{background-color:#f8f9fa;color:#999}.calendar-day.today{background-color:#fff3cd;border:2px solid #ffc107}.day-number{color:#333;font-size:.9rem;font-weight:600}.day-leaves{display:flex;flex:1 1;flex-direction:column;gap:.25rem}.leave-indicator{border-radius:4px;color:#fff;cursor:pointer;font-size:.75rem;font-weight:500;overflow:hidden;padding:.25rem .5rem;text-overflow:ellipsis;white-space:nowrap}.leave-indicator:hover{opacity:.8}.calendar-legend{border-top:1px solid #eee;display:flex;flex-wrap:wrap;gap:2rem;margin-top:2rem;padding-top:1rem}.legend-item{align-items:center;display:flex;gap:.5rem}.legend-color{border-radius:4px;height:20px;width:20px}@media (max-width:768px){.calendar-header{align-items:flex-start;gap:1rem}.calendar-filters,.calendar-header{flex-direction:column}.calendar-day{min-height:80px}}.leave-management{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem}.leave-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.leave-header h2{color:#333;margin:0}.info-text{color:#666;font-size:.9rem;font-style:italic}.error-banner button{align-items:center;display:flex;justify-content:center}.view-controls{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.view-toggle{display:flex;gap:.5rem}.btn-active{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.filter-section{align-items:center;background-color:#f8f9fa;border-radius:6px;display:flex;gap:1rem;padding:1rem}.filter-section label{font-weight:500}.filter-select{border:1px solid #ddd;font-size:1rem;padding:.5rem 1rem}.modal-overlay{padding:1rem}.leave-modal{background:#fff;border-radius:8px;box-shadow:0 4px 20px #0000004d;max-height:90vh;max-width:700px;overflow-y:auto;width:100%}.modal-header{background:linear-gradient(135deg,#dc3545,#c82333);border-bottom:1px solid #eee;color:#fff;padding:1.5rem}.modal-header h3{font-size:1.5rem;margin:0}.close-button{align-items:center;border-radius:4px;color:#fff;display:flex;height:32px;justify-content:center;padding:0;transition:background-color .2s;width:32px}.close-button:hover{background-color:#fff3}.modal-body{padding:1.5rem}.filters-section{margin-bottom:1.5rem;padding:1.5rem}.filter-group{min-width:200px}.filter-group label{font-size:.875rem}@media (max-width:768px){.leave-header{align-items:flex-start;flex-direction:column;gap:1rem}}.payroll-form{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin:0 auto;max-width:600px;padding:2rem}.payroll-form h3{color:#333;font-size:1.5rem;margin-top:0}.form-group,.payroll-form h3{margin-bottom:1.5rem}.form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr}.form-group label{color:#333;margin-bottom:.5rem}.required{color:#dc3545}.form-group input,.form-group select,.form-group textarea{border:1px solid #ddd;border-radius:4px;font-size:1rem;padding:.75rem;transition:border-color .3s;width:100%}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#dc3545;outline:none}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.error{color:#dc3545;display:block;font-size:.875rem;margin-top:.25rem}.error-banner{margin-bottom:1rem}.calculations-preview{background:#f8f9fa;border:2px solid #e9ecef;border-radius:6px;margin-bottom:1.5rem;padding:1.5rem}.calculation-item{align-items:center;display:flex;justify-content:space-between;margin-bottom:.75rem}.calculation-item:last-child{border-top:2px solid #dee2e6;margin-bottom:0;padding-top:.75rem}.calculation-item label{color:#495057;font-weight:600;margin:0}.calculation-item .amount{color:#28a745;font-size:1.25rem;font-weight:700}.calculation-item .amount.net{color:#dc3545;font-size:1.5rem}.form-actions{gap:1rem;margin-top:2rem}.toggle-group{align-items:center;display:flex;justify-content:space-between}.switch{display:inline-block;height:26px;position:relative;width:50px}.switch input{height:0;opacity:0;width:0}.slider{background-color:#ccc;border-radius:26px;bottom:0;cursor:pointer;left:0;right:0;top:0}.slider,.slider:before{position:absolute;transition:.4s}.slider:before{background-color:#fff;border-radius:50%;bottom:3px;content:"";height:20px;left:3px;width:20px}.switch input:checked+.slider{background-color:#dc3545}.switch input:checked+.slider:before{transform:translateX(24px)}.btn-outline{background:#0000;border:1px solid #dc3545;color:#dc3545}.btn-outline:hover{background:#dc35451a}.simulation-actions{margin:1.5rem 0;text-align:right}.simulation-results{background:#fff;border:1px solid #e9ecef;border-radius:8px;margin-bottom:1.5rem;padding:1.5rem}.simulation-results h4{margin-bottom:1rem;margin-top:0}.result-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.result-card{background:#f8f9fa;border-radius:6px;display:flex;flex-direction:column;gap:.5rem;padding:1rem}.result-card span{color:#555;font-size:.9rem}.result-card strong{color:#212529;font-size:1.1rem}.result-card.highlight{background:#fff5f5;border:1px solid #ffc2c2}.payroll-primes-header{align-items:center;display:flex;flex-wrap:wrap;gap:.75rem 1rem;margin-bottom:.5rem}.payroll-primes-header label{margin-bottom:0}.bonuses-list{display:flex;flex-direction:column;gap:.75rem}.bonus-item{align-items:center;display:flex;gap:.5rem}.bonus-name{flex:2 1}.bonus-amount{flex:1 1}.btn-remove{align-items:center;background:#dc3545;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:1.2rem;height:32px;justify-content:center;padding:0;transition:background-color .3s;width:32px}.btn-remove:hover{background:#c82333}.btn-add-bonus{margin-top:.5rem;width:100%}@media (max-width:768px){.form-row{grid-template-columns:1fr}.bonus-item{align-items:stretch;flex-direction:column}.btn-remove{width:100%}}.payroll-form .payroll-employee-autocomplete .employee-select-wrapper{position:relative}.payroll-form .payroll-employee-autocomplete .employee-search-input{border:1px solid #ddd;border-radius:4px;box-sizing:border-box;font-size:1rem;padding:.75rem 2.5rem .75rem .75rem;width:100%}.payroll-form .payroll-employee-autocomplete .employee-search-input:focus{border-color:#dc3545;outline:none}.payroll-form .payroll-employee-autocomplete .clear-employee-btn{align-items:center;background:none;border:none;border-radius:50%;color:#6c757d;cursor:pointer;display:flex;font-size:1.5rem;height:28px;justify-content:center;line-height:1;padding:0;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:28px}.payroll-form .payroll-employee-autocomplete .clear-employee-btn:hover:not(:disabled){background:#f0f0f0;color:#dc3545}.payroll-form .payroll-employee-autocomplete .employee-dropdown{background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 12px #00000026;left:0;margin-top:4px;max-height:280px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:1000}.payroll-form .payroll-employee-autocomplete .dropdown-item{border-bottom:1px solid #f0f0f0;cursor:pointer;padding:.75rem 1rem}.payroll-form .payroll-employee-autocomplete .dropdown-item:last-child{border-bottom:none}.payroll-form .payroll-employee-autocomplete .dropdown-item:hover{background:#f8f9fa}.payroll-form .payroll-employee-autocomplete .dropdown-item.selected{background:#e3f2fd;font-weight:500}.payroll-form .payroll-employee-autocomplete .employee-option{align-items:center;display:flex;gap:1rem;justify-content:space-between}.payroll-form .payroll-employee-autocomplete .employee-matricule{color:#6c757d;font-size:.85rem}.payroll-list{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow:hidden}.payroll-table{border-collapse:collapse;width:100%}.payroll-table thead{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff}.payroll-table th{font-size:.9rem;font-weight:600;letter-spacing:.5px;padding:1rem;text-align:left;text-transform:uppercase}.payroll-table tbody tr{border-bottom:1px solid #eee;transition:background-color .2s}.payroll-table tbody tr:hover{background-color:#f8f9fa}.payroll-table td{color:#333;padding:1rem}.amount{font-family:Courier New,monospace;font-weight:600;text-align:right}.amount.gross{color:#17a2b8}.amount.net{color:#28a745;font-size:1.1rem}.amount.deductions{color:#dc3545}.status-badge{font-size:.75rem;text-transform:uppercase}.status-draft{background-color:#e9ecef;color:#495057}.status-calculated{background-color:#cfe2ff;color:#084298}.status-validated{background-color:#d1e7dd;color:#0f5132}.status-paid{background-color:#d4edda;color:#155724}.status-cancelled{background-color:#f8d7da;color:#721c24}.action-buttons{display:flex;flex-wrap:wrap;gap:.5rem}.btn-action{background:none;border-radius:4px;font-size:1.2rem;padding:.25rem .5rem}.btn-action:hover{background-color:#0000000d;transform:scale(1.1)}.btn-calculate:hover{background-color:#e3f2fd}.btn-edit:hover{background-color:#fff3cd}.btn-validate:hover{background-color:#d1e7dd}.btn-paid:hover{background-color:#d4edda}.btn-download:hover{background-color:#e3f2fd}.btn-email:hover{background-color:#fff3cd}.btn-delete:hover{background-color:#ffebee}.empty-state{color:#666;padding:3rem}@media (max-width:768px){.payroll-table{font-size:.875rem}.payroll-table td,.payroll-table th{padding:.5rem}}.payroll-management{margin:0 auto;max-width:1400px;padding:2rem}.statement-generation-section{background:#fff;border:1px solid #e0e0e0;border-radius:8px;box-shadow:0 2px 4px #0000000d;margin-bottom:20px;padding:15px 20px}.statement-controls{align-items:flex-end;display:flex;flex-wrap:wrap;gap:15px;margin-bottom:15px}.statement-button-container{border-top:1px solid #e0e0e0;display:flex;justify-content:center;padding-top:10px}.statement-controls .form-group{display:flex;flex-direction:column;min-width:150px}.statement-controls label{color:#555;font-size:.9rem;font-weight:500;margin-bottom:5px}.statement-controls input,.statement-controls select{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;padding:8px}.statement-controls input:focus,.statement-controls select:focus{border-color:#dc3545;box-shadow:0 0 0 2px #dc35451a;outline:none}.statement-controls button{margin-top:0}.statement-header h3{color:#333;font-size:1.1rem;font-weight:600;margin:0 0 15px}.payroll-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.header-actions{gap:1rem}.payroll-header h1{color:#333;font-size:2rem;margin:0}.error-banner{align-items:center;background-color:#fee;border-left:4px solid #c33;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:1.5rem;padding:1rem}.error-banner button{font-size:1.5rem;padding:0 .5rem}.form-container{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;padding:2rem}.warning-banner{background-color:#fff4e5;border-left:4px solid #f0a500;border-radius:4px;color:#a45a00;margin-bottom:1.5rem;padding:1rem}.filters-section{background:#f8f9fa;border:1px solid #e9ecef;margin-bottom:1.25rem;padding:1.25rem}.filters-row{align-items:flex-end;display:flex;flex-wrap:wrap;gap:1rem}.filter-group{flex:1 1;gap:.5rem;min-width:220px}.filter-group label{color:#495057;font-size:.9rem}.employee-filter{flex:1.5 1;min-width:300px}.employee-search-input{background:#fff;border-radius:6px;padding:.75rem 2.5rem .75rem .75rem;transition:all .2s ease}.clear-employee-btn{align-items:center;background:none;border:none;border-radius:50%;color:#6c757d;cursor:pointer;display:flex;font-size:1.5rem;height:24px;justify-content:center;padding:0;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:all .2s ease;width:24px}.clear-employee-btn:hover{background:#f0f0f0;color:#dc3545}.employee-dropdown{border-radius:6px;max-height:280px}.dropdown-item{border-bottom:1px solid #f0f0f0;cursor:pointer;padding:.75rem 1rem;transition:background .2s ease}.dropdown-item:last-child{border-bottom:none}.dropdown-item:hover{background:#f8f9fa}.dropdown-item.selected{background:#e3f2fd;font-weight:500}.employee-option{align-items:center;display:flex;gap:1rem;justify-content:space-between}.employee-name{color:#212529;font-weight:500}.employee-matricule{background:#f0f0f0;border-radius:4px;color:#6c757d;font-size:.875rem;padding:.25rem .5rem}.clear-filters-btn{background:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:.75rem 1.5rem;transition:all .2s ease;white-space:nowrap}.clear-filters-btn:hover{background:#5a6268}@media (max-width:768px){.filters-row{flex-direction:column}.filter-group{min-width:100%}.payroll-header{align-items:flex-start;flex-direction:column;gap:1rem}.payroll-header h1{font-size:1.5rem}}.payroll-closure-management{margin:0 auto;max-width:1400px;padding:20px}.payroll-closure-management h1{color:#343a40;font-size:2rem;margin-bottom:30px}.closure-controls{background-color:#f8f9fa;border-radius:8px;margin-bottom:30px;padding:20px}.period-selector{align-items:center;display:flex;flex-wrap:wrap;gap:15px}.period-selector label{color:#495057;font-weight:600}.period-selector select{border:1px solid #ced4da;border-radius:4px;font-size:1rem;padding:8px 12px}.summary-section{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:30px;padding:25px}.summary-section h2{color:#0056b3;font-size:1.5rem;margin-bottom:20px}.summary-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:20px}.summary-card{background-color:#f8f9fa;border-left:4px solid #007bff;border-radius:8px;padding:20px}.summary-card h3{color:#495057;font-size:1.1rem;margin-bottom:10px}.summary-value{color:#007bff;font-size:2rem;font-weight:700;margin:10px 0}.summary-value-small{color:#28a745;font-size:1.3rem;font-weight:600;margin:10px 0}.summary-label{color:#6c757d;font-size:.9rem;margin:5px 0}.status-breakdown{color:#6c757d;display:flex;flex-direction:column;font-size:.85rem;gap:5px;margin-top:10px}.warning-section{background-color:#fff3cd;border:1px solid #ffc107;border-radius:8px;margin-top:20px;padding:15px}.warning-section h3{color:#856404;margin-bottom:10px}.warning-section ul{margin:10px 0;padding-left:20px}.warning-section li{color:#856404;margin:5px 0}.action-buttons{margin-top:20px}.history-section{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:25px}.history-section h2{color:#0056b3;font-size:1.5rem;margin-bottom:20px}.history-table{overflow-x:auto}.history-table table{border-collapse:collapse;width:100%}.history-table td,.history-table th{border-bottom:1px solid #dee2e6;padding:12px;text-align:left}.history-table th{background-color:#e9ecef;color:#495057;font-weight:600}.history-table tbody tr:hover{background-color:#f8f9fa}.status-badge{border-radius:.25rem;color:#fff;font-size:.75em;font-weight:700;line-height:1;padding:.3em .6em;text-align:center;vertical-align:initial;white-space:nowrap}.status-closed{background-color:#28a745}.status-reopened{background-color:#ffc107;color:#343a40}.status-pending{background-color:#6c757d}.btn{border-radius:5px;transition:background-color .2s}.btn-primary{background-color:#007bff}.btn-primary:hover:not(:disabled){background-color:#0056b3}.btn-secondary{background-color:#6c757d}.btn-secondary:hover{background-color:#5a6268}.btn-warning{background-color:#ffc107;color:#343a40}.btn-warning:hover:not(:disabled){background-color:#e0a800}.btn-sm{font-size:.875rem;padding:5px 10px}.btn:disabled{cursor:not-allowed;opacity:.6}.error-banner,.success-banner{border-radius:5px;cursor:pointer;margin-bottom:20px;padding:15px}.error-banner{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.success-banner{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.close-btn{font-size:1.5rem;font-weight:700;margin-left:10px}.modal-overlay{background-color:#00000080}.modal-content{background-color:#fff;max-width:600px;padding:0}.modal-header{align-items:center;border-bottom:1px solid #dee2e6;display:flex;justify-content:space-between;padding:20px}.modal-header h2{color:#343a40;margin:0}.close-button{background:none;border:none;color:#6c757d;cursor:pointer;font-size:2rem;line-height:1}.close-button:hover{color:#343a40}.modal-body{padding:20px}.modal-body p{color:#495057;margin-bottom:15px}.form-group label{font-weight:600;margin-bottom:5px}.form-group textarea{font-size:1rem}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.access-denied{color:#dc3545;font-size:1.2rem;padding:40px;text-align:center}.deductions-section{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;margin-top:20px;padding:20px}.deductions-section h3{border-bottom:2px solid #007bff;color:#495057;font-size:1.2rem;margin-bottom:15px;padding-bottom:10px}.deductions-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.deduction-item{align-items:center;background-color:#fff;border-left:3px solid #dc3545;border-radius:6px;box-shadow:0 1px 3px #0000001a;display:flex;justify-content:space-between;padding:12px}.deduction-label{color:#495057;font-size:.95rem;font-weight:600}.deduction-value{color:#dc3545;font-size:1.1rem;font-weight:700}.self-portal{margin:0 auto;max-width:1200px;padding:2rem}.self-portal h1{color:#333;margin-bottom:1.5rem}.portal-section{background:#fff;border-radius:12px;box-shadow:0 2px 12px #00000014;margin-bottom:2rem;overflow:hidden}.section-header{background:linear-gradient(135deg,#f8f9fa,#fff);border-bottom:1px solid #eee;padding:1.5rem}.leave-form,.section-content{padding:1.5rem}.leave-form{background:#f8f9fa;border:1px solid #e9ecef;border-radius:10px;margin-bottom:1.5rem}.leave-form .form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.leave-form .form-group{display:flex;flex-direction:column;gap:.5rem}.leave-form label{color:#495057;font-weight:600}.leave-form input,.leave-form select,.leave-form textarea{border:1px solid #ced4da;border-radius:8px;font-size:.95rem;padding:.65rem}.leave-form textarea{resize:vertical}.form-actions{margin-top:1rem}.table-container table{background:#fff;border-collapse:collapse;width:100%}.table-container td,.table-container th{border-bottom:1px solid #f1f1f1;padding:.9rem 1rem;text-align:left}.table-container th{background-color:#f8f9fa;color:#495057;font-weight:600}.empty-cell{color:#6c757d;padding:1.5rem!important;text-align:center}.status-badge{border-radius:20px;font-size:.85rem;font-weight:600;padding:.25rem .75rem;text-transform:capitalize}.status-approved{background:#d4edda;color:#155724}.status-rejected{background:#f8d7da;color:#721c24}.status-manager_approved{background:#d1ecf1;color:#0c5460}.btn-action{background:#f1f3f5;border:none;border-radius:8px;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;transition:all .2s}.btn-action.btn-download{background:#fff;border:1px solid #ced4da}.btn-action:disabled{cursor:not-allowed;opacity:.4}.error-banner,.success-banner{border-radius:8px;padding:.8rem 1rem}.error-banner{background:#fdecea;border:1px solid #ffc9c9;color:#c92a2a}.success-banner{background:#ebfbee;border:1px solid #b2f2bb;color:#2b8a3e}.error-banner button,.success-banner button{background:none;border:none;cursor:pointer;font-size:1.2rem;line-height:1}@media (max-width:768px){.self-portal{padding:1rem}}.dashboard-container{margin:0 auto;max-width:1400px;padding:2rem}.dashboard-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:2rem}.dashboard-header h1{color:#333;font-size:2rem;margin:0}.export-buttons{display:flex;gap:1rem}.btn-export{align-items:center;background:linear-gradient(135deg,#dc3545,#c82333);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:500;gap:.5rem;padding:.75rem 1.5rem;transition:all .3s}.btn-export:hover:not(:disabled){box-shadow:0 4px 12px #dc354566;opacity:.9;transform:translateY(-2px)}.btn-export:disabled{cursor:not-allowed;opacity:.6}.stats-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:2rem}.stat-card{border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:1.5rem;transition:transform .3s,box-shadow .3s}.stat-card:hover{box-shadow:0 4px 16px #00000026;transform:translateY(-4px)}.stat-card h3{color:#dc3545;font-size:1.1rem;font-weight:600;margin:0 0 1rem}.stat-value{color:#333;font-size:2.5rem;margin-bottom:.5rem}.stat-value.large{color:#dc3545;font-size:3rem}.stat-value.highlight{color:#f59e0b}.stat-label-small{color:#666;font-size:.9rem;margin-bottom:1rem}.stat-details{border-top:1px solid #eee;display:flex;flex-direction:column;gap:.5rem;margin-top:1rem;padding-top:1rem}.stat-item{align-items:center;display:flex;justify-content:space-between}.stat-label{font-size:.9rem}.stat-number{color:#333;font-size:1.1rem;font-weight:600}.charts-section{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(500px,1fr));margin-top:2rem}.chart-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:1.5rem}.chart-card h3{color:#dc3545;font-size:1.2rem;font-weight:600;margin:0 0 1.5rem}.chart-container{align-items:center;display:flex;height:300px;justify-content:center;width:100%}.bar-chart{align-items:flex-end;gap:.5rem;justify-content:space-around;width:100%}.bar-chart,.bar-item{display:flex;height:100%}.bar-item{align-items:center;flex:1 1;flex-direction:column}.bar-wrapper{align-items:flex-end;height:100%}.bar,.bar-wrapper{display:flex;justify-content:center;position:relative;width:100%}.bar{align-items:flex-start;background:linear-gradient(180deg,#dc3545,#c82333);border-radius:4px 4px 0 0;max-width:50px;min-height:20px;padding-top:.25rem;transition:all .3s}.bar:hover{opacity:.8;transform:scaleY(1.05)}.bar-value{color:#fff;font-size:.75rem;font-weight:600;text-shadow:0 1px 2px #0000004d}.bar-label{color:#666;font-size:.75rem;font-weight:500;margin-top:.5rem;text-align:center}.bar-chart.horizontal{align-items:stretch;flex-direction:column;gap:.75rem}.bar-item-horizontal{align-items:center;display:flex;gap:1rem}.bar-label-horizontal{color:#333;font-size:.9rem;font-weight:500;min-width:120px;text-align:right}.bar-wrapper-horizontal{background:#f0f0f0;border-radius:4px;flex:1 1;height:30px;overflow:hidden;position:relative}.bar-horizontal{align-items:center;background:linear-gradient(90deg,#dc3545,#c82333);border-radius:4px;display:flex;height:100%;justify-content:flex-end;min-width:40px;padding-right:.5rem;transition:all .3s}.bar-horizontal:hover{opacity:.9}.bar-value-horizontal{color:#fff;font-size:.8rem;font-weight:600;text-shadow:0 1px 2px #0000004d}.no-data{color:#999;font-style:italic;padding:2rem;text-align:center}.loading{font-size:1.1rem;padding:3rem}.error{background:#fee;color:#c33;margin-bottom:1rem;padding:1rem}.btn,.error{border-radius:8px}.btn{font-size:1rem;padding:.75rem 1.5rem}.btn-primary{background:linear-gradient(135deg,#dc3545,#c82333)}.btn-primary:hover{box-shadow:0 4px 12px #dc354566;opacity:.9;transform:translateY(-2px)}.quick-actions-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-bottom:2rem;padding:1.5rem}.quick-actions-section h2{color:#dc3545;font-size:1.5rem;font-weight:600;margin:0 0 1.5rem}.quick-actions-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.quick-action-card{background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:2px solid #0000;border-radius:12px;padding:2rem;text-align:center;transition:transform .3s,box-shadow .3s}.quick-action-card:hover{border-color:#dc3545;box-shadow:0 8px 24px #dc354533;transform:translateY(-4px)}.quick-action-icon{font-size:3rem;margin-bottom:1rem}.quick-action-card h3{color:#333;font-size:1.3rem;font-weight:600;margin:0 0 .5rem}.quick-action-card p{color:#666;font-size:.95rem;line-height:1.5;margin:0 0 1.5rem}.quick-action-card .btn{max-width:250px;width:100%}.quick-action-modal{max-height:90vh;max-width:900px}.quick-action-modal .modal-body{padding:1.5rem}.employee-select-wrapper{position:relative;width:100%}.employee-search-input{border:1px solid #ddd;border-radius:8px;font-size:1rem;padding:.75rem;transition:border-color .2s,box-shadow .2s;width:100%}.employee-search-input:focus{border-color:#dc3545;box-shadow:0 0 0 3px #dc35451a;outline:none}.employee-dropdown{background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 12px #00000026;left:0;margin-top:4px;max-height:300px;overflow-y:auto;position:absolute;right:0;top:100%;z-index:1000}.employee-dropdown-item{border-bottom:1px solid #f0f0f0;cursor:pointer;padding:.75rem 1rem;transition:background-color .2s}.employee-dropdown-item:last-child{border-bottom:none}.employee-dropdown-item:hover{background-color:#f8f9fa}.employee-name{color:#333;font-weight:600;margin-bottom:.25rem}.employee-details{color:#666;font-size:.85rem}.selected-employee-badge{background-color:#d4edda;border-radius:6px;color:#155724;font-size:.9rem;font-weight:500;margin-top:.5rem;padding:.5rem 1rem}@media (max-width:768px){.dashboard-container{padding:1rem}.charts-section,.stats-grid{grid-template-columns:1fr}.dashboard-header{align-items:flex-start;flex-direction:column}.export-buttons{flex-direction:column;width:100%}.btn-export{width:100%}.quick-actions-grid{grid-template-columns:1fr}.quick-action-modal{margin:1rem;max-width:100%}}.rbc-btn{color:inherit;font:inherit;margin:0}button.rbc-btn{-webkit-appearance:button;appearance:button;cursor:pointer;overflow:visible;text-transform:none}button[disabled].rbc-btn{cursor:not-allowed}button.rbc-input::-moz-focus-inner{border:0;padding:0}.rbc-calendar{align-items:stretch;box-sizing:border-box;display:flex;flex-direction:column;height:100%}.rbc-m-b-negative-3{margin-bottom:-3px}.rbc-h-full{height:100%}.rbc-calendar *,.rbc-calendar :after,.rbc-calendar :before{box-sizing:inherit}.rbc-abs-full,.rbc-row-bg{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0}.rbc-ellipsis,.rbc-event-label,.rbc-row-segment .rbc-event-content,.rbc-show-more{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rbc-rtl{direction:rtl}.rbc-off-range{color:#999}.rbc-off-range-bg{background:#e6e6e6}.rbc-header{border-bottom:1px solid #ddd;flex:1 0;font-size:90%;font-weight:700;min-height:0;overflow:hidden;padding:0 3px;text-align:center;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.rbc-header+.rbc-header{border-left:1px solid #ddd}.rbc-rtl .rbc-header+.rbc-header{border-left-width:0;border-right:1px solid #ddd}.rbc-header>a,.rbc-header>a:active,.rbc-header>a:visited{color:inherit;text-decoration:none}.rbc-button-link{background:none;border:none;color:inherit;cursor:pointer;margin:0;padding:0;-webkit-user-select:text;user-select:text}.rbc-row-content{position:relative;user-select:none;-webkit-user-select:none;z-index:4}.rbc-row-content-scrollable{display:flex;flex-direction:column;height:100%}.rbc-row-content-scrollable .rbc-row-content-scroll-container{-ms-overflow-style:none;height:100%;overflow-y:scroll;scrollbar-width:none}.rbc-row-content-scrollable .rbc-row-content-scroll-container::-webkit-scrollbar{display:none}.rbc-today{background-color:#eaf6ff}.rbc-toolbar{align-items:center;display:flex;flex-wrap:wrap;font-size:16px;justify-content:center;margin-bottom:10px}.rbc-toolbar .rbc-toolbar-label{flex-grow:1;padding:0 10px;text-align:center}.rbc-toolbar button{background:none;background-image:none;border:1px solid #ccc;border-radius:4px;color:#373a3c;display:inline-block;line-height:normal;margin:0;padding:.375rem 1rem;text-align:center;vertical-align:middle;white-space:nowrap}.rbc-toolbar button.rbc-active,.rbc-toolbar button:active{background-color:#e6e6e6;background-image:none;border-color:#adadad;box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.rbc-toolbar button.rbc-active:focus,.rbc-toolbar button.rbc-active:hover,.rbc-toolbar button:active:focus,.rbc-toolbar button:active:hover{background-color:#d4d4d4;border-color:#8c8c8c;color:#373a3c}.rbc-toolbar button:focus,.rbc-toolbar button:hover{background-color:#e6e6e6;border-color:#adadad;color:#373a3c}.rbc-toolbar button:hover{cursor:pointer}.rbc-btn-group{display:inline-block;white-space:nowrap}.rbc-btn-group>button:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.rbc-btn-group>button:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.rbc-rtl .rbc-btn-group>button:first-child:not(:last-child){border-radius:4px;border-bottom-left-radius:0;border-top-left-radius:0}.rbc-rtl .rbc-btn-group>button:last-child:not(:first-child){border-radius:4px;border-bottom-right-radius:0;border-top-right-radius:0}.rbc-btn-group>button:not(:first-child):not(:last-child){border-radius:0}.rbc-btn-group button+button{margin-left:-1px}.rbc-rtl .rbc-btn-group button+button{margin-left:0;margin-right:-1px}.rbc-btn-group+.rbc-btn-group,.rbc-btn-group+button{margin-left:10px}@media (max-width:767px){.rbc-toolbar{flex-direction:column}}.rbc-day-slot .rbc-background-event,.rbc-event{background-color:#3174ad;border:none;border-radius:5px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;margin:0;padding:2px 5px;text-align:left;width:100%}.rbc-day-slot .rbc-slot-selecting .rbc-background-event,.rbc-slot-selecting .rbc-day-slot .rbc-background-event,.rbc-slot-selecting .rbc-event{cursor:inherit;pointer-events:none}.rbc-day-slot .rbc-selected.rbc-background-event,.rbc-event.rbc-selected{background-color:#265985}.rbc-day-slot .rbc-background-event:focus,.rbc-event:focus{outline:5px auto #3b99fc}.rbc-event-label{font-size:80%}.rbc-event-overlaps{box-shadow:-1px 1px 5px 0 #33333380}.rbc-event-continues-prior{border-bottom-left-radius:0;border-top-left-radius:0}.rbc-event-continues-after{border-bottom-right-radius:0;border-top-right-radius:0}.rbc-event-continues-earlier{border-top-left-radius:0;border-top-right-radius:0}.rbc-event-continues-later{border-bottom-left-radius:0;border-bottom-right-radius:0}.rbc-row{display:flex;flex-direction:row}.rbc-row-segment{padding:0 1px 1px}.rbc-selected-cell{background-color:#0000001a}.rbc-show-more{background-color:#ffffff4d;color:#3174ad;font-size:85%;font-weight:700;height:auto;line-height:normal;z-index:4}.rbc-show-more:focus,.rbc-show-more:hover{color:#265985}.rbc-month-view{border:1px solid #ddd;display:flex;flex:1 0;flex-direction:column;height:100%;position:relative;user-select:none;-webkit-user-select:none;width:100%}.rbc-month-header{display:flex;flex-direction:row}.rbc-month-row{display:flex;flex:1 0;flex-basis:0px;flex-direction:column;height:100%;overflow:hidden;position:relative}.rbc-month-row+.rbc-month-row{border-top:1px solid #ddd}.rbc-date-cell{flex:1 1;min-width:0;padding-right:5px;text-align:right}.rbc-date-cell.rbc-now{font-weight:700}.rbc-date-cell>a,.rbc-date-cell>a:active,.rbc-date-cell>a:visited{color:inherit;text-decoration:none}.rbc-row-bg{display:flex;flex:1 0;flex-direction:row;overflow:hidden;right:1px}.rbc-day-bg{flex:1 0}.rbc-day-bg+.rbc-day-bg{border-left:1px solid #ddd}.rbc-rtl .rbc-day-bg+.rbc-day-bg{border-left-width:0;border-right:1px solid #ddd}.rbc-overlay{background-color:#fff;border:1px solid #e5e5e5;box-shadow:0 5px 15px #00000040;padding:10px;position:absolute;z-index:5}.rbc-overlay>*+*{margin-top:1px}.rbc-overlay-header{border-bottom:1px solid #e5e5e5;margin:-10px -10px 5px;padding:2px 10px}.rbc-agenda-view{display:flex;flex:1 0;flex-direction:column;overflow:auto}.rbc-agenda-view table.rbc-agenda-table{border:1px solid #ddd;border-collapse:collapse;border-spacing:0;width:100%}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td{padding:5px 10px;vertical-align:top}.rbc-agenda-view table.rbc-agenda-table .rbc-agenda-time-cell{padding-left:15px;padding-right:15px;text-transform:lowercase}.rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left:1px solid #ddd}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table tbody>tr>td+td{border-left-width:0;border-right:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table tbody>tr+tr{border-top:1px solid #ddd}.rbc-agenda-view table.rbc-agenda-table thead>tr>th{border-bottom:1px solid #ddd;padding:3px 5px;text-align:left}.rbc-rtl .rbc-agenda-view table.rbc-agenda-table thead>tr>th{text-align:right}.rbc-agenda-time-cell{text-transform:lowercase}.rbc-agenda-time-cell .rbc-continues-after:after{content:" »"}.rbc-agenda-time-cell .rbc-continues-prior:before{content:"« "}.rbc-agenda-date-cell,.rbc-agenda-time-cell{white-space:nowrap}.rbc-agenda-event-cell{width:100%}.rbc-time-column{display:flex;flex-direction:column;min-height:100%}.rbc-time-column .rbc-timeslot-group{flex:1 1}.rbc-timeslot-group{border-bottom:1px solid #ddd;display:flex;flex-flow:column nowrap;min-height:40px}.rbc-header-gutter,.rbc-time-gutter{flex:none}.rbc-label{padding:0 5px}.rbc-day-slot{position:relative}.rbc-day-slot .rbc-events-container{bottom:0;left:0;margin-right:10px;position:absolute;right:0;top:0}.rbc-day-slot .rbc-events-container.rbc-rtl{left:10px;right:0}.rbc-day-slot .rbc-background-event,.rbc-day-slot .rbc-event{align-items:flex-start;border:1px solid #265985;display:flex;flex-flow:column wrap;max-height:100%;min-height:20px;overflow:hidden;position:absolute}.rbc-day-slot .rbc-background-event{opacity:.75}.rbc-day-slot .rbc-event-label{flex:none;padding-right:5px;width:auto}.rbc-day-slot .rbc-event-content{word-wrap:break-word;flex:1 1;height:100%;line-height:1;min-height:1em;width:100%}.rbc-day-slot .rbc-time-slot{border-top:1px solid #f7f7f7}.rbc-time-view-resources .rbc-time-gutter,.rbc-time-view-resources .rbc-time-header-gutter{background-color:#fff;border-right:1px solid #ddd;left:0;margin-right:-1px;position:-webkit-sticky;position:sticky;z-index:10}.rbc-time-view-resources .rbc-time-header{overflow:hidden}.rbc-time-view-resources .rbc-time-header-content{flex:1 0;flex-basis:0px;min-width:auto}.rbc-time-view-resources .rbc-time-header-cell-single-day{display:none}.rbc-time-view-resources .rbc-day-slot{min-width:140px}.rbc-time-view-resources .rbc-day-bg,.rbc-time-view-resources .rbc-header{flex:1 1;flex-basis:0 px;width:140px}.rbc-time-header-content+.rbc-time-header-content{margin-left:-1px}.rbc-time-slot{flex:1 0}.rbc-time-slot.rbc-now{font-weight:700}.rbc-day-header{text-align:center}.rbc-slot-selection{background-color:#00000080;color:#fff;font-size:75%;padding:3px;position:absolute;width:100%;z-index:10}.rbc-slot-selecting{cursor:move}.rbc-time-view{border:1px solid #ddd;display:flex;flex:1 1;flex-direction:column;min-height:0;width:100%}.rbc-time-view .rbc-time-gutter{text-align:right;white-space:nowrap}.rbc-time-view .rbc-allday-cell{box-sizing:initial;height:100%;position:relative;width:100%}.rbc-time-view .rbc-allday-cell+.rbc-allday-cell{border-left:1px solid #ddd}.rbc-time-view .rbc-allday-events{position:relative;z-index:4}.rbc-time-view .rbc-row{box-sizing:border-box;min-height:20px}.rbc-time-header{display:flex;flex:0 0 auto;flex-direction:row}.rbc-time-header.rbc-overflowing{border-right:1px solid #ddd}.rbc-rtl .rbc-time-header.rbc-overflowing{border-left:1px solid #ddd;border-right-width:0}.rbc-time-header>.rbc-row.rbc-row-resource,.rbc-time-header>.rbc-row:first-child{border-bottom:1px solid #ddd}.rbc-time-header-cell-single-day{display:none}.rbc-time-header-content{border-left:1px solid #ddd;display:flex;flex:1 1;flex-direction:column;min-width:0}.rbc-rtl .rbc-time-header-content{border-left-width:0;border-right:1px solid #ddd}.rbc-time-header-content>.rbc-row.rbc-row-resource{border-bottom:1px solid #ddd;flex-shrink:0}.rbc-time-content{align-items:flex-start;border-top:2px solid #ddd;display:flex;flex:1 0;overflow-y:auto;position:relative;width:100%}.rbc-time-content>.rbc-time-gutter{flex:none}.rbc-time-content>*+*>*{border-left:1px solid #ddd}.rbc-rtl .rbc-time-content>*+*>*{border-left-width:0;border-right:1px solid #ddd}.rbc-time-content>.rbc-day-slot{user-select:none;-webkit-user-select:none;width:100%}.rbc-current-time-indicator{background-color:#74ad31;height:1px;left:0;pointer-events:none;position:absolute;right:0;z-index:3}.rbc-resource-grouping.rbc-time-header-content{display:flex;flex-direction:column}.rbc-resource-grouping .rbc-row .rbc-header{width:141px}.bulk-timesheet-editor{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;max-width:100%;padding:1.5rem}.bulk-modal{max-height:95vh;max-width:95vw;overflow:auto;width:95vw}.bulk-editor-header{align-items:flex-start;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.header-left h2{color:#333;margin:0 0 .5rem}.shortcuts-info{color:#666;font-size:.85rem}.shortcut-hint{background:#f0f0f0;border-radius:4px;padding:.25rem .5rem}.header-right{display:flex;flex-wrap:wrap;gap:.5rem}.error-banner,.success-banner{align-items:center;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:1rem;padding:.75rem 1rem}.error-banner{background:#fee;border:1px solid #fcc;color:#c33}.success-banner{background:#efe;border:1px solid #cfc;color:#3c3}.error-banner button{background:none;border:none;color:#c33;cursor:pointer;font-size:1.2rem;height:24px;padding:0;width:24px}.bulk-editor-controls{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1rem;padding:1rem}.date-selection,.date-selection label{align-items:center;display:flex;gap:.5rem}.date-selection label{color:#333;font-size:.9rem;font-weight:600}.date-input{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:.9rem;padding:.5rem}.date-input:focus,.date-input:hover{border-color:#4a90e2}.date-input:focus{box-shadow:0 0 0 2px #4a90e233;outline:none}.default-values{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.default-values label{align-items:center;display:flex;font-size:.9rem;gap:.5rem}.default-values input[type=number],.default-values input[type=time]{border:1px solid #ddd;border-radius:4px;font-size:.9rem;padding:.25rem .5rem}.search-filter{flex:1 1;min-width:200px}.search-input{border:1px solid #ddd;border-radius:4px;font-size:.9rem;padding:.5rem;width:100%}.bulk-editor-table-wrapper{border:1px solid #ddd;border-radius:4px;max-height:70vh;overflow-x:auto;overflow-y:auto}.bulk-editor-table{background:#fff;border-collapse:collapse;width:100%}.bulk-editor-table thead{background:#f8f9fa;position:-webkit-sticky;position:sticky;top:0;z-index:10}.bulk-editor-table th{background:#f8f9fa;border-bottom:2px solid #ddd;font-weight:600;padding:.75rem;text-align:left;white-space:nowrap}.bulk-editor-table td{border-bottom:1px solid #eee;padding:.5rem .75rem;vertical-align:middle}.bulk-editor-table tbody tr{transition:background-color .2s}.bulk-editor-table tbody tr:hover{background:#f8f9fa}.bulk-editor-table tbody tr.selected{background:#e3f2fd}.bulk-editor-table tbody tr.absent{opacity:.7}.bulk-editor-table tbody tr.existing{background:#fff9e6}.editable-cell{cursor:pointer;min-width:100px;position:relative}.editable-cell:hover{background:#f0f7ff}.editable-cell.editing{padding:0}.editable-cell input{background:#fff;border:2px solid #4a90e2;border-radius:4px;font-size:.9rem;padding:.25rem .5rem;width:100%}.editable-cell input:focus{border-color:#357abd;outline:none}.notes-cell{display:inline-block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-badge{border-radius:4px;font-size:.8rem;padding:.25rem .5rem}.status-badge.existing{background:#fff3cd;color:#856404}.status-badge.new{background:#d1ecf1;color:#0c5460}.status-badge.empty{background:#f8f9fa;color:#6c757d}.bulk-editor-footer{border-top:1px solid #eee;margin-top:1rem;padding-top:1rem}.stats{color:#666;display:flex;font-size:.9rem;gap:1.5rem}.loading{padding:2rem}.btn{font-size:.9rem;padding:.5rem 1rem;transition:all .2s}.btn-primary{background:#4a90e2}.btn-primary:hover:not(:disabled){background:#357abd}.btn-primary:disabled{background:#ccc}.btn-secondary:hover{background:#5a6268}.btn-sm{font-size:.85rem;padding:.25rem .5rem}.bulk-editor-table-wrapper::-webkit-scrollbar{height:8px;width:8px}.bulk-editor-table-wrapper::-webkit-scrollbar-track{background:#f1f1f1}.bulk-editor-table-wrapper::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.bulk-editor-table-wrapper::-webkit-scrollbar-thumb:hover{background:#555}@media (max-width:768px){.bulk-editor-header{flex-direction:column}.header-right{width:100%}.bulk-editor-controls{align-items:stretch;flex-direction:column}.date-selection{width:100%}.date-selection label{align-items:flex-start;flex-direction:column;width:100%}.date-input{width:100%}.default-values{align-items:stretch;flex-direction:column}.bulk-editor-table{font-size:.85rem}.bulk-editor-table td,.bulk-editor-table th{padding:.5rem}}.grade-progression-management{margin:0 auto;max-width:1400px;padding:20px}.page-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:30px;padding-bottom:20px}.page-header h1{color:#333;font-size:1.8em;margin:0}.btn{font-size:.95em;padding:10px 20px;transition:all .3s}.btn-primary{background-color:#d32f2f}.btn-primary:hover:not(:disabled){background-color:#b71c1c}.btn-primary:disabled{background-color:#ccc;cursor:not-allowed}.btn-secondary{background-color:#f5f5f5;border:1px solid #ddd;color:#333}.btn-secondary:hover{background-color:#e0e0e0}.btn-sm{font-size:.85em;padding:6px 12px}.btn-promote-all{font-size:1em;padding:12px 24px}.success-message{background-color:#4caf50;font-weight:500;margin-bottom:20px}.error,.success-message{border-radius:4px;color:#fff;padding:15px;text-align:center}.error{background-color:#f44336;margin:20px 0}.loading{color:#666;font-size:1.1em}.filters-section{align-items:flex-end;background-color:#f9f9f9;border-radius:8px;display:flex;flex-wrap:wrap;gap:15px;margin-bottom:25px;padding:20px}.filter-group{display:flex;flex-direction:column;min-width:150px}.filter-group label{color:#666;font-size:.9em;font-weight:600;margin-bottom:5px}.filter-input,.filter-select{border:1px solid #ddd;border-radius:4px;font-size:.95em;padding:8px 12px}.filter-input:focus,.filter-select:focus{border-color:#d32f2f;outline:none}.stats-section{display:flex;gap:15px;margin-bottom:20px}.stat-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;flex-direction:column;min-width:150px;padding:15px 20px}.stat-label{color:#666;font-size:.85em;margin-bottom:5px}.stat-value{color:#d32f2f;font-size:1.5em;font-weight:700}.no-results{color:#666;font-size:1.1em;padding:40px;text-align:center}.no-results,.table-container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a}.table-container{margin-bottom:20px;overflow-x:auto}.progression-table{border-collapse:collapse;width:100%}.progression-table thead{background-color:#f5f5f5}.progression-table th{border-bottom:2px solid #e0e0e0;color:#333;font-weight:600;padding:15px;text-align:left}.progression-table td{border-bottom:1px solid #f0f0f0;padding:12px 15px}.progression-table tbody tr:hover{background-color:#f9f9f9}.degre-badge{background-color:#d32f2f;font-size:.9em;font-weight:600}.degre-badge,.duree-badge{border-radius:12px;color:#fff;display:inline-block;padding:4px 10px}.duree-badge{background-color:#2196f3;font-size:.85em;font-weight:500}.date-promotion{color:#4caf50;font-weight:500}.pagination{align-items:center;display:flex;gap:15px;justify-content:center;margin-top:20px}.page-info{color:#666;font-weight:500}@media (max-width:768px){.page-header{align-items:flex-start;gap:15px}.filters-section,.page-header{flex-direction:column}.filter-group{width:100%}.table-container{overflow-x:scroll}.progression-table{min-width:800px}.stats-section{flex-direction:column}}.zkteco-management{margin:0 auto;max-width:1400px;padding:20px}.management-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:30px}.management-header h1{color:#333;margin:0}.agents-list{margin-top:20px}.agents-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;width:100%}.agents-table thead{background:#f8f9fa}.agents-table th{border-bottom:2px solid #dee2e6;color:#495057;font-weight:600;padding:12px 16px;text-align:left}.agents-table td{border-bottom:1px solid #dee2e6;padding:12px 16px}.agents-table tbody tr:hover{background:#f8f9fa}.agent-id{background:#e9ecef;border-radius:4px;font-family:Courier New,monospace;font-size:.9em;padding:4px 8px}.status-online{background:#d4edda;color:#155724}.status-offline{background:#f8d7da;color:#721c24}.status-error{background:#fff3cd;color:#856404}.status-unknown{background:#e2e3e5;color:#383d41}.form-group input{border:1px solid #ced4da;border-radius:4px;box-sizing:border-box;font-size:14px;padding:10px;width:100%}.form-group input:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.api-key-dialog{max-width:600px}.api-key-info{margin:20px 0}.api-key-info p{margin:10px 0}.api-key-display{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;gap:10px;margin:10px 0;padding:10px}.api-key-display code{background:#fff;border:1px solid #dee2e6;border-radius:4px;flex:1 1;font-family:Courier New,monospace;font-size:.9em;padding:8px;word-break:break-all}.warning{background:#fff3cd;border-radius:4px;color:#856404;margin-top:15px;padding:10px}.zkteco-attendance-review{margin:0 auto;max-width:1400px;padding:20px}.review-header{align-items:center;display:flex;flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:30px}.review-header h1{color:#333;margin:0}.header-actions{align-items:center;display:flex;gap:15px}.filter-select{background:#fff;border:1px solid #ced4da;border-radius:4px;cursor:pointer;font-size:14px;padding:8px 12px}.attendance-list{margin-top:20px}.attendance-table{background:#fff;border-collapse:collapse;border-radius:8px;box-shadow:0 2px 4px #0000001a;overflow:hidden;width:100%}.attendance-table thead{background:#f8f9fa}.attendance-table th{border-bottom:2px solid #dee2e6;color:#495057;font-weight:600;padding:12px 16px;text-align:left}.attendance-table td{border-bottom:1px solid #dee2e6;padding:12px 16px}.attendance-table tbody tr:hover{background:#f8f9fa}.status-badge{border-radius:12px;display:inline-block;font-size:.85em;font-weight:500;padding:4px 12px}.status-pending{background:#fff3cd;color:#856404}.status-synced{background:#d4edda;color:#155724}.status-error{background:#f8d7da;color:#721c24}.status-rejected{background:#e2e3e5;color:#383d41}.actions-column{text-align:right}.btn{border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;margin-left:5px;padding:8px 16px;transition:background .2s}.btn-primary{background:#007bff;color:#fff}.btn-primary:hover{background:#0056b3}.btn-success{background:#28a745;color:#fff}.btn-success:hover{background:#218838}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#545b62}.btn-small{font-size:12px;padding:4px 8px}.modal-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.modal-content{background:#fff;border-radius:8px;max-height:90vh;max-width:500px;overflow-y:auto;padding:30px;width:90%}.modal-content h2{color:#333;margin-top:0}.form-group,.modal-content h2{margin-bottom:20px}.form-group label{color:#495057;display:block;font-weight:500;margin-bottom:8px}.form-group textarea{border:1px solid #ced4da;border-radius:4px;box-sizing:border-box;font-family:inherit;font-size:14px;padding:10px;resize:vertical;width:100%}.form-group textarea:focus{border-color:#007bff;box-shadow:0 0 0 2px #007bff40;outline:none}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:30px}.empty-state{color:#6c757d;padding:60px 20px;text-align:center}.alert{border-radius:4px;margin-bottom:20px;padding:12px 16px}.alert-error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.loading{color:#6c757d;padding:40px;text-align:center}.App{background-color:#f5f5f5;min-height:100vh}.app-main{margin:2rem auto;max-width:1200px;padding:0 1rem}
/*# sourceMappingURL=main.cdd5eb19.css.map*/