:root{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#213547;background-color:#f8f9fa;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;padding:0;min-height:100vh}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0 0 1rem;font-weight:600}p{margin:0 0 1rem}a{font-weight:500;color:#3498db;text-decoration:inherit}a:hover{color:#2980b9}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#f9f9f9;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.loading{text-align:center;padding:2rem;color:#666}.error{color:#e74c3c;background:#fdf2f2;padding:1rem;border-radius:4px;border:1px solid #f5c6cb}.logo a{display:flex;align-items:center;gap:.5rem;text-decoration:none;color:#fff;font-weight:700;font-size:1.2rem}.logo img{width:32px;height:32px}.logo a:hover{color:#3498db}.nav-menu{display:flex;align-items:center;gap:1rem}.nav-link{color:#fff;text-decoration:none;padding:.5rem 1rem;border-radius:4px;transition:background-color .2s ease}.nav-link:hover{background-color:#ffffff1a}.user-menu{position:relative;margin-left:1rem;padding-left:1rem;border-left:1px solid rgba(255,255,255,.3)}.user-dropdown{position:relative}.user-button{display:flex;align-items:center;gap:.5rem;background:none;border:none;color:#fff;cursor:pointer;padding:.5rem;border-radius:4px;transition:background-color .2s ease}.user-button:hover{background-color:#ffffff1a}.user-info{font-weight:500}.user-role{font-size:.85rem;opacity:.8}.dropdown-arrow{font-size:.7rem;transition:transform .2s ease}.dropdown-arrow.open{transform:rotate(180deg)}.dropdown-menu{position:absolute;top:100%;right:0;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 4px 12px #00000026;min-width:120px;z-index:1000;margin-top:.5rem}.dropdown-item{display:block;width:100%;padding:.75rem 1rem;background:none;border:none;text-align:left;cursor:pointer;font-size:.9rem;text-decoration:none;color:#333;transition:background-color .2s ease}.dropdown-item:hover{background-color:#f8f9fa}.dropdown-item.settings{color:#3498db}.dropdown-item.settings:hover{background-color:#e8f4fd}.dropdown-item.logout{color:#e74c3c;border-top:1px solid #eee}.dropdown-item.logout:hover{background-color:#fdf2f2}@media (max-width: 768px){.nav-menu{flex-direction:column;gap:.5rem;width:100%}.nav-link{padding:.75rem 1rem;text-align:center;width:100%}.user-menu{margin-left:0;padding-left:0;border-left:none;border-top:1px solid rgba(255,255,255,.3);padding-top:.5rem;display:flex;justify-content:center}.dropdown-menu{right:auto;left:50%;transform:translate(-50%)}}@media (max-width: 480px){.nav-link{font-size:.9rem;padding:.6rem .8rem}.user-button{font-size:.9rem;padding:.4rem}.user-info{font-size:.9rem}.user-role{font-size:.8rem}.dropdown-item{font-size:.85rem;padding:.6rem .8rem}}#header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem}@media (max-width: 768px){#header{flex-direction:column;text-align:center}}#layout{min-height:100vh;display:flex;flex-direction:column}#header{background-color:#2c3e50;color:#fff;padding:1rem 2rem;box-shadow:0 2px 4px #0000001a}#main-content{flex:1;padding:2rem;background-color:#f8f9fa;max-width:100%;overflow-x:auto}@media (max-width: 768px){#header,#main-content{padding:1rem}}@media (max-width: 480px){#header,#main-content{padding:.75rem}}.not-found-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center}.not-found-page h1{color:#e74c3c;margin-bottom:1rem}.not-found-page p{margin-bottom:2rem;color:#666}.not-found-page a{color:#3498db;text-decoration:none;padding:.5rem 1rem;border:1px solid #3498db;border-radius:4px;transition:all .2s}.not-found-page a:hover{background-color:#3498db;color:#fff}.auth-required{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;padding:2rem}.auth-required h2{color:#e74c3c;margin-bottom:1rem}.auth-required p{margin-bottom:2rem;color:#666}.auth-required a{color:#3498db;text-decoration:none;padding:.5rem 1rem;border:1px solid #3498db;border-radius:4px;transition:all .2s}.auth-required a:hover{background-color:#3498db;color:#fff}.auth-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:#f8f9fa;padding:2rem}.auth-form{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 4px 6px #0000001a;width:100%;max-width:400px}.auth-form h2{text-align:center;margin-bottom:2rem;color:#2c3e50}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-group input,.form-group select{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus{outline:none;border-color:#3498db}.form-group input:disabled,.form-group select:disabled{background-color:#f5f5f5;cursor:not-allowed}.submit-button{width:100%;padding:.75rem;background:#3498db;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background-color .2s;margin-top:1rem}.submit-button:hover:not(:disabled){background:#2980b9}.submit-button:disabled{background:#bdc3c7;cursor:not-allowed}.error-message{background:#e74c3c;color:#fff;padding:.75rem;border-radius:4px;margin-bottom:1rem;text-align:center}.auth-link{text-align:center;margin-top:1rem;color:#666}.auth-link a{color:#3498db;text-decoration:none}.auth-link a:hover{text-decoration:underline}.home-page{max-width:1200px;margin:0 auto;padding:0 1rem}.welcome-message{text-align:center;padding:3rem 1rem}.error-message{background:#f8d7da;color:#721c24;padding:1rem;border-radius:4px;margin-bottom:1rem;text-align:center}.error-message button{background:#dc3545;color:#fff;border:none;padding:.5rem 1rem;margin-left:1rem;border-radius:4px;cursor:pointer}.error-message button:hover{background:#c82333}.dashboard-overview h1{margin-bottom:2rem;color:#2c3e50;font-size:2.5rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem;margin-bottom:3rem}.stat-card{background:#fff;padding:2rem;border-radius:8px;box-shadow:0 2px 8px #0000001a;text-align:center;transition:transform .2s ease,box-shadow .2s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.stat-card h3{margin:0 0 1rem;color:#666;font-size:1rem;text-transform:uppercase;letter-spacing:.5px}.stat-number{font-size:2.5rem;font-weight:700;color:#3498db;margin-bottom:.5rem}.stat-card.danger{background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;border:2px solid #a93226;box-shadow:0 4px 15px #e74c3c4d}.stat-card.danger:hover{transform:translateY(-2px);box-shadow:0 6px 20px #e74c3c66}.stat-card.danger h3{color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.stat-card.danger .stat-number{color:#fff;text-shadow:2px 2px 4px rgba(0,0,0,.5);font-weight:900}.stat-status{font-size:1.2rem;font-weight:700;padding:.5rem 1rem;border-radius:20px;display:inline-block}.stat-status.online{background:#2ecc71;color:#fff}.quick-actions h2{margin-bottom:1.5rem;color:#2c3e50;font-size:2rem}.action-buttons{display:flex;gap:1rem;flex-wrap:wrap;justify-content:flex-start}.action-button{background:#3498db;color:#fff;text-decoration:none;padding:1rem 2rem;border-radius:6px;font-weight:500;text-align:center;min-width:200px;transition:all .2s ease}.action-button:hover{background:#2980b9;transform:translateY(-1px);box-shadow:0 4px 8px #0003}@media (max-width: 768px){.dashboard-overview h1{font-size:2rem}.quick-actions h2{font-size:1.5rem}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-card{padding:1.5rem}.stat-number{font-size:2rem}.action-buttons{justify-content:center}.action-button{min-width:180px;padding:.875rem 1.5rem}}@media (max-width: 480px){.home-page{padding:0 .5rem}.welcome-message{padding:2rem .5rem}.dashboard-overview h1{font-size:1.75rem}.quick-actions h2{font-size:1.25rem}.stats-grid{grid-template-columns:1fr;gap:.75rem}.stat-card{padding:1.25rem}.stat-number{font-size:1.75rem}.action-button{width:100%;min-width:auto;padding:.75rem 1rem}}.event-image-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.event-image-modal{background:#fff;border-radius:12px;max-width:90vw;max-height:90vh;width:800px;overflow:hidden;box-shadow:0 20px 40px #0000004d;display:flex;flex-direction:column}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #e5e5e5;background:#f8f9fa}.modal-header h3{margin:0;color:#333;font-size:1.2rem;font-weight:600}.close-button{background:none;border:none;font-size:24px;color:#666;cursor:pointer;padding:5px;line-height:1;border-radius:4px;transition:all .2s ease}.close-button:hover{background:#e9ecef;color:#333}.modal-content{display:flex;flex:1;overflow:hidden}.event-info{width:300px;padding:20px;border-right:1px solid #e5e5e5;background:#f8f9fa;overflow-y:auto}.info-grid{display:flex;flex-direction:column;gap:16px}.info-item{display:flex;flex-direction:column;gap:4px}.label{font-size:.875rem;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.5px}.value{font-size:1rem;color:#333;font-weight:500}.risk-level.high{color:#dc3545;font-weight:700}.risk-level.medium{color:#fd7e14;font-weight:600}.risk-level.low{color:#28a745;font-weight:600}.image-container{flex:1;display:flex;align-items:center;justify-content:center;background:#000;position:relative;overflow:hidden}.event-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px}.image-loading{color:#fff;font-size:1.1rem;display:flex;align-items:center;justify-content:center;padding:40px}.image-error{color:#fff;text-align:center;padding:40px}.image-error p{margin:8px 0}.error-message{color:#ff6b6b;font-size:.9rem}.image-id{color:#ccc;font-size:.8rem;font-family:monospace}@media (max-width: 768px){.event-image-modal{width:95vw;height:90vh}.modal-content{flex-direction:column}.event-info{width:100%;max-height:200px;border-right:none;border-bottom:1px solid #e5e5e5}.info-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.image-container{flex:1;min-height:300px}}@media (max-width: 480px){.event-image-modal-overlay{padding:10px}.modal-header{padding:15px}.modal-header h3{font-size:1.1rem}.event-info{padding:15px}.info-grid{grid-template-columns:1fr;gap:10px}.image-loading,.image-error{padding:20px;font-size:1rem}}.events-page{max-width:1200px;margin:0 auto;padding:0 1rem}.events-header{margin-bottom:2rem;text-align:center}.events-header h1{margin-bottom:.5rem;color:#2c3e50}.events-header p{color:#7f8c8d;margin:0}.events-filters{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin-bottom:2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;align-items:end}.filter-group{display:flex;flex-direction:column;gap:.5rem}.filter-group label{font-weight:500;color:#2c3e50;font-size:.9rem}.filter-group select,.filter-group input{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem}.filter-group select:focus,.filter-group input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db33}.filter-actions{display:flex;gap:.5rem;flex-direction:column}.filter-actions button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.clear-filters-btn{background:#95a5a6;color:#fff}.clear-filters-btn:hover{background:#7f8c8d}.refresh-btn{background:#3498db;color:#fff}.refresh-btn:hover:not(:disabled){background:#2980b9}.refresh-btn:disabled{background:#bdc3c7;cursor:not-allowed}.error-banner{background:#f8d7da;color:#721c24;padding:1rem;border-radius:4px;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center}.error-banner button{background:#dc3545;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer}.error-banner button:hover{background:#c82333}.no-events{text-align:center;padding:3rem;color:#7f8c8d}.no-events p{margin-bottom:1rem}.loading,.error{text-align:center;padding:2rem;font-size:1.1rem}.error{color:#e74c3c;background:#fdf2f2;border:1px solid #fecaca;border-radius:8px;margin:1rem 0}.events-list{display:flex;flex-direction:column;gap:1rem}.event-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;border-left:4px solid #3498db;transition:all .2s ease}.event-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.event-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}.event-time{font-weight:500;color:#666;font-size:.95rem}.risk-badge{padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:700;text-transform:uppercase;white-space:nowrap}.event-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.75rem}.event-details p{margin:0;color:#333;font-size:.9rem;background:#f8f9fa;padding:.5rem;border-radius:4px}.event-details strong{color:#2c3e50}.event-actions{margin-top:1rem;padding-top:1rem;border-top:1px solid #eee;display:flex;justify-content:flex-end}.view-image-btn{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 4px #0000001a}.view-image-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 8px #00000026;background:linear-gradient(135deg,#5a6fd8,#6a4190)}.view-image-btn:disabled{background:#ccc;cursor:not-allowed;opacity:.6}.view-image-btn:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 4px #0000001a}@media (max-width: 768px){.events-page h1{font-size:2rem}.event-card{padding:1.25rem}.event-header{flex-direction:column;align-items:flex-start;gap:.75rem}.event-time{order:2}.risk-badge{order:1;align-self:flex-end}.event-details{grid-template-columns:1fr;gap:.5rem}.event-actions{margin-top:.75rem;padding-top:.75rem}.view-image-btn{padding:.625rem 1.25rem;font-size:.9rem;width:100%}}@media (max-width: 480px){.events-page{padding:0 .5rem}.events-page h1{font-size:1.75rem;margin-bottom:1.5rem}.event-card{padding:1rem}.event-time{font-size:.85rem}.risk-badge{font-size:.75rem;padding:.2rem .6rem}.event-details p{font-size:.85rem;padding:.4rem}.view-image-btn{padding:.75rem 1rem;font-size:.875rem}}.event-card.high{border-left-color:#e74c3c}.event-card.medium{border-left-color:#f39c12}.event-card.low{border-left-color:#2ecc71}.event-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.event-time{font-weight:500;color:#666}.risk-badge{padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:700;text-transform:uppercase}.risk-badge.high{background:#e74c3c;color:#fff}.risk-badge.medium{background:#f39c12;color:#fff}.risk-badge.low{background:#2ecc71;color:#fff}.event-details p{margin:.5rem 0;color:#333}.camera-creation-form{max-width:700px;margin:0 auto;padding:20px}.camera-creation-form h2{color:#333;margin-bottom:20px;text-align:center}.creation-form{background:#f8f9fa;padding:30px;border-radius:8px;border:1px solid #e9ecef;margin-bottom:30px}.form-group{margin-bottom:25px}.form-group label{display:block;margin-bottom:8px;font-weight:500;color:#495057}.form-input,.form-textarea{width:100%;padding:10px 12px;border:1px solid #ced4da;border-radius:4px;font-size:14px;background:#fff;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-input:focus,.form-textarea:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.form-input::placeholder,.form-textarea::placeholder{color:#6c757d}.form-textarea{resize:vertical;min-height:80px}.camera-id-control{display:flex;gap:10px;align-items:stretch}.camera-id-control .form-input{flex:1}.generate-btn{padding:10px 16px;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:14px;white-space:nowrap}.generate-btn:hover{background:#218838}.help-text{display:block;margin-top:5px;color:#6c757d;font-size:12px;line-height:1.4}.camera-info{background:#fff;padding:25px;border-radius:8px;border:1px solid #e9ecef}.camera-info h3{color:#495057;margin-bottom:15px}.camera-info h4{color:#495057;margin:20px 0 10px;font-size:14px}.camera-info ul{list-style-type:none;padding:0}.camera-info li{padding:8px 0;border-bottom:1px solid #f1f3f4}.camera-info li:last-child{border-bottom:none}.examples{background:#f8f9fa;padding:15px;border-radius:4px;border-left:4px solid #007bff}.examples code{display:block;margin:5px 0;padding:8px;background:#fff;border:1px solid #e9ecef;border-radius:3px;font-family:Courier New,monospace;font-size:12px;color:#495057}.cameras-page{max-width:1200px;margin:0 auto;padding:0 1rem}.cameras-page h1{margin-bottom:1rem;color:#2c3e50;font-size:2.5rem}.cameras-tab,.create-camera-tab{margin-top:20px}.cameras-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem}.camera-card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;transition:all .2s ease}.camera-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.camera-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}.camera-header h3{margin:0;color:#2c3e50;font-size:1.25rem}.status-badge{padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:700;text-transform:uppercase;white-space:nowrap}.status-badge.active{background:#2ecc71;color:#fff}.status-badge.inactive{background:#e74c3c;color:#fff}.camera-details{margin-bottom:1rem}.camera-details p{margin:.75rem 0;color:#666;font-size:.9rem;background:#f8f9fa;padding:.5rem;border-radius:4px;word-break:break-all;overflow-wrap:break-word}.camera-details strong{color:#2c3e50}.camera-actions{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap}.action-btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s ease;flex:1;min-width:80px}.action-btn.view{background:#3498db;color:#fff}.action-btn.view:hover{background:#2980b9;transform:translateY(-1px)}.action-btn.edit{background:#95a5a6;color:#fff}.action-btn.edit:hover{background:#7f8c8d;transform:translateY(-1px)}@media (max-width: 768px){.cameras-page h1{font-size:2rem}.cameras-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.camera-card{padding:1.25rem}.camera-header{flex-direction:column;align-items:flex-start;gap:.75rem}.camera-header h3{font-size:1.1rem}.status-badge{align-self:flex-end}}@media (max-width: 480px){.cameras-page{padding:0 .5rem}.cameras-page h1{font-size:1.75rem;margin-bottom:1.5rem}.cameras-grid{grid-template-columns:1fr;gap:.75rem}.camera-card{padding:1rem}.camera-header h3{font-size:1rem}.camera-details p{font-size:.85rem;padding:.4rem;word-break:break-all;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.action-btn{font-size:.85rem;padding:.4rem .8rem}}.settings-page{max-width:800px;margin:0 auto;padding:0 1rem}.settings-page h1{margin-bottom:2rem;color:#2c3e50;font-size:2.5rem}.settings-section{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 8px #0000001a;margin-bottom:2rem}.settings-section h2{margin-bottom:1.5rem;color:#2c3e50;font-size:1.5rem;border-bottom:2px solid #3498db;padding-bottom:.5rem}.setting-item{margin-bottom:1.5rem}.setting-label{display:flex;align-items:center;gap:.75rem;cursor:pointer;font-size:1rem}.setting-label-block{display:block;cursor:pointer}.setting-label-block .setting-text{display:block;margin-bottom:.5rem;font-weight:500}.setting-text{color:#333;-webkit-user-select:none;user-select:none}.setting-label input[type=checkbox]{width:18px;height:18px;accent-color:#3498db;cursor:pointer}.setting-select{width:100%;max-width:200px;padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.95rem;background:#fff;cursor:pointer}.setting-select:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db33}.settings-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.save-button{background:#27ae60;color:#fff;border:none;padding:.75rem 2rem;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease}.save-button:hover{background:#219a52;transform:translateY(-1px);box-shadow:0 4px 8px #0003}.save-success{color:#27ae60;font-weight:500;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.settings-page h1{font-size:2rem}.settings-section{padding:1.5rem}.settings-section h2{font-size:1.25rem}.setting-label{font-size:.9rem}}@media (max-width: 480px){.settings-page{padding:0 .5rem}.settings-page h1{font-size:1.75rem;margin-bottom:1.5rem}.settings-section{padding:1.25rem}.settings-section h2{font-size:1.1rem}.setting-label{font-size:.85rem}.save-button{width:100%;padding:.75rem}}.camera-assignment{max-width:800px;margin:0 auto;padding:20px}.camera-assignment h2{color:#333;margin-bottom:20px}.error-message{background:#fee;border:1px solid #fcc;color:#c66;padding:10px;border-radius:4px;margin-bottom:15px}.success-message{background:#efe;border:1px solid #cfc;color:#6c6;padding:10px;border-radius:4px;margin-bottom:15px}.assignment-form{background:#f8f9fa;padding:20px;border-radius:8px;border:1px solid #e9ecef}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:5px;font-weight:500;color:#495057}.form-select{width:100%;padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:14px;background:#fff}.form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.assign-control{display:flex;gap:10px;align-items:flex-end}.assign-control .form-select{flex:1}.assign-btn{padding:8px 16px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;white-space:nowrap}.assign-btn:hover:not(:disabled){background:#0056b3}.assign-btn:disabled{background:#6c757d;cursor:not-allowed}.assignments-section{margin-top:30px}.assignments-section h3{color:#495057;margin-bottom:15px}.no-assignments{color:#6c757d;font-style:italic;text-align:center;padding:20px}.assignments-list{background:#fff;border:1px solid #e9ecef;border-radius:4px}.assignment-item{display:flex;justify-content:space-between;align-items:center;padding:15px;border-bottom:1px solid #e9ecef}.assignment-item:last-child{border-bottom:none}.assignment-info{display:flex;flex-direction:column;gap:5px}.user-name{font-weight:500;color:#495057}.username{color:#6c757d;font-size:14px}.assigned-date{color:#868e96;font-size:12px}.remove-btn{padding:6px 12px;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px}.remove-btn:hover:not(:disabled){background:#c82333}.remove-btn:disabled{background:#6c757d;cursor:not-allowed}.user-creation-form{max-width:600px;margin:0 auto;padding:20px}.user-creation-form h2{color:#333;margin-bottom:20px;text-align:center}.access-denied{text-align:center;padding:40px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.access-denied h3{color:#dc3545;margin-bottom:10px}.access-denied p{color:#6c757d}.error-message{background:#fee;border:1px solid #fcc;color:#c66;padding:12px;border-radius:4px;margin-bottom:20px}.success-message{background:#efe;border:1px solid #cfc;color:#6c6;padding:12px;border-radius:4px;margin-bottom:20px}.creation-form{background:#f8f9fa;padding:30px;border-radius:8px;border:1px solid #e9ecef}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}@media (max-width: 768px){.form-row{grid-template-columns:1fr}}.form-group{display:flex;flex-direction:column}.form-group label{margin-bottom:8px;font-weight:500;color:#495057}.form-input,.form-select{padding:10px 12px;border:1px solid #ced4da;border-radius:4px;font-size:14px;background:#fff;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-input:focus,.form-select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.form-input::placeholder{color:#6c757d}.form-actions{margin-top:30px;display:flex;justify-content:center}.submit-btn{padding:12px 30px;background:#007bff;color:#fff;border:none;border-radius:4px;font-size:16px;cursor:pointer;transition:background-color .15s ease-in-out}.submit-btn:hover:not(:disabled){background:#0056b3}.submit-btn:disabled{background:#6c757d;cursor:not-allowed}.user-management-page{max-width:1400px;margin:0 auto;padding:0 1rem}.user-management-page h1{margin-bottom:1rem;color:#2c3e50;font-size:2.5rem}.tab-navigation{display:flex;gap:5px;margin-bottom:2rem;border-bottom:2px solid #e9ecef}.tab-btn{padding:12px 24px;background:#f8f9fa;border:none;border-radius:8px 8px 0 0;cursor:pointer;font-size:14px;font-weight:500;color:#6c757d;transition:all .2s ease}.tab-btn:hover{background:#e9ecef;color:#495057}.tab-btn.active{background:#007bff;color:#fff}.users-tab,.create-user-tab,.assign-cameras-tab{margin-top:20px}.feature-notice{background:#e8f4fd;border:1px solid #bee5eb;border-radius:4px;padding:1rem;margin-bottom:2rem;color:#0c5460;font-style:italic}.management-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:2rem}.users-section,.cameras-section{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 8px #0000001a}.users-section h2,.cameras-section h2{margin-bottom:1.5rem;color:#2c3e50;font-size:1.5rem;border-bottom:2px solid #3498db;padding-bottom:.5rem}.users-list,.cameras-list{display:flex;flex-direction:column;gap:1rem;max-height:400px;overflow-y:auto}.user-card,.camera-card{border:1px solid #ddd;border-radius:6px;padding:1rem;transition:all .2s ease;cursor:pointer}.user-card:hover,.camera-card:hover{border-color:#3498db;transform:translateY(-1px);box-shadow:0 2px 8px #3498db33}.user-card.selected{border-color:#3498db;background:#e8f4fd;box-shadow:0 2px 8px #3498db4d}.user-info,.camera-info{position:relative}.user-header{position:relative;display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.user-header h3{margin:0;color:#2c3e50;font-size:1.1rem}.user-details{margin-top:.5rem}.user-details p{margin:.25rem 0;color:#666;font-size:.9rem}.role-badge{padding:.25rem .5rem;border-radius:12px;font-size:.7rem;font-weight:700;text-transform:uppercase}.role-badge.admin{background:#e74c3c;color:#fff}.role-badge.operator{background:#f39c12;color:#fff}.role-badge.viewer{background:#95a5a6;color:#fff}.assignment-section{background:#fff;border-radius:8px;padding:2rem;box-shadow:0 2px 8px #0000001a}.assignment-section h3{margin-bottom:1rem;color:#2c3e50;font-size:1.25rem}.future-feature{background:#fff3cd;border:1px solid #ffeaa7;border-radius:4px;padding:1rem;text-align:center;margin-top:1rem}.future-feature span{font-size:1.1rem;color:#856404}@media (max-width: 968px){.management-grid{grid-template-columns:1fr;gap:1.5rem}}@media (max-width: 768px){.user-management-page h1{font-size:2rem}.users-section,.cameras-section{padding:1.25rem}.users-section h2,.cameras-section h2{font-size:1.25rem}.users-list,.cameras-list{max-height:300px}}@media (max-width: 480px){.user-management-page{padding:0 .5rem}.user-management-page h1{font-size:1.75rem;margin-bottom:1rem}.users-section,.cameras-section{padding:1rem}.users-section h2,.cameras-section h2{font-size:1.1rem}.user-card,.camera-card{padding:.75rem}.user-info h3,.camera-info h3{font-size:1rem}.user-info p,.camera-info p{font-size:.85rem}.role-badge{position:static;display:inline-block;margin-top:.5rem}}.mongo-gallery{padding:20px;max-width:1400px;margin:0 auto}.gallery-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:15px;border-bottom:2px solid #e0e0e0}.gallery-header h1{color:#333;font-size:2rem;margin:0}.refresh-btn{background:#007bff;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;transition:background-color .3s}.refresh-btn:hover{background:#0056b3}.stats-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:30px}.stat-card{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 8px #0000001a;text-align:center}.stat-card h3{margin:0 0 10px;color:#666;font-size:14px;font-weight:600}.stat-value{font-size:2rem;font-weight:700;color:#007bff}.persons-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.person-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 4px 12px #0000001a;transition:transform .3s,box-shadow .3s;cursor:pointer}.person-card:hover{transform:translateY(-5px);box-shadow:0 8px 24px #00000026}.person-header{padding:15px;background:#f8f9fa;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e0e0e0}.person-id{font-weight:600;color:#333;font-size:14px}.image-count{background:#007bff;color:#fff;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:500}.person-image-container{position:relative;height:200px;overflow:hidden}.person-image{width:100%;height:100%;object-fit:cover;transition:transform .3s}.person-card:hover .person-image{transform:scale(1.05)}.image-overlay{position:absolute;bottom:10px;right:10px;background:#000000b3;color:#fff;padding:4px 8px;border-radius:4px;font-size:12px}.no-image{height:200px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#f8f9fa;color:#666}.person-footer{padding:15px;text-align:center}.view-images-btn{background:#28a745;color:#fff;border:none;padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px;transition:background-color .3s;width:100%}.view-images-btn:hover:not(:disabled){background:#218838}.view-images-btn:disabled{background:#ccc;cursor:not-allowed}.lightbox{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000e6;display:flex;justify-content:center;align-items:center;z-index:1000}.lightbox-content{position:relative;width:90%;max-width:900px;max-height:90vh;background:#fff;border-radius:12px;overflow:hidden;display:flex;flex-direction:column}.close-btn{position:absolute;top:15px;right:15px;background:#00000080;color:#fff;border:none;width:40px;height:40px;border-radius:50%;font-size:20px;cursor:pointer;z-index:1001;display:flex;align-items:center;justify-content:center}.close-btn:hover{background:#000000b3}.lightbox-header{padding:20px;background:#f8f9fa;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e0e0e0}.lightbox-header h3{margin:0;color:#333}.image-counter{background:#007bff;color:#fff;padding:4px 12px;border-radius:12px;font-size:14px}.lightbox-image-container{position:relative;flex:1;display:flex;justify-content:center;align-items:center;min-height:400px;background:#f8f9fa}.lightbox-image{max-width:100%;max-height:500px;object-fit:contain;border-radius:6px}.nav-btn{position:absolute;top:50%;transform:translateY(-50%);background:#00000080;color:#fff;border:none;width:50px;height:50px;border-radius:50%;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .3s}.nav-btn:hover:not(:disabled){background:#000000b3}.nav-btn:disabled{background:#0003;cursor:not-allowed}.nav-prev{left:15px}.nav-next{right:15px}.thumbnails-container{display:flex;gap:10px;padding:20px;overflow-x:auto;background:#f8f9fa;border-top:1px solid #e0e0e0}.thumbnail{width:60px;height:60px;object-fit:cover;border-radius:6px;cursor:pointer;border:2px solid transparent;transition:border-color .3s,transform .3s}.thumbnail:hover{border-color:#007bff;transform:scale(1.05)}.thumbnail.active{border-color:#007bff}.error{text-align:center;padding:40px;color:#dc3545}.error h3{margin-bottom:10px}.retry-btn{background:#dc3545;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;margin-top:15px}@media (max-width: 768px){.mongo-gallery{padding:15px}.gallery-header{flex-direction:column;gap:15px;align-items:stretch}.gallery-header h1{font-size:1.5rem;text-align:center}.stats-container{grid-template-columns:repeat(2,1fr);gap:15px}.persons-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px}.lightbox-content{width:95%;max-height:95vh}.lightbox-image{max-height:300px}.nav-btn{width:40px;height:40px;font-size:18px}.thumbnails-container{padding:15px}.thumbnail{width:50px;height:50px}}.mongo-alerts{padding:20px;max-width:1400px;margin:0 auto;position:relative}.alerts-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:15px;border-bottom:2px solid #e0e0e0}.alerts-header h1{color:#333;font-size:2rem;margin:0;display:flex;align-items:center;gap:10px}.alerts-header h1:before{content:"🔔";font-size:1.5rem}.refresh-btn{background:#007bff;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-size:14px;transition:all .3s;display:flex;align-items:center;gap:8px}.refresh-btn:hover:not(:disabled){background:#0056b3}.refresh-btn:disabled{background:#6c757d;cursor:not-allowed}.refresh-btn.loading{background:#6c757d}.filter-controls{display:flex;gap:15px;margin-bottom:20px;flex-wrap:wrap}.filter-btn{padding:8px 16px;background:#fff;border:1px solid #e0e0e0;border-radius:20px;cursor:pointer;transition:all .3s;font-size:14px;font-weight:500}.filter-btn:hover,.filter-btn.active{background:#007bff;color:#fff;border-color:#007bff}.alerts-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px}.alert-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 4px 12px #0000001a;transition:all .3s}.alert-card:hover{transform:translateY(-5px);box-shadow:0 8px 24px #00000026}.alert-header{display:flex;justify-content:space-between;align-items:center;padding:15px;border-bottom:1px solid #e0e0e0;background:#f8f9fa}.alert-level{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase}.level-alert{background:#dc354526;color:#dc3545}.level-info{background:#17a2b826;color:#17a2b8}.alert-time{font-size:12px;color:#666;font-weight:500}.alert-image{height:200px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#f8f9fa}.alert-img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.alert-card:hover .alert-img{transform:scale(1.05)}.no-image{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#999}.no-image-icon{font-size:3rem;margin-bottom:10px;opacity:.5}.alert-body{padding:15px}.alert-message{margin-bottom:15px;line-height:1.5;color:#333;font-weight:500}.alert-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;font-size:13px}.detail-item{display:flex;flex-direction:column;gap:3px}.detail-label{font-weight:600;color:#666;font-size:12px;text-transform:uppercase}.detail-value{color:#333;font-family:monospace;background:#f8f9fa;padding:2px 6px;border-radius:4px;font-size:12px}.no-alerts{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;color:#666}.no-alerts-icon{font-size:4rem;margin-bottom:20px;opacity:.5}.no-alerts p{font-size:1.1rem;margin:0}.loading{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:400px;text-align:center}.spinner{width:50px;height:50px;border:4px solid #f3f3f3;border-top:4px solid #007bff;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}.spinner-small{width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid #007bff;border-radius:50%;animation:spin 1s linear infinite}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#fffc;display:flex;justify-content:center;align-items:center;z-index:100}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.error{text-align:center;padding:40px;color:#dc3545;background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a}.error h3{margin-bottom:10px;color:#dc3545}.retry-btn{background:#dc3545;color:#fff;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;margin-top:15px;transition:background-color .3s}.retry-btn:hover{background:#c82333}@media (max-width: 768px){.mongo-alerts{padding:15px}.alerts-header{flex-direction:column;gap:15px;align-items:stretch}.alerts-header h1{font-size:1.5rem;text-align:center}.filter-controls{justify-content:center}.alerts-container{grid-template-columns:1fr;gap:15px}.alert-details{grid-template-columns:1fr}}@media (max-width: 480px){.filter-controls{gap:10px}.filter-btn{padding:6px 12px;font-size:13px}.alert-header{flex-direction:column;gap:8px;align-items:stretch}.alert-level,.alert-time{text-align:center}}.notification{position:fixed;top:20px;right:20px;padding:15px 20px;border-radius:6px;color:#fff;font-weight:500;z-index:1000;transform:translate(100%);transition:transform .3s ease}.notification.show{transform:translate(0)}.notification.success{background:#28a745}.notification.error{background:#dc3545}.mongo-page{min-height:100vh;background:linear-gradient(135deg,#f5f7fa,#c3cfe2)}.mongo-page-header{text-align:center;padding:40px 20px 20px;background:#fff;margin-bottom:0;box-shadow:0 2px 8px #0000001a}.mongo-page-header h1{font-size:2.5rem;color:#333;margin-bottom:10px;font-weight:700}.subtitle{color:#666;font-size:1.1rem;margin:0;font-weight:400}.tab-navigation{display:flex;justify-content:center;background:#fff;padding:0 20px;border-bottom:1px solid #e0e0e0;gap:0}.tab-btn{background:none;border:none;padding:15px 30px;cursor:pointer;font-size:16px;font-weight:500;color:#666;border-bottom:3px solid transparent;transition:all .3s ease;display:flex;align-items:center;gap:10px;position:relative}.tab-btn:hover{color:#007bff;background:#007bff0d}.tab-btn.active{color:#007bff;border-bottom-color:#007bff;background:#007bff0d}.tab-icon{font-size:1.2rem}.tab-content{background:transparent;min-height:calc(100vh - 180px)}@media (max-width: 768px){.mongo-page-header{padding:30px 15px 15px}.mongo-page-header h1{font-size:2rem}.subtitle{font-size:1rem}.tab-navigation{padding:0 15px;gap:0}.tab-btn{padding:12px 20px;font-size:14px;flex-direction:column;gap:5px}.tab-icon{font-size:1.1rem}}@media (max-width: 480px){.mongo-page-header h1{font-size:1.75rem}.tab-btn{padding:10px 15px;font-size:13px}.tab-icon{font-size:1rem}}.app{min-height:100vh;background:#0f172a;color:#f1f5f9}#root{margin:0;padding:0;min-height:100vh}
