: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:#646cff;text-decoration:inherit}a:hover{color:#535bf2}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:#646cff}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:#747bff}button{background-color:#f9f9f9}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);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:#667eea;box-shadow:0 0 0 3px #667eea1a}.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:linear-gradient(135deg,#667eea,#764ba2);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 #667eea66}.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:#f5f5f5}.dashboard-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #0000001a}.dashboard-header h1{margin:0;font-size:1.5rem;font-weight:700}.dashboard-main{padding:2rem;max-width:1200px;margin:0 auto}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}.dashboard-card{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 8px #00000014;transition:all .3s ease;display:flex;flex-direction:column;gap:1rem}.dashboard-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0000001f}.dashboard-card h2{margin:0;font-size:1.25rem;color:#333;font-weight:600}.dashboard-card p{margin:0;color:#666;font-size:.95rem;flex-grow:1}.card-button{padding:.75rem 1.5rem;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;cursor:pointer;font-size:.95rem;font-weight:600;transition:all .2s ease;margin-top:auto}.card-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.card-button:active{transform:translateY(0)}@media (max-width: 768px){.dashboard-header{flex-direction:column;gap:1rem;padding:1.25rem 1rem}.dashboard-header h1{font-size:1.25rem}.user-info{width:100%;justify-content:space-between}.dashboard-main{padding:1.5rem 1rem}.dashboard-grid{grid-template-columns:1fr;gap:1rem}.dashboard-card{padding:1.5rem}}.attendance-container{min-height:100vh;background-color:#f5f5f5}.attendance-header{background:linear-gradient(135deg,#667eea,#764ba2);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:#667eea;box-shadow:0 0 0 3px #667eea1a}.date-picker:hover{border-color:#667eea}.attendance-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:1.5rem;border-radius:12px;text-align:center;box-shadow:0 4px 12px #667eea4d;transition:all .3s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #667eea66}.stat-card.present{background:linear-gradient(135deg,#11998e,#38ef7d)}.stat-card.absent{background:linear-gradient(135deg,#eb3349,#f45c43)}.stat-card.late{background:linear-gradient(135deg,#f093fb,#f5576c)}.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}.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:linear-gradient(135deg,#667eea,#764ba2);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 #667eea66}.primary-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.secondary-button{padding:1rem 2rem;background-color:#fff;color:#667eea;border:2px solid #667eea;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.secondary-button:hover{background-color:#667eea;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}.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:#667eea}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:#667eea;border:2px solid #667eea;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.assign-button:hover:not(:disabled){background-color:#667eea;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:#667eea;background:linear-gradient(135deg,#667eea,#764ba2);-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:#667eea}@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:linear-gradient(135deg,#667eea,#764ba2);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}.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 #667eea;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:#667eea;box-shadow:0 0 0 3px #667eea1a}.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:#667eea;box-shadow:0 0 0 3px #667eea1a}.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:linear-gradient(135deg,#667eea,#764ba2);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 #667eea66}.add-button:disabled{opacity:.6;cursor:not-allowed}.csv-upload-button{padding:.75rem 1.5rem;background:#fff;color:#667eea;border:2px solid #667eea;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;transition:all .2s ease}.csv-upload-button:hover:not(:disabled){background:#667eea;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:#667eea}.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:linear-gradient(135deg,#667eea,#764ba2);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:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.confirm-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.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:linear-gradient(135deg,#667eea,#764ba2);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:#667eea}.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:linear-gradient(135deg,#667eea,#764ba2);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:linear-gradient(135deg,#f8f9fa,#e9ecef);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:#667eea;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:#667eeacc;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}.bulk-check-btn{padding:.6rem 1.25rem;background:linear-gradient(135deg,#667eea,#764ba2);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 #667eea66}.bulk-check-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.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{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:#f5f5f5}.statistics-header{background-color:#1976d2;color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.statistics-header h1{margin:0;font-size:1.5rem}.back-button{background-color:#fff3;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .3s}.back-button:hover{background-color:#ffffff4d}.user-info{display:flex;align-items:center;gap:1rem}.logout-button{background-color:#fff3;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:background-color .3s}.logout-button:hover{background-color:#ffffff4d}.statistics-main{flex:1;padding:2rem;max-width:1400px;margin:0 auto;width:100%}.tabs-container{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:2px solid #e0e0e0}.tab-button{padding:.75rem 1.5rem;background-color:transparent;color:#666;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:1rem;font-weight:500;transition:all .3s;position:relative;bottom:-2px}.tab-button:hover{color:#1976d2;background-color:#1976d20d}.tab-button.active{color:#1976d2;border-bottom-color:#1976d2;font-weight:600}.date-selector{display:flex;align-items:center;gap:1rem;margin-bottom:2rem;background-color:#fff;padding:1rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;flex-wrap:wrap}.date-selector label{font-weight:700;color:#333}.date-input{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;background:#fff;color:#333}.refresh-button{background-color:#1976d2;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:background-color .3s}.refresh-button:hover{background-color:#1565c0}.export-button{background-color:#4caf50;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:background-color .3s}.export-button:hover:not(:disabled){background-color:#45a049}.export-button:disabled{background-color:#9e9e9e;cursor:not-allowed;opacity:.6}.loading{text-align:center;padding:2rem;font-size:1.2rem;color:#666}.error-message{background-color:#ffebee;color:#c62828;padding:1rem;border-radius:4px;margin-bottom:1rem;text-align:center}.no-data{text-align:center;padding:2rem;font-size:1.1rem;color:#666}.summary-section{background-color:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:2rem}.summary-section h2{margin-top:0;margin-bottom:1rem;color:#333}.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}@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:#667eea;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:#667eea;color:#fff}.edit-btn:hover:not(:disabled){background-color:#5568d3;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:#667eea}.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:#667eea;color:#fff}.submit-btn:hover:not(:disabled){background-color:#5568d3;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:linear-gradient(135deg,#667eea,#764ba2);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:linear-gradient(135deg,#667eea,#764ba2);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:#667eea;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:linear-gradient(135deg,#4c51bf,#5a3d7a)}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}
