:root{--primary-color: #0066CC;--secondary-color: #1D1D1F;--accent-color: #0066CC;--success-color: #059669;--danger-color: #dc2626;--warning-color: #d97706;--info-color: #0284c7;--bg-color: #ffffff;--surface-color: #fafafa;--text-color: #0f172a;--text-secondary: #475569;--text-tertiary: #94a3b8;--border-color: #e5e7eb;--shadow-color: rgba(0, 0, 0, .05);--shadow-sm: 0 1px 2px 0 var(--shadow-color);--shadow-md: 0 4px 6px -1px var(--shadow-color);--shadow-lg: 0 10px 15px -3px var(--shadow-color);--shadow-xl: 0 20px 25px -5px var(--shadow-color);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--transition: all .2s ease;--body-font: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--body-font);line-height:1.75;color:var(--text-color);background:var(--bg-color);min-height:100vh;padding:0;font-size:13px;font-weight:400;letter-spacing:-.01em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.container{max-width:100%;margin:0;background-color:var(--bg-color);min-height:100vh}header{background-color:#fffffff2;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);color:var(--text-color);padding:1.25rem 2.5rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(0,0,0,.05);position:relative;z-index:1100}.header-left{display:flex;flex-direction:column;gap:.25rem}header h1{font-size:1.75rem;font-weight:800;margin:0}.tagline-header{font-size:.75rem;color:var(--text-tertiary);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.header-controls{display:flex;align-items:center;gap:1.5rem}.mode-indicator{display:flex;align-items:center;gap:.75rem;background:var(--surface-color);padding:.5rem 1rem;border-radius:var(--radius-md);border:1px solid var(--border-color)}.mode-label{font-size:.8125rem;color:var(--text-secondary);font-weight:500}.mode-value{font-weight:600;font-size:.875rem;padding:.125rem .5rem;background:#0066cc1a;color:var(--primary-color);border-radius:var(--radius-sm)}.modal{display:none;position:fixed;z-index:2000;left:0;top:0;width:100%;height:100%;background-color:#00000080;align-items:center;justify-content:center;overflow-y:auto}.modal.active{display:flex}.loading-content{max-width:400px;text-align:center}.loading-spinner{width:64px;height:64px;border:6px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;margin:0 auto 1.5rem;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-content h3{margin:0 0 1rem;font-size:1.5rem;color:var(--text-primary)}.loading-content p{margin:.5rem 0;color:var(--text-secondary)}.loading-info{font-size:.875rem;color:var(--text-tertiary)}.loading-bar{width:100%;height:8px;background:var(--bg-secondary);border-radius:4px;overflow:hidden;margin:1rem 0}.loading-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary-color),var(--success-color));border-radius:4px;transition:width .3s ease;width:0%;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.modal-content{background-color:var(--bg-color);padding:2.5rem;border-radius:var(--radius-lg);max-width:600px;width:90%;box-shadow:var(--shadow-xl)}.modal-content h3{margin-bottom:1.5rem;color:var(--text-color);font-size:1.25rem;font-weight:600;letter-spacing:-.02em}.camera-list{margin:1.5rem 0;max-height:400px;overflow-y:auto}.camera-item{padding:1rem 1.25rem;margin:.75rem 0;border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:var(--transition);background:var(--surface-color)}.camera-item:hover{border-color:var(--primary-color);background-color:#0066cc0d;transform:translateY(-1px)}.camera-item.selected{border-color:var(--primary-color);background-color:#0066cc14;border-width:2px}.camera-item-label{font-weight:600;color:var(--text-color);margin-bottom:.25rem;font-size:.9375rem}.camera-item-id{font-size:.75rem;color:var(--text-tertiary);font-family:SF Mono,Monaco,Consolas,monospace}.main-content{display:grid;grid-template-columns:1fr 360px;gap:0;min-height:calc(100vh - 74px)}.video-container{position:relative;background:#000;width:100%;height:calc(100vh - 74px);touch-action:none;overflow:hidden}@media (max-width: 768px){.video-container{height:calc(100vh - 132px)}.main-content{min-height:calc(100vh - 66px)}}#video{width:100%;height:100%;display:block;object-fit:cover}#video.mirrored{transform:scaleX(-1)}#video.mirrored~#detection-canvas,#video.mirrored~#line-canvas{transform:scaleX(-1)}#detection-canvas,#line-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;touch-action:none}#detection-canvas{z-index:10}#line-canvas{pointer-events:auto;z-index:20}.overlay{position:absolute;top:0;left:0;width:100%;height:100%;background:#000000e6;color:#fff;display:none;justify-content:center;align-items:center;text-align:center;padding:2rem;z-index:30;pointer-events:none}.overlay-content{pointer-events:auto}.drawing-controls{padding:1.5rem;background:var(--surface-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:1rem}.drawing-controls h3{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:var(--text-primary)}.drawing-controls button{width:100%;margin-bottom:.5rem}.drawing-controls button:last-child{margin-bottom:0}.overlay-content h3{font-size:1.5rem;margin-bottom:.75rem;font-weight:600;letter-spacing:-.02em}.overlay-content p{font-size:1rem;margin-bottom:1.5rem;opacity:.9;max-width:500px;margin-left:auto;margin-right:auto;line-height:1.6}.line-controls{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;align-items:center}.drawing-mode-selector{display:flex;gap:.5rem;background:var(--bg-secondary);padding:.25rem;border-radius:var(--radius-md)}.btn-mode-select{flex:1;padding:.625rem 1rem;background:transparent;border:none;color:var(--text-secondary);font-weight:600;font-size:.875rem;cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition);white-space:nowrap}.btn-mode-select:hover{background:#ffffff80}.btn-mode-select.active{background:var(--primary-color);color:#fff;box-shadow:var(--shadow-sm)}.dashboard-panel{background:var(--surface-color);padding:2rem 1.5rem;overflow-y:auto;border-left:1px solid var(--border-color)}.dashboard-panel>div{margin-bottom:2rem}.dashboard-panel>div:last-child{margin-bottom:0}.dashboard-panel h3{font-size:.875rem;font-weight:700;letter-spacing:-.01em;color:var(--text-color);margin-bottom:1rem}.btn{padding:.625rem 1.25rem;border:1px solid var(--primary-color);border-radius:var(--radius-md);background:var(--primary-color);color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;transition:var(--transition);display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:100%;box-shadow:none}.btn:hover{background:#0052a3;border-color:#0052a3;transform:translateY(-1px);box-shadow:0 4px 8px #06c3}.btn:active{transform:translateY(0)}.btn-primary{background:var(--primary-color);border-color:var(--primary-color)}.btn-secondary{background:transparent;color:var(--text-color);border-color:var(--border-color)}.btn-secondary:hover{background:var(--surface-color)}.btn-full{width:100%}.btn-mode{background:#fff;color:var(--text-secondary);border-color:var(--border-color);width:auto;flex:1}.btn-mode:hover{border-color:var(--primary-color);color:var(--primary-color);background:#fff;box-shadow:none}.btn-mode.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.mode-controls{display:flex;gap:.5rem}.camera-info{margin-top:.75rem;padding:.875rem;background:#0066cc0d;border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary);border:1px solid rgba(0,102,204,.15)}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.625rem}.stat-box{background:#fff;padding:1.125rem 1rem;border-radius:var(--radius-md);text-align:center;border:1px solid var(--border-color);transition:var(--transition)}.stat-box:hover{border-color:var(--primary-color);transform:translateY(-1px);box-shadow:var(--shadow-md)}.stat-value{font-size:2rem;font-weight:700;line-height:1;margin-bottom:.375rem;letter-spacing:-.03em}.stat-label{font-size:.6875rem;color:var(--text-tertiary);font-weight:600;text-transform:uppercase;letter-spacing:.05em}#total-count .stat-value{color:var(--info-color)}#in-count .stat-value{color:var(--success-color)}#out-count .stat-value{color:var(--danger-color)}.line-controls{margin-bottom:1rem;display:flex;flex-direction:column;gap:.5rem}.line-list{max-height:250px;overflow-y:auto}.line-item{padding:.75rem;background:#fff;margin-bottom:.5rem;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.625rem;border:1px solid var(--border-color);transition:var(--transition)}.line-item:hover{border-color:var(--primary-color);transform:translateY(-1px)}.line-item-top{display:flex;align-items:center;gap:.5rem}.line-item-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:.5rem;border-top:1px solid var(--border-color)}.line-color-picker{width:32px;height:32px;border:2px solid var(--border-color);border-radius:var(--radius-sm);cursor:pointer;padding:0;flex-shrink:0;transition:var(--transition)}.line-color-picker:hover{border-color:var(--primary-color);transform:scale(1.05)}.line-name-input{border:none;background:transparent;font-size:.875rem;font-weight:600;color:var(--text-primary);padding:.5rem;border-radius:var(--radius-sm);flex:1;min-width:0}.line-name-input:hover{background:var(--bg-secondary)}.line-name-input:focus{outline:none;background:var(--primary-light);border:1px solid var(--primary-color)}.line-counts{display:flex;gap:.75rem;font-size:.875rem;font-weight:700;align-items:center}.line-count{padding:.25rem .5rem;border-radius:var(--radius-sm);background:var(--bg-secondary)}.line-count.in{color:var(--success-color);background:#0596691a}.line-count.out{color:var(--danger-color);background:#ef44441a}.line-delete-btn{background:transparent;border:1px solid var(--border-color);color:var(--text-tertiary);width:28px;height:28px;border-radius:var(--radius-sm);cursor:pointer;font-size:1.25rem;line-height:1;padding:0;display:flex;align-items:center;justify-content:center;transition:var(--transition);flex-shrink:0;margin-left:.5rem}.line-delete-btn:hover{background:var(--danger-color);color:#fff;border-color:var(--danger-color);transform:scale(1.1)}.line-direction-btn{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary);padding:.375rem .75rem;border-radius:var(--radius-sm);cursor:pointer;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.line-direction-btn:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color);transform:scale(1.05)}.empty-state{padding:2rem 1rem;text-align:center;color:var(--text-tertiary);font-size:.875rem}.input{width:100%;padding:.625rem .875rem;border:1px solid var(--border-color);border-radius:var(--radius-md);font-size:.875rem;margin-bottom:.75rem;transition:var(--transition);background:#fff;font-family:var(--body-font)}.input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #0066cc1a}.session-controls .btn{margin-bottom:.625rem}.visualization-panel{padding:2rem 2.5rem;background:var(--surface-color);border-top:1px solid var(--border-color)}.visualization-panel h3{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem;color:var(--text-color);letter-spacing:-.02em}#chart-container{background:#fff;border-radius:var(--radius-md);padding:1.5rem;min-height:250px;border:1px solid var(--border-color)}.log-container{padding:2rem 2.5rem;background:#fff;border-top:1px solid var(--border-color)}.log-container h3{font-size:1.125rem;font-weight:600;margin-bottom:1.25rem;color:var(--text-color);letter-spacing:-.02em}#log{height:220px;overflow-y:auto;border-radius:var(--radius-md);padding:1rem;background:var(--surface-color);font-family:SF Mono,Monaco,Consolas,Courier New,monospace;font-size:.75rem;border:1px solid var(--border-color);line-height:1.6}.log-entry{margin-bottom:.5rem;padding:.25rem 0}.log-time{color:var(--text-tertiary);font-weight:600}.log-info .log-message{color:var(--info-color)}.log-success .log-message{color:var(--success-color)}.log-warning .log-message{color:var(--warning-color)}.log-error .log-message{color:var(--danger-color)}.log-in .log-message{color:var(--success-color)}.log-out .log-message{color:var(--danger-color)}body.drawing-active #line-canvas{cursor:crosshair}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--surface-color)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}@media (max-width: 1024px){.main-content{grid-template-columns:1fr}.dashboard-panel{border-left:none;border-top:1px solid var(--border-color)}}@media (max-width: 768px){body{font-size:16px;padding-top:0}.container{padding-top:0}.main-content,.hub-view,.camera-view{padding-top:66px}header{padding:1rem;flex-direction:row;justify-content:space-between;gap:.5rem;position:fixed;top:0;left:0;right:0;z-index:1100}.header-left{text-align:left}header h1{font-size:1.25rem}.tagline-header{display:none}.header-controls{flex-direction:row;gap:.5rem}.mode-indicator{display:none!important}.stats-grid{grid-template-columns:1fr;gap:1rem}.stat-box{padding:1.5rem}.stat-value{font-size:2.5rem}.modal{padding:0}.modal-content{padding:2rem 1.5rem;max-width:100%;width:100%;margin:0;min-height:100vh;border-radius:0;max-height:100vh;overflow-y:auto}.onboarding-content{padding:2rem 1.5rem}.dashboard-panel,.visualization-panel,.log-container{padding:1.5rem 1rem}.btn{min-height:48px;padding:.875rem 1.5rem;font-size:1rem}.btn-large{min-height:56px;font-size:1.125rem}.btn-icon{min-height:44px;min-width:44px}.input,.input-large{min-height:48px;font-size:16px;padding:.875rem 1rem}.video-container{height:50vh;min-height:300px}.line-item{padding:1rem}.log-entry{padding:.875rem;font-size:.875rem}}.onboarding-content{max-width:700px;width:100%}.onboarding-step{display:none}.onboarding-step.active{display:block}.setup-instructions{text-align:center;margin-bottom:2rem}.setup-instructions h2{font-size:1.75rem;font-weight:700;margin-bottom:1rem;color:var(--text-color)}.instruction-text{font-size:1rem;color:var(--text-secondary);margin-bottom:2rem;line-height:1.6}.drawing-tools{background:var(--surface-color);padding:1.5rem;border-radius:var(--radius-lg);margin-bottom:1.5rem}.drawing-tools h4{font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);margin-bottom:.75rem}.tool-buttons{display:flex;gap:.5rem;justify-content:center}.setup-tips{text-align:left;background:#0066cc0d;padding:1.5rem;border-radius:var(--radius-lg);border-left:3px solid var(--primary-color)}.setup-tips h4{font-size:.875rem;font-weight:700;color:var(--primary-color);margin-bottom:.75rem}.setup-tips ul{list-style:none;padding:0;margin:0}.setup-tips li{padding-left:1.5rem;margin-bottom:.5rem;position:relative;font-size:.875rem;color:var(--text-secondary)}.setup-tips li:before{content:"•";position:absolute;left:.5rem;color:var(--primary-color);font-weight:700}.onboarding-actions{display:flex;gap:1rem;justify-content:center;margin-top:2rem}.welcome-content{max-width:650px;text-align:center}.settings-content{max-width:500px;width:100%}.settings-content h2{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;color:var(--text-color)}.settings-section{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.settings-section:last-of-type{border-bottom:none}.settings-section h3{font-size:.875rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary);margin-bottom:.75rem}.mode-toggle,.drawing-mode-toggle{display:flex;gap:.5rem;margin-bottom:.75rem}.welcome-header{text-align:center;padding:3rem 0}.welcome-header h1{font-size:3rem;font-weight:800;margin-bottom:.5rem;color:var(--primary-color);letter-spacing:-.03em}.welcome-header .tagline{font-size:1.125rem;color:var(--text-secondary);margin-bottom:3rem}.welcome-header h2{font-size:2rem;font-weight:600;color:var(--text-color);margin-bottom:.625rem;letter-spacing:-.03em}.welcome-header p{font-size:1.0625rem;color:var(--text-secondary);line-height:1.6}.tutorial-steps{display:flex;flex-direction:column;gap:1.125rem;margin-bottom:2.5rem}.step{display:flex;align-items:flex-start;text-align:left;padding:1.5rem;background:var(--surface-color);border-radius:var(--radius-md);border:1px solid var(--border-color);transition:var(--transition)}.step:hover{border-color:var(--primary-color);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.step-number{flex-shrink:0;width:2.5rem;height:2.5rem;background:var(--primary-color);color:#fff;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:1.125rem;font-weight:700;margin-right:1.25rem}.step-content h4{font-size:1.0625rem;font-weight:600;color:var(--text-color);margin-bottom:.375rem;letter-spacing:-.01em}.step-content p{color:var(--text-secondary);line-height:1.6;margin:0;font-size:.9375rem}.btn-large{padding:.875rem 2.5rem;font-size:1rem;font-weight:600}.checkbox-label{display:flex;align-items:center;justify-content:center;gap:.625rem;margin-top:1.5rem;color:var(--text-secondary);cursor:pointer;font-size:.875rem}.checkbox-label input[type=checkbox]{cursor:pointer;width:1.125rem;height:1.125rem;border:1px solid var(--border-color);border-radius:var(--radius-sm)}.checkbox-label:hover{color:var(--text-color)}.mode-description{text-align:center;font-size:1rem;color:var(--text-secondary);margin-bottom:2rem}.mode-selection{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1.5rem}.mode-card{background:var(--surface-color);border:2px solid var(--border-color);border-radius:var(--radius-lg);padding:2rem 1.5rem;text-align:center;cursor:pointer;transition:all .2s ease;position:relative}.mode-card:hover{border-color:var(--primary-color);transform:translateY(-2px);box-shadow:var(--shadow-md)}.mode-card:active{transform:translateY(0)}.mode-icon{font-size:3rem;margin-bottom:1rem}.mode-card h3{font-size:1.25rem;font-weight:700;color:var(--text-color);margin-bottom:.5rem}.mode-card p{font-size:.875rem;color:var(--text-secondary);margin-bottom:1rem}.mode-tag{display:inline-block;padding:.25rem .75rem;background:#0066cc1a;color:var(--primary-color);border-radius:var(--radius-full);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.current-mode-display{background:var(--surface-color);padding:1rem;border-radius:var(--radius-md);text-align:center;margin-bottom:1rem;border:2px solid var(--primary-color)}.current-mode-display span{font-size:1.125rem;font-weight:700;color:var(--primary-color)}.hub-view{padding:2rem 2.5rem;background:#fff}.hub-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.hub-header h2{font-size:1.75rem;font-weight:700;color:var(--text-color)}.hub-info{display:flex;align-items:center;gap:1rem}.hub-code-container{display:flex;align-items:center;gap:.5rem}.hub-code{font-size:.875rem;color:var(--text-secondary)}.hub-code strong{font-size:1.25rem;font-weight:700;color:var(--text-color);font-family:SF Mono,Monaco,Consolas,monospace;letter-spacing:.1em;transition:var(--transition)}.hub-code strong.code-hidden{font-size:1.5rem;letter-spacing:.2em}.btn-icon{padding:.375rem .5rem;font-size:1rem;min-width:auto;background:var(--surface-color);border:1px solid var(--border-color)}.btn-icon:hover{background:#fff;border-color:var(--primary-color)}.hub-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.hub-stat-card{background:var(--surface-color);padding:1.5rem;border-radius:var(--radius-lg);text-align:center;border:1px solid var(--border-color)}.hub-stat-card .stat-value{font-size:2.5rem;font-weight:700;color:var(--primary-color);margin-bottom:.5rem}.hub-stat-card .stat-label{font-size:.875rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.camera-card{background:#fff;border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:1.5rem;transition:var(--transition)}.camera-card:hover{box-shadow:var(--shadow-md);border-color:var(--primary-color)}.camera-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.camera-card-header h4{font-size:1rem;font-weight:600;color:var(--text-color)}.camera-status{display:flex;align-items:center;gap:.375rem;font-size:.75rem;font-weight:600}.camera-status.online{color:var(--success-color)}.camera-status.offline{color:var(--text-tertiary)}.camera-status .status-dot{width:8px;height:8px;border-radius:var(--radius-full);background:currentColor}.camera-card-location{font-size:.875rem;color:var(--text-secondary);margin-bottom:1rem}.camera-card-stats{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.camera-stat{text-align:center;padding:.75rem;background:var(--surface-color);border-radius:var(--radius-md)}.camera-stat-value{font-size:1.5rem;font-weight:700;color:var(--text-color)}.camera-stat-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem}.camera-card-actions{display:flex;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.btn-danger{background-color:var(--danger-color);color:#fff}.btn-danger:hover{background-color:#b91c1c}.camera-view{padding:2rem 2.5rem;background:#fff;min-height:60vh;transition:padding .3s ease;position:relative}.camera-view.sidebar-hidden{padding-left:0;padding-right:0}.camera-connected-main{display:grid;grid-template-columns:360px 1fr;min-height:100vh;position:relative;transition:grid-template-columns .3s ease}.camera-view.sidebar-hidden .camera-connected-main{grid-template-columns:0 1fr}.camera-sidebar{background:var(--bg-color);border-right:1px solid var(--border-color);padding:2rem;display:flex;flex-direction:column;gap:2rem;position:relative;overflow-y:auto;overflow-x:hidden;transition:opacity .3s ease;max-height:100vh}.camera-view.sidebar-hidden .camera-sidebar{opacity:0;pointer-events:none}.camera-video-area{position:relative;background:var(--bg-color);display:flex;flex-direction:column;overflow:hidden}.sidebar-toggle-camera{position:absolute;top:1rem;left:320px;z-index:1000;width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;background:#0066cce6;color:#fff;cursor:pointer;border-radius:50%;box-shadow:0 2px 8px #0003;transition:left .3s ease,background .2s ease;border:2px solid white;font-size:14px}.sidebar-toggle-camera:hover{background:#06c;box-shadow:0 4px 12px #0000004d}.camera-view.sidebar-hidden .sidebar-toggle-camera{left:1rem}.camera-pairing{max-width:500px;margin:0 auto;text-align:center;padding:3rem 0}.camera-pairing h2{font-size:1.75rem;font-weight:700;color:var(--text-color);margin-bottom:1rem}.camera-pairing p{font-size:1rem;color:var(--text-secondary);margin-bottom:2rem}.input-large{font-size:1.5rem;text-align:center;letter-spacing:.2em;font-family:SF Mono,Monaco,Consolas,monospace;text-transform:uppercase;padding:1rem}.camera-name-input{display:flex;flex-direction:column;gap:1rem;margin-top:1.5rem}.camera-info-display h3{font-size:1.25rem;font-weight:700;margin-bottom:.25rem}.camera-info-display p{color:var(--text-secondary);font-size:.875rem}.camera-note{padding:1rem;background:var(--surface-color);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-secondary);margin-top:auto}.connection-status{display:flex;align-items:center;justify-content:center;gap:.75rem;padding:1rem;background:var(--surface-color);border-radius:var(--radius-lg);margin-bottom:2rem;font-size:1rem;font-weight:600}.connection-status.connected{background:#10b9811a;color:var(--success-color)}.connection-status .status-dot{width:12px;height:12px;border-radius:var(--radius-full);background:currentColor;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.camera-info-display{text-align:center;margin-bottom:2rem}.camera-info-display h3{font-size:1.5rem;font-weight:700;color:var(--text-color);margin-bottom:.5rem}.camera-info-display p{font-size:1rem;color:var(--text-secondary)}.camera-stats{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:2rem}.camera-note{background:#0066cc0d;padding:1rem;border-radius:var(--radius-md);border-left:3px solid var(--primary-color);margin-bottom:1.5rem}.camera-note p{font-size:.875rem;color:var(--text-secondary);margin:0}.qr-content{max-width:400px;width:100%;text-align:center}.qr-content h2{font-size:1.5rem;font-weight:700;color:var(--text-color);margin-bottom:1.5rem}#qr-code-display{display:flex;justify-content:center;padding:1.5rem;background:#fff;border-radius:var(--radius-lg);margin-bottom:1.5rem}.qr-info{background:var(--surface-color);padding:1.5rem;border-radius:var(--radius-md);margin-bottom:1.5rem}.qr-info p{margin:0;font-size:.875rem;color:var(--text-secondary)}.qr-info p:first-child{font-size:1rem;margin-bottom:.5rem}.qr-info strong{font-size:1.5rem;font-weight:700;color:var(--text-color);font-family:SF Mono,Monaco,Consolas,monospace;letter-spacing:.15em}.qr-instructions{margin-top:.5rem!important}.camera-info{font-size:.875rem;color:var(--text-secondary);margin-top:.5rem}.setup-guide{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000d9;display:none;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.setup-guide.active{display:flex}.setup-guide-content{background:#fff;padding:2rem;border-radius:var(--radius-lg);max-width:400px;text-align:center;box-shadow:var(--shadow-lg)}.setup-guide-content h3{font-size:1.5rem;font-weight:700;color:var(--text-color);margin-bottom:.75rem}.setup-guide-content p{font-size:1rem;color:var(--text-secondary);margin-bottom:1.5rem}.setup-tools{display:flex;gap:.5rem;justify-content:center;margin-bottom:1.5rem}.setup-actions{display:flex;gap:.75rem;justify-content:center}.btn-small{padding:.5rem 1rem;font-size:.875rem}@media (max-width: 768px){.mode-selection{grid-template-columns:1fr}.mode-card{padding:1.5rem 1rem}.hub-header{flex-direction:column;gap:1rem;text-align:center}.hub-info{flex-direction:column}.hub-stats-grid,.camera-grid{grid-template-columns:1fr}.camera-view,.hub-view{padding:1.5rem 1rem}.camera-pairing,.camera-connected{padding:2rem 0}.input-large{font-size:1.25rem}.qr-content{padding:1.5rem}.mode-icon{font-size:2.5rem}.setup-guide-content{max-width:90%;margin:0 1rem;padding:1.5rem}.setup-guide-content h3{font-size:1.25rem}.setup-guide-content p{font-size:.875rem}}@media (hover: none) and (pointer: coarse){.btn{min-height:44px;padding:.75rem 1.5rem}.mode-card{min-height:180px;padding:2rem 1.5rem}.input{min-height:44px;font-size:16px}.input-large{min-height:56px;font-size:1.25rem}}.hub-charts-container{background:var(--bg-color);padding:2rem;border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color);margin-bottom:2rem}.hub-charts-container h3{font-size:1.25rem;font-weight:700;color:var(--text-color);margin-bottom:1.5rem}.hub-chart-wrapper{position:relative;height:300px;width:100%}.camera-detail-content{max-width:800px;position:relative}.close-modal-btn{position:absolute;top:1.5rem;right:1.5rem;background:none;border:none;font-size:2rem;color:var(--text-secondary);cursor:pointer;padding:0;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:var(--transition)}.close-modal-btn:hover{background:var(--surface-color);color:var(--text-color)}.camera-detail-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:2rem}.camera-detail-chart{margin-top:2rem}.camera-detail-chart h3{font-size:1.125rem;font-weight:700;color:var(--text-color);margin-bottom:1.5rem}.camera-detail-chart canvas{max-height:300px}.camera-card{cursor:default;transition:var(--transition)}.camera-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}@media (max-width: 768px){.hub-chart-wrapper{height:250px}.camera-detail-stats{grid-template-columns:1fr;gap:.75rem}.camera-detail-chart canvas{max-height:200px}.close-modal-btn{top:1rem;right:1rem}.camera-connected-main{grid-template-columns:1fr!important;min-height:100vh}.camera-sidebar{position:fixed;top:66px;left:0;width:80%;max-width:320px;height:calc(100vh - 66px);z-index:999;transform:translate(0);box-shadow:var(--shadow-lg)}.camera-view.sidebar-hidden .camera-sidebar{transform:translate(-100%)}.camera-view.sidebar-hidden .camera-connected-main{grid-template-columns:1fr!important}.sidebar-toggle-camera{left:auto!important;right:1rem;top:80px;z-index:1001}.camera-view.sidebar-hidden .sidebar-toggle-camera{left:1rem!important;right:auto;top:80px}.camera-video-area{width:100%}.stats-grid{grid-template-columns:1fr;gap:.75rem}.line-list{max-height:200px}}
