/* @license GPL-2.0-or-later https://www.drupal.org/licensing/faq */
.text-align-left{text-align:left;}.text-align-right{text-align:right;}.text-align-center{text-align:center;}.text-align-justify{text-align:justify;}.align-left{float:left;}.align-right{float:right;}.align-center{display:block;margin-right:auto;margin-left:auto;}
.container-inline div,.container-inline label{display:inline-block;}.container-inline .details-wrapper{display:block;}.container-inline .hidden{display:none;}
.clearfix::after{display:table;clear:both;content:"";}
.hidden{display:none;}.visually-hidden{position:absolute !important;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;word-wrap:normal;}.visually-hidden.focusable:active,.visually-hidden.focusable:focus-within{position:static !important;overflow:visible;clip:auto;width:auto;height:auto;}.invisible{visibility:hidden;}
.js .js-hide{display:none;}.js-show{display:none;}.js .js-show{display:block;}@media (scripting:enabled){.js-hide.js-hide{display:none;}.js-show{display:block;}}
.iot-page-header{margin-bottom:1.5rem;border-bottom:2px solid #1a73e8;padding-bottom:0.75rem;}.iot-page-header h1{font-size:1.8rem;margin:0 0 0.25rem;color:#1a1a1a;}.iot-page-header .subtitle{color:#666;font-size:0.95rem;margin:0;}.iot-actions{margin-bottom:1rem;display:flex;gap:0.5rem;}.btn{display:inline-block;padding:0.45rem 1rem;border-radius:4px;text-decoration:none;font-size:0.9rem;font-weight:500;cursor:pointer;border:none;transition:background 0.15s;}.btn--primary{background:#1a73e8;color:#fff;}.btn--primary:hover{background:#1558b0;}.btn--secondary{background:#34a853;color:#fff;}.btn--secondary:hover{background:#2c8a43;}.btn--xs{font-size:0.78rem;padding:0.2rem 0.6rem;background:#e8f0fe;color:#1a73e8;border-radius:3px;}.iot-filter-form{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:1rem;margin-bottom:1.5rem;}.iot-filter-form .filter-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-bottom:0.5rem;}.iot-filter-form label{display:flex;flex-direction:column;font-size:0.85rem;color:#555;gap:0.25rem;}.iot-filter-form input[type="date"],.iot-filter-form select{padding:0.3rem 0.5rem;border:1px solid #ced4da;border-radius:4px;font-size:0.9rem;}.iot-filter-form button[type="submit"]{padding:0.45rem 1.2rem;background:#1a73e8;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:0.9rem;align-self:flex-end;}.iot-filter-form button[type="submit"]:hover{background:#1558b0;}.iot-data-table{width:100%;border-collapse:collapse;font-size:0.88rem;}.iot-data-table th{background:#1a73e8;color:#fff;padding:0.6rem 0.75rem;text-align:left;font-weight:600;}.iot-data-table td{padding:0.5rem 0.75rem;border-bottom:1px solid #e9ecef;vertical-align:middle;}.iot-data-table tr:hover td{background:#f0f4ff;}.iot-data-table tr.sensor-type-co2 td{border-left:3px solid #e65100;}.iot-data-table tr.sensor-type-temperature td{border-left:3px solid #d32f2f;}.iot-data-table tr.sensor-type-humidity td{border-left:3px solid #0288d1;}.sensor-badge{display:inline-block;padding:0.15rem 0.5rem;border-radius:12px;font-size:0.78rem;font-weight:600;}.sensor-badge--co2{background:#fff3e0;color:#e65100;}.sensor-badge--temperature{background:#fce4ec;color:#c62828;}.sensor-badge--humidity{background:#e3f2fd;color:#01579b;}.sensor-chip{display:inline-block;margin:2px;padding:0.1rem 0.45rem;border-radius:3px;font-size:0.78rem;text-decoration:none;font-weight:600;}.sensor-chip--co2{background:#fff3e0;color:#e65100;}.sensor-chip--temperature{background:#fce4ec;color:#c62828;}.sensor-chip--humidity{background:#e3f2fd;color:#01579b;}.floor-tabs{display:flex;gap:0.5rem;margin-bottom:1rem;}.floor-tab{padding:0.4rem 1rem;border:1px solid #1a73e8;border-radius:4px 4px 0 0;text-decoration:none;color:#1a73e8;font-size:0.9rem;}.floor-tab.active{background:#1a73e8;color:#fff;}.floor-plan-wrapper{margin-bottom:2rem;}#floor-plan-canvas{position:relative;width:100%;min-height:500px;background:#f0f4f8;border:1px solid #cdd;border-radius:8px;overflow:hidden;}.floor-plan-img{display:block;width:100%;height:auto;user-select:none;}.room-marker{position:absolute;transform:translate(-50%,-100%);z-index:10;}.room-marker:hover{z-index:9999;}.room-tooltip{display:none;position:absolute;bottom:48px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid #ddd;border-radius:8px;padding:0.75rem;min-width:200px;box-shadow:0 4px 16px rgba(0,0,0,0.15);z-index:9999;}.room-marker:hover .room-tooltip{display:block;}.room-pin{width:36px;height:36px;background:#1a73e8;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,0.25);transition:background 0.15s;}.room-pin:hover{background:#d32f2f;}.room-pin__number{transform:rotate(45deg);color:#fff;font-size:0.72rem;font-weight:700;}.room-tooltip{display:none;position:absolute;bottom:48px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid #ddd;border-radius:8px;padding:0.75rem;min-width:200px;box-shadow:0 4px 16px rgba(0,0,0,0.15);z-index:100;}.room-marker:hover .room-tooltip{display:block;}.room-tooltip h4{margin:0 0 0.4rem;font-size:0.95rem;color:#1a73e8;}.room-tooltip .room-area{font-size:0.8rem;color:#777;margin:0 0 0.5rem;}.sensor-list-mini{list-style:none;margin:0 0 0.5rem;padding:0;font-size:0.82rem;}.sensor-list-mini li{margin-bottom:0.25rem;}.sensor-list-mini a{text-decoration:none;color:#333;}.sensor-list-mini a:hover{color:#1a73e8;}.iot-chart-section{margin-bottom:2rem;background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1rem;}.iot-chart-section h2{margin-top:0;}#sensor-chart{width:100% !important;height:450px !important;}#sensor-detail-chart{width:100% !important;height:400px !important;}.iot-chart-section{min-height:480px;}.sensor-id-badge{background:#e8f0fe;color:#1a73e8;font-size:0.8rem;padding:0.1rem 0.5rem;border-radius:12px;margin-left:0.4rem;font-weight:500;}.sensor-stats-row{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap;}.stat-card{background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;padding:1rem 1.5rem;min-width:150px;display:flex;flex-direction:column;}.stat-card--latest{border-color:#1a73e8;background:#e8f0fe;}.stat-label{font-size:0.8rem;color:#666;text-transform:uppercase;letter-spacing:0.05em;}.stat-value{font-size:1.8rem;font-weight:700;color:#1a1a1a;}.stat-value small{font-size:1rem;font-weight:400;color:#666;}.stat-time{font-size:0.78rem;color:#888;margin-top:0.25rem;}.alert-event--new{background:#fff8e1;}.alert-value strong{color:#d32f2f;}.alert-defs-section,.alert-events-section{margin-bottom:2rem;}.iot-empty-state{text-align:center;padding:3rem 1rem;color:#999;font-style:italic;}@media (max-width:768px){.iot-filter-form .filter-row{flex-direction:column;align-items:flex-start;}.sensor-stats-row{flex-direction:column;}.iot-data-table{font-size:0.82rem;}.iot-data-table th,.iot-data-table td{padding:0.4rem 0.5rem;}}
