*{margin:0;padding:0;box-sizing:border-box;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}body{background-color:var(--light);color:#2d3748;line-height:1.6}.landing-page{width:100%;overflow-x:hidden}header{background:linear-gradient(135deg,var(--primary),var(--dark));color:#fff;padding:1.5rem;position:sticky;top:0;z-index:100;box-shadow:0 4px 6px #0000001a}nav a:hover{color:var(--secondary)}.login-link{background-color:var(--secondary);color:var(--dark)!important;padding:.5rem 1.25rem;border-radius:50px;font-weight:700;transition:all .3s}.login-link:hover{background-color:#fff;color:var(--primary)!important;transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.hero{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 600"><defs><linearGradient id="bg-gradient" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="%231A365D" /><stop offset="100%" stop-color="%232E5FD1" /></linearGradient><pattern id="grid-pattern" width="30" height="30" patternUnits="userSpaceOnUse"><path d="M 30 0 L 0 0 0 30" fill="none" stroke="rgba(255, 255, 255, 0.05)" stroke-width="1"/></pattern></defs><rect width="1200" height="600" fill="url(%23bg-gradient)" /><rect width="1200" height="600" fill="url(%23grid-pattern)" /><path d="M 0 400 L 0 350 L 50 350 L 50 250 L 100 200 L 150 250 L 150 350 L 200 350 L 200 300 L 250 300 L 250 350 L 350 350 L 350 250 L 400 250 L 400 350 L 500 350 L 500 300 L 550 250 L 600 300 L 600 350 L 700 350 L 700 250 L 750 200 L 800 250 L 800 350 L 900 350 L 900 300 L 950 300 L 950 350 L 1050 350 L 1050 250 L 1100 250 L 1100 350 L 1200 350 L 1200 600 L 0 600 Z" fill="%230F2342" /><rect x="25" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="75" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="175" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="225" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="325" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="375" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="475" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="525" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="625" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="675" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="775" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="825" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="925" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="975" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="1075" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="1125" y="275" width="20" height="30" fill="rgba(255, 255, 255, 0.8)" /><rect x="125" y="320" width="25" height="30" fill="%238B4513" /><rect x="575" y="320" width="25" height="30" fill="%238B4513" /><rect x="875" y="320" width="25" height="30" fill="%238B4513" /><circle cx="137.5" cy="335" r="2" fill="%23FFD700" /><circle cx="587.5" cy="335" r="2" fill="%23FFD700" /><circle cx="887.5" cy="335" r="2" fill="%23FFD700" /><g transform="translate(200, 230) scale(0.7)"><rect x="0" y="0" width="15" height="10" rx="2" fill="%23333" /><path d="M 15 5 L 20 0 L 20 10 L 15 5" fill="%23333" /></g><g transform="translate(650, 230) scale(0.7)"><rect x="0" y="0" width="15" height="10" rx="2" fill="%23333" /><path d="M 15 5 L 20 0 L 20 10 L 15 5" fill="%23333" /></g><g transform="translate(1000, 230) scale(0.7)"><rect x="0" y="0" width="15" height="10" rx="2" fill="%23333" /><path d="M 15 5 L 20 0 L 20 10 L 15 5" fill="%23333" /></g><g transform="translate(137.5, 335) scale(0.8)"><circle cx="0" cy="-10" r="8" fill="none" stroke="%2330C9E8" stroke-width="2" /><rect x="-5" y="0" width="10" height="12" rx="2" fill="%2330C9E8" /></g><g transform="translate(587.5, 335) scale(0.8)"><circle cx="0" cy="-10" r="8" fill="none" stroke="%2330C9E8" stroke-width="2" /><rect x="-5" y="0" width="10" height="12" rx="2" fill="%2330C9E8" /></g><g transform="translate(887.5, 335) scale(0.8)"><circle cx="0" cy="-10" r="8" fill="none" stroke="%2330C9E8" stroke-width="2" /><rect x="-5" y="0" width="10" height="12" rx="2" fill="%2330C9E8" /></g><path d="M 0 150 C 200 100, 400 200, 600 150 S 1000 100, 1200 150" stroke="rgba(48, 201, 232, 0.3)" stroke-width="2" fill="none" /><path d="M 0 180 C 300 130, 500 230, 700 180 S 1000 130, 1200 180" stroke="rgba(48, 201, 232, 0.2)" stroke-width="1.5" fill="none" /><path d="M 0 210 C 400 160, 600 260, 800 210 S 1000 160, 1200 210" stroke="rgba(48, 201, 232, 0.1)" stroke-width="1" fill="none" /><g transform="translate(250, 100) scale(1.2)"><circle cx="0" cy="-10" r="8" fill="none" stroke="rgba(255, 255, 255, 0.2)" stroke-width="2" /><rect x="-5" y="0" width="10" height="12" rx="2" fill="rgba(255, 255, 255, 0.2)" /></g><g transform="translate(550, 70) scale(1.5)"><circle cx="0" cy="-10" r="8" fill="none" stroke="rgba(255, 255, 255, 0.15)" stroke-width="2" /><rect x="-5" y="0" width="10" height="12" rx="2" fill="rgba(255, 255, 255, 0.15)" /></g><g transform="translate(850, 120) scale(1.3)"><circle cx="0" cy="-10" r="8" fill="none" stroke="rgba(255, 255, 255, 0.1)" stroke-width="2" /><rect x="-5" y="0" width="10" height="12" rx="2" fill="rgba(255, 255, 255, 0.1)" /></g><path d="M 100 50 L 150 50 L 150 80 L 200 80 L 200 30 L 250 30 L 250 60" stroke="rgba(48, 201, 232, 0.2)" stroke-width="1" fill="none" /><path d="M 380 20 L 430 20 L 430 50 L 480 50 L 480 80 L 530 80 L 530 40" stroke="rgba(48, 201, 232, 0.15)" stroke-width="1" fill="none" /><path d="M 700 40 L 750 40 L 750 70 L 800 70 L 800 20 L 850 20 L 850 50" stroke="rgba(48, 201, 232, 0.25)" stroke-width="1" fill="none" /><path d="M 950 30 L 1000 30 L 1000 60 L 1050 60 L 1050 90 L 1100 90 L 1100 50" stroke="rgba(48, 201, 232, 0.2)" stroke-width="1" fill="none" /><rect width="1200" height="600" fill="rgba(0, 0, 0, 0.3)" /></svg>');height:80vh;display:flex;align-items:center;justify-content:center;color:#fff;text-align:center;padding:1rem;background-position:center;background-size:cover;background-repeat:no-repeat}.hero-content{max-width:800px}.hero h1{font-size:3.5rem;margin-bottom:1rem}.hero p{font-size:1.25rem;margin-bottom:2rem}.btn{display:inline-block;padding:.875rem 2rem;border-radius:50px;text-decoration:none;font-weight:700;transition:all .3s;text-align:center}.btn-primary{background-color:var(--primary);color:#fff}.btn-primary:hover{background-color:#2052c8;transform:translateY(-2px);box-shadow:0 4px 12px #2d37484d}.btn-secondary{background-color:transparent;color:#fff;border:2px solid white;margin-left:1rem}.btn-secondary:hover{background-color:#ffffff1a;transform:translateY(-2px)}section{padding:5rem 1rem}.container{max-width:1200px;margin:0 auto}.section-header{text-align:center;margin-bottom:3rem}.section-header h2{font-size:2.5rem;color:var(--dark);position:relative;margin-bottom:1.5rem}.section-header h2:after{content:"";position:absolute;bottom:-.5rem;left:50%;transform:translate(-50%);width:80px;height:4px;background-color:var(--primary)}.section-header p{font-size:1.2rem;color:#4a5568;max-width:800px;margin:0 auto}.features{background-color:#fff}.feature-card{background-color:var(--light);border-radius:8px;padding:2rem;text-align:center;transition:all .3s;box-shadow:0 4px 6px #0000000d}.feature-card:hover{transform:translateY(-10px);box-shadow:0 10px 20px #0000001a}.feature-icon{font-size:3rem;color:var(--primary);margin-bottom:1.5rem}.feature-card h3{font-size:1.5rem;margin-bottom:1rem;color:var(--dark)}.how-it-works{background-color:#edf2f7}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:4rem;position:relative}.step{text-align:center;position:relative}.step-number{width:60px;height:60px;background-color:var(--primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;margin:0 auto 1.5rem}.step h3{margin-bottom:1rem;font-size:1.5rem}.testimonials{background-color:#fff}.testimonial-slider{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:2rem;padding:1rem 0;scroll-snap-type:x mandatory;scrollbar-width:none}.testimonial-slider::-webkit-scrollbar{display:none}.testimonial-card{flex:0 0 auto;width:100%;max-width:500px;scroll-snap-align:start;background-color:var(--light);border-radius:8px;padding:2rem;box-shadow:0 4px 6px #0000000d}.testimonial-content{margin-bottom:1.5rem;font-style:italic}.testimonial-author{display:flex;align-items:center}.author-image{width:60px;height:60px;border-radius:50%;margin-right:1rem;overflow:hidden}.author-info h4{margin-bottom:.25rem}.pricing{background-color:#edf2f7}.pricing-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.pricing-card{background-color:#fff;border-radius:8px;padding:3rem 2rem;text-align:center;box-shadow:0 4px 6px #0000000d;transition:all .3s}.pricing-card.featured{transform:scale(1.05);border:2px solid var(--primary);position:relative}.pricing-card.featured:before{content:"Most Popular";position:absolute;top:-12px;left:50%;transform:translate(-50%);background-color:var(--primary);color:#fff;padding:.25rem 1rem;border-radius:20px;font-size:.875rem;font-weight:700}.pricing-card:hover{transform:translateY(-10px);box-shadow:0 10px 20px #0000001a}.pricing-card.featured:hover{transform:translateY(-10px) scale(1.05)}.pricing-tier{font-size:1.25rem;color:var(--dark);font-weight:700;margin-bottom:1rem}.pricing-price{font-size:3rem;font-weight:700;color:var(--primary);margin-bottom:1rem}.pricing-price span{font-size:1rem;color:#718096}.pricing-features{list-style:none;margin:2rem 0}.pricing-features li{margin-bottom:.75rem;padding-bottom:.75rem;border-bottom:1px solid #EDF2F7}.pricing-features li:last-child{border-bottom:none}.cta{background:linear-gradient(135deg,var(--primary),var(--dark));color:#fff;text-align:center}.cta h2{font-size:2.5rem;margin-bottom:1.5rem}.cta p{font-size:1.2rem;margin-bottom:2rem;max-width:800px;margin-left:auto;margin-right:auto}.contact{background-color:#fff;padding:5rem 1rem}.contact-form{max-width:600px;margin:0 auto}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--dark)}.form-group input,.form-group textarea{width:100%;padding:.75rem;border:1px solid #CBD5E0;border-radius:4px;font-size:1rem;transition:border-color .3s}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4299e126}button[type=submit]{cursor:pointer;border:none;width:100%}footer{background-color:var(--dark);color:#fff;padding:4rem 1rem 2rem}.footer-content{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:2rem;margin-bottom:3rem}.footer-logo{font-size:1.5rem;font-weight:700;margin-bottom:1rem;display:flex;align-items:center}.footer-column h3{margin-bottom:1.5rem;font-size:1.2rem;position:relative}.footer-column h3:after{content:"";position:absolute;bottom:-.5rem;left:0;width:40px;height:3px;background-color:var(--secondary)}.footer-links{list-style:none}.footer-links li{margin-bottom:.75rem}.footer-links a{color:#cbd5e0;text-decoration:none;transition:color .3s}.footer-links a:hover{color:var(--secondary)}.social-links{display:flex;gap:1rem;margin-top:1rem}.social-icon{width:40px;height:40px;background-color:#ffffff1a;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:all .3s}.social-icon:hover{background-color:var(--secondary);transform:translateY(-3px)}.copyright{text-align:center;padding-top:2rem;border-top:1px solid rgba(255,255,255,.1);color:#cbd5e0;font-size:.875rem}@media (max-width: 768px){.hero h1{font-size:2.5rem}nav ul{display:none}.btn{display:block;width:100%;margin:1rem 0}.btn-secondary{margin-left:0}.pricing-card.featured{transform:scale(1)}.pricing-card.featured:hover{transform:translateY(-10px)}}:root{--primary: #2E5FD1;--secondary: #30C9E8;--dark: #1A365D;--light: #F7FAFC;--success: #48BB78;--warning: #ED8936;--danger: #E53E3E}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,var(--primary),var(--dark));padding:2rem}.login-card{background-color:#fff;border-radius:10px;box-shadow:0 10px 25px #0003;width:100%;max-width:450px;padding:2.5rem;text-align:center}.login-header{margin-bottom:2rem}.logo{display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:700;color:var(--dark);margin-bottom:1.5rem}.logo-icon{margin-right:.5rem;font-size:2rem}.login-header h1{color:var(--dark);margin-bottom:.5rem;font-size:2rem}.login-header p{color:#718096;font-size:1rem}.status-message{padding:.75rem;border-radius:5px;margin-bottom:1.5rem;font-size:.875rem;background-color:#edf2f7;color:#4a5568}.status-message.error{background-color:#e53e3e1a;color:var(--danger)}.status-message.success{background-color:#48bb781a;color:var(--success)}.login-form{text-align:left}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--dark);font-size:.9rem}.form-group input{width:100%;padding:.75rem;border:1px solid #CBD5E0;border-radius:5px;font-size:1rem;transition:border-color .3s,box-shadow .3s}.form-group input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2e5fd133}.form-options{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;font-size:.875rem}.remember-me{display:flex;align-items:center}.remember-me input{margin-right:.5rem}.forgot-password{color:var(--primary);text-decoration:none;transition:color .3s}.forgot-password:hover{color:#2052c8;text-decoration:underline}.login-btn{width:100%;padding:.875rem 2rem;border-radius:5px;font-weight:700;font-size:1rem;transition:all .3s;cursor:pointer;border:none;background-color:var(--primary);color:#fff;margin-bottom:1.5rem}.login-btn:hover{background-color:#2052c8;transform:translateY(-2px);box-shadow:0 4px 12px #2d374833}.login-btn:focus{outline:none;box-shadow:0 0 0 3px #2e5fd166}.login-btn.loading{opacity:.7;cursor:wait}.login-btn:disabled{background-color:#a0aec0;transform:none;box-shadow:none;cursor:not-allowed}.login-footer{margin-top:2rem;color:#718096;font-size:.9rem}.login-footer a{color:var(--primary);text-decoration:none;font-weight:500;transition:color .3s}.login-footer a:hover{color:#2052c8;text-decoration:underline}.login-footer p{margin-bottom:.5rem}@media (max-width: 480px){.login-card{padding:1.5rem}.form-options{flex-direction:column;align-items:flex-start;gap:.75rem}.forgot-password{margin-left:1.75rem}}.district-list{padding:20px}.district-list h2{margin-bottom:20px;color:#333}.add-district{display:flex;gap:10px;margin-bottom:20px}.add-district input{padding:8px;margin-right:10px;border:1px solid #ccc;border-radius:4px;width:120px}.add-district button,.district-list table button{padding:8px 12px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer}.add-district button:hover,.district-list table button:hover{background-color:#0056b3}.district-list table{width:100%;border-collapse:collapse;background-color:#fff;box-shadow:0 2px 5px #0000001a}.district-list th,.district-list td{padding:12px 20px;text-align:left;border-bottom:1px solid #ddd}.district-list th{background-color:#f8f9fa;font-weight:700;color:#555}.district-list tr:hover{background-color:#f1f3f5}.district-list td input{padding:6px;width:100%;border:1px solid #ccc;border-radius:4px}.modal-container{background:#fff;padding:20px;border-radius:8px;max-height:80vh;overflow-y:auto;position:relative}.district-modal{width:90%!important;max-width:1200px!important}.modal-body h4{margin-top:20px;margin-bottom:10px}.district-details-table{width:100%;table-layout:auto;border-collapse:collapse}.district-details-table th,.district-details-table td{padding:10px;border:1px solid #ddd;text-align:left;white-space:normal;word-break:break-word}.district-details-table th{background-color:#f8f9fa;font-weight:700;color:#555}.edit-contact-form,.add-admin-form{display:flex;flex-direction:column;gap:10px}.edit-contact-form .form-group,.add-admin-form .form-group{display:flex;flex-direction:column}.edit-contact-form label,.add-admin-form label{margin-bottom:5px;font-weight:700}.edit-contact-form input,.edit-contact-form textarea,.add-admin-form input{padding:8px;border:1px solid #ccc;border-radius:4px}.edit-contact-form textarea{resize:vertical;min-height:80px}.edit-contact-form button,.add-admin-form button{margin-top:10px;align-self:flex-start;padding:8px 12px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer}.edit-contact-form button:hover,.add-admin-form button:hover{background-color:#0056b3}.delete-button{background-color:#dc3545}.delete-button:hover{background-color:#c82333}.write-nfc-button{margin-left:8px;background-color:#007bff;color:#fff;border:none;padding:8px 12px;border-radius:4px;cursor:pointer;font-size:14px}.write-nfc-button:hover{background-color:#0056b3}.write-nfc-button:disabled{background-color:#b0bec5;cursor:not-allowed}.admin-dashboard{display:flex;flex-direction:column;min-height:100vh;background-color:#f4f4f4}.dashboard-header{background-color:#003087;color:#fff;padding:10px 0;box-shadow:0 2px 5px #0000001a}.header-content{display:flex;align-items:center;justify-content:space-between}.logo-image{height:30px;margin-right:10px}.logo-text{font-size:24px;font-weight:700}.header-titles{text-align:center}.header-titles h1{margin:0;font-size:24px}.header-titles h2{margin:5px 0 0;font-size:18px;font-weight:400}.user-menu{display:flex;align-items:center}.user-menu-button{background:none;border:none;color:#fff;font-size:16px;cursor:pointer}.dashboard-layout{display:flex;flex:1}.dashboard-sidebar{width:200px;background-color:#2c3e50;color:#fff;padding:20px;display:flex;flex-direction:column;justify-content:space-between}.dashboard-nav{display:flex;flex-direction:column}.nav-button{background:none;border:none;color:#fff;padding:10px;text-align:left;cursor:pointer;font-size:16px}.nav-button.active{background-color:#34495e;border-radius:4px}.nav-text{margin-left:10px}.sidebar-footer{margin-top:auto}.sidebar-link{color:#3498db;text-decoration:none;display:block;margin-bottom:10px}.sidebar-link:hover{text-decoration:underline}.logout-button{background:none;border:1px solid #3498db;color:#3498db;padding:8px 16px;border-radius:4px;cursor:pointer;width:100%;text-align:center}.logout-button:hover{background-color:#3498db;color:#fff}.dashboard-main{flex:1;padding:20px}.dashboard-content{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 5px #0000001a}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-container{background:#fff;padding:20px;border-radius:8px;max-height:80vh;overflow-y:auto;position:relative;width:90%;max-width:600px}.modal-header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ddd;padding-bottom:10px;margin-bottom:20px}.modal-body{max-height:60vh;overflow-y:auto}.campus-list{list-style:none;padding:0}.campus-list li{margin-bottom:10px}.campus-list label{display:flex;align-items:center;gap:10px}.modal-actions{margin-top:20px;display:flex;gap:10px}.modal-actions button{padding:8px 16px;border:none;border-radius:4px;cursor:pointer}.modal-actions button:first-child{background-color:#007bff;color:#fff}.modal-actions button:first-child:hover{background-color:#0056b3}.modal-actions button:last-child{background-color:#6c757d;color:#fff}.modal-actions button:last-child:hover{background-color:#5a6268}.user-list{width:100%}.user-list-header{margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center}.header-left h2{margin-top:0;margin-bottom:.5rem;color:var(--dark)}.btn{padding:.75rem 1.5rem;border-radius:4px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s;border:none}.modal-container{background-color:#fff;border-radius:8px;width:95%;max-width:550px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;animation:slideIn .3s ease-out}.user-table-container{overflow-x:auto}.user-table{width:100%;border-collapse:collapse;font-size:.95rem}.user-table th,.user-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--gray-200, #EDF2F7)}.user-table th{background-color:var(--gray-100, #F7FAFC);font-weight:600;color:var(--gray-700, #4A5568)}.user-table tr:hover{background-color:var(--gray-50, #F9FAFB)}.edit-input,.edit-select{padding:.5rem;font-size:.9rem}.btn-assign{background-color:#28a745;color:#fff;margin-left:5px}.btn-assign:hover{background-color:#218838}.status-badge,.role-badge{display:inline-block;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}.role-badge{background-color:#2e5fd11a;color:var(--primary, #2E5FD1)}.role-badge.user{background-color:#a0aec01a;color:var(--gray-600, #718096)}.role-badge.district_admin{background-color:#ed89361a;color:var(--warning, #ED8936)}.role-badge.super_admin{background-color:#e53e3e1a;color:var(--danger, #E53E3E)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.btn-sort{background-color:var(--gray-200, #EDF2F7);color:var(--gray-700, #4A5568)}.btn-sort:hover{background-color:var(--gray-300, #E2E8F0)}.form-input{width:100%;padding:.75rem;border:1px solid var(--gray-300, #E2E8F0);border-radius:4px;font-size:1rem;background-color:#fff;transition:all .2s}.form-input:focus{outline:none;border-color:var(--primary, #2E5FD1);box-shadow:0 0 0 3px #2e5fd133}.edit-input{padding:.5rem;font-size:.9rem;border:1px solid var(--gray-300, #E2E8F0);border-radius:4px;width:100%}@media (max-width: 768px){.list-header{flex-direction:column;align-items:flex-start}.header-right{margin-top:1rem;width:100%}.btn-add{width:100%}.action-buttons{flex-direction:column}.action-buttons button{width:100%}}.required{color:#e74c3c;margin-left:3px}.form-input:invalid,.form-select:invalid{border-color:#e74c3c}.form-input:focus:invalid,.form-select:focus:invalid{box-shadow:0 0 0 .2rem #e74c3c40}.data-table{width:100%;border-collapse:collapse;font-size:.95rem}.campus-name{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.85rem;background-color:#2e5fd11a;color:var(--primary, #2E5FD1)}.status-badge.active{background-color:#48bb781a;color:var(--success, #48BB78)}.status-badge.inactive{background-color:#a0aec01a;color:var(--gray-500, #A0AEC0)}.action-buttons{display:flex;gap:.5rem;flex-wrap:wrap}.btn-activate{background-color:var(--success, #48BB78);color:#fff}.btn-activate:hover{background-color:#38a169}.btn-deactivate{background-color:var(--warning, #ED8936);color:#fff}.btn-deactivate:hover{background-color:#dd6b20}.door-list{width:100%}.btn-add{background-color:var(--primary, #2E5FD1);color:#fff}.btn-add:hover{background-color:#2052c8;transform:translateY(-2px);box-shadow:0 4px 6px #2e5fd126}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#1a202cbf;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease-out}.modal-container{background-color:#fff;border-radius:8px;width:95%;max-width:500px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;animation:slideIn .3s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--gray-200, #EDF2F7)}.modal-header h3{margin:0;font-size:1.25rem;color:var(--gray-900, #1A202C)}.modal-close{background:transparent;border:none;font-size:1.5rem;line-height:1;color:var(--gray-500, #A0AEC0);cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;transition:color .2s}.modal-close:hover{color:var(--gray-800, #2D3748)}.modal-body{padding:1.5rem}.modal-footer{padding:1rem 1.5rem;display:flex;justify-content:flex-end;gap:1rem;border-top:1px solid var(--gray-200, #EDF2F7)}.btn-cancel{background-color:var(--gray-200, #EDF2F7);color:var(--gray-700, #4A5568)}.btn-cancel:hover{background-color:var(--gray-300, #E2E8F0)}.btn-confirm{background-color:var(--primary, #2E5FD1);color:#fff}.btn-confirm:hover{background-color:#2052c8}.form-group{margin-bottom:1.25rem}.form-group label{display:block;margin-bottom:.5rem;font-size:.9rem;font-weight:500;color:var(--gray-700, #4A5568)}.form-input,.form-select{width:100%;padding:.75rem;border:1px solid var(--gray-300, #E2E8F0);border-radius:4px;font-size:1rem;background-color:#fff;transition:all .2s}.form-input:focus,.form-select:focus{outline:none;border-color:var(--primary, #2E5FD1);box-shadow:0 0 0 3px #2e5fd133}.campus-name,.building-name{display:inline-block;padding:.25rem .5rem;border-radius:4px;font-size:.85rem}.campus-name{background-color:#2e5fd11a;color:var(--primary, #2E5FD1)}.building-name{background-color:#a0aec01a;color:var(--gray-600, #718096)}.edit-input,.edit-select{padding:.5rem;font-size:.9rem;border:1px solid var(--gray-300, #E2E8F0);border-radius:4px;width:100%}.action-buttons{display:flex;gap:.5rem}.btn-edit{background-color:var(--gray-500, #A0AEC0);color:#fff}.btn-edit:hover{background-color:var(--gray-600, #718096)}.btn-remove{background-color:var(--danger, #E53E3E);color:#fff}.btn-remove:hover{background-color:#c53030}.btn-save{background-color:var(--success, #48BB78);color:#fff}.btn-save:hover{background-color:#38a169}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.list-header{flex-direction:column;align-items:flex-start}.header-right{margin-top:1rem;width:100%}.btn-add{width:100%}.filter-bar{flex-direction:column}.filter-group{width:100%}.filter-select{flex:1}.action-buttons{flex-direction:column}.action-buttons button{width:100%}}.log-list{width:100%}.list-header{margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center}.header-left h2{margin-top:0;margin-bottom:.5rem;color:var(--dark, #1A365D)}.error-message{background-color:#e53e3e1a;color:var(--danger, #E53E3E);padding:.75rem;border-radius:4px;margin-top:.5rem}.loading-container{padding:2rem;text-align:center;color:var(--gray-600, #718096)}.filter-bar{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem;padding:1rem;background-color:var(--gray-100, #F7FAFC);border-radius:6px}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group label{font-weight:500;color:var(--gray-700, #4A5568);font-size:.9rem}.filter-select{padding:.5rem;border:1px solid var(--gray-300, #E2E8F0);border-radius:4px;background-color:#fff;min-width:150px}.search-group{flex:1;margin-left:auto}.search-input{width:100%;padding:.5rem .75rem;border:1px solid var(--gray-300, #E2E8F0);border-radius:4px;font-size:.9rem}.search-input:focus{outline:none;border-color:var(--primary, #2E5FD1);box-shadow:0 0 0 3px #2e5fd133}.btn{padding:.6rem 1.25rem;border-radius:4px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s;border:none}.btn-refresh{background-color:var(--primary, #2E5FD1);color:#fff}.btn-refresh:hover{background-color:#2052c8;transform:translateY(-2px);box-shadow:0 4px 6px #2e5fd126}.table-container{overflow-x:auto;max-width:100%}.data-table{width:100%;max-width:100%;border-collapse:collapse;font-size:.95rem}.data-table th,.data-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--gray-200, #EDF2F7)}.data-table th{background-color:var(--gray-100, #F7FAFC);font-weight:600;color:var(--gray-700, #4A5568)}.data-table tr:hover{background-color:var(--gray-50, #F9FAFB)}.status-badge{display:inline-block;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}.status-badge.secure{background-color:#48bb781a;color:var(--success, #48BB78)}.status-badge.unsecure{background-color:#e53e3e1a;color:var(--danger, #E53E3E)}.notes-cell{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.image-cell{text-align:center}.log-image{width:80px;height:60px;object-fit:cover;border-radius:4px;cursor:pointer;transition:transform .2s}.log-image:hover{transform:scale(1.1)}.no-image{color:var(--gray-500, #A0AEC0);font-size:.85rem}.no-data-message{text-align:center;padding:2rem;color:var(--gray-500, #A0AEC0);background-color:var(--gray-50, #F9FAFB);border-radius:4px}.log-stats{margin-top:1rem;text-align:right;color:var(--gray-600, #718096);font-size:.85rem}@media (max-width: 768px){.list-header{flex-direction:column;align-items:flex-start}.header-right{margin-top:1rem;width:100%}.btn-refresh{width:100%}.filter-bar{flex-direction:column}.filter-group{width:100%}.filter-select{flex:1}.search-group{margin-left:0}}.user-list{padding:20px}.user-list h2{margin-bottom:20px;color:#333}.user-list table{width:75%;border-collapse:collapse;background-color:#fff;box-shadow:0 2px 5px #0000001a;margin:0 auto}.user-list th,.user-list td{padding:12px 20px;text-align:center;border-bottom:1px solid #ddd}.user-list th{background-color:#f8f9fa;font-weight:700;color:#555}.user-list .hover-row:hover{background-color:#f1f3f5}.user-list select,.user-list input{padding:5px;border:1px solid #ccc;border-radius:4px;margin-right:10px}.user-list button{padding:5px 10px;margin-right:5px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer}.user-list button:disabled{background-color:#ccc;cursor:not-allowed}.user-list .filters{margin-bottom:20px;display:flex;gap:10px;flex-wrap:wrap}.user-list .pagination{margin-top:20px;display:flex;justify-content:center;gap:10px}.user-list .error{color:red}.maintenance-contact-list{padding:20px}.list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.header-left h2{margin:0}.error-message{color:red;margin-top:5px}.header-right .btn-add{background-color:#4caf50;color:#fff;padding:8px 16px;border:none;border-radius:4px;cursor:pointer}.header-right .btn-add:hover{background-color:#45a049}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.modal-header h3{margin:0}.modal-close{background:none;border:none;font-size:20px;cursor:pointer}.modal-body .form-group{margin-bottom:15px}.form-group label{display:block;margin-bottom:5px}.form-input{width:100%;padding:8px;border:1px solid #ccc;border-radius:4px}.modal-footer{display:flex;justify-content:flex-end;gap:10px}.btn-cancel{background-color:#ccc;color:#000;padding:8px 16px;border:none;border-radius:4px;cursor:pointer}.btn-confirm{background-color:#4caf50;color:#fff;padding:8px 16px;border:none;border-radius:4px;cursor:pointer}.btn-confirm:hover{background-color:#45a049}.table-container{overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{padding:10px;border:1px solid #ddd;text-align:left}.data-table th{background-color:#f4f4f4}.edit-input{width:100%;padding:5px;border:1px solid #ccc;border-radius:4px}.action-buttons{display:flex;gap:5px}.btn-edit{background-color:#2196f3;color:#fff;padding:5px 10px;border:none;border-radius:4px;cursor:pointer}.btn-edit:hover{background-color:#1976d2}.btn-save{background-color:#4caf50;color:#fff;padding:5px 10px;border:none;border-radius:4px;cursor:pointer}.btn-save:hover{background-color:#45a049}.btn-remove{background-color:#f44336;color:#fff;padding:5px 10px;border:none;border-radius:4px;cursor:pointer}.btn-remove:hover{background-color:#d32f2f}.no-data-message{text-align:center;padding:20px;color:#666}.loading-container{text-align:center;padding:20px}.reports{padding:20px}.reports-header h2{margin-bottom:20px}.export-section,.sentinel-section{margin-bottom:30px}.export-section h3,.sentinel-section h3{margin-bottom:10px}.date-range{display:flex;gap:10px;margin-bottom:10px}.date-range input{padding:5px;border:1px solid #ccc;border-radius:4px}.btn-export,.btn-sentinel,.btn-option{background-color:#4caf50;color:#fff;padding:8px 16px;margin-right:10px;border:none;border-radius:4px;cursor:pointer}.btn-export:hover,.btn-sentinel:hover,.btn-option:hover{background-color:#45a049}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center}.modal-container{background:#fff;padding:20px;border-radius:8px;width:400px;max-width:90%}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-close{background:none;border:none;font-size:24px;cursor:pointer}.modal-body{display:flex;flex-direction:column;gap:15px}.custom-range{margin-top:15px}.custom-range input{display:block;width:100%;margin-bottom:10px;padding:5px;border:1px solid #ccc;border-radius:4px}.error-message{color:red;margin-top:10px}:root{--primary: #2E5FD1;--secondary: #30C9E8;--dark: #1A365D;--light: #F7FAFC;--success: #48BB78;--warning: #ED8936;--danger: #E53E3E;--gray-100: #F7FAFC;--gray-200: #EDF2F7;--gray-300: #E2E8F0;--gray-400: #CBD5E0;--gray-500: #A0AEC0;--gray-600: #718096;--gray-700: #4A5568;--gray-800: #2D3748;--gray-900: #1A202C;--sidebar-width: 250px}body{margin:0;padding:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:var(--gray-100)}.admin-dashboard{display:flex;flex-direction:column;min-height:100vh}.dashboard-header{background-color:var(--primary);box-shadow:0 2px 4px #0003;padding:1rem 0;position:fixed;top:0;left:0;right:0;z-index:100}.container{max-width:1440px;margin:0 auto;padding:0 1.5rem;width:100%}.header-content{display:flex;align-items:center;justify-content:space-between;max-width:1440px;width:100%;margin:0 auto;padding:0 1.5rem;box-sizing:border-box}.logo{display:flex;align-items:center;font-size:1.5rem;font-weight:700;color:#fff}.logo-text{font-weight:700;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.dashboard-header h1{margin:0;font-size:1.5rem;color:#fff;text-shadow:1px 1px 3px rgba(0,0,0,.3)}.user-menu{position:relative}.user-menu-button{background-color:#fff3;border:none;padding:.5rem 1rem;font-size:1rem;color:#fff;cursor:pointer;border-radius:4px}.user-menu-button:hover{background-color:#ffffff4d}.dashboard-layout{display:flex;margin-top:73px;flex:1}.dashboard-sidebar{width:var(--sidebar-width);background-color:#fff;border-right:1px solid var(--gray-200);height:calc(100vh - 73px);position:fixed;top:73px;left:0;display:flex;flex-direction:column;justify-content:space-between}.dashboard-nav{padding:1.5rem 0;display:flex;flex-direction:column}.nav-button{display:flex;align-items:center;width:100%;padding:.75rem 1.5rem;background:transparent;border:none;text-align:left;font-size:1rem;color:var(--gray-700);cursor:pointer;transition:all .2s;text-decoration:none}.nav-button:hover{background-color:var(--gray-100);color:var(--primary)}.nav-button.active{background-color:var(--primary);color:#fff;font-weight:500}.sidebar-footer{padding:1.5rem;border-top:1px solid var(--gray-200)}.sidebar-link{display:block;color:var(--gray-600);text-decoration:none;margin-bottom:1rem}.sidebar-link:hover{color:var(--primary)}.logout-button{width:100%;padding:.75rem 1rem;background-color:var(--gray-100);color:var(--gray-700);border:1px solid var(--gray-300);border-radius:4px;font-size:1rem;cursor:pointer;transition:all .2s}.logout-button:hover{background-color:var(--danger);color:#fff;border-color:var(--danger)}.dashboard-main{flex:1;margin-left:var(--sidebar-width);padding:2rem;max-width:calc(100% - var(--sidebar-width))}.dashboard-title{margin-bottom:2rem}.dashboard-title h2{font-size:1.75rem;color:var(--gray-900);margin-bottom:.5rem}.dashboard-description{color:var(--gray-600);font-size:1rem;margin-top:0}.dashboard-content{background-color:#fff;border-radius:8px;box-shadow:0 2px 8px #0000000d;padding:2rem;width:100%;max-width:100%;box-sizing:border-box}.campus-list{width:100%}.campus-card{border:1px solid var(--gray-200);border-radius:6px;padding:1rem;margin-bottom:1rem}.campus-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.building-list{width:100%}.building-card{border:1px solid var(--gray-200);border-radius:6px;padding:1rem;margin-bottom:1rem}.door-list-table{width:100%;border-collapse:collapse}.door-list-table th,.door-list-table td{padding:.75rem;text-align:left;border-bottom:1px solid var(--gray-200)}.door-list-table th{font-weight:500;color:var(--gray-700);background-color:var(--gray-100)}@media (max-width: 1024px){.dashboard-sidebar{width:200px}.dashboard-main{margin-left:200px}}@media (max-width: 768px){.header-content{flex-direction:column;align-items:flex-start;gap:.5rem}.dashboard-header h1{font-size:1.25rem}.dashboard-layout{margin-top:120px}.dashboard-sidebar{top:120px;height:calc(100vh - 120px);width:180px}.dashboard-main{margin-left:180px;padding:1rem}.dashboard-content{padding:1rem}}@media (max-width: 480px){.dashboard-sidebar{position:fixed;bottom:0;left:0;right:0;top:auto;width:100%;height:auto;z-index:10;border-right:none;border-top:1px solid var(--gray-200)}.dashboard-nav{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:center;padding:.5rem 0}.nav-button{width:auto;flex:0 0 33.333%;padding:.5rem .25rem;text-align:center;font-size:.75rem}.sidebar-footer{display:none}.dashboard-main{margin-left:0;margin-bottom:80px;padding:1rem}.dashboard-title h2{font-size:1.5rem}}.download-page{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#2d3748;background-color:var(--light)}header{background:linear-gradient(135deg,var(--primary-color),var(--dark));color:#fff;padding:1.5rem;position:sticky;top:0;z-index:100;box-shadow:0 4px 6px #0000001a}.navbar{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto}.logo{display:flex;align-items:center;font-size:1.8rem;font-weight:700}.logo-image{height:40px;width:auto;margin-right:.5rem}.logo-text{font-size:1.8rem;font-weight:700}nav ul{display:flex;list-style:none;gap:2rem}nav a{color:#fff;text-decoration:none;font-weight:500;transition:color .3s}main{max-width:1200px;margin:0 auto;padding:3rem 1.5rem}.download-container{display:flex;flex-direction:column;align-items:center;background-color:#fff;border-radius:10px;box-shadow:0 4px 12px #00000014;padding:3rem;margin-bottom:2rem}.app-icon{width:120px;height:120px;margin-bottom:1.5rem;border-radius:24px;box-shadow:0 4px 8px #0000001a}.app-details{text-align:center;margin-bottom:2rem}.app-details h1{font-size:2.5rem;color:var(--dark);margin-bottom:.5rem}.version{display:inline-block;background-color:var(--light);padding:.3rem .8rem;border-radius:50px;color:var(--primary-color);font-weight:600;margin:.5rem 0 1.5rem;font-size:.9rem}.app-description{max-width:600px;margin-bottom:2rem;text-align:center;color:#4a5568;font-size:1.1rem}.download-button{display:inline-block;background-color:var(--primary-color);color:#fff;padding:1rem 2.5rem;border-radius:50px;font-weight:700;font-size:1.2rem;text-decoration:none;transition:all .3s;box-shadow:0 4px 6px #0000001a;margin-bottom:2rem}.download-button:hover{background-color:var(--dark);transform:translateY(-3px);box-shadow:0 6px 12px #00000026}.download-button:active{transform:translateY(-1px)}.instructions{background-color:var(--light);border-radius:10px;padding:2rem;margin-top:2rem;width:100%;max-width:700px}.instructions h2{color:var(--dark);margin-bottom:1.5rem;padding-bottom:.5rem;border-bottom:2px solid var(--primary-color)}.steps{list-style-position:inside;margin-left:1rem}.steps li{margin-bottom:.8rem;position:relative;padding-left:1.5rem}.note{margin-top:1.5rem;padding:1rem;background-color:#edf2f7;border-left:4px solid var(--secondary-color);border-radius:0 4px 4px 0}.features{margin-top:4rem}.features h2{text-align:center;margin-bottom:2rem;color:var(--dark)}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem}.feature-card{background-color:#fff;border-radius:8px;padding:1.5rem;text-align:center;box-shadow:0 2px 4px #0000000d;transition:transform .3s}.feature-card:hover{transform:translateY(-5px)}.feature-icon{font-size:2rem;color:var(--primary-color);margin-bottom:1rem}.feature-card h3{margin-bottom:.5rem;color:var(--dark)}footer{background-color:var(--dark);color:#fff;padding:2rem 1rem;text-align:center}@media (max-width: 768px){.navbar{flex-direction:column;align-items:flex-start}nav ul{flex-direction:column;width:100%;margin-top:1rem}nav li{margin-bottom:.5rem}.download-container{padding:2rem 1rem}.app-icon{width:100px;height:100px}.app-details h1{font-size:2rem}.download-button{font-size:1rem;padding:.8rem 2rem}}:root{--primary-color: #2E5FD1;--secondary-color: #30C9E8;--dark: #1A365D;--light: #F8F9FA;--success: #48BB78;--warning: #ED8936;--danger: #E53E3E}.privacy-page{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#2d3748;background-color:var(--light);min-height:100vh;display:flex;flex-direction:column}.container{max-width:1200px;margin:0 auto;padding:0 20px}header{background:linear-gradient(135deg,var(--primary-color),var(--dark));color:#fff;box-shadow:0 2px 4px #0000001a;padding:20px 0;position:sticky;top:0;z-index:1000}.navbar{display:flex;justify-content:space-between;align-items:center;max-width:1200px;margin:0 auto;padding:0 20px}.logo{display:flex;align-items:center}.logo-image{height:40px;margin-right:10px}.logo-text{font-size:24px;font-weight:700;color:#fff}nav ul{display:flex;list-style-type:none;margin:0;padding:0}nav li{margin-left:20px}nav a{text-decoration:none;color:#fff;font-weight:500;transition:color .3s}nav a:hover{color:var(--secondary-color)}main{flex:1;max-width:1200px;margin:0 auto;padding:40px 20px}.policy-container{background-color:#fff;border-radius:8px;box-shadow:0 2px 6px #0000001a;padding:40px;margin-bottom:40px}h1{color:var(--primary-color);margin-top:0;font-size:32px;font-weight:700;margin-bottom:20px}h2{color:var(--dark);font-size:24px;margin-top:30px;margin-bottom:15px;border-bottom:1px solid #e1e4e8;padding-bottom:10px}h3{font-size:20px;margin-top:25px;margin-bottom:10px}p{margin-bottom:15px}ul{margin-bottom:20px;padding-left:20px}li{margin-bottom:8px}.last-updated{margin-top:20px;font-style:italic;color:#888}footer{background-color:var(--dark);color:#fff;padding:30px 0;margin-top:auto;text-align:center}.footer-links{margin-bottom:1rem}.footer-links a{color:#cbd5e0;text-decoration:none;margin:0 .8rem;transition:color .3s}.footer-links a:hover{color:var(--secondary-color)}@media (max-width: 768px){.navbar{flex-direction:column;align-items:flex-start}nav ul{margin-top:15px;flex-direction:column}nav li{margin-left:0;margin-bottom:10px}.policy-container{padding:20px}}
