*{margin:0;padding:0;box-sizing:border-box;}body{font-family:Arial,sans-serif;background-color:#f5f5f5;color:#333;}.container{max-width:1400px;margin:0 auto;padding:20px;}h1{color:#333;margin-bottom:20px;font-size:24px;}h2{color:#333;margin-bottom:15px;font-size:20px;}h3{color:#333;margin-bottom:10px;font-size:16px;}.navbar{background-color:#333;color:white;padding:15px 20px;margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;border-radius:5px;}.navbar-brand{font-size:18px;font-weight:bold;}.navbar-nav{display:flex;gap:15px;align-items:center;}.navbar a{color:white;text-decoration:none;padding:8px 15px;border-radius:4px;transition:background-color 0.2s;}.navbar a:hover{background-color:#555;}.navbar a.active{background-color:#4CAF50;}.user-info{display:flex;align-items:center;gap:10px;}.user-info span{margin-right:10px;}.section{background-color:white;padding:20px;margin-bottom:20px;border-radius:5px;box-shadow:0 2px 4px rgba(0,0,0,0.1);}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;}.section-header h2{margin-bottom:0;}.section-actions{display:flex;gap:10px;}table{width:100%;border-collapse:collapse;margin-top:10px;}th,td{padding:12px 10px;text-align:left;border-bottom:1px solid #ddd;}th{background-color:#f2f2f2;font-weight:bold;cursor:pointer;user-select:none;}th:hover{background-color:#e8e8e8;}th.sortable::after{content:' \25B4\25BE';font-size:10px;margin-left:5px;}tr:hover{background-color:#f9f9f9;}.btn{padding:8px 16px;background-color:#4CAF50;color:white;border:none;border-radius:4px;cursor:pointer;font-size:14px;margin-right:5px;transition:background-color 0.2s;}.btn:hover{background-color:#45a049;}.btn:disabled{background-color:#cccccc;cursor:not-allowed;}.btn-danger{background-color:#f44336;}.btn-danger:hover{background-color:#da190b;}.btn-primary{background-color:#2196F3;}.btn-primary:hover{background-color:#0b7dda;}.btn-warning{background-color:#ff9800;}.btn-warning:hover{background-color:#e68900;}.btn-icon{background:none;color:#aaa;font-size:20px;font-weight:bold;padding:4px 8px;min-width:auto;border:none;cursor:pointer;line-height:1;transition:color 0.2s;}.btn-icon:hover{background:none;color:#333;}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;}.section-header h2{margin-bottom:0;}.section-actions{display:flex;gap:10px;}.btn-sm{padding:4px 8px;font-size:12px;}.form-group{margin-bottom:15px;}.form-group label{display:block;margin-bottom:5px;font-weight:bold;}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:14px;}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#4CAF50;}.form-group textarea{resize:vertical;min-height:80px;}.form-inline{display:flex;gap:10px;align-items:center;margin-bottom:15px;flex-wrap:wrap;}.form-inline input,.form-inline select{padding:8px;border:1px solid #ddd;border-radius:4px;}.search-box{min-width:300px;}.alert{padding:12px 15px;margin-bottom:15px;border-radius:4px;}.alert-success{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb;}.alert-danger{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;}.alert-info{background-color:#d1ecf1;color:#0c5460;border:1px solid #bee5eb;}.modal{display:none;position:fixed;z-index:1000;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgba(0,0,0,0.4);}.modal-content{background-color:#fefefe;margin:5% auto;padding:20px;border:1px solid #888;width:90%;max-width:600px;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,0.2);}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #ddd;}.modal-title{font-size:18px;font-weight:bold;}.modal-large{max-width:800px;}.modal-xl{max-width:1000px;}.close{color:#aaa;font-size:28px;font-weight:bold;cursor:pointer;line-height:1;}.close:hover,.close:focus{color:black;text-decoration:none;}.pagination{margin-top:15px;display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;}.pagination .btn{min-width:40px;}.pagination-info{margin:0 15px;color:#666;}.pagination select{padding:6px 10px;border:1px solid #ddd;border-radius:4px;}.status-online{color:#28a745;font-weight:bold;}.status-offline{color:#dc3545;font-weight:bold;}.status-running{color:#28a745;font-weight:bold;}.status-stopped{color:#dc3545;font-weight:bold;}.status-pending{color:#ffc107;font-weight:bold;}.grid-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:20px;}.grid-item{background-color:#f9f9f9;padding:15px;border-radius:5px;border:1px solid #eee;}.badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:bold;}.badge-success{background-color:#d4edda;color:#155724;}.badge-danger{background-color:#f8d7da;color:#721c24;}.badge-warning{background-color:#fff3cd;color:#856404;}.badge-info{background-color:#d1ecf1;color:#0c5460;}input[type="checkbox"]{vertical-align:middle;margin-right:5px;cursor:pointer;}.checkbox-label{display:inline-flex;align-items:center;gap:0;cursor:pointer;}.checkbox-label input[type="checkbox"]{margin-right:4px;}.loading{display:inline-block;width:20px;height:20px;border:3px solid #f3f3f3;border-top:3px solid #3498db;border-radius:50%;animation:spin 1s linear infinite;}@keyframes spin{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}.empty-state{text-align:center;padding:40px;color:#666;}.text-center{text-align:center;}.text-right{text-align:right;}.text-muted{color:#666;}.mt-10{margin-top:10px;}.mt-20{margin-top:20px;}.mb-10{margin-bottom:10px;}.mb-20{margin-bottom:20px;}.auth-container{max-width:450px;margin:80px auto;padding:30px;background-color:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,0.1);}.auth-tabs{display:flex;margin-bottom:25px;border-bottom:2px solid #eee;}.auth-tab{flex:1;padding:12px;background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;font-size:16px;color:#666;transition:all 0.2s;}.auth-tab:hover{color:#333;}.auth-tab.active{border-bottom-color:#4CAF50;color:#4CAF50;font-weight:bold;}.has-update{color:#ff9800;font-weight:bold;}.device-grid-header,.device-grid-row{display:grid;grid-template-columns:1fr 1fr 1fr 1fr 200px;padding:12px 15px;align-items:center;}.device-grid-header{background-color:#f2f2f2;font-weight:bold;border-bottom:2px solid #ddd;}.device-grid-row{border-bottom:1px solid #eee;}.device-grid-row:hover{background-color:#f9f9f9;}.app-grid-header,.app-grid-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1.5fr;padding:10px 15px;align-items:center;}.app-grid-header{background-color:#f2f2f2;font-weight:bold;border-bottom:2px solid #ddd;}.app-grid-row{border-bottom:1px solid #eee;}.app-grid-row:hover{background-color:#f9f9f9;}.progress-container{width:100%;height:20px;background-color:#e0e0e0;border-radius:10px;overflow:hidden;margin:5px 0;}.progress-bar{height:100%;background:linear-gradient(90deg,#4CAF50,#81C784);border-radius:10px;transition:width 0.3s ease;display:flex;align-items:center;justify-content:center;position:relative;min-width:30px;}.progress-text{color:white;font-size:11px;font-weight:bold;text-shadow:0 1px 2px rgba(0,0,0,0.3);}.progress-info{display:flex;justify-content:space-between;font-size:11px;color:#666;margin-top:4px;}.progress-info span{padding:2px 4px;background-color:#f5f5f5;border-radius:3px;}.ota-status{font-size:12px;margin-bottom:4px;}.ota-status-downloading{color:#1976d2;}.ota-status-complete{color:#388e3c;}.ota-status-verifying{color:#f57c00;}.ota-status-verify-success{color:#388e3c;}.ota-status-verify-failed{color:#d32f2f;}.ota-status-installing{color:#7b1fa2;}.ota-status-rebooting{color:#c62828;}.progress-bar-downloading{background:linear-gradient(90deg,#4CAF50,#81C784);}.progress-bar-complete{background:linear-gradient(90deg,#4CAF50,#66BB6A);}.progress-bar-verifying{background:linear-gradient(90deg,#ff9800,#ffb74d);animation:pulse 1.5s ease-in-out infinite;}.progress-bar-success{background:linear-gradient(90deg,#4CAF50,#66BB6A);}.progress-bar-failed{background:linear-gradient(90deg,#f44336,#e57373);}.progress-bar-installing{background:linear-gradient(90deg,#9c27b0,#ba68c8);animation:pulse 1.5s ease-in-out infinite;}.progress-bar-rebooting{background:linear-gradient(90deg,#c62828,#ef5350);animation:pulse 1s ease-in-out infinite;}@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.7;}}.status-badge{display:inline-block;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:bold;text-align:center;width:100%;}.status-complete{background-color:#c8e6c9;color:#2e7d32;}.status-verifying{background-color:#ffe0b2;color:#e65100;}.status-success{background-color:#c8e6c9;color:#2e7d32;}.status-failed{background-color:#ffcdd2;color:#c62828;}.status-installing{background-color:#e1bee7;color:#7b1fa2;}.status-rebooting{background-color:#ffcdd2;color:#c62828;}.upload-drop-zone{border:2px dashed #ddd;border-radius:8px;padding:40px;text-align:center;transition:border-color 0.3s;cursor:pointer;}.upload-drop-zone:hover{border-color:#007bff;}.upload-drop-zone p{margin-bottom:15px;color:#666;}.upload-progress{width:100%;height:30px;background-color:#e0e0e0;border-radius:15px;overflow:hidden;}.upload-progress-bar{height:100%;background:linear-gradient(90deg,#4CAF50,#45a049);width:0%;transition:width 0.3s ease;display:flex;align-items:center;justify-content:center;color:white;font-weight:bold;}@media (max-width:1024px){.container{padding:15px;}.navbar{flex-direction:column;gap:15px;padding:15px;}.navbar-nav{flex-wrap:wrap;justify-content:center;}.user-info{flex-wrap:wrap;justify-content:center;}.section{padding:15px;}.search-box{min-width:200px;}.modal-content{margin:10% auto;width:95%;}.modal-large{max-width:900px;}.modal-xl{max-width:950px;}}@media (max-width:768px){.container{padding:10px;}h1{font-size:20px;}h2{font-size:18px;}h3{font-size:15px;}.navbar{padding:12px;}.navbar-brand{font-size:16px;text-align:center;}.navbar-nav{flex-direction:column;width:100%;gap:5px;}.navbar-nav a{text-align:center;width:100%;}.user-info{flex-direction:column;width:100%;gap:8px;}.user-info span{margin-right:0;}.user-info .btn{width:100%;margin-right:0;}.section{padding:12px;}.section-header{flex-direction:column;gap:10px;align-items:flex-start;}.section-actions{width:100%;flex-wrap:wrap;}.section-actions .btn{flex:1;min-width:120px;}.form-inline{flex-direction:column;align-items:stretch;}.form-inline .search-box{min-width:auto;width:100%;}.form-inline .btn{width:100%;margin-right:0;}.grid-row{grid-template-columns:1fr;gap:15px;}table{display:block;width:100%;border:0;}table thead{display:none;}table tbody{display:block;width:100%;}table tr{display:block;margin-bottom:15px;border:1px solid #ddd;border-radius:8px;padding:12px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,0.1);}table tr:hover{background-color:#fff;}table td{display:flex;justify-content:space-between;align-items:flex-start;padding:8px 0;border-bottom:1px dashed #eee;text-align:right;font-size:14px;white-space:normal;word-break:break-word;}table td:last-child{border-bottom:0;}table td::before{content:attr(data-label);font-weight:bold;color:#666;text-align:left;flex:0 0 40%;margin-right:10px;}table td input[type="checkbox"]{transform:scale(1.3);}.pagination{flex-direction:column;gap:8px;}.pagination .btn{width:100%;min-width:auto;}.pagination-info{margin:5px 0;text-align:center;}.modal-content{margin:5% auto;padding:15px;width:95%;}.modal-large,.modal-xl{max-width:95%;}.auth-container{margin:40px auto;padding:20px;width:95%;}.upload-drop-zone{padding:30px 15px;}.device-grid-header,.device-grid-row{grid-template-columns:1fr;gap:10px;}.app-grid-header,.app-grid-row{grid-template-columns:1fr;gap:10px;}}@media (max-width:480px){.container{padding:8px;}h1{font-size:18px;}h2{font-size:16px;}.btn{padding:10px 12px;font-size:14px;}.btn-sm{padding:8px 10px;font-size:13px;}.form-group input,.form-group select,.form-group textarea{padding:12px;font-size:16px;}th,td{padding:8px 6px;font-size:12px;}.section{padding:10px;}.auth-container{margin:20px auto;padding:15px;}}#deviceSelectionTableBody tr{transition:background-color 0.2s;}#deviceSelectionTableBody tr:hover{background-color:#f0f0f0;}#deviceSelectionTableBody tr.selected-device{background-color:#e3f2fd !important;font-weight:bold;}#deviceSelectionTableBody tr.selected-device td{border-top:2px solid #2196F3;border-bottom:2px solid #2196F3;}