.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);background:var(--color-bg-primary);position:relative;overflow:hidden}.login-page:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 50%,rgba(255,255,255,.03) 0%,transparent 50%),radial-gradient(circle at 80% 80%,rgba(255,255,255,.02) 0%,transparent 50%),linear-gradient(135deg,var(--color-bg-primary) 0%,var(--color-bg-secondary) 100%);z-index:-1;pointer-events:none}.login-container{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow),0 0 20px #ffffff0f;padding:var(--spacing-2xl);width:100%;max-width:440px;position:relative;z-index:1;overflow:hidden}.login-container:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent)}.login-container:hover{box-shadow:var(--shadow-xl),0 0 30px #ffffff14;border-color:var(--color-border-hover)}.login-header{text-align:center;margin-bottom:var(--spacing-xl)}.login-header h1{font-family:Jura,Courier New,Monaco,Menlo,monospace;font-size:28px;font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-xs) 0;letter-spacing:.5px}.login-header p{font-size:14px;color:var(--color-text-secondary);margin:0}.login-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-sm)}.form-group label{font-size:14px;font-weight:600;color:var(--color-text-primary);letter-spacing:.3px}.form-group input{padding:var(--spacing-md) var(--spacing-lg);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:16px;color:var(--color-text-primary);transition:all var(--transition-base);font-family:inherit;width:100%}.form-group input::placeholder{color:var(--color-text-tertiary)}.form-group input:focus{outline:none;background:var(--color-bg-elevated);border-color:var(--color-border-hover);box-shadow:var(--shadow-sm)}.form-group input:disabled{opacity:.5;cursor:not-allowed}.error-message{padding:var(--spacing-md) var(--spacing-lg);background:#ff6b6b1a;border:1px solid rgba(255,107,107,.3);border-radius:var(--radius-md);color:#ff6b6b;font-size:14px;text-align:center}.login-button{padding:var(--spacing-md) var(--spacing-xl);background:var(--color-text-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:16px;font-weight:600;cursor:pointer;transition:all var(--transition-base);font-family:inherit;letter-spacing:.3px;box-shadow:var(--shadow-md);margin-top:var(--spacing-sm)}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg)}.login-button:disabled{opacity:.5;cursor:not-allowed;transform:none}[data-theme=light] .login-container:before{background:linear-gradient(90deg,transparent,rgba(0,0,0,.08),transparent)}.theme-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;background:transparent;border:none;border-radius:var(--radius-full);color:var(--color-text-primary);cursor:pointer;transition:all var(--transition-base);position:relative;overflow:hidden}.theme-toggle:hover{background:var(--color-bg-secondary);color:var(--color-text-primary)}.theme-toggle:active{transform:scale(.95)}.theme-toggle-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;transition:transform var(--transition-base)}.theme-toggle:hover .theme-toggle-icon{transform:rotate(15deg)}.theme-toggle:focus{outline:none;box-shadow:0 0 0 2px var(--color-border-hover)}.mobile-menu-button{display:none;align-items:center;justify-content:center;width:52px;height:52px;padding:0;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:100px;box-shadow:var(--glass-shadow);cursor:pointer;transition:all var(--transition-base);position:relative;z-index:calc(var(--z-sidebar) + 100)}.mobile-menu-button:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-hover)}.mobile-menu-icon{display:flex;flex-direction:column;justify-content:space-between;width:20px;height:16px;position:relative}.mobile-menu-line{width:100%;height:2px;background:var(--color-text-primary);border-radius:2px;transition:all var(--transition-base);transform-origin:center}.mobile-menu-button.open .mobile-menu-line:nth-child(1){transform:translateY(7px) rotate(45deg)}.mobile-menu-button.open .mobile-menu-line:nth-child(2){opacity:0;transform:scaleX(0)}.mobile-menu-button.open .mobile-menu-line:nth-child(3){transform:translateY(-7px) rotate(-45deg)}@media (max-width: 768px){.mobile-menu-button{display:flex;width:44px;height:44px}}.navbar{position:fixed;left:var(--spacing-xl);right:var(--spacing-xl);top:var(--spacing-lg);z-index:calc(var(--z-sidebar) + 50);pointer-events:none;display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.navbar-left{display:flex;align-items:center;gap:var(--spacing-sm);flex:1;pointer-events:auto}@media (min-width: 769px){.navbar-left .mobile-menu-button{display:none!important}}.navbar-logo-container{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-xl);background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:100px;box-shadow:var(--glass-shadow);pointer-events:auto;height:52px;transition:all var(--transition-base);position:relative;flex:1;min-width:0}.navbar-logo-desktop{display:none}@media (min-width: 769px){.navbar-logo-desktop{display:flex}.navbar-logo-mobile{display:none}}.navbar-logo-mobile{display:flex}@media (min-width: 769px){.navbar-logo-mobile{display:none}}.navbar-logo-link{display:flex;align-items:center;text-decoration:none;cursor:pointer}.navbar-logo-text{font-family:Jura,Courier New,Monaco,Menlo,monospace;font-size:18px;font-weight:600;color:var(--color-text-primary);letter-spacing:.5px;transition:color var(--transition-base)}.navbar-logo-link:hover .navbar-logo-text{color:var(--color-accent-primary)}.navbar-divider{width:1px;height:24px;background:var(--glass-border);flex-shrink:0}.navbar-home-link-inside{font-family:Jura,Courier New,Monaco,Menlo,monospace;font-size:15px;font-weight:500;color:var(--color-text-primary);text-decoration:none;transition:all var(--transition-base);white-space:nowrap;cursor:pointer;flex:1;text-align:left}.navbar-home-link-inside:hover{color:var(--color-accent-primary)}.navbar-actions{display:flex;align-items:center;gap:var(--spacing-sm);pointer-events:auto}.navbar-admin-reset-btn{display:flex;align-items:center;justify-content:center;width:52px;height:52px;background:#ff646426;backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid rgba(255,100,100,.3);border-radius:100px;box-shadow:var(--glass-shadow);font-size:18px;cursor:pointer;transition:all var(--transition-base);padding:0}.navbar-admin-reset-btn:hover{background:#ff646440;border-color:#ff646480;box-shadow:var(--shadow-md);transform:rotate(180deg)}@media (max-width: 1024px){.navbar-admin-reset-btn{width:48px;height:48px;font-size:16px}}@media (max-width: 768px){.navbar-admin-reset-btn{width:44px;height:44px;font-size:15px}}.navbar-theme-container{display:flex;align-items:center;justify-content:center;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:100px;box-shadow:var(--glass-shadow);pointer-events:auto;height:52px;width:52px;transition:all var(--transition-base)}.navbar-theme-container:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-hover)}.navbar-logout-btn{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:0 var(--spacing-lg);height:52px;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:100px;box-shadow:var(--glass-shadow);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-base);font-family:Jura,Courier New,Monaco,Menlo,monospace;font-size:15px;font-weight:500}.navbar-logout-btn:hover{color:#ff6b6b;border-color:#ff6b6b4d;box-shadow:var(--shadow-md)}.navbar-logout-icon{display:flex;align-items:center;justify-content:center;color:inherit}.navbar-logout-label{white-space:nowrap}@media (max-width: 1024px){.navbar{left:var(--spacing-lg);right:var(--spacing-lg);top:var(--spacing-md)}.navbar-logo-container{height:48px;padding:var(--spacing-xs) var(--spacing-lg)}.navbar-theme-container,.navbar-logout-btn{height:48px}}@media (max-width: 768px){.navbar{left:var(--spacing-md);right:var(--spacing-md);top:var(--spacing-sm);align-items:center}.navbar-logo-container{height:44px;padding:var(--spacing-xs) var(--spacing-md);justify-content:center}.navbar-logo-text{font-size:16px}.navbar-theme-container,.navbar-logout-btn{height:44px;width:44px;padding:0}.navbar-logout-label{display:none}}.sidebar{position:fixed;left:var(--spacing-xl);top:calc(var(--spacing-lg) + 52px + var(--spacing-md));width:220px;min-height:200px;max-height:calc(100vh - var(--spacing-lg) - 52px - var(--spacing-md) - var(--spacing-lg) - 80px);background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-xl);box-shadow:var(--glass-shadow);display:flex;flex-direction:column;z-index:var(--z-sidebar);overflow:hidden;transition:all var(--transition-base)}.sidebar:hover{box-shadow:var(--shadow-md);border-color:var(--color-border-hover)}.sidebar-overlay{display:none}.sidebar-nav{flex:1;padding:var(--spacing-md) var(--spacing-sm);overflow-y:auto;overflow-x:hidden;position:relative}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-track{background:transparent}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--color-border-primary);border-radius:var(--radius-full)}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}.sidebar-glass-lens{position:absolute;left:var(--spacing-sm);right:calc(-1 * var(--spacing-sm));pointer-events:none;z-index:10;background:#ffffff0a;border:1px solid rgba(255,255,255,.15);box-shadow:0 2px 8px #0003,0 0 0 1px #ffffff4d inset,0 0 0 1px #0003;overflow:hidden}.sidebar-item{display:flex;align-items:center;padding:var(--spacing-md) var(--spacing-lg);margin:var(--spacing-xs) 0;color:var(--color-text-secondary);text-decoration:none;border-radius:var(--radius-md);transition:color .3s ease,font-weight .3s ease;position:relative;overflow:visible;background:transparent;z-index:1}.sidebar-item:hover{color:var(--color-text-primary)}.sidebar-item.active{color:var(--color-text-primary);font-weight:600;z-index:2;transform:scale(1.02);transform-origin:center center;transition:transform var(--transition-base),color .3s ease,font-weight .3s ease}.sidebar-icon{font-size:18px;margin-right:var(--spacing-md);width:22px;text-align:center;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-label{font-size:14px;font-weight:500;letter-spacing:.2px;line-height:1.3}@media (max-width: 1024px){.sidebar{width:200px;left:var(--spacing-lg);top:calc(var(--spacing-md) + 48px + var(--spacing-md));max-height:calc(100vh - var(--spacing-md) - 48px - var(--spacing-md) - var(--spacing-md) - 72px)}.sidebar-label{font-size:13px}}@media (max-width: 768px){.sidebar{width:260px;left:0;top:0;max-height:100vh;height:100vh;border-radius:0;transform:translate(-100%);transition:transform var(--transition-base);z-index:calc(var(--z-sidebar) + 10);padding-top:calc(var(--spacing-sm) + 44px + var(--spacing-sm) + var(--spacing-md))}.sidebar.open{transform:translate(0)}.sidebar-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:calc(var(--z-sidebar) + 5);opacity:0;pointer-events:none;transition:opacity var(--transition-base)}.sidebar-overlay.open{opacity:1;pointer-events:auto}.sidebar-label{font-size:14px}}.dashboard-layout{display:flex;min-height:100vh;background:var(--color-bg-primary);position:relative;overflow-y:visible}.dashboard-layout-bg{position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 50%,rgba(255,255,255,.03) 0%,transparent 50%),radial-gradient(circle at 80% 80%,rgba(255,255,255,.02) 0%,transparent 50%),linear-gradient(135deg,var(--color-bg-primary) 0%,var(--color-bg-secondary) 100%);z-index:-1;pointer-events:none}.dashboard-main{flex:1;margin-left:calc(var(--spacing-xl) + 220px + var(--spacing-xl));margin-top:calc(var(--spacing-lg) + 52px + var(--spacing-md));min-height:calc(100vh - var(--spacing-lg) - 52px - var(--spacing-md));overflow-x:hidden;overflow-y:visible;padding:0 var(--spacing-xl) var(--spacing-xl) 0;transition:margin-left var(--transition-base),margin-top var(--transition-base)}@media (max-width: 1024px){.dashboard-main{margin-left:calc(var(--spacing-lg) + 200px + var(--spacing-lg));margin-top:calc(var(--spacing-md) + 48px + var(--spacing-md));padding:0 var(--spacing-lg) var(--spacing-lg) 0}}@media (max-width: 768px){.dashboard-main{margin-left:var(--spacing-sm);margin-right:var(--spacing-sm);margin-top:calc(var(--spacing-sm) + 44px + var(--spacing-sm));padding:0 var(--spacing-sm) var(--spacing-md) var(--spacing-sm);width:auto;min-height:auto;overflow-x:hidden;overflow-y:auto}}.situation-center{max-width:1200px;margin:0 auto}.situation-center-empty{display:flex;align-items:center;justify-content:center;min-height:60vh}.empty-notice{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--spacing-2xl);background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-xl);max-width:480px}.empty-notice-icon{font-size:56px;opacity:.6;margin-bottom:var(--spacing-lg)}.empty-notice h2{font-size:18px;font-weight:500;color:var(--color-text-primary);margin:0 0 var(--spacing-xl) 0;line-height:1.5}.setup-cameras-link{padding:var(--spacing-md) var(--spacing-xl);background:var(--color-text-primary);color:var(--color-text-inverse);border-radius:var(--radius-md);text-decoration:none;font-size:15px;font-weight:600;transition:all var(--transition-base)}.setup-cameras-link:hover{opacity:.9}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.stat-card{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-md);transition:all var(--transition-base)}.stat-card:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-md)}.stat-icon{width:48px;height:48px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:22px;background:#ffffff0f}.stat-icon.stat-active{background:#22c55e1f}.stat-icon.stat-alert{background:#fb923c1f}.stat-icon.stat-rec{background:#ef44441f;color:#ef4444}.stat-value{font-size:24px;font-weight:600;color:var(--color-text-primary);margin-bottom:2px}.stat-label{font-size:13px;color:var(--color-text-secondary)}.situation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:var(--spacing-lg)}.section-card{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-base)}.section-card:hover{border-color:var(--color-border-hover)}.section-card h2{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-md) 0}.action-buttons{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-sm)}.action-btn{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);text-decoration:none;color:var(--color-text-primary);transition:all var(--transition-base)}.action-btn:hover{border-color:var(--color-border-hover);background:var(--color-bg-elevated)}.action-icon{font-size:24px}.alerts-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.alert-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background:var(--color-bg-secondary);border-left:3px solid;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.alert-item:hover{background:var(--color-bg-elevated)}.alert-item.severity-low{border-left-color:#22c55e}.alert-item.severity-medium{border-left-color:#fb923c}.alert-item.severity-high{border-left-color:#ef4444}.alert-camera{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:2px}.alert-type{font-size:13px;color:var(--color-text-secondary)}.alert-time{font-size:13px;color:var(--color-text-secondary);font-weight:500}@media (max-width: 768px){.action-buttons,.situation-grid{grid-template-columns:1fr}}.ai-agents-page{max-width:1000px;margin:0 auto}.agents-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-lg)}.agent-card{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-base)}.agent-card:hover{border-color:var(--color-border-hover)}.agent-header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.agent-status-dot{width:8px;height:8px;border-radius:50%;background:#22c55e}.agent-card.status-offline .agent-status-dot{background:var(--color-text-tertiary)}.agent-header h3{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0}.agent-desc{font-size:14px;color:var(--color-text-secondary);margin:0 0 var(--spacing-md) 0;line-height:1.5}.agent-actions{display:flex;gap:var(--spacing-sm)}.btn-primary,.btn-secondary{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-primary{background:var(--color-text-primary);color:var(--color-text-inverse);border:none}.btn-primary:hover:not(:disabled){opacity:.9}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:transparent;border:1px solid var(--glass-border);color:var(--color-text-primary)}.btn-secondary:hover{border-color:var(--color-border-hover)}.cameras-layout{min-height:100%;background:transparent;transition:all .8s cubic-bezier(.4,0,.2,1)}.cameras-layout-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--color-bg-primary)}.cameras-content{max-width:1400px;margin:0 auto;padding:0;transition:all .8s cubic-bezier(.4,0,.2,1)}.cameras-content-fullscreen{max-width:100%;height:100vh;padding:var(--spacing-lg);display:flex;flex-direction:column}.cameras-layout-fullscreen .cameras-carousel-wrap,.cameras-layout-fullscreen .cameras-instruction{opacity:0;pointer-events:none;height:0;overflow:hidden;transition:opacity .6s ease-out,height .6s ease-out}.cameras-layout-fullscreen .grid-section{flex:1;display:flex;flex-direction:column}.cameras-layout-fullscreen .placement-grid{flex:1;max-width:100%;aspect-ratio:unset;min-height:unset}.cameras-layout-fullscreen .placement-tile-actions,.cameras-layout-fullscreen .placement-tile-resize-handle,.cameras-layout-fullscreen .placement-size-menu{opacity:0;pointer-events:none;transition:opacity .4s ease-out}.cameras-carousel-wrap{margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-lg);min-height:100px}.carousel-empty-state{display:flex;align-items:center;justify-content:center;min-height:80px}.carousel-empty-content{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);text-align:center}.carousel-empty-icon{font-size:32px;opacity:.5}.carousel-empty-text{font-size:14px;color:var(--color-text-secondary)}.carousel-discovery-button{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-text-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer;transition:all var(--transition-base);margin-top:var(--spacing-xs)}.carousel-discovery-button:hover{opacity:.9}.cameras-carousel-wrap-with-refresh{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-md)}.carousel-refresh-button{margin-top:0;background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--glass-border)}.carousel-refresh-button:hover:not(:disabled){background:var(--color-bg-tertiary)}.carousel-refresh-button:disabled{opacity:.7;cursor:not-allowed}.carousel-discovering{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);min-height:80px}.carousel-discovery-spinner{width:32px;height:32px;border:3px solid var(--color-border-primary);border-top-color:var(--color-text-primary);border-radius:50%;animation:spin .8s linear infinite}.carousel-discovery-text{font-size:14px;color:var(--color-text-primary)}.cameras-carousel{display:flex;gap:var(--spacing-md);overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.cameras-carousel::-webkit-scrollbar{height:6px}.cameras-carousel::-webkit-scrollbar-track{background:var(--color-bg-secondary);border-radius:var(--radius-full)}.cameras-carousel::-webkit-scrollbar-thumb{background:var(--color-border-primary);border-radius:var(--radius-full)}.camera-carousel-item{flex-shrink:0;width:140px;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--spacing-sm);cursor:grab;transition:all var(--transition-base);scroll-snap-align:start}.camera-carousel-item:active{cursor:grabbing}.camera-carousel-item:hover{border-color:var(--color-border-hover)}.camera-carousel-item.dragging{opacity:.6;border-color:var(--color-accent-primary)}.drag-image-3x2{width:120px;height:80px;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:2px solid var(--color-accent-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center;pointer-events:none}.drag-image-3x2:after{content:"3×2";font-size:14px;font-weight:600;color:var(--color-text-primary)}.carousel-item-preview{position:relative;width:100%;padding-top:56%;background:var(--color-bg-tertiary);border-radius:var(--radius-sm);margin-bottom:var(--spacing-xs);display:flex;align-items:center;justify-content:center}.carousel-item-icon{font-size:28px;opacity:.6}.carousel-item-status{position:absolute;top:4px;right:4px;font-size:10px;color:#22c55e}.carousel-item-info{display:flex;flex-direction:column;gap:2px}.carousel-item-name{font-size:12px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.carousel-item-location{font-size:11px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cameras-instruction{margin:0 0 var(--spacing-lg) 0;padding:var(--spacing-md) var(--spacing-lg);font-size:14px;color:var(--color-text-secondary);line-height:1.5;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-md)}.grid-section{margin-top:0}.placement-grid{--grid-cols-count: 10;display:grid;grid-template-columns:repeat(var(--grid-cols-count),1fr);grid-template-rows:repeat(var(--grid-rows),1fr);gap:var(--spacing-sm);aspect-ratio:10 / var(--grid-rows);min-height:320px;background:var(--color-bg-secondary);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--spacing-md);position:relative;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.placement-grid.placement-grid-active{border-color:var(--color-border-hover);box-shadow:0 0 0 1px var(--color-border-hover)}.placement-grid .grid-cell{aspect-ratio:1;min-height:0;background:transparent;border:1px dashed transparent;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;transition:all var(--transition-base)}.placement-grid.placement-grid-active .grid-cell{background:#ffffff05;border:1px dashed var(--color-border-primary)}.placement-grid.placement-grid-active .grid-cell.free{cursor:copy}.placement-grid.placement-grid-active .grid-cell.free:hover{border-color:var(--color-border-hover);background:#ffffff0a}.grid-cell-hint{font-size:20px;color:var(--color-text-tertiary);font-weight:300}.placement-grid.placement-grid-active .grid-cell.free:hover .grid-cell-hint{color:var(--color-text-secondary)}.placement-tile{min-height:0;z-index:2}.placement-tile-drop-preview{z-index:1;pointer-events:none;position:relative}.placement-tile-drop-preview:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#64b4ff33;border:2px dashed var(--color-accent-primary);border-radius:var(--radius-md)}.placement-tile-resize-preview{z-index:1;pointer-events:none;position:relative}.placement-tile-resize-preview:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#64b4ff26;border:2px dashed var(--color-accent-primary);border-radius:var(--radius-md)}.placement-tile-resize-handle{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:se-resize;z-index:3;border-radius:var(--radius-sm) 0 0 0;background:linear-gradient(135deg,transparent 50%,rgba(255,255,255,.2) 50%);border-left:1px solid var(--glass-border);border-top:1px solid var(--glass-border)}.placement-tile-resize-handle:hover{background:linear-gradient(135deg,transparent 50%,rgba(255,255,255,.35) 50%)}.placement-tile-inner{height:100%;min-height:0;background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:var(--spacing-sm);display:flex;flex-direction:column;position:relative;overflow:hidden}.placement-tile-preview{flex:1;min-height:0;background:var(--color-bg-tertiary);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}.camera-stream-player{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.camera-stream-video{width:100%;height:100%;object-fit:cover;display:block;background:var(--color-bg-tertiary)}.camera-stream-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:var(--color-bg-tertiary);color:var(--color-text-secondary);font-size:12px}.camera-stream-placeholder.camera-stream-error{color:var(--color-text-tertiary)}.camera-stream-spinner{width:24px;height:24px;border:2px solid var(--glass-border);border-top-color:var(--color-accent-primary);border-radius:50%;animation:spin .8s linear infinite}.camera-stream-icon{font-size:28px;opacity:.5}.camera-stream-label{font-size:11px}.placement-tile-icon{font-size:clamp(20px,3vw,28px);opacity:.6}.placement-tile-name{font-size:11px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:var(--spacing-xs)}.placement-tile-actions{position:absolute;top:var(--spacing-xs);right:var(--spacing-xs);display:flex;gap:2px}.tile-btn{width:24px;height:24px;padding:0;border:none;border-radius:var(--radius-sm);background:#0006;color:var(--color-text-primary);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.tile-btn:hover{background:#0009}.tile-btn-remove{font-size:18px;line-height:1}.placement-size-menu{position:absolute;bottom:100%;left:0;right:0;margin-bottom:4px;display:flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--color-bg-elevated);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.placement-size-menu button{flex:0 1 auto;min-width:44px;padding:6px 8px;font-size:12px;font-weight:500;color:var(--color-text-primary);background:var(--color-bg-secondary);border:1px solid var(--glass-border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.placement-size-menu button:hover:not(:disabled){border-color:var(--color-border-hover)}.placement-size-menu button:disabled{opacity:.4;cursor:not-allowed}@media (max-width: 768px){.cameras-carousel{gap:var(--spacing-sm)}.camera-carousel-item{width:120px}.placement-grid{grid-template-columns:repeat(10,1fr);min-height:280px}.placement-tile-name{font-size:10px}}.hotline-page{max-width:800px;margin:0 auto}.hotline-card{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-lg);overflow:hidden;min-height:400px;display:flex;flex-direction:column}.chat-area{flex:1;padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-md);overflow-y:auto}.chat-message{padding:var(--spacing-md);border-radius:var(--radius-md);max-width:85%}.chat-message.support{align-self:flex-start;background:var(--color-bg-secondary);border:1px solid var(--color-border-primary)}.chat-message.user{align-self:flex-end;background:#ffffff14;border:1px solid var(--color-border-primary)}.message-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xs)}.message-from{font-size:13px;font-weight:600;color:var(--color-text-primary)}.message-time{font-size:12px;color:var(--color-text-tertiary)}.message-text{font-size:14px;color:var(--color-text-secondary);margin:0;line-height:1.5}.chat-input-area{display:flex;gap:var(--spacing-sm);padding:var(--spacing-md);border-top:1px solid var(--glass-border)}.chat-input{flex:1;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:15px;color:var(--color-text-primary)}.chat-input:focus{outline:none;border-color:var(--color-border-hover)}.chat-input:disabled{opacity:.6;cursor:not-allowed}.send-btn{padding:var(--spacing-md) var(--spacing-lg);background:var(--color-text-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.send-btn:disabled{opacity:.5;cursor:not-allowed}.finance-page{max-width:800px;margin:0 auto}.finance-card{background:var(--glass-bg);backdrop-filter:var(--glass-backdrop);-webkit-backdrop-filter:var(--glass-backdrop);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.finance-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.summary-item{padding:var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md)}.summary-label{display:block;font-size:13px;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.summary-value{font-size:20px;font-weight:600;color:var(--color-text-primary)}.section-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 var(--spacing-md) 0}.invoices-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.invoice-row{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);flex-wrap:wrap}.invoice-info{flex:1;min-width:0}.invoice-name{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:2px}.invoice-period{font-size:13px;color:var(--color-text-secondary)}.invoice-amount{font-size:15px;font-weight:600;color:var(--color-text-primary)}.invoice-action{flex-shrink:0}.badge.paid{font-size:12px;padding:4px 10px;background:#22c55e26;color:#22c55e;border-radius:var(--radius-sm);font-weight:500}.btn-pay{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-text-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:14px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.btn-pay:hover{opacity:.9}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-primary)}.loading-spinner{width:48px;height:48px;border:4px solid var(--border-color);border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-container p{margin-top:16px;color:var(--text-secondary);font-size:14px}:root{--color-bg-primary: #0a0a0a;--color-bg-secondary: #141414;--color-bg-tertiary: #1a1a1a;--color-bg-elevated: #1f1f1f;--color-text-primary: #ffffff;--color-text-secondary: #b3b3b3;--color-text-tertiary: #808080;--color-text-inverse: #0a0a0a;--color-accent-primary: #ffffff;--color-accent-secondary: #e0e0e0;--color-accent-hover: #f5f5f5;--color-border-primary: rgba(255, 255, 255, .1);--color-border-secondary: rgba(255, 255, 255, .05);--color-border-hover: rgba(255, 255, 255, .2);--glass-bg: rgba(20, 20, 20, .7);--glass-border: rgba(255, 255, 255, .1);--glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, .37);--glass-backdrop: blur(10px);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-xl: 0 16px 64px rgba(0, 0, 0, .6);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--z-sidebar: 1000;--z-modal: 2000;--z-tooltip: 3000}[data-theme=light]{--color-bg-primary: #f8f8f8;--color-bg-secondary: #f0f0f0;--color-bg-tertiary: #e8e8e8;--color-bg-elevated: #fafafa;--color-text-primary: #0a0a0a;--color-text-secondary: #4a4a4a;--color-text-tertiary: #808080;--color-text-inverse: #ffffff;--color-accent-primary: #0a0a0a;--color-accent-secondary: #1a1a1a;--color-accent-hover: #2a2a2a;--color-border-primary: rgba(0, 0, 0, .1);--color-border-secondary: rgba(0, 0, 0, .05);--color-border-hover: rgba(0, 0, 0, .2);--glass-bg: rgba(248, 248, 248, .9);--glass-border: rgba(0, 0, 0, .1);--glass-shadow: 0 2px 8px rgba(0, 0, 0, .06);--glass-backdrop: blur(10px);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .06);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 6px 20px rgba(0, 0, 0, .1);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .12)}body{background:var(--color-bg-primary);color:var(--color-text-primary);transition:background-color .3s,color .3s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-primary)}::-webkit-scrollbar-thumb{background:var(--color-border-primary);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}::selection{background:#fff3;color:var(--color-text-primary)}[data-theme=light] ::selection{background:#0000001a}
