:root{--primary-color:#3b82f6;--primary-dark:#2563eb;--secondary-color:#f1f5f9;--text-primary:#1e293b;--text-secondary:#64748b;--border-color:#e2e8f0;--success-color:#10b981;--warning-color:#f59e0b;--error-color:#ef4444;--shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--background-primary:#fff;--background-secondary:#f8fafc;--card-background:#fff}.dark-mode{--primary-color:#3b82f6;--primary-dark:#60a5fa;--secondary-color:#1e293b;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--border-color:#334155;--success-color:#10b981;--warning-color:#f59e0b;--error-color:#ef4444;--shadow:0 1px 3px 0 #00000080,0 1px 2px -1px #00000080;--shadow-lg:0 10px 15px -3px #00000080,0 4px 6px -4px #00000080;--background-primary:#0f172a;--background-secondary:#1e293b;--card-background:#1e293b}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f8fafc;background-color:var(--background-secondary);color:#1e293b;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;transition:background-color .3s ease,color .3s ease}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}.access-denied{align-items:center;display:flex;flex-direction:column;height:100vh;justify-content:center;padding:2rem;text-align:center}.access-denied h2{color:#ef4444;color:var(--error-color);font-size:2rem;font-weight:700;margin-bottom:1rem}.access-denied p{color:#64748b;color:var(--text-secondary);font-size:1.125rem;margin-bottom:2rem}.access-denied button{background:#3b82f6;background:var(--primary-color);border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem 1.5rem;transition:background-color .2s ease-in-out}.access-denied button:hover{background:#2563eb;background:var(--primary-dark)}.layout{display:flex;min-height:100vh}.sidebar{background:var(--background-primary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;height:100vh;position:fixed;transition:background-color .3s ease;width:250px;z-index:10}.sidebar-header{align-items:center;border-bottom:1px solid var(--border-color);box-sizing:border-box;display:flex;height:60px;padding:1rem 1.5rem}.logo{color:var(--primary-color);font-size:1.25rem;font-weight:700}.sidebar-nav{flex:1 1;padding:1rem 0}.nav-item{align-items:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;font-size:.875rem;gap:.75rem;padding:.75rem 1.5rem;text-align:left;transition:all .2s ease-in-out;width:100%}.nav-item:hover{background:var(--secondary-color);color:var(--text-primary)}.nav-item.active{background:var(--primary-color);color:#fff}.sidebar-footer{border-top:1px solid var(--border-color);padding:1rem 1.5rem}.logout-btn,.logout-btn:hover{color:var(--error-color)!important}.logout-btn:hover{background:#fef2f2!important}.main-content{display:flex;flex:1 1;flex-direction:column;margin-left:250px}.header{align-items:center;background:var(--background-primary);border-bottom:1px solid var(--border-color);box-sizing:border-box;display:flex;height:60px;justify-content:space-between;padding:1rem 2rem;position:sticky;top:0;transition:background-color .3s ease;z-index:5}.header-left h1{font-size:1.5rem;font-weight:600;margin:0}.theme-toggle{align-items:center;background:var(--background-primary);border:2px solid var(--border-color);border-radius:.5rem;color:var(--text-primary);cursor:pointer;display:flex;font-weight:500;height:2.5rem;justify-content:center;transition:all .2s ease-in-out;width:2.5rem}.theme-toggle:hover{background:var(--primary-color);border-color:var(--primary-color);box-shadow:0 2px 4px #00000026;color:#fff;transform:translateY(-1px)}.header-btn{background:none;border:none;border-radius:.375rem;color:var(--text-secondary);cursor:pointer;padding:.5rem;transition:all .2s ease-in-out}.header-btn:hover{background:var(--secondary-color);color:var(--text-primary)}.user-menu{align-items:center;border-radius:.5rem;cursor:pointer;display:flex;gap:.75rem;padding:.5rem;transition:background-color .2s ease-in-out}.user-menu:hover{background:var(--secondary-color)}.user-avatar{height:2rem;width:2rem}.user-info{align-items:flex-start;display:flex;flex-direction:column}.user-name{color:var(--text-primary);font-size:.875rem;font-weight:500}.user-role{color:var(--text-secondary);font-size:.75rem;text-transform:capitalize}.content{background:var(--background-secondary);flex:1 1;padding:2rem;transition:background-color .3s ease}@media (max-width:768px){.sidebar{transform:translateX(-100%);transition:transform .3s ease-in-out}.sidebar.open{transform:translateX(0)}.main-content{margin-left:0}.content,.header{padding:1rem}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:1rem}.login-card{background:#fff;border-radius:1rem;box-shadow:var(--shadow-lg);max-width:400px;padding:2.5rem;width:100%}.login-header{margin-bottom:2rem;text-align:center}.logo{align-items:center;display:flex;gap:.75rem;justify-content:center;margin-bottom:.5rem}.logo h1{color:var(--primary-color);font-size:2rem;font-weight:700;margin:0}.login-header p{color:var(--text-secondary);margin:0}.login-form{gap:1.5rem}.form-group,.login-form{display:flex;flex-direction:column}.form-group{gap:.5rem}.password-input{position:relative}.password-toggle{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:.25rem;position:absolute;right:.75rem;top:50%;transform:translateY(-50%)}.password-toggle:hover{color:var(--text-primary)}.login-btn{background:var(--primary-color);border:none;border-radius:.5rem;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:.75rem;transition:background-color .2s ease-in-out}.login-btn:hover:not(:disabled){background:var(--primary-dark)}.login-btn:disabled{cursor:not-allowed;opacity:.6}.error-message{font-size:.875rem;padding:.75rem}.login-footer{color:var(--text-secondary);font-size:.875rem;margin-top:2rem;text-align:center}.login-footer p{margin:.25rem 0}.dashboard-container{margin:0 auto;max-width:1200px}.dashboard-header{margin-bottom:2rem}.dashboard-header h1{color:var(--text-primary);font-size:2rem;font-weight:700;margin-bottom:.5rem;text-align:left}.dashboard-header p{color:var(--text-secondary);font-size:1.125rem;text-align:left}.stats-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:2rem}.stat-card{align-items:center;background:var(--card-background);border-radius:.75rem;box-shadow:var(--shadow);display:flex;gap:1rem;padding:1.5rem;transition:transform .2s ease-in-out}.stat-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.stat-icon{align-items:center;background:#3b82f61a;border-radius:.5rem;color:var(--primary-color);display:flex;height:3rem;justify-content:center;width:3rem}.stat-icon.online{background:#10b9811a;color:var(--success-color)}.stat-icon.offline{background:#ef44441a;color:var(--error-color)}.stat-icon.warning{background:#f59e0b1a;color:var(--warning-color)}.stat-content h3{color:var(--text-primary);font-size:2rem;font-weight:700;margin-bottom:.25rem}.stat-content p{color:var(--text-secondary);font-size:.875rem;margin:0}.charts-grid{grid-template-columns:repeat(auto-fit,minmax(400px,1fr));margin-bottom:2rem}.chart-card{box-shadow:var(--shadow);transition:transform .2s ease-in-out,box-shadow .2s ease-in-out}.chart-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.chart-card h3{font-size:1.25rem}.recharts-legend-item-text{fill:var(--text-primary)!important;color:var(--text-primary)!important}.recharts-pie-label-text{fill:var(--text-primary)!important;font-size:14px!important;font-weight:600!important}.loading{padding:2rem}@media (max-width:768px){.charts-grid,.stats-grid{grid-template-columns:1fr}}.devices-container{margin:0 auto;max-width:1200px}.devices-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.add-device-btn{align-items:center;background:var(--primary-color);border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:500;gap:.5rem;padding:.75rem 1.5rem;transition:background-color .2s ease-in-out}.add-device-btn:hover{background:var(--primary-dark)}.devices-filters{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:2rem;max-width:1200px}.filter-checkbox{align-items:center;background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;color:var(--text-primary);cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;padding:.5rem .75rem;transition:border-color .2s ease-in-out;white-space:nowrap}.filter-checkbox:hover{border-color:var(--primary-color)}.filter-checkbox input[type=checkbox]{cursor:pointer;margin:0}.filter-checkbox span{-webkit-user-select:none;user-select:none}.layout-toggle{border:1px solid var(--border-color);border-radius:.5rem;overflow:hidden}.layout-toggle,.toggle-btn{background:var(--card-background);display:flex}.toggle-btn{align-items:center;border:none;color:var(--text-secondary);cursor:pointer;font-size:.875rem;justify-content:center;padding:.5rem .75rem;transition:all .2s ease-in-out}.toggle-btn:hover{background:var(--secondary-color);color:var(--text-primary)}.toggle-btn.active{background:var(--primary-color);color:#fff}.toggle-btn:not(:last-child){border-right:1px solid var(--border-color)}.devices-grid{display:flex;flex-direction:column;gap:1rem}.devices-grid.grid-layout{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.devices-grid.list-layout{display:flex;flex-direction:column;gap:1rem}.device-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:.75rem;box-shadow:var(--shadow);padding:1.5rem;transition:all .2s ease-in-out}.grid-layout .device-card{display:flex;flex-direction:column;gap:1rem}.list-layout .device-card{align-items:center;display:flex;gap:1.5rem}.device-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.device-header{display:flex;flex:1 1;flex-direction:column;gap:.75rem;margin-bottom:0;text-align:left}.grid-layout .device-header{align-items:flex-start}.grid-layout .device-header,.list-layout .device-header{flex-direction:column;gap:.75rem}.device-status-actions{align-items:center;display:flex;flex-shrink:0;gap:.75rem}.grid-layout .device-status-actions,.list-layout .device-status-actions{align-items:center;flex-direction:row;gap:.75rem}.device-info{align-items:flex-start;display:flex;flex-direction:column;gap:.5rem;min-width:0;text-align:left}.device-name-row{align-items:center;display:flex;gap:.75rem}.device-info h3{color:var(--text-primary);font-size:1.125rem;font-weight:600;margin:0;text-align:left}.device-meta{align-items:center;color:var(--text-secondary);display:flex;font-size:.75rem;gap:1rem}.device-id{background:var(--secondary-color);border-radius:.25rem;padding:.25rem .5rem}.device-location,.device-status{align-items:center;display:flex;gap:.25rem}.device-status{font-size:.75rem;font-weight:500}.status-indicator{border-radius:.5rem}.status-indicator.online{background:#dcfce7;color:#10b981}.status-indicator.offline{background:#fee2e2;color:#ef4444}.status-indicator.warning{background:#fef3c7;color:#f59e0b}.device-actions{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.grid-layout .device-actions{align-self:flex-start;margin-top:.5rem}.list-layout .device-actions{margin-top:.5rem}.action-btn{box-shadow:0 1px 2px #0000001a;min-height:2rem;min-width:2rem;padding:0;text-decoration:none}.delete-btn{border-color:var(--error-color);border-width:2px;color:var(--error-color)}.delete-btn:hover{background:var(--error-color);border-color:var(--error-color);box-shadow:0 2px 4px #ef44444d;color:#fff;transform:translateY(-1px)}.delete-btn .svg-inline--fa{color:var(--error-color)}.delete-btn:hover .svg-inline--fa{color:#fff}.device-details{display:flex;flex:1 1;flex-direction:column;gap:.5rem;margin-bottom:0;padding:0;text-align:left}.grid-layout .device-details{margin-bottom:1rem}.list-layout .device-details{margin-bottom:0}.detail-row{margin:0;padding:0}.device-details .label{color:var(--text-secondary);font-weight:500;margin:0;padding:0}.device-details .value{color:var(--text-primary);margin:0;padding:0;text-align:right}.device-tags{display:flex;flex:1 1;flex-direction:column;gap:.25rem;margin-top:0;padding-top:0}.grid-layout .device-tags{flex:none;flex-direction:row;gap:.5rem;margin-top:.5rem;padding-top:0}.list-layout .device-tags{flex:1 1;flex-direction:column;gap:.25rem;margin-top:0;padding-top:0}.tag{background:var(--secondary-color);border-radius:.25rem;color:var(--text-primary);font-size:.75rem;font-weight:500;padding:.25rem .5rem}.device-metrics{display:flex;flex:1 1;flex-direction:column;gap:.75rem}.grid-layout .device-metrics{flex:none}.list-layout .device-metrics{flex:1 1}.metric{gap:.75rem}.metric,.metric-header{align-items:center;display:flex}.metric-header{color:var(--text-secondary);font-size:.75rem;gap:.25rem;min-width:60px}.metric-bar{background:var(--border-color);border-radius:.25rem;flex:1 1;height:.5rem;overflow:hidden}.metric-fill{background:var(--primary-color);border-radius:.25rem;height:100%;transition:width .3s ease-in-out}.metric-fill.high-usage{background:var(--error-color)}.metric-value{color:var(--text-primary);font-size:.75rem;font-weight:500;min-width:2.5rem;text-align:right}.metric-value-only{align-items:center;display:flex;flex:1 1;justify-content:center;padding:.25rem 0}.form-group input{background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;color:var(--text-primary);font-size:1rem;padding:.75rem;transition:border-color .2s ease-in-out;width:100%}.form-group input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #3b82f61a;outline:none}@media (max-width:768px){.devices-header{align-items:flex-start;flex-direction:column;gap:1rem}.devices-filters{align-items:stretch;flex-direction:column}.search-container{min-width:auto}.filters{justify-content:stretch}.filter-select{flex:1 1}.device-card{align-items:stretch;flex-direction:column;padding:1rem}.device-header{gap:1rem}.device-status-actions{gap:1rem}.device-name-row,.device-status-actions{align-items:flex-start;flex-direction:column}.device-name-row{gap:.5rem}.device-actions{align-self:flex-start}.devices-grid.grid-layout{grid-template-columns:1fr}}.devices-container .notification{word-wrap:break-word;animation:slideIn .3s ease-out;border-radius:8px;box-shadow:0 4px 12px #0000004d;color:#fff;font-weight:500;max-width:400px;padding:1rem 1.5rem;position:fixed;right:20px;top:20px;z-index:1000}.devices-container .notification-success{background:linear-gradient(135deg,#10b981,#059669);border-left:4px solid #047857}.devices-container .notification-error{background:linear-gradient(135deg,#ef4444,#dc2626);border-left:4px solid #b91c1c}.devices-container .notification{animation:slideIn .3s ease-out,fadeOut .3s ease-in 4.7s forwards}.devices-container .modal-overlay{align-items:center;animation:fadeIn .2s ease-out;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.devices-container .modal-content{animation:slideUp .3s ease-out;background:#2d2d2d;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-width:400px;padding:2rem;width:90%}.devices-container .modal-content h3{color:#fff;font-size:1.25rem;font-weight:600;margin:0 0 1rem}.devices-container .modal-content p{color:#a0a0a0;font-size:.875rem;line-height:1.5;margin:0 0 1.5rem}.devices-container .modal-actions{display:flex;gap:.75rem;justify-content:center}.devices-container .btn-cancel,.devices-container .btn-confirm{border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s ease-in-out}.devices-container .btn-cancel{background:#404040;border:1px solid #606060;color:#fff}.devices-container .btn-cancel:hover{background:#505050;border-color:#707070}.devices-container .btn-confirm{background:#ef4444;border:1px solid #dc2626;color:#fff}.devices-container .btn-confirm:hover{background:#dc2626;border-color:#b91c1c}.device-details-container{background:var(--background-color);display:flex;flex:1 1;flex-direction:column;gap:2rem;margin:0 auto;max-width:1400px;padding:2rem;width:100%}.details-header{align-items:center;display:flex;gap:1.5rem}.back-btn{border-radius:.5rem;font-size:.9rem;padding:.75rem 1.25rem}.details-header h2{color:var(--text-primary);font-size:2rem;font-weight:600;margin:0}.device-info-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:.75rem;padding:1.5rem}.device-info-card h3{align-items:center;color:var(--text-primary);display:flex;font-size:1.25rem;font-weight:600;gap:.5rem;margin-bottom:1.5rem}.info-grid{display:flex;flex-wrap:nowrap;gap:1.5rem;overflow-x:auto}.info-item{align-items:center;background:var(--background-color);border-radius:.5rem;display:flex;flex-shrink:0;gap:.75rem;padding:.75rem;white-space:nowrap}.info-item svg{color:var(--primary-color)}.info-item .label{color:var(--text-secondary);font-weight:500;min-width:120px}.info-item .value{color:var(--text-primary);font-weight:600}.time-range-selector{align-items:center;background:var(--card-background);border:1px solid var(--border-color);border-radius:.75rem;display:flex;gap:1rem;padding:1rem 1.5rem}.time-range-selector label{color:var(--text-primary);font-size:.9rem;font-weight:600}.time-range-selector select{background:var(--background-color);border:1px solid var(--border-color);border-radius:.5rem;color:var(--text-primary);cursor:pointer;font-size:.875rem;outline:none;padding:.5rem .75rem;transition:border-color .2s ease-in-out}.time-range-selector select:focus{border-color:var(--primary-color)}.charts-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(500px,1fr))}.chart-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:.75rem;padding:1.5rem}.chart-card h3{align-items:center;color:var(--text-primary);display:flex;font-size:1.1rem;font-weight:600;gap:.5rem;margin-bottom:1rem;text-align:left}.chart-card h3 svg{color:var(--primary-color)}.error-message{color:var(--error-color);font-size:1.1rem;padding:2rem}.loading-message{color:var(--text-secondary);font-size:1.1rem;padding:2rem;text-align:center}@media (max-width:768px){.device-details-container{padding:1rem}.details-header{align-items:flex-start;flex-direction:column;gap:1rem}.details-header h2{font-size:1.5rem}.charts-grid,.info-grid{grid-template-columns:1fr}}.users-container{margin:0 auto;max-width:1200px}.users-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:2rem}.header-left h1{color:var(--text-primary);font-size:2rem;font-weight:700;margin-bottom:.5rem}.header-left p{color:var(--text-secondary);font-size:1.125rem;margin:0}.add-user-btn{align-items:center;background:var(--primary-color);border:none;border-radius:.5rem;color:#fff;cursor:pointer;display:flex;font-weight:500;gap:.5rem;padding:.75rem 1.5rem;transition:background-color .2s ease-in-out}.add-user-btn:hover{background:var(--primary-dark)}.users-filters{margin-bottom:2rem}.users-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}.user-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:.75rem;box-shadow:var(--shadow);padding:1.5rem;transition:all .2s ease-in-out}.user-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.user-header{gap:1rem;margin-bottom:1rem}.user-avatar,.user-header{align-items:center;display:flex}.user-avatar{background:var(--primary-color);border-radius:50%;color:#fff;font-size:1.125rem;font-weight:600;height:3rem;justify-content:center;width:3rem}.user-info{flex:1 1}.user-info h3{color:var(--text-primary);font-size:1.125rem;font-weight:600;margin-bottom:.25rem}.user-info p{color:var(--text-secondary);font-size:.875rem;margin:0}.user-status{font-size:.75rem;font-weight:500;gap:.25rem}.status-indicator,.user-status{align-items:center;display:flex}.status-indicator{color:#fff;height:1.5rem;justify-content:center;width:1.5rem}.status-text{text-transform:capitalize}.user-details{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.detail-row{align-items:center;color:var(--text-secondary);display:flex;font-size:.875rem;justify-content:space-between}.detail-row .label{font-weight:500}.detail-row .value{color:var(--text-primary)}.role-badge{align-items:center;border-radius:.25rem;color:#fff;display:flex;font-size:.75rem;font-weight:500;gap:.25rem;padding:.25rem .5rem;text-transform:capitalize}.user-actions{display:flex;gap:.5rem;justify-content:flex-end}.action-btn{color:var(--text-secondary)}.action-btn:hover{background:var(--secondary-color);color:var(--primary-color)}.action-btn.delete:hover{background:#fef2f2;border-color:var(--error-color);color:var(--error-color)}.empty-state{color:var(--text-secondary);grid-column:1/-1;padding:3rem 1rem;text-align:center}.empty-state h3{color:var(--text-primary);margin:1rem 0 .5rem}.empty-state p{margin:0}.error,.loading{color:var(--text-secondary);padding:2rem;text-align:center}.error{color:var(--error-color)}.modal-overlay{background:#00000080;z-index:1000}.modal{background:var(--card-background);border-radius:.75rem;max-height:90vh;max-width:500px;overflow-y:auto;padding:2rem;width:100%}.modal-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:1.5rem}.modal-header h2{color:var(--text-primary);font-size:1.5rem;font-weight:600;margin:0}.close-btn{background:none;border:none;border-radius:.25rem;color:var(--text-secondary);cursor:pointer;font-size:1.5rem;padding:.25rem;transition:background-color .2s ease-in-out}.close-btn:hover{background:var(--secondary-color)}.form-group{margin-bottom:1rem}.form-group label{color:var(--text-primary);display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem;text-align:left}.form-group input,.form-group select{border:1px solid var(--border-color);border-radius:.5rem;font-size:1rem;padding:.75rem;transition:border-color .2s ease-in-out;width:100%}.form-group input:focus,.form-group select:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #3b82f61a;outline:none}.modal-actions{gap:1rem;justify-content:flex-end;margin-top:2rem}.modal-actions button{border-radius:.5rem;cursor:pointer;font-weight:500;padding:.75rem 1.5rem;transition:all .2s ease-in-out}.modal-actions button:first-child{background:var(--card-background);border:1px solid var(--border-color);color:var(--text-primary)}.modal-actions button:first-child:hover{background:var(--secondary-color)}.modal-actions button.primary{background:var(--primary-color);border:1px solid var(--primary-color);color:#fff}.modal-actions button.primary:hover{background:var(--primary-dark)}@media (max-width:768px){.users-header{align-items:flex-start;flex-direction:column;gap:1rem}.users-grid{grid-template-columns:1fr}.user-card{padding:1rem}.user-header{align-items:flex-start;flex-direction:column;gap:1rem}.user-status{align-self:flex-end}}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{border:0;height:0;left:-9999em;margin:0;opacity:0;overflow:hidden;padding:0;position:absolute;resize:none;top:0;white-space:nowrap;width:0;z-index:-5}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;bottom:0;cursor:default;left:0;overflow-y:scroll;position:absolute;right:0;top:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{left:0;position:absolute;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;left:-9999em;line-height:normal;position:absolute;top:0;visibility:hidden}.xterm.enable-mouse-events{cursor:default}.xterm .xterm-cursor-pointer,.xterm.xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility,.xterm .xterm-message{bottom:0;color:#0000;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:10}.xterm .live-region{height:1px;left:-9999px;overflow:hidden;position:absolute;width:1px}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:double underline;text-decoration:double underline}.xterm-underline-3{-webkit-text-decoration:wavy underline;text-decoration:wavy underline}.xterm-underline-4{-webkit-text-decoration:dotted underline;text-decoration:dotted underline}.xterm-underline-5{-webkit-text-decoration:dashed underline;text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{position:absolute;z-index:6}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{pointer-events:none;position:absolute;right:0;top:0;z-index:8}.xterm-decoration-top{position:relative;z-index:2}.terminal-container{background:#1e1e1e;display:flex;flex-direction:column;height:100%}.terminal-header{align-items:center;background:#2d2d2d;border-bottom:1px solid #404040;display:flex;justify-content:space-between;padding:1rem 2rem}.connection-status{align-items:center;color:#fff;display:flex;font-size:.875rem;gap:.5rem}.status-indicator{border-radius:50%;height:.75rem;transition:background-color .2s ease-in-out;width:.75rem}.status-indicator.connected{background:#10b981}.status-indicator.disconnected{background:#ef4444}.action-btn{background:none;border:1px solid #404040;color:#fff;height:2.5rem;width:2.5rem}.action-btn:hover{background:#404040;border-color:#606060}.terminal-content{display:flex;flex:1 1;flex-direction:column;max-height:calc(100vh - 200px);min-height:0;overflow:hidden;padding:1rem}.terminal{flex:1 1;overflow:hidden;width:100%}.terminal,.xterm{height:100%;max-height:100%;text-align:left!important}.xterm{padding:.5rem}.xterm-viewport{max-height:100%;overflow-x:hidden!important;overflow-y:auto!important}.xterm-screen{border-radius:.375rem}.xterm-cursor,.xterm-screen{text-align:left!important}.terminal-container .notification{word-wrap:break-word;animation:slideIn .3s ease-out;border-radius:8px;box-shadow:0 4px 12px #0000004d;color:#fff;font-weight:500;max-width:400px;padding:1rem 1.5rem;position:fixed;right:20px;top:20px;z-index:1000}.terminal-container .notification-success{background:linear-gradient(135deg,#10b981,#059669);border-left:4px solid #047857}.terminal-container .notification-error{background:linear-gradient(135deg,#ef4444,#dc2626);border-left:4px solid #b91c1c}.terminal-container .notification{animation:slideIn .3s ease-out,fadeOut .3s ease-in 4.7s forwards}.modal-overlay{align-items:center;animation:fadeIn .2s ease-out;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.modal-content{animation:slideUp .3s ease-out;background:#2d2d2d;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-width:400px;padding:2rem;width:90%}.modal-content h3{color:#fff;font-size:1.25rem;font-weight:600;margin:0 0 1rem}.modal-content p{color:#a0a0a0;font-size:.875rem;line-height:1.5;margin:0 0 1.5rem}.modal-actions{display:flex;gap:.75rem;justify-content:center}.btn-cancel,.btn-confirm{border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s ease-in-out}.btn-cancel{background:#404040;border:1px solid #606060;color:#fff}.btn-cancel:hover{background:#505050;border-color:#707070}.btn-confirm{background:#ef4444;border:1px solid #dc2626;color:#fff}.btn-confirm:hover:not(:disabled){background:#dc2626;border-color:#b91c1c}.btn-confirm:disabled{background:#6b7280;border-color:#6b7280;cursor:not-allowed}.file-editor-container{background:#1e1e1e;display:flex;flex-direction:column;height:100vh}.file-editor-header{align-items:center;background:#2d2d2d;border-bottom:1px solid #404040;display:flex;padding:1rem 2rem}.header-left{gap:1rem}.back-btn,.header-left{align-items:center;display:flex}.back-btn{background:var(--card-background);border:2px solid var(--border-color);border-radius:.375rem;color:var(--text-primary);cursor:pointer;font-weight:500;gap:.5rem;padding:.5rem 1rem;transition:all .2s ease-in-out}.back-btn:hover{background:var(--primary-color);border-color:var(--primary-color);box-shadow:0 2px 4px #00000026;color:#fff;transform:translateY(-1px)}.device-info h2{color:#fff;font-size:1.25rem;font-weight:600;margin:0}.device-info p{color:#a0a0a0;font-size:.875rem;margin:0}.header-right{align-items:center;display:flex;gap:1rem}.action-btn{border:1px solid var(--border-color);border-radius:.375rem;box-sizing:border-box;color:var(--text-primary);min-height:2.5rem;min-width:2.5rem;padding:.5rem}.file-editor .action-btn svg{color:var(--text-primary)!important;flex-shrink:0;height:1rem;width:1rem}.file-editor .action-btn:hover{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.file-editor .action-btn:hover svg{color:#fff!important}.file-editor .action-btn.delete{border-color:var(--error-color);color:var(--error-color)}.file-editor .action-btn.delete svg{color:var(--error-color)}.file-editor .action-btn.delete:hover{background:var(--error-color);border-color:var(--error-color);color:#fff}.file-editor .action-btn.delete:hover svg{color:#fff}.file-editor-content{display:flex;flex:1 1;overflow:hidden}.file-explorer{background:#252526;border-right:1px solid #404040;display:flex;flex-direction:column;width:300px}.explorer-header{border-bottom:1px solid #404040;padding:1rem}.explorer-header h3{color:#fff;font-size:1rem;font-weight:600;margin:0 0 .5rem}.path-navigation{align-items:center;display:flex;font-size:.875rem;gap:.5rem}.nav-btn{background:none;border:none;border-radius:.25rem;color:#fff;cursor:pointer;padding:.25rem .5rem;transition:background-color .2s ease-in-out}.nav-btn:hover:not(:disabled){background:#404040}.nav-btn:disabled{color:#606060;cursor:not-allowed}.current-path{color:#a0a0a0;font-family:monospace}.file-list{flex:1 1;overflow-y:auto;padding:.5rem}.file-item{align-items:center;border-radius:.25rem;color:#fff;cursor:pointer;display:flex;gap:.5rem;padding:.5rem;transition:background-color .2s ease-in-out}.file-item:hover{background:#404040}.file-item.selected{background:#007acc}.file-item svg{color:#fff}.file-item svg[data-icon=folder]{color:gold}.file-item svg[data-icon=file-pdf]{color:#ef4444}.file-name{font-size:.875rem}.file-editor{background:#1e1e1e;display:flex;flex:1 1;flex-direction:column}.editor-header{align-items:center;background:#2d2d2d;border-bottom:1px solid #404040;display:flex;justify-content:space-between;padding:1rem}.editor-header h3{color:#fff;font-size:1rem;font-weight:600;margin:0}.editor-actions{display:flex;gap:.5rem}.editor-actions .action-btn{background:var(--card-background);border:2px solid var(--border-color);color:var(--text-primary);font-weight:500;min-height:2.5rem;min-width:2.5rem}.editor-actions .action-btn svg{color:var(--text-primary)!important}.editor-actions .action-btn:hover{background:var(--primary-color);border-color:var(--primary-color);box-shadow:0 2px 4px #00000026;color:#fff;transform:translateY(-1px)}.editor-actions .action-btn:hover svg{color:#fff!important}.editor-actions .action-btn.delete{background:var(--card-background);border-color:#ef4444;color:#ef4444}.editor-actions .action-btn.delete svg{color:#ef4444!important}.editor-actions .action-btn.delete:hover{background:#ef4444;border-color:#ef4444;color:#fff}.editor-actions .action-btn.delete:hover svg{color:#fff!important}.editor-content{flex:1 1;overflow:hidden}.image-viewer{align-items:center;background:#1e1e1e;display:flex;height:100%;justify-content:center;padding:2rem;width:100%}.image-viewer img{border-radius:.5rem;box-shadow:0 4px 6px #0000004d;max-height:100%;max-width:100%;object-fit:contain}.no-file-selected{align-items:center;color:#a0a0a0;display:flex;flex-direction:column;height:100%;justify-content:center;text-align:center}.no-file-selected h3{color:#fff;margin:1rem 0 .5rem}.no-file-selected p{margin:0}.loading{align-items:center;color:#fff;display:flex;height:100%;justify-content:center}.file-list::-webkit-scrollbar{width:8px}.file-list::-webkit-scrollbar-track{background:#252526}.file-list::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}.file-list::-webkit-scrollbar-thumb:hover{background:#606060}.notification{word-wrap:break-word;animation:slideIn .3s ease-out;border-radius:8px;box-shadow:0 4px 12px #0000004d;color:#fff;font-weight:500;max-width:400px;padding:1rem 1.5rem;position:fixed;right:20px;top:20px;z-index:1000}.notification-success{background:linear-gradient(135deg,#10b981,#059669);border-left:4px solid #047857}.notification-error{background:linear-gradient(135deg,#ef4444,#dc2626);border-left:4px solid #b91c1c}.notification{animation:slideIn .3s ease-out,fadeOut .3s ease-in 4.7s forwards}.logs-container{margin:0 auto;max-width:1400px;padding:2rem}.action-btn{align-items:center;background:var(--card-background);border:2px solid var(--border-color);border-radius:.5rem;color:var(--text-primary)!important;cursor:pointer;display:flex;height:2rem;justify-content:center;transition:all .2s ease-in-out;width:2rem}.action-btn:hover{background:var(--primary-color);border-color:var(--primary-color);box-shadow:0 2px 4px #00000026;color:#fff;transform:translateY(-1px)}.action-btn svg{color:var(--text-primary);display:block}.action-btn:hover svg{color:#fff}.action-btn .svg-inline--fa{color:var(--text-primary);display:block}.action-btn:hover .svg-inline--fa{color:#fff}.action-btn.danger{border-color:var(--error-color);border-width:2px;color:var(--error-color)}.action-btn.danger:hover{background:var(--error-color);border-color:var(--error-color);color:#fff}.logs-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-end;margin-bottom:2rem}.header-actions{display:flex;flex-wrap:wrap;gap:.75rem}.logs-filters{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:2rem}.search-container{align-items:center;background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;display:flex;gap:.75rem;max-width:400px;padding:.75rem;width:100%}.search-container input{background:#0000;border:none;color:var(--text-primary);font-size:.875rem;outline:none;width:100%}.search-container input::placeholder{color:var(--text-secondary)}.filters{align-items:center;display:flex;gap:.75rem}.log-count-right{flex-shrink:0;margin-left:auto;margin-right:0}.filter-group{align-items:center;display:flex;gap:.5rem}.filter-icon{color:var(--text-secondary)}.filter-select{background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;color:var(--text-primary);cursor:pointer;font-size:.875rem;outline:none;padding:.5rem .75rem}.filter-select:focus{border-color:var(--primary-color)}.auto-refresh-btn{align-items:center;cursor:pointer;display:flex;font-size:.875rem;gap:.5rem;min-width:auto;padding:.5rem 1rem;white-space:nowrap;width:auto}.auto-refresh-btn span,.log-count-btn{color:var(--text-primary);font-size:.875rem}.log-count-btn{align-items:center;cursor:default;display:flex;font-weight:500;justify-content:center;min-width:auto;padding:.5rem 1rem;white-space:nowrap;width:auto}.log-count-btn span{color:var(--text-primary);font-size:.875rem}.logs-content{background:var(--card-background);border:1px solid var(--border-color);border-radius:.75rem;overflow:hidden}.logs-list{max-height:calc(100vh - 400px);min-height:400px;overflow-y:auto}.log-entry{align-items:flex-start;border-bottom:1px solid var(--border-color);display:flex;gap:1rem;padding:.75rem 1.5rem;transition:background-color .15s ease-in-out}.log-entry:hover{background:rgba(var(--primary-rgb),.05)}.log-entry:last-child{border-bottom:none}.log-level{border-radius:.25rem;color:#fff;flex-shrink:0;font-size:.75rem;font-weight:700;min-width:70px;padding:.25rem .75rem;text-align:center;text-transform:uppercase}.log-timestamp{color:var(--text-secondary);flex-shrink:0;min-width:180px;white-space:nowrap}.log-message,.log-timestamp{font-family:Courier New,monospace;font-size:.875rem}.log-message{color:var(--text-primary);flex:1 1;line-height:1.5;word-break:break-word}.no-logs{align-items:center;color:var(--text-secondary);display:flex;flex-direction:column;justify-content:center;padding:4rem 2rem}.no-logs svg{margin-bottom:1rem;opacity:.5}.no-logs p{font-size:1.125rem;margin:0}.loading{color:var(--text-secondary);font-size:1.125rem;padding:4rem 2rem;text-align:center}.error-message{background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;color:#dc2626;margin-bottom:1rem;padding:1rem;text-align:center}.logs-container .notification{word-wrap:break-word;animation:slideIn .3s ease-out,fadeOut .3s ease-in 4.7s forwards;border-radius:8px;box-shadow:0 4px 12px #0000004d;color:#fff;font-weight:500;max-width:400px;padding:1rem 1.5rem;position:fixed;right:20px;top:20px;z-index:1000}.logs-container .notification-success{background:linear-gradient(135deg,#10b981,#059669);border-left:4px solid #047857}.logs-container .notification-error{background:linear-gradient(135deg,#ef4444,#dc2626);border-left:4px solid #b91c1c}@keyframes slideIn{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}.logs-container .modal-overlay{align-items:center;animation:fadeIn .2s ease-out;background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.logs-container .modal-content{animation:slideUp .3s ease-out;background:#2d2d2d;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-width:400px;padding:2rem;width:90%}.logs-container .modal-content h3{color:#fff;font-size:1.25rem;font-weight:600;margin:0 0 1rem}.logs-container .modal-content p{color:#a0a0a0;font-size:.875rem;line-height:1.5;margin:0 0 1.5rem}.logs-container .modal-actions{display:flex;gap:.75rem;justify-content:center}.logs-container .btn-cancel,.logs-container .btn-confirm{border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s ease-in-out}.logs-container .btn-cancel{background:#404040;border:1px solid #606060;color:#fff}.logs-container .btn-cancel:hover{background:#505050;border-color:#707070}.logs-container .btn-confirm{background:#ef4444;border:1px solid #dc2626;color:#fff}.logs-container .btn-confirm:hover{background:#dc2626;border-color:#b91c1c}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.logs-container{padding:1rem}.logs-header{justify-content:center}.header-actions{width:100%}.action-btn{flex:1 1;justify-content:center}.logs-filters{align-items:stretch;flex-direction:column;gap:1rem}.search-container{min-width:auto}.filters{justify-content:stretch}.filter-select{flex:1 1}.log-entry{flex-direction:column;gap:.5rem}.log-timestamp{min-width:auto}.logs-list{max-height:calc(100vh - 500px)}}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{background-color:#282c34;color:#fff;padding:20px}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.b9c1dc9b.css.map*/