:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#0f4f9c;text-decoration:inherit}a:hover{color:#154f9c}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#0f4f9c}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#154f9c}button{background-color:#f9f9f9}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#0f4f9c;padding:1rem}.login-card{background:#fff;border-radius:12px;box-shadow:0 10px 40px #00000026;padding:2.5rem;width:100%;max-width:420px;animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{font-size:1.75rem;font-weight:700;color:#333;margin:0 0 .5rem}.login-header p{font-size:.95rem;color:#666;margin:0}.login-form{display:flex;flex-direction:column;gap:1.25rem}.form-group label{font-size:.9rem;font-weight:600;color:#444}.form-group input{padding:.875rem 1rem;border:2px solid #e0e0e0;border-radius:8px;font-size:1rem;background:#fff;color:#333;transition:all .2s ease;outline:none}.form-group input:focus{border-color:#0f4f9c;box-shadow:0 0 0 3px #1976d21a}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-group input::placeholder{color:#999}.password-group{gap:.75rem}.password-group .checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:.5rem}.password-group .checkbox-label input[type=checkbox]{width:auto;cursor:pointer;margin:0;padding:0;border:2px solid #e0e0e0}.password-group .checkbox-label span{font-size:.9rem;color:#666;font-weight:400}.error-message{background-color:#fee;color:#c33;padding:.75rem 1rem;border-radius:6px;font-size:.9rem;text-align:center;border:1px solid #fcc}.login-button{padding:1rem;background:#0f4f9c;color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:.5rem}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 15px #1976d266}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.6;cursor:not-allowed}.login-footer{margin-top:2rem;text-align:center;padding-top:1.5rem;border-top:1px solid #e0e0e0}.login-footer p{font-size:.875rem;color:#999;margin:0}@media (max-width: 480px){.login-card{padding:2rem 1.5rem}.login-header h1{font-size:1.5rem}.login-header p{font-size:.875rem}.form-group input{padding:.75rem .875rem}.login-button{padding:.875rem}}.dashboard-container{min-height:100vh;background-color:#f6f8fb;color:#1f2937}.dashboard-header{background-color:#fffffff0;color:#1f2937;padding:.875rem 2rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a}.dashboard-header h1{margin:0;color:#172033;font-size:1.5rem;font-weight:700}.dashboard-header .user-info{display:flex;align-items:center;gap:1rem}.dashboard-header .user-info span{color:#475569;font-size:.95rem;font-weight:600}.dashboard-header .settings-button,.dashboard-header .logout-button{box-sizing:border-box;min-height:40px;padding:.5rem 1rem;background-color:#fff;color:#475569;border:1px solid #dde5ef;border-radius:6px;cursor:pointer;font-size:.95rem;font-weight:600;line-height:1.35;transition:background-color .18s,border-color .18s,box-shadow .18s,color .18s}.dashboard-header .settings-button:hover,.dashboard-header .logout-button:hover{background-color:#f8fafc;color:#0f4f9c;border-color:#cbd7e6;box-shadow:0 1px 2px #0f172a14}.dashboard-header .settings-button:focus-visible,.dashboard-header .logout-button:focus-visible,.dashboard-card .card-button:focus-visible{outline:none;box-shadow:0 0 0 3px #1976d22e}.dashboard-main{box-sizing:border-box;width:100%;max-width:1400px;margin:0 auto;padding:2rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem}.dashboard-card{display:flex;min-height:190px;flex-direction:column;gap:.875rem;padding:1.5rem;background-color:#fff;border:1px solid #dde5ef;border-radius:8px;box-shadow:0 1px 2px #0f172a0a;transition:border-color .18s,box-shadow .18s,transform .18s}.dashboard-card:hover{border-color:#cbd7e6;box-shadow:0 8px 22px #0f172a14;transform:translateY(-2px)}.dashboard-card h2{margin:0;color:#172033;font-size:1.2rem;font-weight:700;line-height:1.35}.dashboard-card p{flex-grow:1;margin:0;color:#64748b;font-size:.95rem;line-height:1.55}.dashboard-card .card-button{box-sizing:border-box;min-height:40px;margin-top:auto;padding:.5rem 1rem;background-color:#0f4f9c;color:#fff;border:1px solid #0f4f9c;border-radius:6px;cursor:pointer;font-size:.95rem;font-weight:600;line-height:1.35;transition:background-color .18s,border-color .18s,box-shadow .18s,transform .18s}.dashboard-card .card-button:hover{background-color:#154f9c;border-color:#154f9c;box-shadow:0 6px 16px #1976d22e;transform:translateY(-1px)}.dashboard-card .card-button:active{transform:translateY(0)}@media (max-width: 768px){.dashboard-header{flex-direction:column;align-items:stretch;gap:1rem;padding:1.25rem 1rem}.dashboard-header h1{font-size:1.25rem}.dashboard-header .user-info{width:100%;flex-wrap:wrap;justify-content:space-between}.dashboard-header .user-info span{width:100%}.dashboard-main{padding:1.5rem 1rem}.dashboard-grid{grid-template-columns:1fr;gap:1rem}.dashboard-card{min-height:0;padding:1.25rem}}.attendance-container{min-height:100vh;background-color:#f5f5f5}.attendance-header{background:#0f4f9c;color:#fff;padding:1.5rem 2rem;box-shadow:0 2px 8px #0000001a}.header-content{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.attendance-header h1{margin:0;font-size:1.5rem;font-weight:700}.user-role-badge{background-color:#ffffff40;padding:.375rem .875rem;border-radius:20px;font-size:.875rem;font-weight:600}.user-info span{font-size:.95rem}.settings-button,.logout-button{padding:.5rem 1.25rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s ease}.settings-button:hover,.logout-button:hover{background-color:#ffffff4d;transform:translateY(-1px)}.attendance-main{padding:2rem;max-width:1200px;margin:0 auto}.attendance-section{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 8px #00000014}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:2px solid #f0f0f0}.section-header h2{margin:0;font-size:1.5rem;color:#333}.date-info{font-size:1rem;color:#666;font-weight:500}.date-picker{padding:.5rem 1rem;border:2px solid #e0e0e0;border-radius:6px;font-size:1rem;background:#fff;color:#333;cursor:pointer;transition:all .2s ease}.date-picker:focus{outline:none;border-color:#0f4f9c;box-shadow:0 0 0 3px #1976d21a}.date-picker:hover{border-color:#0f4f9c}.attendance-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:#0f4f9c;color:#fff;padding:1.5rem;border-radius:12px;text-align:center;box-shadow:0 4px 12px #1976d24d;transition:all .3s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #1976d266}.stat-card.present{background:#e8f5e9;color:#2e7d32}.stat-card.absent{background:#ffebee;color:#c62828}.stat-card.late{background:#fff3e0;color:#ef6c00}.stat-number{font-size:2.5rem;font-weight:700;margin-bottom:.5rem;transition:all .3s ease}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.stat-number.updated{animation:pulse .5s ease}.stat-label{font-size:.95rem;opacity:.95}.attendance-list{margin-top:2rem}.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.list-header h3{margin:0;font-size:1.25rem;color:#333}.list-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.compact-button{padding-inline:1rem}.refresh-button{padding:.5rem 1rem;background-color:#f0f0f0;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s ease}.refresh-button:hover{background-color:#e0e0e0}.member-list{min-height:200px}.member-items{list-style:none;padding:0;margin:0}.member-item{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;background-color:#fafafa;border-radius:8px;margin-bottom:.75rem;transition:all .2s ease}.member-item:hover{background-color:#f0f0f0}.attendance-status{display:flex;gap:.5rem}.error-message{color:#c62828}.empty-state{text-align:center;padding:3rem 1rem;color:#999}.empty-state p{margin:.5rem 0;font-size:1rem}.empty-state-sub{font-size:.9rem;color:#bbb}.action-section{margin-top:2rem;padding-top:2rem;border-top:2px solid #f0f0f0;display:flex;gap:1rem;justify-content:center}.primary-button{padding:1rem 2rem;background:#0f4f9c;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.primary-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1976d266}.primary-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.secondary-button{padding:1rem 2rem;background-color:#fff;color:#0f4f9c;border:2px solid #0f4f9c;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.secondary-button:hover{background-color:#0f4f9c;color:#fff;transform:translateY(-2px)}@media (max-width: 768px){.header-content{flex-direction:column;gap:1rem}.attendance-header h1{font-size:1.25rem}.user-info{width:100%;justify-content:space-between}.attendance-main{padding:1.5rem 1rem}.attendance-section{padding:1.5rem}.section-header{flex-direction:column;align-items:flex-start;gap:.5rem}.attendance-stats{grid-template-columns:repeat(2,1fr);gap:1rem}.stat-number{font-size:2rem}.action-section{flex-direction:column}.list-header{align-items:flex-start;flex-direction:column;gap:.75rem}.list-actions,.primary-button,.secondary-button{width:100%}.member-item{flex-direction:column;align-items:flex-start;gap:1rem}.attendance-status{width:100%;justify-content:space-between}.status-btn{flex:1}}.account-management-container{min-height:100vh;background-color:#f5f5f5}.action-bar{margin-bottom:1.5rem;display:flex;justify-content:flex-end}.users-table-container{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014}.users-table{width:100%;border-collapse:collapse}.users-table thead{background-color:#f8f9fa}.users-table th{padding:1rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0}.users-table td{padding:1rem;border-bottom:1px solid #f0f0f0;color:#333}.users-table tbody tr:hover{background-color:#f8f9fa}.role-select{padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;cursor:pointer;background:#fff;color:#333}.role-select:disabled{background-color:#f5f5f5;cursor:not-allowed;color:#666}.toggle-switch{position:relative;display:inline-block;width:50px;height:24px;margin-right:.5rem}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;transition:.3s;border-radius:24px}.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;transition:.3s;border-radius:50%}input:checked+.toggle-slider{background-color:#0f4f9c}input:checked+.toggle-slider:before{transform:translate(26px)}input:disabled+.toggle-slider{background-color:#e0e0e0;cursor:not-allowed}.status-badge{padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:600}.status-badge.active{background-color:#d4edda;color:#155724}.status-badge.inactive{background-color:#f8d7da;color:#721c24}.reset-btn{background-color:#ffc107;color:#333}.reset-btn:hover{background-color:#ffb300;transform:translateY(-1px)}@media (max-width: 768px){.page-main{padding:1rem}.users-table-container{overflow-x:auto}.users-table{font-size:.85rem}.users-table th,.users-table td{padding:.75rem .5rem}.action-buttons{flex-direction:column}.action-btn{width:100%}.modal-content{width:95%;margin:1rem}}.department-management-container{min-height:100vh;background-color:#f5f5f5}.assign-button{padding:.75rem 1.5rem;background-color:#fff;color:#0f4f9c;border:2px solid #0f4f9c;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.assign-button:hover:not(:disabled){background-color:#0f4f9c;color:#fff;transform:translateY(-2px)}.assign-button:disabled{opacity:.6;cursor:not-allowed}.departments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;margin-top:1.5rem}.department-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #00000014;transition:all .3s ease}.department-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0000001f}.department-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.department-header h3{margin:0;font-size:1.25rem;color:#333;font-weight:600}.department-header .member-count{font-size:1.1rem;font-weight:700;color:#0f4f9c;background:#0f4f9c;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.department-actions{display:flex;gap:.5rem;border-top:1px solid #f0f0f0}.edit-btn{flex:1;padding:.5rem 1rem;background-color:#28a745;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s ease}.edit-btn:disabled{opacity:.5;cursor:not-allowed}.delete-btn{flex:1;padding:.5rem 1rem;background-color:#dc3545;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s ease}.delete-btn:disabled{opacity:.5;cursor:not-allowed}.department-desc{margin:0 0 1rem;color:#666;font-size:.9rem;line-height:1.4}.modal-content.large{max-width:800px;width:95%}.assign-table-container{max-height:500px;overflow-y:auto}.assign-table{width:100%;border-collapse:collapse}.assign-table thead{background-color:#f8f9fa;position:sticky;top:0;z-index:1}.assign-table th{padding:.875rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0}.assign-table td{padding:.875rem;border-bottom:1px solid #f0f0f0;color:#333}.assign-table tbody tr:hover{background-color:#f8f9fa}.department-select{padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;cursor:pointer;width:100%;max-width:200px;background:#fff;color:#333}textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;font-family:inherit;background:#fff;color:#333;resize:vertical;transition:border-color .2s ease}textarea:focus{outline:none;border-color:#0f4f9c}@media (max-width: 768px){.departments-grid{grid-template-columns:1fr;gap:1rem}.action-bar{flex-direction:column;gap:.75rem}.add-button,.assign-button{width:100%}.assign-table-container{overflow-x:auto}.assign-table{font-size:.85rem}.assign-table th,.assign-table td{padding:.625rem}}.member-management-container{min-height:100vh;background-color:#f5f5f5}.page-header{background:#0f4f9c;color:#fff;padding:1.5rem 2rem;box-shadow:0 2px 8px #0000001a}.header-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:1.5rem}.back-button:hover{background-color:#ffffff4d}.page-header h1{margin:0;font-size:1.5rem;font-weight:700}.page-main{padding:2rem;max-width:1200px;margin:0 auto;position:relative}.error-banner{background-color:#f8d7da;color:#721c24;padding:1rem 1.5rem;border-radius:8px;margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center;border:1px solid #f5c6cb}.error-banner button{background:none;border:none;color:#721c24;font-size:1.25rem;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s ease}.error-banner button:hover{background-color:#0000001a}.loading-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#0000004d;display:flex;align-items:center;justify-content:center;z-index:999}.loading-spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #0f4f9c;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.action-bar{margin-bottom:1rem;display:flex;justify-content:flex-end;gap:1rem}.filter-bar{margin-bottom:1.5rem;padding:1.25rem;background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.5rem;flex:1;min-width:200px}.filter-group label{font-size:.9rem;font-weight:600;color:#333}.filter-input{padding:.75rem;border:2px solid #e0e0e0;border-radius:8px;font-size:.95rem;background:#fff;color:#333;transition:all .2s ease}.filter-input:focus{outline:none;border-color:#0f4f9c;box-shadow:0 0 0 3px #1976d21a}.filter-select{padding:.75rem;border:2px solid #e0e0e0;border-radius:8px;font-size:.95rem;background:#fff;color:#333;cursor:pointer;transition:all .2s ease}.filter-select:focus{outline:none;border-color:#0f4f9c;box-shadow:0 0 0 3px #1976d21a}.clear-filter-button{padding:.75rem 1.5rem;background-color:#6c757d;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s ease;white-space:nowrap;height:fit-content}.clear-filter-button:hover{background-color:#5a6268;transform:translateY(-1px)}.add-button{padding:.75rem 1.5rem;background:#0f4f9c;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.add-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #1976d266}.add-button:disabled{opacity:.6;cursor:not-allowed}.csv-upload-button{padding:.75rem 1.5rem;background:#fff;color:#0f4f9c;border:2px solid #0f4f9c;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.csv-upload-button:hover:not(:disabled){background:#0f4f9c;color:#fff;transform:translateY(-2px)}.csv-upload-button:disabled{opacity:.6;cursor:not-allowed}.members-table-container{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #00000014}.members-table{width:100%;border-collapse:collapse}.members-table thead{background-color:#f8f9fa}.members-table th{padding:1rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0}.members-table td{padding:1rem;border-bottom:1px solid #f0f0f0;color:#333}.members-table tbody tr:hover{background-color:#f8f9fa}.gender-badge{display:inline-block;padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:600}.gender-badge.male{background-color:#cfe2ff;color:#084298}.gender-badge.female{background-color:#f8d7da;color:#842029}.gender-badge.none{background-color:#e0e0e0;color:#666}.department-select{padding:.5rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;cursor:pointer;background:#fff;color:#333;min-width:150px}.department-select:focus{outline:none;border-color:#0f4f9c}.action-btn{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s ease}.edit-btn{background-color:#28a745;color:#fff}.edit-btn:hover:not(:disabled){background-color:#218838;transform:translateY(-1px)}.edit-btn:disabled{background-color:#e0e0e0;color:#999;cursor:not-allowed}.delete-btn:disabled{background-color:#e0e0e0;color:#999;cursor:not-allowed}.empty-state{padding:3rem;text-align:center;color:#999}.officer-info{display:flex;flex-wrap:wrap;gap:.5rem}.officer-badge{display:inline-block;padding:.375rem .75rem;background:#0f4f9c;color:#fff;border-radius:16px;font-size:.85rem;font-weight:600;white-space:nowrap}.no-officer{color:#999;font-size:.9rem}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;width:90%;max-width:500px;box-shadow:0 10px 40px #0003}.modal-header{padding:1.5rem;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:1.25rem;color:#333}.close-button{background:none;border:none;font-size:1.5rem;color:#999;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease}.close-button:hover{background-color:#f0f0f0;color:#333}.modal-body{padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:600;color:#333;font-size:.9rem}.form-group input,.form-group select{padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;background:#fff;color:#333;transition:border-color .2s ease}.modal-footer{padding:1.5rem;border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end;gap:.75rem}.cancel-button,.confirm-button{padding:.75rem 1.5rem;border:none;border-radius:6px;cursor:pointer;font-size:.95rem;font-weight:600;transition:all .2s ease}.cancel-button{background-color:#f0f0f0;color:#333}.cancel-button:hover{background-color:#e0e0e0}.confirm-button{background:#0f4f9c;color:#fff}.confirm-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #1976d266}.confirm-button:disabled{opacity:.5;cursor:not-allowed}.csv-instructions{background:#f8f9fa;padding:1rem;border-radius:8px;margin-bottom:1rem}.csv-instructions h3{margin:1rem 0 .5rem;font-size:1rem;color:#333}.csv-instructions h3:first-child{margin-top:0}.csv-instructions ol,.csv-instructions ul{margin:.5rem 0;padding-left:1.5rem}.csv-instructions li{margin:.25rem 0;color:#555}.csv-example{margin-top:1rem}.csv-example h4{margin:.5rem 0;font-size:.95rem;color:#333}.csv-example pre{background:#fff;padding:.75rem;border-radius:6px;border:1px solid #ddd;font-size:.85rem;overflow-x:auto;margin:.5rem 0;color:#333}.template-button{width:100%;padding:.875rem;background:#28a745;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.template-button:hover{background:#218838;transform:translateY(-1px)}.upload-loading{margin-top:1.5rem;padding:2rem;background:#0f4f9c;border-radius:12px;display:flex;flex-direction:column;align-items:center;gap:1rem}.upload-spinner{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-top:4px solid white;border-radius:50%;animation:spin 1s linear infinite}.upload-loading p{margin:0;color:#fff;font-size:1rem;font-weight:600}.file-input{width:100%;padding:.75rem;border:2px dashed #ddd;border-radius:6px;background:#fff;color:#333;cursor:pointer;transition:border-color .2s ease}.file-input:hover:not(:disabled){border-color:#0f4f9c}.file-input:disabled{opacity:.5;cursor:not-allowed;background:#e9ecef}.upload-results{margin-top:1rem;padding:1rem;background:#f8f9fa;border-radius:8px}.upload-results h4{margin:0 0 .75rem;font-size:1rem;color:#333}.success-count{color:#28a745;font-weight:600;margin:.5rem 0}.failed-count{color:#dc3545;font-weight:600;margin:.5rem 0}.failed-list{margin-top:1rem;padding:1rem;background:#fff;border-radius:6px;border:1px solid #f5c6cb}.failed-list h5{margin:0 0 .5rem;font-size:.9rem;color:#721c24}.failed-item{padding:.5rem;margin:.25rem 0;background:#f8d7da;border-radius:4px;font-size:.85rem;color:#721c24}@media (max-width: 768px){.page-main{padding:1rem}.members-table-container{overflow-x:auto}.members-table{font-size:.85rem}.members-table th,.members-table td{padding:.75rem .5rem}.action-buttons{flex-direction:column}.action-btn{width:100%}.modal-content{width:95%;margin:1rem}}.admin-attendance-container{min-height:100vh;background-color:#f5f5f5}.admin-attendance-header{background:#0f4f9c;color:#fff;padding:1.5rem 2rem;box-shadow:0 2px 8px #0000001a}.header-content{max-width:1400px;margin:0 auto;display:flex;justify-content:space-between;align-items:center}.header-left,.header-right{display:flex;align-items:center;gap:1rem}.back-button{padding:.5rem 1rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s ease}.back-button:hover{background-color:#ffffff4d;transform:translateY(-1px)}.admin-attendance-header h1{margin:0;font-size:1.5rem;font-weight:700}.date-picker{padding:.5rem 1rem;border:2px solid rgba(255,255,255,.3);border-radius:6px;font-size:1rem;background:#fff;color:#333;cursor:pointer;transition:all .2s ease}.date-picker:focus{outline:none;border-color:#fff;box-shadow:0 0 0 3px #fff3}.logout-button{padding:.5rem 1.25rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:6px;cursor:pointer;font-size:.9rem;transition:all .2s ease}.logout-button:hover{background-color:#ffffff4d;transform:translateY(-1px)}.admin-attendance-main{padding:2rem;max-width:1400px;margin:0 auto}.loading-state{text-align:center;padding:3rem;color:#666;font-size:1.1rem}.error-banner{background-color:#fee;color:#c33;padding:1rem;border-radius:8px;margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:none;border:none;color:#c33;font-size:1.2rem;cursor:pointer;padding:.25rem .5rem}.departments-list{display:flex;flex-direction:column;gap:1.5rem}.department-card{background:#fff;border-radius:12px;box-shadow:0 2px 8px #00000014;overflow:hidden;transition:all .3s ease}.department-card:hover{box-shadow:0 4px 12px #0000001f}.department-header{padding:1.5rem;background:#f8fafc;display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #dee2e6;transition:all .2s ease;gap:1rem}.department-title{display:flex;align-items:center;gap:.75rem;cursor:pointer;flex:1}.department-title:hover{opacity:.8}.expand-icon{font-size:.8rem;color:#0f4f9c;transition:transform .3s ease;display:inline-block}.expand-icon.expanded{transform:rotate(180deg)}.department-title h2{margin:0;font-size:1.3rem;color:#333}.member-count{font-size:.9rem;color:#fff;font-weight:600;background-color:#1976d2cc;padding:.25rem .6rem;border-radius:12px}.department-stats{display:flex;gap:1rem;align-items:center}.department-stats .stat{padding:.4rem .8rem;border-radius:20px;font-size:.85rem;font-weight:600}.department-stats .stat.present{background-color:#e8f5e9;color:#2e7d32}.department-stats .stat.absent{background-color:#ffebee;color:#c62828}.department-stats .stat.late{background-color:#fff3e0;color:#ef6c00}.department-stats .stat.unchecked{background-color:#e3f2fd;color:#1976d2}.department-content{padding:1.5rem}.department-actions{display:flex;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}.bulk-check-btn{padding:.6rem 1.25rem;background:#0f4f9c;color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;transition:all .2s ease;white-space:nowrap}.bulk-check-btn:hover{transform:translateY(-2px);box-shadow:0 4px 12px #1976d266}.bulk-check-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.add-attendance-member-btn{white-space:nowrap}.empty-members{text-align:center;padding:2rem;color:#999}.member-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75rem}.member-item{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.25rem;background-color:#fafafa;border-radius:8px;transition:all .2s ease}.member-item:hover{background-color:#f0f0f0;transform:translate(4px)}.member-info{display:flex;align-items:center;gap:.75rem}.member-name{font-size:1rem;font-weight:500;color:#333}.member-gender{font-size:.75rem;padding:.25rem .5rem;border-radius:4px;font-weight:600}.member-gender.male{background-color:#e3f2fd;color:#1976d2}.member-gender.female{background-color:#fce4ec;color:#c2185b}.attendance-buttons{display:flex;gap:.5rem}.status-btn{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s ease;opacity:.7}.status-btn:hover{opacity:1;transform:translateY(-1px)}.status-btn:disabled{cursor:not-allowed;opacity:.5}.status-btn.active{opacity:1}.status-btn.present{background-color:#e8f5e9;color:#2e7d32}.status-btn.present:hover,.status-btn.present.active{background-color:#2e7d32;color:#fff}.status-btn.absent{background-color:#ffebee;color:#c62828}.status-btn.absent:hover,.status-btn.absent.active{background-color:#c62828;color:#fff}.status-btn.late{background-color:#fff3e0;color:#ef6c00}.status-btn.late:hover,.status-btn.late.active{background-color:#ef6c00;color:#fff}.empty-state{text-align:center;padding:3rem;color:#999;background:#fff;border-radius:12px}@media (max-width: 768px){.header-content{flex-direction:column;gap:1rem}.header-left,.header-right{width:100%;justify-content:space-between}.admin-attendance-header h1{font-size:1.25rem}.admin-attendance-main{padding:1.5rem 1rem}.department-header{flex-wrap:wrap;gap:.75rem}.department-title{width:100%}.department-stats{flex:1;flex-wrap:wrap;gap:.5rem}.department-actions,.bulk-check-btn,.add-attendance-member-btn{width:100%}.member-item{flex-direction:column;align-items:flex-start;gap:1rem}.attendance-buttons{width:100%;justify-content:space-between}.status-btn{flex:1}}.attendance-statistics-container{min-height:100vh;display:flex;flex-direction:column;background-color:#f6f8fb;color:#1f2937}.statistics-header{background-color:#fffffff0;color:#1f2937;padding:.875rem 2rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a}.statistics-header h1{margin:0;font-size:1.5rem;color:#172033;font-weight:700}.back-button{background-color:#0f4f9c;color:#fff;border:1px solid #0f4f9c;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;transition:background-color .18s,box-shadow .18s,color .18s}.back-button:hover{background-color:#154f9c;border-color:#154f9c;color:#fff;box-shadow:0 1px 2px #0f172a14}.user-info{display:flex;align-items:center;gap:1rem}.logout-button{background-color:#fff;color:#475569;border:1px solid #dde5ef;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-weight:600;transition:background-color .18s,box-shadow .18s,color .18s}.logout-button:hover{background-color:#f8fafc;color:#0f4f9c;box-shadow:0 1px 2px #0f172a14}.statistics-main{flex:1;padding:2rem;max-width:1400px;margin:0 auto;width:100%}.tabs-container{display:flex;flex-wrap:wrap;gap:.25rem;margin-bottom:1.5rem;padding:.25rem;background-color:#eef2f7;border:1px solid #dde5ef;border-radius:8px;box-shadow:inset 0 1px #ffffffbf}.tab-button{box-sizing:border-box;min-height:42px;padding:.625rem 1.25rem;background-color:transparent;color:#526171;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:600;line-height:1.35;transition:background-color .18s,box-shadow .18s,color .18s,transform .18s}.tab-button:hover{color:#154f9c;background-color:#ffffff94}.tab-button.active{color:#0f4f9c;background-color:#fff;box-shadow:0 1px 2px #0f172a14,0 6px 16px #1976d21f;font-weight:700}.tab-button:focus-visible{box-shadow:0 0 0 3px #1976d22e;outline:none}.date-selector{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;background-color:#fff;padding:1rem;border-radius:8px;border:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a;flex-wrap:wrap}.date-selector label{font-weight:700;color:#334155}.date-input{box-sizing:border-box;min-height:40px;padding:.5rem .75rem;border:1px solid #d0d7de;border-radius:4px;font-size:1rem;background:#fff;color:#333;transition:border-color .2s,box-shadow .2s}.date-input:focus{border-color:#1976d2;box-shadow:0 0 0 3px #1976d224;outline:none}.monthly-statistics{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;padding:1rem;background-color:#fff;border:1px solid #dde5ef;border-radius:8px;box-shadow:0 1px 2px #0f172a0a}.monthly-field{display:flex;flex-direction:column;gap:.375rem;min-width:120px;font-weight:700;color:#333}.monthly-input{box-sizing:border-box;width:100%;height:40px;padding:.5rem .75rem;border:1px solid #d0d7de;border-radius:4px;background:#fff;color:#333;font-size:1rem;line-height:1.4;transition:border-color .2s,box-shadow .2s}.monthly-input:focus{border-color:#1976d2;box-shadow:0 0 0 3px #1976d224;outline:none}.monthly-action-button{box-sizing:border-box;height:40px;padding:.5rem 1rem;border:none;border-radius:6px;background-color:#0f4f9c;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;line-height:1.4;transition:background-color .2s,box-shadow .2s}.monthly-action-button:hover{background-color:#154f9c;box-shadow:0 1px 2px #0f172a14,0 6px 16px #1976d21f}.monthly-action-button:focus-visible,.monthly-tab-button:focus-visible{box-shadow:0 0 0 3px #1976d22e;outline:none}.monthly-tabs{flex-basis:100%;display:flex;flex-wrap:wrap;gap:.25rem;margin:.5rem 0 1.5rem;padding:.25rem;background-color:#eef2f7;border:1px solid #dde5ef;border-radius:8px;box-shadow:inset 0 1px #ffffffbf}.monthly-statistics>:not(.monthly-field):not(.monthly-action-button):not(.monthly-tabs){flex-basis:100%;width:100%}.monthly-service-section{flex-basis:100%;width:100%;padding:1rem;background-color:#f8fafc;border:1px solid #dde5ef;border-radius:8px}.monthly-service-section+.monthly-service-section{margin-top:1rem}.monthly-service-title{margin:0 0 1rem;color:#172033;font-size:1.05rem;font-weight:700}.monthly-service-tables{display:flex;flex-wrap:wrap;gap:1rem}.monthly-tab-button{box-sizing:border-box;height:42px;padding:.625rem 1.25rem;border:none;border-radius:6px;background-color:transparent;color:#526171;cursor:pointer;font-size:1rem;font-weight:600;line-height:1.35;transition:background-color .18s,box-shadow .18s,color .18s}.monthly-tab-button:hover{background-color:#ffffff94;color:#154f9c}.monthly-tab-button.active,.monthly-tab-button[aria-selected=true]{background-color:#fff;box-shadow:0 1px 2px #0f172a14,0 6px 16px #1976d21f;color:#0f4f9c;font-weight:700}.refresh-button{background-color:#0f4f9c;color:#fff;border:none;min-height:40px;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-weight:600;transition:background-color .18s,box-shadow .18s}.refresh-button:hover{background-color:#154f9c;box-shadow:0 1px 2px #0f172a14,0 6px 16px #1976d21f}.export-button{background-color:#fff;color:#0f4f9c;border:1px solid #cfe0f4;min-height:40px;padding:.5rem 1rem;border-radius:6px;cursor:pointer;font-weight:600;transition:background-color .18s,box-shadow .18s,border-color .18s}.export-button:hover:not(:disabled){background-color:#f8fbff;border-color:#9fc0e8;box-shadow:0 1px 2px #0f172a14}.export-button:disabled{background-color:#e5e7eb;color:#6b7280;cursor:not-allowed;opacity:.7}.loading{text-align:center;padding:2rem;font-size:1.2rem;color:#64748b}.error-message{background-color:#fef2f2;color:#b91c1c;padding:1rem;border:1px solid #fecaca;border-radius:8px;margin-bottom:1rem;text-align:center}.no-data{text-align:center;padding:2rem;font-size:1.1rem;color:#64748b;background-color:#fff;border:1px solid #dde5ef;border-radius:8px}.summary-section{background-color:#fff;padding:1.5rem;border-radius:8px;border:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a;margin-bottom:2rem}.summary-section h2{margin-top:0;margin-bottom:1rem;color:#172033}.summary-card{padding:1rem;border-radius:8px;background-color:#f8fafc;border:1px solid #dde5ef;text-align:center}.chart-section{background-color:#fff;padding:1.5rem;border-radius:8px;border:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a}.chart-section h2{margin-top:0;margin-bottom:1rem;color:#172033}.table-section{background-color:#fff;padding:1.5rem;border-radius:8px;border:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a;margin-bottom:2rem;overflow-x:auto}.table-section h2{margin-top:0;margin-bottom:1rem;color:#172033}.monthly-statistics table{overflow:hidden;border-radius:8px;box-shadow:0 1px 2px #0f172a0a}.stats-table th,.attendance-matrix-table th{background-color:#eef2f7;color:#334155}.stats-table td,.attendance-matrix-table td{color:#1f2937}.export-button-legacy-unused{color:#fff}.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem}.summary-card{padding:1rem;border-radius:8px;background-color:#f5f5f5;text-align:center}.summary-card.present{background-color:#e8f5e9;border:2px solid #4caf50}.summary-card.late{background-color:#fff3e0;border:2px solid #ff9800}.summary-card.absent{background-color:#ffebee;border:2px solid #f44336}.summary-card.excused{background-color:#e3f2fd;border:2px solid #2196f3}.summary-card.not-checked{background-color:#fafafa;border:2px solid #9e9e9e}.card-label{font-size:.9rem;color:#666;margin-bottom:.5rem}.card-value{font-size:1.5rem;font-weight:700;color:#333}.charts-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-bottom:2rem}.chart-section{background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a}.chart-section h2{margin-top:0;margin-bottom:1rem;color:#333}.chart-section:not(.charts-grid .chart-section){margin-bottom:2rem}.table-section{background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem;overflow-x:auto}.table-section h2{margin-top:0;margin-bottom:1rem;color:#333}.stats-table{width:100%;border-collapse:collapse}.stats-table th,.stats-table td{padding:.75rem;text-align:center;border-bottom:1px solid #ddd;color:#000}.stats-table th{background-color:#f5f5f5;font-weight:700;color:#333}.stats-table tr:hover{background-color:#f9f9f9}.stats-table td.present{color:#4caf50;font-weight:700}.stats-table td.late{color:#ff9800;font-weight:700}.stats-table td.absent{color:#f44336;font-weight:700}.stats-table td.excused{color:#2196f3;font-weight:700}.stats-table td.not-checked{color:#9e9e9e}.attendance-matrix-table{width:100%;border-collapse:collapse;font-size:.9rem}.attendance-matrix-table th,.attendance-matrix-table td{padding:.5rem;text-align:center;border:1px solid #ddd;color:#000;min-width:50px}.attendance-matrix-table th{background-color:#f5f5f5;font-weight:700;color:#333;white-space:nowrap}.attendance-matrix-table .sticky-col{position:sticky;left:0;background-color:#fff;z-index:1;font-weight:700;min-width:80px;text-align:left}.attendance-matrix-table thead .sticky-col{background-color:#f5f5f5;z-index:2}.attendance-matrix-table .member-name{white-space:nowrap}.attendance-matrix-table .attendance-cell{font-weight:700;width:50px}.attendance-matrix-table .cell-present{background-color:#e8f5e9;color:#4caf50}.attendance-matrix-table .cell-absent{background-color:#ffebee;color:#f44336}.attendance-matrix-table .cell-unchecked{background-color:#ffc;color:#999}.summary-section,.chart-section,.table-section,.monthly-statistics{background-color:#fff;border:1px solid #dde5ef;box-shadow:0 1px 2px #0f172a0a}.summary-section h2,.chart-section h2,.table-section h2,.monthly-statistics h3{color:#172033;font-weight:700}.summary-card{background-color:#f8fafc;border:1px solid #dde5ef}.summary-card.present{background-color:#f0fdf4;border-color:#bbf7d0}.summary-card.late{background-color:#fffbeb;border-color:#fde68a}.summary-card.absent{background-color:#fef2f2;border-color:#fecaca}.summary-card.excused{background-color:#eff6ff;border-color:#bfdbfe}.summary-card.not-checked{background-color:#f8fafc;border-color:#cbd5e1}.card-label{color:#64748b}.card-value{color:#172033}.stats-table,.attendance-matrix-table,.monthly-statistics table{overflow:hidden;border:1px solid #dde5ef;border-radius:8px;background-color:#fff}.stats-table th,.attendance-matrix-table th,.monthly-statistics th{background-color:#eef2f7!important;border-color:#d7e0ea!important;color:#334155!important;font-weight:700}.stats-table td,.attendance-matrix-table td,.monthly-statistics td{border-color:#d7e0ea!important;color:#1f2937!important}.monthly-statistics td{background-color:#fff!important}.stats-table tr:hover,.attendance-matrix-table tbody tr:hover{background-color:#f8fafc}.attendance-matrix-table .sticky-col{background-color:#fff}.attendance-matrix-table thead .sticky-col{background-color:#eef2f7}.attendance-matrix-table .cell-present{background-color:#f0fdf4;color:#15803d!important}.attendance-matrix-table .cell-absent{background-color:#fef2f2;color:#b91c1c!important}.attendance-matrix-table .cell-unchecked{background-color:#f8fafc;color:#94a3b8!important}.statistics-header .back-button{background-color:#0f4f9c;border-color:#0f4f9c;color:#fff}.statistics-header .back-button:hover{background-color:#154f9c;border-color:#154f9c;color:#fff}@media (max-width: 768px){.statistics-header{flex-direction:column;gap:1rem;align-items:flex-start}.header-left{width:100%}.user-info{width:100%;justify-content:space-between}.statistics-main{padding:1rem}.tabs-container{margin-bottom:1rem}.tab-button{padding:.6rem 1rem;font-size:.9rem}.date-selector{flex-direction:column;align-items:stretch}.date-selector label{margin-top:.5rem}.date-selector label:first-of-type{margin-top:0}.summary-cards{grid-template-columns:repeat(2,1fr)}.charts-grid{grid-template-columns:1fr;gap:1rem}.stats-table{font-size:.9rem}.stats-table th,.stats-table td{padding:.5rem}}.officer-management-container{min-height:100vh;background-color:#f5f5f5}.departments-list{display:flex;flex-direction:column;gap:1.5rem;margin-top:1.5rem}.department-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #00000014}.department-name{margin:0 0 1rem;font-size:1.5rem;color:#333;font-weight:600;display:flex;align-items:center;gap:.5rem}.officer-count{font-size:1rem;color:#0f4f9c;font-weight:500}.no-officers{color:#999;padding:2rem;text-align:center;font-size:.95rem}.officers-table{overflow-x:auto}.officers-table table{width:100%;border-collapse:collapse}.officers-table thead{background-color:#f8f9fa}.officers-table th{padding:.875rem;text-align:left;font-weight:600;color:#333;border-bottom:2px solid #e0e0e0;font-size:.95rem}.officers-table td{padding:.875rem;border-bottom:1px solid #f0f0f0;color:#333;font-size:.95rem}.officers-table tbody tr:hover{background-color:#f8f9fa}.action-buttons{display:flex;gap:.5rem}.edit-btn,.delete-btn{padding:.5rem 1rem;border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:600;transition:all .2s ease}.edit-btn{background-color:#0f4f9c;color:#fff}.edit-btn:hover:not(:disabled){background-color:#154f9c;transform:translateY(-1px)}.delete-btn{background-color:#dc3545;color:#fff}.delete-btn:hover:not(:disabled){background-color:#c82333;transform:translateY(-1px)}.edit-btn:disabled,.delete-btn:disabled{opacity:.6;cursor:not-allowed}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;padding:2rem;max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.modal-content h2{margin:0 0 1.5rem;font-size:1.5rem;color:#333}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:#333;font-size:.95rem}.form-group input,.form-group select{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;background:#fff;color:#333;transition:border-color .2s ease}.form-group input:focus,.form-group select:focus{outline:none;border-color:#0f4f9c}.form-group input:disabled,.form-group select:disabled{background-color:#f5f5f5;cursor:not-allowed;opacity:.7}.modal-actions{display:flex;gap:.75rem;margin-top:1.5rem}.submit-btn,.cancel-btn{flex:1;padding:.875rem;border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.submit-btn{background-color:#0f4f9c;color:#fff}.submit-btn:hover:not(:disabled){background-color:#154f9c;transform:translateY(-1px)}.cancel-btn{background-color:#f0f0f0;color:#333}.cancel-btn:hover:not(:disabled){background-color:#e0e0e0;transform:translateY(-1px)}.submit-btn:disabled,.cancel-btn:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 768px){.officers-table{font-size:.85rem}.officers-table th,.officers-table td{padding:.625rem}.action-buttons{flex-direction:column;gap:.25rem}.edit-btn,.delete-btn{width:100%;padding:.625rem}.modal-content{padding:1.5rem;width:95%}.modal-actions{flex-direction:column}.submit-btn,.cancel-btn{width:100%}}.push-notification-container{min-height:100vh;background-color:#f5f5f5}.push-notification-header{background-color:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.push-notification-main{max-width:900px;margin:0 auto;padding:2rem}.tabs{display:flex;gap:.5rem;margin-bottom:2rem;border-bottom:2px solid #ddd}.tab{background-color:transparent;border:none;border-bottom:3px solid transparent;color:#666;padding:1rem 1.5rem;cursor:pointer;font-size:1rem;transition:all .2s}.tab:hover{color:#2c3e50;background-color:#2c3e500d}.tab.active{color:#2c3e50;border-bottom-color:#3498db;font-weight:600}.tab-content{background-color:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 4px #0000001a}.tab-content h2{margin-top:0;margin-bottom:1.5rem;color:#2c3e50;font-size:1.3rem}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;color:#2c3e50;font-weight:500}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .2s;box-sizing:border-box}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#3498db}.form-group input:disabled,.form-group select:disabled,.form-group textarea:disabled{background-color:#f5f5f5;cursor:not-allowed}.form-group textarea{resize:vertical;min-height:100px}.send-button{background-color:#3498db;color:#fff;border:none;padding:.75rem 2rem;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s}.send-button:hover:not(:disabled){background-color:#2980b9}.send-button:disabled{background-color:#95a5a6;cursor:not-allowed}.stats-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:#0f4f9c;padding:1.5rem;border-radius:8px;text-align:center;border:1px solid #e9ecef}.stat-card h3{margin:0 0 .5rem;color:#fff;font-size:.9rem;font-weight:500}.stat-value{font-size:2rem;font-weight:700;color:#2c3e50;margin:0}.subscription-list{margin-top:2rem}.subscription-list h3{margin-bottom:1rem;color:#2c3e50;display:inline-block;margin-right:1rem}.refresh-button{background-color:#27ae60;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.refresh-button:hover{background-color:#229954}.subscription-table{width:100%;border-collapse:collapse;margin-top:1rem}.subscription-table th,.subscription-table td{padding:.75rem;text-align:left;border-bottom:1px solid #ddd;color:#333}.subscription-table th{background-color:#f8f9fa;font-weight:600;color:#2c3e50}.subscription-table tr:hover{background-color:#f8f9fa}@media (max-width: 768px){.push-notification-header{flex-direction:column;gap:1rem;align-items:flex-start}.header-left,.header-right{width:100%;justify-content:space-between}.push-notification-main{padding:1rem}.tabs{flex-wrap:wrap}.tab{flex:1;min-width:100px;padding:.75rem;font-size:.9rem}.tab-content{padding:1rem}.stats-summary{grid-template-columns:repeat(2,1fr)}.subscription-table{font-size:.9rem}.subscription-table th,.subscription-table td{padding:.5rem}}.user-settings-container{min-height:100vh;background-color:#f5f5f5}.user-settings-header{background-color:#2c3e50;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.header-left{display:flex;align-items:center;gap:1rem}.header-left h1{margin:0;font-size:1.5rem}.header-right{display:flex;align-items:center;gap:1rem}.back-button{background-color:transparent;border:1px solid white;color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.back-button:hover{background-color:#ffffff1a}.logout-button{background-color:#e74c3c;border:none;color:#fff;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.logout-button:hover{background-color:#c0392b}.user-settings-main{max-width:800px;margin:0 auto;padding:2rem}.message{padding:1rem;margin-bottom:1rem;border-radius:4px;text-align:center}.message.success{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.message.error{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.settings-section{background-color:#fff;border-radius:8px;padding:2rem;margin-bottom:1.5rem;box-shadow:0 2px 4px #0000001a}.settings-section h2{margin-top:0;margin-bottom:1.5rem;color:#2c3e50;font-size:1.3rem;border-bottom:2px solid #3498db;padding-bottom:.5rem}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem}.info-item{display:flex;flex-direction:column;gap:.5rem}.info-item label{font-weight:600;color:#666;font-size:.9rem}.info-value{font-size:1.1rem;color:#2c3e50;padding:.75rem;background-color:#f8f9fa;border-radius:4px;border:1px solid #e9ecef}.push-notification-settings{display:flex;flex-direction:column;gap:1.5rem}.push-info{display:flex;flex-direction:column;gap:1rem}.push-status{display:flex;align-items:center;gap:1rem}.push-status label{font-weight:600;color:#2c3e50;font-size:1rem}.status-badge{padding:.5rem 1rem;border-radius:20px;font-size:.9rem;font-weight:600}.status-badge.checking{background-color:#ffeaa7;color:#d63031}.status-badge.subscribed{background-color:#d4edda;color:#155724}.status-badge.unsubscribed{background-color:#f8d7da;color:#721c24}.push-description{color:#666;line-height:1.6;margin:0}.push-actions{display:flex;gap:1rem}.subscribe-button,.unsubscribe-button{padding:.75rem 2rem;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s;font-weight:600}.subscribe-button{background-color:#3498db;color:#fff}.subscribe-button:hover:not(:disabled){background-color:#2980b9}.unsubscribe-button{background-color:#e74c3c;color:#fff}.unsubscribe-button:hover:not(:disabled){background-color:#c0392b}.subscribe-button:disabled,.unsubscribe-button:disabled{background-color:#95a5a6;cursor:not-allowed}.push-help{background-color:#f8f9fa;padding:1.5rem;border-radius:4px;border-left:4px solid #3498db}.push-help h3{margin-top:0;margin-bottom:1rem;color:#2c3e50;font-size:1rem}.push-help ul{margin:0;padding-left:1.5rem;color:#666;line-height:1.8}.push-help li{margin-bottom:.5rem}@media (max-width: 768px){.user-settings-header{flex-direction:column;gap:1rem;align-items:flex-start}.header-left,.header-right{width:100%;justify-content:space-between}.user-settings-main{padding:1rem}.settings-section{padding:1.5rem}.info-grid{grid-template-columns:1fr}.push-actions{flex-direction:column}.subscribe-button,.unsubscribe-button{width:100%}}.install-prompt{position:fixed;bottom:0;left:0;right:0;background:#0f4f9c;color:#fff;padding:16px;box-shadow:0 -4px 12px #00000026;transform:translateY(100%);transition:transform .3s ease-out;z-index:9999}.install-prompt.visible{transform:translateY(0)}.install-prompt-content{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.install-prompt-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#fff3;border-radius:50%;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.install-prompt-icon svg{width:24px;height:24px}.install-prompt-text{flex:1;min-width:200px}.install-prompt-text h3{margin:0 0 4px;font-size:16px;font-weight:600}.install-prompt-text p{margin:0;font-size:14px;opacity:.9}.install-prompt-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.install-btn-primary,.install-btn-secondary,.install-btn-close{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease}.install-btn-primary{background:#fff;color:#0f4f9c;box-shadow:0 2px 8px #0000001a}.install-btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.install-btn-primary:active{transform:translateY(0)}.install-btn-secondary{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.install-btn-secondary:hover{background:#ffffff40}.install-btn-close{background:transparent;color:#fff;width:36px;height:36px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;opacity:.7}.install-btn-close:hover{background:#ffffff26;opacity:1}@media (max-width: 640px){.install-prompt{padding:12px}.install-prompt-content{gap:12px}.install-prompt-icon{width:40px;height:40px}.install-prompt-icon svg{width:20px;height:20px}.install-prompt-text h3{font-size:15px}.install-prompt-text p{font-size:13px}.install-prompt-actions{width:100%;justify-content:flex-end}.install-btn-primary,.install-btn-secondary{padding:8px 16px;font-size:13px}.install-btn-close{width:32px;height:32px;font-size:16px}}@media (prefers-color-scheme: dark){.install-prompt{background:#0f4f9c}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}:root{--app-bg: #f6f8fb;--surface: #ffffff;--surface-muted: #f8fafc;--surface-soft: #eef2f7;--border: #dde5ef;--border-strong: #cbd7e6;--text: #1f2937;--text-strong: #172033;--text-muted: #64748b;--primary: #0f4f9c;--primary-hover: #154f9c;--primary-soft: rgba(25, 118, 210, .14);--success: #2e7d32;--danger: #c62828;--warning: #ef6c00;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .04);--shadow-md: 0 8px 22px rgba(15, 23, 42, .08);--radius: 8px;--radius-sm: 6px}html,body,#root{min-height:100%;background:var(--app-bg);color:var(--text)}body{margin:0}button,input,select,textarea{font:inherit}.login-container,.dashboard-container,.attendance-container,.admin-attendance-container,.attendance-statistics-container,.account-management-container,.department-management-container,.officer-management-container,.member-management-container,.push-notification-container,.user-settings-container{background:var(--app-bg);color:var(--text)}.dashboard-header,.statistics-header,.page-header,.attendance-header,.admin-header,.admin-attendance-header,.push-notification-header,.user-settings-header{background:#fffffff0;color:var(--text);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.dashboard-header h1,.statistics-header h1,.page-header h1,.attendance-header h1,.admin-header h1,.admin-attendance-header h1,.push-notification-header h1,.user-settings-header h1,.header-left h1{color:var(--text-strong);letter-spacing:0}.header-content,.dashboard-main,.statistics-main,.page-main,.attendance-main,.admin-main,.admin-attendance-main,.push-notification-main,.user-settings-main{box-sizing:border-box;width:100%;max-width:1400px}.page-header .header-content,.attendance-header .header-content,.admin-header .header-content,.admin-attendance-header .header-content{max-width:1400px}.dashboard-header .user-info,.statistics-header .user-info,.attendance-header .user-info,.admin-header .user-info,.admin-attendance-header .user-info,.header-right{color:var(--text-muted)}.dashboard-header .user-info span,.statistics-header .user-info span,.attendance-header .user-info span,.admin-header .user-info span,.admin-attendance-header .user-info span{color:var(--text-muted);font-weight:600}.statistics-header .back-button,.page-header .back-button,.push-notification-header .back-button,.user-settings-header .back-button,.admin-header .back-button,.admin-attendance-header .back-button,.dashboard-header .settings-button,.attendance-header .settings-button,.dashboard-header .logout-button,.statistics-header .logout-button,.attendance-header .logout-button,.admin-header .logout-button,.admin-attendance-header .logout-button,.push-notification-header .logout-button,.user-settings-header .logout-button{box-sizing:border-box;min-height:40px;padding:.5rem 1rem;background:var(--surface);color:#475569;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:none;cursor:pointer;font-size:.95rem;font-weight:600;line-height:1.35;transition:background-color .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s}.statistics-header .back-button,.page-header .back-button,.push-notification-header .back-button,.user-settings-header .back-button,.admin-header .back-button,.admin-attendance-header .back-button{background:var(--primary);color:#fff;border-color:var(--primary)}.statistics-header .back-button:hover,.page-header .back-button:hover,.push-notification-header .back-button:hover,.user-settings-header .back-button:hover,.admin-header .back-button:hover,.admin-attendance-header .back-button:hover{background:var(--primary-hover);color:#fff;border-color:var(--primary-hover);box-shadow:var(--shadow-sm)}.dashboard-header .settings-button:hover,.attendance-header .settings-button:hover,.dashboard-header .logout-button:hover,.statistics-header .logout-button:hover,.attendance-header .logout-button:hover,.admin-header .logout-button:hover,.admin-attendance-header .logout-button:hover,.push-notification-header .logout-button:hover,.user-settings-header .logout-button:hover{background:var(--surface-muted);color:var(--primary);border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:none}.attendance-section,.dashboard-card,.department-card,.tab-content,.settings-section,.users-table-container,.members-table-container,.member-list-container,.modal-content,.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.attendance-section,.tab-content,.settings-section,.login-card{padding:1.5rem}.dashboard-card,.department-card{border-radius:var(--radius);transition:border-color .18s,box-shadow .18s,transform .18s}.dashboard-card:hover,.department-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-md);transform:translateY(-2px)}.section-header,.department-actions,.action-section{border-color:var(--border)}.section-header h2,.list-header h3,.department-header h3,.department-name,.tab-content h2,.settings-section h2,.modal-content h2,.login-card h1,.login-card h2{color:var(--text-strong);letter-spacing:0}.date-info,.department-desc,.push-description,.empty-state,.empty-state-sub{color:var(--text-muted)}.users-table-container,.members-table-container,.member-list-container,.assign-table-container,.officers-table,.subscription-table{overflow-x:auto}.users-table,.members-table,.assign-table,.officers-table table,.subscription-table{background:var(--surface);color:var(--text)}.users-table thead,.members-table thead,.assign-table thead,.officers-table thead,.subscription-table thead{background:var(--surface-muted)}.users-table th,.members-table th,.assign-table th,.officers-table th,.subscription-table th{color:#334155;border-bottom:1px solid var(--border)}.users-table td,.members-table td,.assign-table td,.officers-table td,.subscription-table td{color:var(--text);border-bottom:1px solid #edf2f7}.users-table tbody tr:hover,.members-table tbody tr:hover,.assign-table tbody tr:hover,.officers-table tbody tr:hover,.subscription-table tbody tr:hover,.member-item:hover{background:var(--surface-muted)}.member-item,.info-value{background:var(--surface-muted);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}.tabs,.tabs-container,.monthly-tabs{gap:.25rem;padding:.25rem;background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--radius);box-shadow:inset 0 1px #ffffffbf}.tab,.tab-button,.monthly-tab-button{min-height:40px;color:#526171;background:transparent;border:0;border-radius:var(--radius-sm);font-weight:600}.tab:hover,.tab-button:hover,.monthly-tab-button:hover{color:var(--primary-hover);background:#ffffff94}.tab.active,.tab-button.active,.monthly-tab-button.active{color:var(--primary);background:var(--surface);box-shadow:var(--shadow-sm),0 6px 16px #1976d21f;font-weight:700}input,select,textarea,.date-picker,.date-input,.monthly-input,.role-select,.department-select{box-sizing:border-box;min-height:40px;border:1px solid #d0d7de;border-radius:4px;background:var(--surface);color:var(--text);transition:border-color .18s,box-shadow .18s}input:focus,select:focus,textarea:focus,.date-picker:focus,.date-input:focus,.monthly-input:focus,.role-select:focus,.department-select:focus{border-color:#1976d2;box-shadow:0 0 0 3px var(--primary-soft);outline:none}input:disabled,select:disabled,textarea:disabled{background:var(--surface-soft);color:var(--text-muted)}.add-button,.assign-button,.primary-button,.submit-btn,.confirm-button,.add-attendance-member-btn,.send-button,.subscribe-button,.save-button,.login-button,.bulk-check-btn,.dashboard-card .card-button,.monthly-action-button{box-sizing:border-box;min-height:40px;padding:.5rem 1rem;background:var(--primary);color:#fff;border:1px solid var(--primary);border-radius:var(--radius-sm);box-shadow:none;cursor:pointer;font-weight:600;line-height:1.35;transition:background-color .18s,border-color .18s,box-shadow .18s,transform .18s}.add-button:hover:not(:disabled),.assign-button:hover:not(:disabled),.primary-button:hover:not(:disabled),.submit-btn:hover:not(:disabled),.confirm-button:hover:not(:disabled),.add-attendance-member-btn:hover:not(:disabled),.send-button:hover:not(:disabled),.subscribe-button:hover:not(:disabled),.save-button:hover:not(:disabled),.login-button:hover:not(:disabled),.bulk-check-btn:hover:not(:disabled),.dashboard-card .card-button:hover,.monthly-action-button:hover:not(:disabled){background:var(--primary-hover);color:#fff;border-color:var(--primary-hover);box-shadow:0 6px 16px #1976d22e;transform:translateY(-1px)}.secondary-button,.cancel-btn,.cancel-button,.csv-upload-button,.clear-filter-button,.refresh-button{box-sizing:border-box;min-height:40px;padding:.5rem 1rem;background:var(--surface);color:#475569;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-weight:600;transition:background-color .18s,border-color .18s,box-shadow .18s,color .18s,transform .18s}.secondary-button:hover:not(:disabled),.cancel-btn:hover:not(:disabled),.cancel-button:hover:not(:disabled),.csv-upload-button:hover:not(:disabled),.clear-filter-button:hover:not(:disabled),.refresh-button:hover:not(:disabled){background:var(--surface-muted);color:var(--primary);border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:none}.add-button:disabled,.assign-button:disabled,.primary-button:disabled,.submit-btn:disabled,.confirm-button:disabled,.add-attendance-member-btn:disabled,.send-button:disabled,.subscribe-button:disabled,.save-button:disabled,.login-button:disabled,.bulk-check-btn:disabled,.dashboard-card .card-button:disabled,.monthly-action-button:disabled,.secondary-button:disabled,.cancel-btn:disabled,.cancel-button:disabled,.csv-upload-button:disabled,.clear-filter-button:disabled,.refresh-button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.add-button:disabled,.assign-button:disabled,.primary-button:disabled,.submit-btn:disabled,.confirm-button:disabled,.add-attendance-member-btn:disabled,.send-button:disabled,.subscribe-button:disabled,.save-button:disabled,.login-button:disabled,.bulk-check-btn:disabled,.dashboard-card .card-button:disabled,.monthly-action-button:disabled{background:#94a3b8;color:#fff;border-color:#94a3b8}.modal-actions,.modal-footer,.action-section{gap:.75rem}.edit-btn{background:#e8f5e9;color:var(--success);border:1px solid #c8e6c9;border-radius:var(--radius-sm)}.edit-btn:hover:not(:disabled){background:var(--success);color:#fff;transform:translateY(-1px)}.delete-btn,.unsubscribe-button{background:#ffebee;color:var(--danger);border:1px solid #ffcdd2;border-radius:var(--radius-sm)}.delete-btn:hover:not(:disabled),.unsubscribe-button:hover:not(:disabled){background:var(--danger);color:#fff;transform:translateY(-1px)}.stat-card{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.stat-card h3,.stat-label{color:var(--text-muted)}.stat-value,.stat-number{color:var(--text-strong)}.stat-card.present,.status-btn.present{background:#e8f5e9;color:var(--success);border-color:#c8e6c9}.stat-card.absent,.status-btn.absent{background:#ffebee;color:var(--danger);border-color:#ffcdd2}.stat-card.late,.status-btn.late{background:#fff3e0;color:var(--warning);border-color:#ffe0b2}.status-btn{border:1px solid transparent;border-radius:var(--radius-sm);font-weight:600}.status-btn.present:hover,.status-btn.present.active{background:var(--success);color:#fff}.status-btn.absent:hover,.status-btn.absent.active{background:var(--danger);color:#fff}.status-btn.late:hover,.status-btn.late.active{background:var(--warning);color:#fff}.toggle-slider{background:#cbd5e1}input:checked+.toggle-slider{background:var(--primary)}.loading-spinner{border-top-color:var(--primary)}.modal-overlay{background:#0f172a6b}.modal-content{box-shadow:0 24px 60px #0f172a33}.message,.error-banner{border-radius:var(--radius)}button:focus-visible{outline:none;box-shadow:0 0 0 3px #1976d22e}@media (max-width: 768px){.dashboard-header,.statistics-header,.page-header,.attendance-header,.admin-header,.admin-attendance-header,.push-notification-header,.user-settings-header{padding:1.25rem 1rem}.dashboard-main,.statistics-main,.page-main,.attendance-main,.admin-main,.admin-attendance-main,.push-notification-main,.user-settings-main{padding:1.5rem 1rem}}
