*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;color:#333;background:#f5f6fa;font-size:14px}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:600;line-height:1.2}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}a{color:#3b82f6;text-decoration:none}a:hover{color:#2563eb;text-decoration:underline}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border:1px solid #d1d5db;border-radius:.375rem;background:#fff;color:#374151;font-size:.875rem;font-weight:500;text-decoration:none;cursor:pointer;transition:all .15s ease}.btn:hover{background:#f9fafb;color:#111827}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#3b82f6;border-color:#3b82f6;color:#fff}.btn-primary:hover{background:#2563eb;border-color:#2563eb;color:#fff}.btn-secondary{background:#6b7280;border-color:#6b7280;color:#fff}.btn-secondary:hover{background:#4b5563;border-color:#4b5563;color:#fff}.spinner{width:40px;height:40px;border:4px solid #e5e7eb;border-top:4px solid #3b82f6;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.status-online{color:#10b981}.status-offline{color:#ef4444}.status-warning{color:#f59e0b}.status-error{color:#dc2626}.type-hot{color:#f59e0b}.type-cold{color:#3b82f6}.temp-normal{color:#10b981}.temp-high{color:#ef4444}.temp-low{color:#3b82f6}.alert-low{background:#dbeafe;border-left:4px solid #3b82f6}.alert-medium{background:#fef3c7;border-left:4px solid #f59e0b}.alert-high{background:#fee2e2;border-left:4px solid #ef4444}.alert-critical{background:#fecaca;border-left:4px solid #dc2626}.container{max-width:1200px;margin:0 auto;padding:0 1rem}.grid{display:grid;gap:1rem}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.p-4{padding:1rem}.text-center{text-align:center}.text-sm{font-size:.875rem}.text-xs{font-size:.75rem}.font-medium{font-weight:500}.font-bold{font-weight:700}.bg-white{background-color:#fff}.bg-gray-50{background-color:#f9fafb}.bg-gray-100{background-color:#f3f4f6}.border{border:1px solid #e5e7eb}.border-gray-200{border-color:#e5e7eb}.rounded{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.shadow{box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}.shadow-lg{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}input,select,textarea{padding:.5rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:.875rem;background:#fff;color:#111827;transition:border-color .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}label{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500;color:#374151}.error-message{background:#fee2e2;border:1px solid #fca5a5;color:#dc2626;padding:1rem;border-radius:.375rem;margin-bottom:1rem}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:#6b7280}.no-results{text-align:center;padding:2rem;color:#6b7280;background:#fff;border-radius:.5rem;border:1px solid #e5e7eb}.dashboard-container{max-width:1400px;margin:0 auto;padding:1rem}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.header-actions{display:flex;align-items:center;gap:1rem}.auto-refresh label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#6b7280;cursor:pointer}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:#fff;padding:1.5rem;border-radius:.5rem;border:1px solid #e5e7eb;display:flex;align-items:center;gap:1rem}.stat-icon{width:48px;height:48px;background:#f3f4f6;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#6b7280}.stat-icon.online{background:#d1fae5;color:#10b981}.stat-icon.offline{background:#fee2e2;color:#ef4444}.stat-icon.warning{background:#fef3c7;color:#f59e0b}.stat-content h3{margin:0 0 .25rem;font-size:.875rem;color:#6b7280;font-weight:500}.stat-value{margin:0;font-size:2rem;font-weight:700;color:#111827}.alerts-section{margin-bottom:2rem}.alerts-container{display:flex;flex-direction:column;gap:.5rem}.alert{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:#fff;border-radius:.375rem;border:1px solid #e5e7eb}.alert-content{display:flex;align-items:center;gap:1rem;flex:1}.alert-icon{font-size:1.25rem}.alert-details strong{display:block;margin-bottom:.25rem}.alert-details p{margin:0 0 .25rem;color:#6b7280}.alert-details small{color:#9ca3af;font-size:.75rem}.alert-dismiss{background:none;border:none;font-size:1.25rem;cursor:pointer;color:#9ca3af;padding:.25rem;border-radius:.25rem}.alert-dismiss:hover{background:#f3f4f6;color:#6b7280}.controls-section{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding:1rem;background:#fff;border-radius:.5rem;border:1px solid #e5e7eb}.filters{display:flex;gap:1rem;align-items:end}.filter-group{display:flex;flex-direction:column;gap:.25rem}.filter-group label{font-size:.75rem;color:#6b7280;margin:0}.search-input{min-width:200px}.view-mode-buttons{display:flex;border:1px solid #d1d5db;border-radius:.375rem;overflow:hidden}.view-mode-buttons button{padding:.5rem;border:none;background:#fff;color:#6b7280;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center}.view-mode-buttons button:hover{background:#f9fafb;color:#374151}.view-mode-buttons button.active{background:#3b82f6;color:#fff}.results-info{color:#6b7280;font-size:.875rem}.sensors-container{min-height:400px}.sensors-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}.sensors-list{background:#fff;border-radius:.5rem;border:1px solid #e5e7eb;overflow:hidden}.list-header{display:grid;grid-template-columns:2fr 1fr 1fr 1.5fr 1fr 1fr 1.5fr;gap:1rem;padding:1rem;background:#f9fafb;border-bottom:1px solid #e5e7eb;font-weight:600;font-size:.875rem;color:#374151}.sensors-grouped{display:flex;flex-direction:column;gap:2rem}.sensor-group{background:#fff;border-radius:.5rem;border:1px solid #e5e7eb;overflow:hidden}.group-title{padding:1rem;background:#f9fafb;border-bottom:1px solid #e5e7eb;margin:0;font-size:1.125rem;color:#374151}.group-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem}.sensor-card{background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;padding:1.5rem;cursor:pointer;transition:all .15s ease}.sensor-card:hover{border-color:#3b82f6;box-shadow:0 4px 6px -1px #0000001a}.card-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:1rem}.sensor-info h3{margin:0 0 .25rem;font-size:1.125rem;color:#111827}.sensor-device{font-size:.875rem;color:#6b7280;margin:0}.sensor-status{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem}.sensor-status.status-online{background:#d1fae5;color:#10b981}.sensor-status.status-offline{background:#fee2e2;color:#ef4444}.sensor-status.status-warning{background:#fef3c7;color:#f59e0b}.type-indicator{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.5rem;border-radius:.375rem}.type-indicator.type-hot{background:#fef3c7;color:#f59e0b}.type-indicator.type-cold{background:#dbeafe;color:#3b82f6}.type-icon{font-size:1.125rem}.type-label{font-weight:500;font-size:.875rem}.readings{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}.reading-item{display:flex;flex-direction:column}.reading-item label{font-size:.75rem;color:#6b7280;margin:0 0 .25rem}.reading-item value{font-weight:600;color:#111827;font-size:.875rem}.card-footer{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;border-top:1px solid #e5e7eb;font-size:.75rem;color:#6b7280}.unit-info{background:#f3f4f6;padding:.25rem .5rem;border-radius:.25rem;font-weight:500}.sensor-list-item{display:grid;grid-template-columns:2fr 1fr 1fr 1.5fr 1fr 1fr 1.5fr;gap:1rem;align-items:center;padding:1rem;border-bottom:1px solid #e5e7eb;cursor:pointer;transition:background-color .15s ease}.sensor-list-item:hover{background:#f9fafb}.sensor-list-item:last-child{border-bottom:none}.col-sensor{display:flex;flex-direction:column;gap:.25rem}.sensor-name{font-weight:600;color:#111827}.sensor-device{font-size:.75rem;color:#6b7280}.type-badge,.status-badge{display:inline-block;padding:.25rem .5rem;border-radius:.25rem;font-size:.75rem;font-weight:500}.type-badge.type-hot{background:#fef3c7;color:#f59e0b}.type-badge.type-cold{background:#dbeafe;color:#3b82f6}.status-badge.status-online{background:#d1fae5;color:#10b981}.status-badge.status-offline{background:#fee2e2;color:#ef4444}.status-badge.status-warning{background:#fef3c7;color:#f59e0b}@media (max-width: 1024px){.dashboard-container{padding:.5rem}.controls-section{flex-direction:column;gap:1rem;align-items:stretch}.filters{flex-wrap:wrap;gap:.5rem}.sensors-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.list-header{display:none}.sensor-list-item{grid-template-columns:1fr;gap:.5rem;padding:1rem;border-bottom:1px solid #e5e7eb}}@media (max-width: 768px){.dashboard-header{flex-direction:column;gap:1rem;align-items:start}.stats-grid,.sensors-grid,.readings{grid-template-columns:1fr}.filters{flex-direction:column;align-items:stretch}.search-input{min-width:auto}}
