body{margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.login-form{background:#fff;border-radius:10px;box-shadow:0 10px 25px #0000001a;max-width:400px;padding:2rem;width:100%}.login-form h1{color:#333;margin-bottom:.5rem;text-align:center}.subtitle{color:#666;font-size:.9rem;margin-bottom:2rem;text-align:center}.form-group input{border:2px solid #e1e5e9;border-radius:5px;font-size:1rem;padding:.75rem;transition:border-color .3s ease;width:100%}.form-group input:focus{border-color:#667eea;outline:none}.error-message{text-align:center}.submit-button{background-color:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:.75rem;transition:background-color .3s ease;width:100%}.submit-button:hover:not(:disabled){background-color:#5a6fd8}.submit-button:disabled{background-color:#ccc;cursor:not-allowed}.toggle-form{margin-top:1.5rem;text-align:center}.toggle-form p{color:#666;margin:0}.toggle-button{background:none;border:none;color:#667eea;cursor:pointer;font-weight:500;margin-left:.5rem;text-decoration:underline}.toggle-button:hover{color:#5a6fd8}.camera-manager{padding:2rem}.manager-header{flex-wrap:wrap;gap:1rem}.header-actions{align-items:center;display:flex;gap:1rem}.org-selector{border:2px solid #e1e5e9;border-radius:5px;min-width:200px}.build-button,.org-selector{font-size:.9rem;padding:.5rem 1rem}.build-button{background-color:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;transition:background-color .3s ease}.build-button:hover{background-color:#5a6fd8}.search-section{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:2rem}.search-input{border:2px solid #e1e5e9;border-radius:5px;flex:1 1;font-size:1rem;min-width:300px;padding:.75rem}.search-input:focus{border-color:#667eea;outline:none}.selection-controls{align-items:center;display:flex;gap:1rem}.select-all-label{align-items:center;color:#666;cursor:pointer;display:flex;font-size:.9rem;gap:.5rem}.selection-count{color:#667eea;font-size:.9rem;font-weight:500}.camera-grid{grid-gap:1.5rem;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.camera-card{background:#fff;border:2px solid #0000;border-radius:10px;box-shadow:0 2px 10px #0000001a;cursor:pointer;padding:1.5rem;transition:all .3s ease}.camera-card:hover{box-shadow:0 4px 20px #00000026;transform:translateY(-2px)}.camera-card.selected{background-color:#f8f9ff;border-color:#667eea}.camera-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1rem}.camera-checkbox input{cursor:pointer}.camera-status{font-size:.8rem;font-weight:500}.camera-name{color:#333;font-size:1.1rem;line-height:1.3;margin:0 0 1rem}.camera-details{margin-bottom:1rem}.camera-details p{color:#666;font-size:.9rem;margin:.25rem 0}.camera-details strong{color:#333}.camera-actions{display:flex;gap:.5rem}.preview-button{border-radius:5px;cursor:pointer;font-size:.8rem;padding:.5rem 1rem;transition:all .3s ease}.no-cameras,.no-org-selected{color:#666;font-size:1.1rem;padding:3rem;text-align:center}@media (max-width:768px){.manager-header{align-items:stretch}.header-actions,.manager-header,.search-section{flex-direction:column}.search-section{align-items:stretch}.camera-grid{grid-template-columns:1fr}}.page-manager{padding:2rem}.manager-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.manager-header h2{color:#333;margin:0}.create-button{background-color:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:1rem;padding:.75rem 1.5rem;transition:background-color .3s ease}.create-button:hover{background-color:#5a6fd8}.create-button.large{font-size:1.1rem;padding:1rem 2rem}.error-message{padding:1rem}.loading{color:#666;font-size:1.1rem;padding:2rem;text-align:center}.no-pages{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:3rem;text-align:center}.no-pages h3{color:#333;margin-bottom:1rem}.no-pages p{color:#666;margin-bottom:2rem}.pages-container{margin-top:2rem}.pages-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.page-card{background:#fff;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:1.5rem;transition:transform .3s ease}.page-card:hover{box-shadow:0 4px 20px #00000026;transform:translateY(-2px)}.page-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:1rem}.page-header h3{color:#333;font-size:1.2rem;line-height:1.3;margin:0}.page-badges{display:flex;gap:.5rem}.badge{border-radius:3px;font-size:.75rem;font-weight:500;padding:.25rem .5rem;text-transform:uppercase}.badge.public{background-color:#e3f2fd;color:#1976d2}.page-info{margin-bottom:1rem}.page-info p{color:#666;font-size:.9rem;margin:.25rem 0}.page-info strong{color:#333}.page-preview{background-color:#f8f9fa;border-radius:5px;height:120px;margin-bottom:1rem;overflow:hidden;position:relative}.mini-layout{height:100%;position:relative;width:100%}.mini-camera{background-color:#667eea;border:1px solid #5a6fd8;border-radius:2px;opacity:.7;position:absolute}.page-actions{display:flex;gap:.5rem}.delete-button,.edit-button,.view-button{border:none;border-radius:5px;cursor:pointer;flex:1 1;font-size:.9rem;padding:.5rem;transition:all .3s ease}.view-button{background-color:#28a745;color:#fff}.view-button:hover{background-color:#218838}.edit-button{background-color:#ffc107;color:#333}.edit-button:hover{background-color:#e0a800}.delete-button{background-color:#dc3545;color:#fff}.delete-button:hover{background-color:#c82333}@media (max-width:768px){.manager-header{align-items:stretch;flex-direction:column;gap:1rem}.pages-grid{grid-template-columns:1fr}.page-actions{flex-direction:column}}.api-key-setup{margin:0 auto;max-width:800px;padding:2rem}.setup-card{background:#fff;border-radius:10px;box-shadow:0 4px 6px #0000001a;padding:2rem}.setup-card h2{color:#333;margin-bottom:1rem;text-align:center}.description{color:#666;line-height:1.6;margin-bottom:2rem;text-align:center}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem}.form-group textarea{border:2px solid #e1e5e9;border-radius:5px;font-family:Courier New,monospace;font-size:.9rem;min-height:100px;padding:.75rem;resize:vertical;width:100%}.form-group textarea:focus{border-color:#667eea;outline:none}.button-group{display:flex;gap:1rem;margin-bottom:1rem}.save-button,.test-button{border:none;border-radius:5px;cursor:pointer;flex:1 1;font-size:1rem;font-weight:500;padding:.75rem;transition:all .3s ease}.test-button{background-color:#f8f9fa;border:2px solid #e1e5e9;color:#333}.test-button:hover:not(:disabled){background-color:#e9ecef}.save-button:disabled,.test-button:disabled{background-color:#ccc;cursor:not-allowed;opacity:.6}.error-message{background-color:#fee;border-left:4px solid #c33;color:#c33}.error-message,.success-message{border-radius:5px;margin-bottom:1rem;padding:.75rem}.success-message{background-color:#eef;border-left:4px solid #3c3;color:#3c3}.organizations{background-color:#f8f9fa;border-radius:5px;margin-top:2rem;padding:1rem}.organizations h3{color:#333;margin-top:0}.organizations ul{margin:0;padding-left:1.5rem}.organizations li{color:#666;margin-bottom:.5rem}.help-section{border-top:1px solid #e1e5e9;margin-top:2rem;padding-top:2rem}.help-section h3{color:#333;margin-bottom:1rem}.help-section ol{color:#666;line-height:1.6;padding-left:1.5rem}.help-section li{margin-bottom:.5rem}.security-note{background-color:#e3f2fd;border-left:4px solid #2196f3;border-radius:5px;color:#1565c0;margin-top:1.5rem;padding:1rem}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;will-change:width,height;z-index:1}.react-grid-item.react-draggable-dragging{transition:none;will-change:transform;z-index:3}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;-webkit-user-select:none;user-select:none;z-index:2}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{height:20px;opacity:0;position:absolute;width:20px}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{border-bottom:2px solid #0006;border-right:2px solid #0006;bottom:3px;content:"";height:5px;position:absolute;right:3px;width:5px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e,.react-grid-item>.react-resizable-handle.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgd2lkdGg9IjYiIGhlaWdodD0iNiI+PHBhdGggZD0iTTYgNkgwVjQuMmg0LjJWMEg2djZaIiBvcGFjaXR5PSIuMzAyIi8+PC9zdmc+);background-origin:content-box;background-position:100% 100%;background-repeat:no-repeat;box-sizing:border-box;height:20px;padding:0 3px 3px 0;position:absolute;width:20px}.react-resizable-handle-sw{bottom:0;cursor:sw-resize;left:0;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;cursor:se-resize;right:0}.react-resizable-handle-nw{cursor:nw-resize;left:0;top:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;right:0;top:0;transform:rotate(270deg)}.react-resizable-handle-e,.react-resizable-handle-w{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;left:50%;margin-left:-10px}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.page-builder{background-color:#f5f5f5;display:flex;flex-direction:column;height:100vh}.builder-header{background:#fff;border-bottom:1px solid #e1e5e9;box-shadow:0 2px 4px #0000001a;justify-content:space-between;padding:1rem 2rem}.builder-header,.header-left{align-items:center;display:flex}.header-left{gap:1rem}.back-button{background-color:#6c757d;border:none;border-radius:5px;color:#fff;cursor:pointer;padding:.5rem 1rem;transition:background-color .3s ease}.back-button:hover{background-color:#5a6268}.page-name-input{border:2px solid #e1e5e9;border-radius:5px;font-size:1rem;min-width:200px;padding:.5rem 1rem}.page-name-input:focus{border-color:#667eea;outline:none}.header-right{display:flex;gap:1rem}.preview-button,.save-button{border:none;border-radius:5px;cursor:pointer;font-size:1rem;padding:.5rem 1rem;transition:all .3s ease}.preview-button{background-color:#f8f9fa;border:1px solid #e1e5e9;color:#333}.preview-button:hover{background-color:#e9ecef}.preview-button.active{background-color:#17a2b8;border-color:#17a2b8;color:#fff}.save-button{background-color:#28a745;color:#fff}.save-button:hover:not(:disabled){background-color:#218838}.save-button:disabled{background-color:#ccc;cursor:not-allowed}.builder-content{display:flex;flex:1 1;overflow:hidden}.builder-sidebar{background:#fff;border-right:1px solid #e1e5e9;overflow-y:auto;padding:1.5rem;width:300px}.sidebar-section{margin-bottom:2rem}.sidebar-section h3{color:#333;font-size:1.1rem;margin-bottom:1rem}.camera-selector{display:flex;flex-direction:column;gap:.5rem}.camera-select{border:2px solid #e1e5e9;border-radius:5px;font-size:.9rem;padding:.5rem}.add-camera-button{background-color:#667eea;border:none;border-radius:5px;color:#fff;cursor:pointer;padding:.5rem;transition:background-color .3s ease}.add-camera-button:hover:not(:disabled){background-color:#5a6fd8}.add-camera-button:disabled{background-color:#ccc;cursor:not-allowed}.settings-form{gap:1rem}.form-group,.settings-form{display:flex;flex-direction:column}.form-group{gap:.5rem}.form-group label{color:#333;font-size:.9rem;font-weight:500}.form-group input[type=text]{border:2px solid #e1e5e9;border-radius:5px;font-size:.9rem;padding:.5rem}.form-group input[type=color]{border:2px solid #e1e5e9;border-radius:5px;cursor:pointer;height:40px;width:100%}.form-group input[type=checkbox]{margin-right:.5rem}.builder-main{flex:1 1;overflow:auto;padding:2rem}.canvas-container{border-radius:10px;box-shadow:0 4px 20px #0000001a;min-height:600px;overflow:hidden;position:relative;width:100%}.page-title-overlay{background:#000000b3;color:#fff;left:0;padding:1rem 2rem;position:absolute;right:0;top:0;z-index:10}.page-title-overlay h1{font-size:1.5rem;margin:0}.empty-layout{align-items:center;color:#666;display:flex;flex-direction:column;height:400px;justify-content:center;text-align:center}.empty-layout h3{color:#333;margin-bottom:1rem}.camera-widget,.layout-grid{position:relative}.camera-widget{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;overflow:hidden}.remove-camera{background:#dc3545e6;border:none;border-radius:50%;color:#fff;cursor:pointer;font-size:16px;height:24px;line-height:1;position:absolute;right:5px;top:5px;transition:background-color .3s ease;width:24px;z-index:5}.remove-camera:hover{background:#dc3545}.camera-preview{display:flex;flex-direction:column;height:100%}.camera-info{background:#000c;color:#fff;font-size:.8rem;padding:.5rem}.camera-info strong{display:block;margin-bottom:.25rem}.camera-info p{margin:0;opacity:.8}.camera-placeholder{align-items:center;background:#f8f9fa;color:#666;display:flex;flex:1 1;font-size:1.2rem;justify-content:center}@media (max-width:768px){.builder-header{flex-direction:column;gap:1rem;padding:1rem}.header-left{justify-content:space-between;width:100%}.builder-content{flex-direction:column}.builder-sidebar{border-bottom:1px solid #e1e5e9;border-right:none;width:100%}.builder-main{padding:1rem}}.camera-view{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.camera-view,.camera-view-loading{background-color:#1a1a1a;color:#fff;display:flex;flex-direction:column;min-height:100vh}.camera-view-loading{align-items:center;justify-content:center}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #333;border-radius:50%;border-top-color:#667eea;height:50px;margin-bottom:1rem;width:50px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.camera-view-error{align-items:center;background-color:#1a1a1a;color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:100vh;text-align:center}.camera-view-error h2{color:#dc3545;margin-bottom:1rem}.camera-view-header{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#000c;border-bottom:1px solid #333;display:flex;justify-content:space-between;padding:1rem 2rem}.camera-view-header h1{font-size:1.5rem;font-weight:600;margin:0}.page-logo{height:40px;object-fit:contain;width:auto}.camera-grid{grid-gap:10px;display:grid;flex:1 1;gap:10px;grid-auto-rows:minmax(100px,auto);grid-template-columns:repeat(12,1fr);overflow:auto;padding:10px}.camera-container{background:#000;border:1px solid #333;border-radius:8px;box-shadow:0 4px 20px #0000004d;min-height:200px;overflow:hidden;position:relative}.camera-feed{align-items:center;display:flex;height:100%;justify-content:center;position:relative;width:100%}.camera-info-overlay{background:linear-gradient(180deg,#000c,#0000);color:#fff;left:0;padding:1rem;position:absolute;right:0;top:0;z-index:2}.camera-info-overlay h3{font-size:1rem;font-weight:600;margin:0 0 .25rem}.camera-info-overlay p{font-size:.8rem;margin:0;opacity:.8}.camera-video{background:#000;height:100%;object-fit:cover;width:100%}.video-error{align-items:center;background:#000000e6;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.error-content{color:#dc3545;text-align:center}.error-icon{display:block;font-size:2rem;margin-bottom:.5rem}.error-content p{font-weight:500;margin:.5rem 0}.error-content small{font-size:.8rem;opacity:.7}.camera-controls{background:linear-gradient(0deg,#000c,#0000);bottom:0;display:flex;gap:.5rem;left:0;opacity:0;padding:1rem;position:absolute;right:0;transition:opacity .3s ease;z-index:2}.camera-container:hover .camera-controls{opacity:1}.control-button{align-items:center;background:#fff3;border:1px solid #ffffff4d;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:.9rem;height:36px;justify-content:center;transition:all .3s ease;width:36px}.control-button:hover{background:#ffffff4d;transform:scale(1.1)}.camera-view-footer{background:#000c;border-top:1px solid #333;font-size:.9rem;opacity:.7;padding:1rem 2rem;text-align:center}@media (max-width:1200px){.camera-grid{grid-template-columns:repeat(8,1fr)}}@media (max-width:768px){.camera-grid{gap:5px;grid-template-columns:repeat(4,1fr);padding:5px}.camera-view-header{flex-direction:column;gap:1rem;padding:1rem;text-align:center}.camera-info-overlay{padding:.5rem}.camera-info-overlay h3{font-size:.9rem}.camera-info-overlay p{font-size:.7rem}}@media (max-width:480px){.camera-grid{grid-template-columns:repeat(2,1fr)}.camera-container{min-height:150px}}.camera-container:fullscreen{background:#000}.camera-container:-webkit-full-screen{background:#000}.camera-container:-moz-full-screen{background:#000}.camera-container:-ms-fullscreen{background:#000}.camera-video:before{animation:spin 1s linear infinite;border:2px solid #333;border-radius:50%;border-top-color:#667eea;content:"";height:30px;left:50%;margin:-15px 0 0 -15px;position:absolute;top:50%;width:30px;z-index:1}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.App,.dashboard{min-height:100vh}.dashboard{display:flex;flex-direction:column}.dashboard-header{background:#fff;border-bottom:1px solid #e1e5e9;box-shadow:0 2px 4px #0000001a;padding:1rem 2rem}.header-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1200px}.header-content h1{color:#333;font-size:1.5rem}.user-info{align-items:center;display:flex;gap:1rem}.user-info span{color:#666}.logout-button{background-color:#dc3545;border:none;border-radius:5px;color:#fff;cursor:pointer;padding:.5rem 1rem;transition:background-color .3s ease}.logout-button:hover{background-color:#c82333}.dashboard-nav{background:#fff;border-bottom:1px solid #e1e5e9;display:flex;gap:1rem;padding:0 2rem}.nav-button{background:none;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:1rem;padding:1rem 1.5rem;transition:all .3s ease}.nav-button:hover:not(:disabled){background-color:#f8f9fa;color:#333}.nav-button.active{border-bottom-color:#667eea;color:#667eea}.nav-button:disabled{cursor:not-allowed;opacity:.5}.dashboard-content{flex:1 1;margin:0 auto;max-width:1200px;padding:2rem;width:100%}.setup-notice{background:#fff3cd;border:1px solid #ffeaa7;border-radius:5px;margin-bottom:2rem;padding:1.5rem;text-align:center}.setup-notice h2{color:#856404;margin-bottom:.5rem}.setup-notice p{color:#856404;margin:0}
/*# sourceMappingURL=main.c1efd27d.css.map*/