code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{display:flex;flex-direction:column;min-height:100vh}.navbar{background-color:var(--color-black);box-shadow:0 2px 8px #0000001a;padding:0;position:-webkit-sticky;position:sticky;top:0;z-index:100}.nav-container{height:60px;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 20px}.logo,.nav-container{align-items:center;display:flex}.logo{color:var(--color-white);font-size:18px;font-weight:600;gap:10px;text-decoration:none}.logo-text{color:var(--color-primary)}.nav-menu{gap:30px;list-style:none}.nav-item,.nav-menu{display:flex;margin:0}.nav-item,.nav-link{align-items:center}.nav-link{border-bottom:2px solid #0000;display:inline-flex;font-weight:500;line-height:1;padding:8px 0;text-decoration:none;transition:color .3s ease}.nav-link,.nav-link:hover{color:var(--color-primary)}.nav-link:hover{border-bottom-color:var(--color-primary)}.nav-button{appearance:none;-webkit-appearance:none;border:0;font:inherit;line-height:1;margin:0;padding:8px 0;vertical-align:middle}.menu-toggle,.nav-button{background:none;cursor:pointer}.menu-toggle{border:none;display:none;padding:8px}.hamburger{display:flex;flex-direction:column;gap:5px;height:20px;width:25px}.hamburger span{background-color:var(--color-primary);border-radius:2px;height:2px;transition:all .3s ease;width:100%}@media (max-width:768px){.nav-container{height:56px}.logo-text{display:none}.logo{font-size:16px}.menu-toggle{display:flex}.nav-menu{background-color:var(--color-black);flex-direction:column;gap:0;left:0;max-height:0;opacity:0;overflow:hidden;pointer-events:none;position:absolute;right:0;top:56px;transition:max-height .3s ease,opacity .3s ease;visibility:hidden;z-index:101}.nav-menu.active{max-height:400px;opacity:1;pointer-events:auto;visibility:visible}.nav-item{border-top:1px solid #ffffff1a;padding:12px 20px}.nav-link{border-bottom:none;display:block;padding:0}.hamburger.active span:first-child{transform:rotate(45deg) translate(8px,8px)}.hamburger.active span:nth-child(2){opacity:0}.hamburger.active span:nth-child(3){transform:rotate(-45deg) translate(7px,-7px)}}.page-container{padding-bottom:40px}.page-header{margin-bottom:40px}.page-header h1{color:var(--color-text-primary);font-size:32px;margin-bottom:10px}.page-header p{color:var(--color-text-secondary);font-size:16px}.build-stamp{letter-spacing:.02em}.content-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr}.card{background:var(--color-white);border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:24px}.card-header-row{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.card-header-row h2{color:var(--color-text-primary);font-size:20px;margin:0}.form-group{display:flex;flex-direction:column}.form-group label{color:#2c3e50;font-size:14px;font-weight:500;margin-bottom:6px}.form-group input,.form-group select{border:1px solid #bdc3c7;border-radius:4px;font-family:inherit;font-size:14px;padding:10px 12px;transition:border-color .3s ease}.form-group input:focus,.form-group select:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.btn{border-radius:4px;margin-top:8px;transition:all .3s ease}.btn-primary{background-color:#000}.btn-primary:hover:not(:disabled){background-color:#111;box-shadow:0 4px 12px #00000059;transform:translateY(-2px)}.btn-secondary{background-color:#455a64}.status-panel{background:#f8f9fa;border:1px solid #0000;border-radius:8px;margin-bottom:16px;padding:14px 16px}.status-success{background:#edf8f1;border-color:#bfe5cc}.status-error{background:#fff1f1;border-color:#f0c0c0}.status-neutral{background:#f8f9fa;border-color:#e2e8f0}.status-title{color:var(--color-text-primary);font-weight:700}.status-details{color:var(--color-text-secondary);font-size:13px;margin-top:4px}.telemetry-box{background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid #d7dee8;border-radius:8px;margin-bottom:16px;padding:14px 16px}.telemetry-label{color:#52616b;font-size:12px;font-weight:700;letter-spacing:.04em;margin-bottom:8px;text-transform:uppercase}.live-metrics{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:10px}.live-metric{background:#f2f6fb;border:1px solid #d4deea;border-radius:6px;display:flex;flex-direction:column;gap:2px;padding:8px 10px}.metric-name{color:#52616b;font-size:11px;letter-spacing:.04em;text-transform:uppercase}.metric-value{color:#12263a;font-size:14px;font-weight:700}.telemetry-box pre{background:#0f172a;border-radius:6px;color:#e2e8f0;font-size:13px;line-height:1.5;margin:0;padding:12px;white-space:pre-wrap;word-break:break-word}.telemetry-meta{font-size:12px;margin-top:8px}.helper-text,.telemetry-meta{color:var(--color-text-secondary)}.helper-text{font-size:13px;margin-top:14px}.camera-stream-panel{background:#f8fbff;border:1px solid #dfe7f1;border-radius:10px;margin:18px 0;padding:14px 16px}.camera-url-label{color:#52616b;display:block;font-size:12px;font-weight:600;letter-spacing:.04em;margin:10px 0 6px;text-transform:uppercase}.camera-stream-panel input{border:1px solid #bdc3c7;border-radius:4px;box-sizing:border-box;font-family:inherit;font-size:14px;margin-bottom:12px;padding:10px 12px;width:100%}.camera-stream-open-tab,.camera-stream-toggle{margin-bottom:12px;margin-top:0}.camera-stream-open-tab{margin-left:8px}.camera-stream-status{margin-bottom:12px}.camera-preview,.monitoring-camera-preview{background:#0f172a;border:1px solid #dce7f3;border-radius:8px;display:block;max-height:360px;object-fit:cover;width:100%}.connect-actions{display:flex;justify-content:flex-start}.message{border-radius:4px;padding:12px 16px}.message.success{background-color:#d4edda;border:1px solid #c3e6cb}.message.error{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.lookup-result{color:var(--color-text-primary);font-size:14px;margin-top:10px}.wifi-modal-overlay{align-items:center;background:#0f172a8c;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:1000}.wifi-modal{background:var(--color-white);border-radius:10px;box-shadow:0 12px 32px #00000040;max-width:420px;padding:24px;width:100%}.wifi-modal h3{color:var(--color-text-primary);margin:0 0 8px}.wifi-modal input{border:1px solid #bdc3c7;border-radius:4px;box-sizing:border-box;font-family:inherit;font-size:14px;margin-bottom:12px;padding:10px 12px;width:100%}.wifi-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}@media (max-width:768px){.content-grid{grid-template-columns:1fr}.page-header h1{font-size:24px}.card{padding:16px}.card-header-row{flex-direction:column}.card-header-row h2{font-size:18px}.btn{width:100%}.live-metrics{grid-template-columns:1fr}}.login-page{align-items:flex-start;display:flex;justify-content:center;padding-top:48px}.login-card{background:var(--color-white);border-radius:12px;box-shadow:0 12px 30px #0000001f;max-width:420px;padding:32px;width:100%}.login-card h1{color:var(--color-text-primary);font-size:28px;margin:0 0 12px}.login-card p{color:var(--color-text-secondary);line-height:1.5;margin:0 0 24px}.login-form{display:flex;flex-direction:column;gap:10px}.login-label{color:var(--color-text-primary);font-size:14px;font-weight:600}.login-input{border:1px solid #cbd5e1;border-radius:8px;font-size:14px;margin-bottom:4px;padding:11px 12px;width:100%}.login-input:focus{border-color:#3b82f6;outline:2px solid #3b82f659}.login-button{background:var(--color-black);border:none;border-radius:8px;color:var(--color-primary);cursor:pointer;font-size:15px;font-weight:600;padding:14px 18px;width:100%}.login-button:disabled{cursor:not-allowed;opacity:.65}.login-error{background:#f8d7da;border:1px solid #f5c2c7;border-radius:8px;color:#842029;font-size:14px;margin-top:16px;padding:12px 14px}@media (max-width:768px){.login-page{padding-top:24px}.login-card{padding:24px}.login-card h1{font-size:24px}}.monitoring-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 1fr;margin-bottom:40px}.card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.card-header h2{margin:0}.card-subtitle{color:var(--color-text-secondary);font-size:13px;margin:6px 0 0}.btn-refresh{background-color:var(--color-primary);border:none;border-radius:4px;color:var(--color-text-primary);cursor:pointer;font-size:14px;padding:8px 16px;transition:background-color .3s ease}.btn-refresh:hover:not(:disabled){background-color:var(--color-primary-dark)}.btn-refresh:disabled{cursor:not-allowed;opacity:.6}.empty-state,.loading{color:var(--color-text-secondary);padding:40px 20px;text-align:center}.empty-state{background-color:var(--color-light-gray);border-radius:4px}.empty-state p{font-weight:500;margin:0 0 8px}.empty-state small{color:#95a5a6}.error-message{background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;font-size:14px;margin-bottom:16px;padding:12px 16px}.customer-list{gap:8px}.customer-list,.device-list{display:flex;flex-direction:column}.device-list{gap:10px}.device-item{align-items:center;background:linear-gradient(180deg,#fff,#f8fafc);border:1px solid #ecf0f1;border-radius:14px;color:inherit;cursor:pointer;display:flex;justify-content:space-between;padding:16px;text-align:left;transition:all .25s ease;width:100%}.device-item:hover{border-color:#7fb3d5;box-shadow:0 8px 20px #2c3e5014;transform:translateY(-1px)}.device-item.selected{background:linear-gradient(180deg,#f0f9ff,#e8f4f8);border-color:#3498db}.device-item.connected{box-shadow:inset 0 0 0 1px #27ae601a}.device-item-main{display:flex;flex-direction:column;gap:4px}.device-detail-header,.device-item-title-row,.telemetry-panel-header{align-items:center;display:flex;gap:12px;justify-content:space-between}.device-detail-header h3,.device-item h4,.telemetry-panel h4{margin:0}.device-detail-header p,.device-item p{color:#5f6f7f;font-size:13px;margin:0}.device-item small{color:#8693a2}.status-pill{align-items:center;border-radius:999px;display:inline-flex;font-size:12px;font-weight:700;justify-content:center;letter-spacing:.02em;padding:4px 10px;white-space:nowrap}.status-pill.connected{background-color:#d4edda;color:#155724}.status-pill.idle{background-color:#eef2f7;color:#5f6f7f}.device-detail-panel{display:flex;flex-direction:column;gap:18px}.device-meta-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.device-meta-grid>div,.telemetry-card{background:#f8fafc;border:1px solid #e5edf2;border-radius:12px;padding:14px}.meta-label,.telemetry-label{color:#708090;display:block;font-size:12px;letter-spacing:.08em;margin-bottom:8px;text-transform:uppercase}.device-meta-grid strong,.telemetry-card strong{color:#1f2d3d;font-size:15px}.telemetry-panel{background:linear-gradient(180deg,#fff,#f8fbfd);border:1px solid #e2e8ee;border-radius:16px;padding:18px}.telemetry-panel-header span{color:#6c7a89;font-size:13px}.telemetry-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:14px}.telemetry-card strong{display:block}.camera-preview-panel{margin-top:16px}.monitoring-camera-preview{background:#0f172a;border:1px solid #dfe7f1;border-radius:12px;max-height:360px;object-fit:cover;width:100%}.telemetry-raw{margin-top:16px}.telemetry-raw pre{background:#0f172a;border-radius:12px;color:#dbeafe;margin:0;overflow-x:auto;padding:14px;white-space:pre-wrap;word-break:break-word}.compact-state{padding-bottom:20px;padding-top:20px}.customer-item{align-items:center;border:1px solid #ecf0f1;border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;padding:16px;transition:all .3s ease}.customer-item:hover{background-color:#f8f9fa;border-color:#3498db}.customer-item.active{background-color:#e8f4f8;border-color:#3498db}.customer-info h4{color:#2c3e50;font-size:16px;margin:0 0 4px}.customer-info p{color:#7f8c8d;font-size:13px;margin:0}.arrow{color:#3498db;font-size:18px}.buckets-table{overflow-x:auto}table{border-collapse:collapse;width:100%}thead{background-color:#f8f9fa}th{border-bottom:2px solid #ecf0f1;color:#2c3e50;font-size:13px;font-weight:600;text-align:left}td,th{padding:12px}td{border-bottom:1px solid #ecf0f1;color:#555;font-size:14px}tbody tr:hover{background-color:#f8f9fa}.status-badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.status-badge.active{background-color:#d4edda;color:#155724}.status-badge.inactive{background-color:#f8d7da;color:#721c24}.stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stat-card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:20px}.stat-card h4{color:#7f8c8d;font-size:14px;letter-spacing:.5px;margin:0 0 12px;text-transform:uppercase}.stat-value{color:#2c3e50;font-size:32px;font-weight:700;margin:0}.stat-value.status{color:#27ae60;font-size:20px}@media (max-width:768px){.monitoring-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}table{font-size:12px}td,th{padding:8px}.device-detail-header,.device-item-title-row,.telemetry-panel-header{align-items:flex-start;flex-direction:column}.device-meta-grid,.telemetry-grid{grid-template-columns:1fr}}.reporting-container{display:flex;flex-direction:column;gap:24px}.report-controls{max-width:500px}.report-form{display:flex;flex-direction:column;gap:16px}.form-row{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.form-group select{background-color:var(--color-white);border:1px solid var(--color-border);border-radius:4px;cursor:pointer;font-family:inherit;font-size:14px;padding:10px 12px;transition:border-color .3s ease}.form-group select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #ffff001a;outline:none}.form-group input[type=date]{transition:border-color .3s ease}.form-group input[type=date],.form-group textarea{border:1px solid var(--color-border);border-radius:4px;font-family:inherit;font-size:14px;padding:10px 12px}.form-group textarea{resize:vertical;width:100%}.form-group input[type=date]:focus,.form-group textarea:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a;outline:none}.checkbox-group label{align-items:center;display:flex;gap:8px}.checkbox-group input[type=checkbox]{height:16px;width:16px}.btn-secondary{background-color:#95a5a6}.btn-secondary:hover:not(:disabled){background-color:#7f8c8d}.report-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.report-actions{display:flex;gap:8px}.report-timestamp{color:#7f8c8d;font-size:13px;margin-bottom:20px}.report-filter-note{color:#555;margin:0 0 12px}.summary-grid{grid-gap:16px;background-color:#f8f9fa;border-radius:4px;display:grid;gap:16px;grid-template-columns:repeat(4,1fr);margin-bottom:32px;padding:16px}.summary-item{text-align:center}.summary-item h4{color:#7f8c8d;font-size:13px;letter-spacing:.5px;margin:0 0 8px;text-transform:uppercase}.summary-item .number{color:#2c3e50;font-size:28px;font-weight:700;margin:0}.report-section{margin-bottom:32px}.report-section h3{border-bottom:2px solid #ecf0f1;color:#2c3e50;font-size:16px;margin:0 0 16px;padding-bottom:12px}.data-table{border-collapse:collapse;width:100%}.data-table thead{background-color:#f8f9fa}.data-table th{border-bottom:2px solid #ecf0f1;color:#2c3e50;font-size:13px;font-weight:600;padding:12px;text-align:left}.data-table td{border-bottom:1px solid #ecf0f1;color:#555;font-size:14px;padding:12px}.data-table tbody tr:hover{background-color:#f8f9fa}.empty-state-large{color:#7f8c8d;padding:80px 40px;text-align:center}@media (max-width:768px){.summary-grid{grid-template-columns:repeat(2,1fr)}.form-row{grid-template-columns:1fr}.report-header{align-items:flex-start;flex-direction:column;gap:12px}.report-actions,.report-actions .btn{width:100%}.data-table{font-size:12px}.data-table td,.data-table th{padding:8px}}.manage-page{padding-bottom:40px}.manage-hero{align-items:flex-end;display:flex;gap:24px;justify-content:space-between;margin-bottom:28px}.manage-eyebrow{color:#52616b;font-size:12px;letter-spacing:.12em;margin:0 0 8px;text-transform:uppercase}.manage-hero h1{color:var(--color-text-primary);font-size:34px;margin:0}.manage-hero p{color:var(--color-text-secondary);margin:8px 0 0}.build-stamp{background:#f1f3f5;border:1px solid #dee2e6;border-radius:999px;color:#495057;display:inline-block;font-size:12px;margin-top:8px;padding:4px 10px}.manage-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(2,minmax(0,1fr))}.manage-card{background:var(--color-white);border-radius:10px;box-shadow:0 2px 10px #00000014;padding:20px}.manage-card-wide{grid-column:1/-1}.manage-card h2{color:var(--color-text-primary);font-size:20px;margin:0 0 16px}.manage-card-header{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-bottom:16px}.manage-form{grid-gap:12px;display:grid;gap:12px}.manage-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.manage-form input,.manage-form select,.manage-form textarea{background:#fff;border:1px solid #cfd7df;border-radius:8px;font:inherit;padding:11px 12px;width:100%}.manage-form textarea{grid-column:1/-1;resize:vertical}.manage-form input:focus,.manage-form select:focus,.manage-form textarea:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1f;outline:none}.btn{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;margin-top:4px;padding:12px 20px;transition:all .25s ease}.btn-primary{background:#000;color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:#111;transform:translateY(-1px)}.btn-secondary{background:#455a64;color:#fff}.btn:disabled{cursor:not-allowed;opacity:.6}.message{border-radius:8px;font-size:14px;margin-top:12px;padding:12px 14px}.message.success{background:#edf8f1;border:1px solid #bfe5cc;color:#155724}.message.error{background:#fff1f1;border:1px solid #f0c0c0;color:#7f1d1d}.manage-table{grid-gap:10px;display:grid;gap:10px}.manage-table-row{grid-gap:12px;align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;display:grid;gap:12px;grid-template-columns:2fr 1fr 2fr;padding:12px 14px}.manage-table-row span{color:var(--color-text-secondary);font-size:14px}.manage-table-row-users{grid-template-columns:2fr 1fr 1.2fr 1.8fr}.manage-table-row-buckets{grid-template-columns:2fr 1.2fr 2fr .8fr}.manage-table-row-operations{grid-template-columns:1.3fr 1.3fr 1.5fr 1.5fr 2fr}.manage-empty{color:var(--color-text-secondary);padding:14px}@media (max-width:900px){.manage-form-grid,.manage-grid{grid-template-columns:1fr}.manage-hero{align-items:flex-start;flex-direction:column}.manage-table-row{grid-template-columns:1fr}}.app-container{background-color:var(--color-background);display:flex;flex-direction:column;min-height:100vh}main{flex:1 1;margin:0 auto;max-width:1200px;padding:20px;width:100%}@media (max-width:768px){main{padding:16px}}
/*# sourceMappingURL=main.ae27c43b.css.map*/