.header{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--spacing-md) 0;position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.header-content{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg)}.header-brand{display:flex;flex-shrink:0;align-items:center;gap:var(--spacing-md)}.brand-icon{font-size:2rem;line-height:1}.brand-title{white-space:nowrap;font-size:1.375rem;font-weight:700;color:var(--color-text)}.nav-desktop{display:flex;gap:var(--spacing-sm);flex:1;justify-content:center;min-width:0}.nav-measure{position:absolute;visibility:hidden;pointer-events:none;left:0;top:0;flex:none}.nav-desktop.compact .nav-link{padding:var(--spacing-sm) 12px}.nav-desktop.compact .nav-label{display:none}.nav-link{display:flex;white-space:nowrap;flex-shrink:0;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) 12px;border-radius:var(--radius-md);text-decoration:none;color:var(--color-text-secondary);font-weight:500;transition:all var(--transition-fast)}.nav-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.nav-link.active{background:var(--color-primary);color:#fff}.theme-switcher{position:relative}.theme-menu{position:absolute;top:calc(100% + var(--spacing-sm));right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-sm);min-width:180px;box-shadow:var(--shadow-xl);z-index:1000}.theme-option{display:flex;align-items:center;gap:var(--spacing-md);width:100%;padding:var(--spacing-sm) var(--spacing-md);border:none;background:transparent;color:var(--color-text);text-align:left;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.theme-option:hover{background:var(--color-surface-hover)}.theme-option.active{background:var(--color-primary);color:#fff}.theme-preview{width:20px;height:20px;border-radius:50%;border:2px solid var(--color-border)}.header-actions{margin-left:auto;flex-shrink:0}.mobile-menu-btn{flex-shrink:0;display:flex;align-items:center;justify-content:center}.header .header-icon-btn{padding:var(--spacing-sm);display:flex;align-items:center;justify-content:center}.nav-mobile{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}@media (max-width: 768px){.brand-title{font-size:1.25rem}.brand-icon{font-size:1.5rem}}@media (max-width: 480px){.header-content,.header-brand{gap:var(--spacing-sm)}.brand-title{font-size:1.1rem}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg);animation:fadeIn .2s ease-in-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{max-width:800px;width:100%;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-xl);animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:2px solid var(--color-border)}.modal-title{font-size:1.75rem;font-weight:700;color:var(--color-text);margin:0}.modal-subtitle{font-size:.875rem;color:var(--color-text-secondary);margin:var(--spacing-xs) 0 0 0}.modal-close{flex-shrink:0}.room-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg);padding:var(--spacing-lg);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-lg)}.summary-item{display:flex;align-items:center;gap:var(--spacing-md)}.summary-icon{flex-shrink:0}.summary-icon.temperature{color:var(--color-danger)}.summary-icon.humidity{color:var(--color-info)}.summary-value{font-size:1.5rem;font-weight:700;color:var(--color-text);line-height:1}.summary-label{font-size:.75rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--spacing-xs)}.detail-section{display:flex;flex-direction:column;gap:var(--spacing-md)}.section-header{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-primary);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.section-header h3{font-size:1.125rem;font-weight:600;margin:0;color:var(--color-text)}.items-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.item-card{padding:var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast)}.item-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.item-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-sm)}.item-name{font-size:1rem;font-weight:600;color:var(--color-text)}.item-details{display:flex;flex-direction:column;gap:var(--spacing-xs)}.detail-row{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md);font-size:.875rem}.detail-label{color:var(--color-text-secondary);font-weight:500}.detail-value{color:var(--color-text);font-family:Courier New,monospace;word-break:break-all}.empty-message,.loading-message{padding:var(--spacing-xl);text-align:center;color:var(--color-text-secondary);font-style:italic;background:var(--color-background);border:1px dashed var(--color-border);border-radius:var(--radius-md)}@media (max-width: 768px){.modal-overlay{padding:var(--spacing-sm)}.modal-content{max-height:95vh}.modal-title{font-size:1.5rem}.room-summary{grid-template-columns:1fr}.detail-row{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}}.schedule-overview{margin-bottom:0}.schedule-card{padding:var(--spacing-xl)}.schedule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:2px solid var(--color-border)}.header-left{display:flex;align-items:center;gap:var(--spacing-md)}.header-left h2{font-size:1.5rem;font-weight:600;color:var(--color-text);margin:0}.schedule-icon{flex-shrink:0}.schedule-icon.active{color:var(--color-success);animation:pulse 2s ease-in-out infinite}.schedule-icon.upcoming{color:var(--color-info)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.schedule-details{display:flex;flex-direction:column;gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.detail-row{display:flex;justify-content:space-between;align-items:baseline;padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-border)}.detail-label{font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.detail-value{font-size:1rem;font-weight:600;color:var(--color-text);text-align:right}.detail-value.countdown{font-family:Monaco,Courier New,monospace}.detail-value.countdown-timer{font-size:1.25rem;color:var(--color-primary);font-family:Monaco,Courier New,monospace}.schedule-rooms{padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.schedule-rooms h3{font-size:1rem;font-weight:600;color:var(--color-text);margin-bottom:var(--spacing-md)}.rooms-list{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.room-chip{display:inline-flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;transition:all var(--transition-fast)}.room-chip:hover{background:var(--color-surface-hover);border-color:var(--color-primary)}.room-chip svg{flex-shrink:0;color:var(--color-danger)}.room-name{font-weight:500;color:var(--color-text)}.room-temp{font-weight:600;color:var(--color-primary);margin-left:var(--spacing-xs)}.schedule-info{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);text-align:center;gap:var(--spacing-md);color:var(--color-text-secondary)}.schedule-info svg{color:var(--color-text-secondary);opacity:.5}.schedule-info p{margin:0;font-size:1rem;color:var(--color-text)}.schedule-info .info-text{font-size:.875rem;color:var(--color-text-secondary)}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);gap:var(--spacing-md)}.loading-container p{margin:0;color:var(--color-text-secondary)}@media (max-width: 768px){.schedule-card{padding:var(--spacing-lg)}.schedule-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-md)}.detail-row{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.detail-value{text-align:left}}.person-presence-card{padding:1.5rem;border-radius:.5rem;box-shadow:0 2px 4px #0000001a;margin-bottom:1.5rem}.person-presence-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.person-presence-header h3{font-size:1.25rem;font-weight:600;margin:0;display:flex;align-items:center;gap:.5rem}.home-count{font-size:.875rem;font-weight:500;padding:.25rem .75rem;border-radius:1rem;background-color:#ffffff1a}.persons-list{display:flex;flex-direction:column;gap:.75rem}.person-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-radius:.375rem;border:1px solid;transition:all .2s ease}.person-item:hover{transform:translate(2px);box-shadow:0 2px 4px #0000001a}.person-info{display:flex;align-items:center;gap:.75rem}.person-name{font-weight:500;font-size:.9375rem}.person-status{display:flex;align-items:center}.status-badge{padding:.25rem .75rem;border-radius:1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.status-badge.home{animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@media (max-width: 768px){.person-presence-card{padding:1rem}.person-presence-header h3{font-size:1.125rem}.person-item{padding:.625rem .875rem}.person-name{font-size:.875rem}.home-count{font-size:.75rem;padding:.2rem .6rem}}.weather-widget{min-width:300px}.widget-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.widget-header h3{margin:0;font-size:1.1rem;font-weight:600}.widget-timestamp{font-size:.85rem;color:var(--text-secondary)}.widget-content{display:flex;justify-content:center;align-items:center;padding:1rem 0}.weather-content{width:100%}.weather-main{display:flex;align-items:center;gap:1.5rem;margin-bottom:1.5rem}.weather-icon{color:var(--primary-color)}.weather-icon.rain{color:#4a90e2}.weather-icon.snow{color:#b8d4f1}.weather-icon.cloudy{color:#95a5a6}.weather-icon.sunny{color:#f39c12}.weather-temp{display:flex;flex-direction:column;gap:.25rem}.temp-value{font-size:2rem;font-weight:700;color:var(--text-primary)}.weather-description{font-size:.9rem;color:var(--text-secondary);text-transform:capitalize}.weather-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.weather-detail-item{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.5rem;background:var(--background-secondary, rgba(0, 0, 0, .03));border-radius:.5rem;transition:background .2s}.weather-detail-item:hover{background:var(--background-hover, rgba(0, 0, 0, .05))}.detail-icon{color:var(--primary-color)}.detail-label{font-size:.75rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.25rem}.detail-value{font-size:1rem;font-weight:700;color:var(--text-primary)}.spinner-small{width:24px;height:24px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin .8s linear infinite}.error-text{color:var(--danger-color);font-size:.9rem;margin:0}.anti-cycling-widget{min-width:320px}.status-badge{padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.status-badge.on{background-color:#d4edda;color:#155724}.status-badge.off{background-color:#f8d7da;color:#721c24}.status-badge.unknown{background-color:#e2e3e5;color:#383d41}.anti-cycling-content{display:flex;flex-direction:column;gap:1rem}.metric-card{padding:1rem;background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:8px;display:flex;flex-direction:column;gap:.75rem}.metric-header{display:flex;align-items:center;gap:.5rem}.metric-icon{color:var(--primary-color)}.metric-label{font-size:.9rem;font-weight:600;color:var(--text-primary)}.metric-value-row{display:flex;align-items:baseline;gap:.5rem}.metric-value{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.metric-value-large{font-size:2rem;font-weight:700;color:var(--text-primary)}.metric-sublabel{font-size:.8rem;color:var(--text-secondary);display:flex;align-items:center;gap:.25rem}.warning-text{color:var(--warning-color)}.progress-bar{width:100%;height:8px;background-color:var(--border-color);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background-color:var(--success-color);transition:width .3s ease,background-color .3s ease}.progress-fill.warning{background-color:var(--warning-color)}.status-message{display:flex;align-items:center;gap:.5rem;padding:.75rem;background-color:rgba(var(--primary-rgb),.05);border-radius:6px;font-size:.85rem;color:var(--text-secondary)}.status-message svg{color:var(--primary-color);flex-shrink:0}.info-text{color:var(--text-secondary);font-size:.9rem;margin:0;text-align:center}.energy-widget{min-width:320px}.period-badge{padding:.25rem .75rem;border-radius:12px;font-size:.8rem;font-weight:600;letter-spacing:.5px}.period-badge.cheap{background-color:#d4edda;color:#155724}.period-badge.expensive{background-color:#fff3cd;color:#856404}.period-badge.normal{background-color:#d1ecf1;color:#0c5460}.energy-content{display:flex;flex-direction:column;gap:1rem}.rate-display{display:flex;align-items:center;gap:1.5rem;padding:1.5rem;background-color:rgba(var(--primary-rgb),.05);border-radius:8px}.period-icon{flex-shrink:0}.period-icon.cheap{color:#28a745}.period-icon.expensive{color:#ffc107}.period-icon.normal{color:#17a2b8}.rate-details{display:flex;flex-direction:column;gap:.25rem}.rate-value{font-size:2rem;font-weight:700;color:var(--text-primary)}.rate-label{font-size:.9rem;color:var(--text-secondary)}.energy-metrics{display:flex;flex-direction:column;gap:.75rem}.energy-info{display:flex;align-items:center;gap:.5rem;padding:.75rem;border-radius:6px;font-size:.85rem;font-weight:500}.energy-info svg{flex-shrink:0}.energy-info.cheap{background-color:#d4edda;color:#155724}.energy-info.expensive{background-color:#fff3cd;color:#856404}.energy-info.normal{background-color:#d1ecf1;color:#0c5460}.next-cheap{display:flex;align-items:center;gap:.5rem;padding:.5rem;background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:6px;font-size:.85rem;color:var(--text-secondary)}.next-cheap svg{color:var(--primary-color);flex-shrink:0}.config-summary{padding-top:1rem;border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:.5rem}.config-item{display:flex;justify-content:space-between;align-items:center;font-size:.85rem}.config-label{color:var(--text-secondary);font-weight:500}.config-value{color:var(--text-primary);font-weight:600;text-transform:capitalize}.system-overview-container{display:grid;grid-template-columns:1fr 280px;grid-template-areas:"forecast status" "schedule status";gap:0 1rem;margin-bottom:2rem}.overview-forecast{grid-area:forecast}.overview-forecast>.card{margin-bottom:0;padding-bottom:0}.overview-schedule{grid-area:schedule}.overview-status-boxes{grid-area:status;display:flex;flex-direction:column;gap:1rem}.overview-schedule{margin-top:0}.overview-schedule .schedule-card{padding:var(--spacing-xl);margin-top:0}.overview-status-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem;transition:all .2s ease}.overview-status-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.overview-status-item .status-icon{color:var(--primary-color);flex-shrink:0;margin-top:.25rem}.overview-status-item .status-content{flex:1;min-width:0}.overview-status-item .status-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#888;margin-bottom:.25rem}.overview-status-item .status-value{font-size:1.125rem;font-weight:600;color:#fff;margin-bottom:.25rem;word-wrap:break-word}.overview-status-item .status-subtext{font-size:.875rem;color:#aaa;word-wrap:break-word}.overview-status-item .status-value.status-active{color:#73bf69}.overview-status-item .status-value.status-inactive{color:#888}@media (max-width: 1200px){.system-overview-container{display:flex;flex-direction:column;gap:1rem}.overview-status-boxes{flex-direction:row;overflow-x:auto;gap:1rem}.overview-status-item{min-width:250px;flex-shrink:0}}@media (max-width: 768px){.overview-status-boxes{flex-direction:column}.overview-status-item{min-width:0;width:100%}}.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.dashboard{padding:var(--spacing-xl) 0}.dashboard-header-row{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);margin-bottom:var(--spacing-xl);flex-wrap:wrap}.dashboard-layout-controls{display:flex;gap:var(--spacing-sm);align-items:center}.btn.btn-sm{padding:var(--spacing-xs) var(--spacing-md);font-size:.875rem}.page-title{font-size:2rem;font-weight:700;color:var(--color-text);margin:0}.dashboard-grid{position:relative}.dashboard-grid-item{display:flex;flex-direction:column;height:100%;width:100%;border-radius:var(--radius-md);transition:box-shadow .15s ease,outline .15s ease}.dashboard-grid-item.is-editing{outline:2px dashed var(--color-primary);outline-offset:-2px;background:rgba(var(--color-primary-rgb, 99, 102, 241),.04)}.dashboard-grid-item-body{flex:1 1 auto;min-height:0;overflow:auto}.dashboard-grid-item-body>.card,.dashboard-grid-item-body>.system-control-card,.dashboard-grid-item-body>.person-presence-card,.dashboard-grid-item-body>.weather-widget,.dashboard-grid-item-body>.anti-cycling-widget,.dashboard-grid-item-body>.energy-widget,.dashboard-grid-item-body>.schedule-overview,.dashboard-grid-item-body>.room-card,.dashboard-grid-item-body>.overview-status-item{margin:0;min-width:0;height:100%;box-sizing:border-box}.dashboard-grid-item-body .weather-widget,.dashboard-grid-item-body .anti-cycling-widget,.dashboard-grid-item-body .energy-widget{min-width:0}.dashboard-drag-handle{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-primary);color:#fff;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;cursor:move;cursor:grab;border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md);-webkit-user-select:none;user-select:none}.dashboard-drag-handle:active{cursor:grabbing}.dashboard-editing .react-grid-item.react-draggable-dragging,.dashboard-editing .react-grid-item.resizing{z-index:10;opacity:.9}.dashboard-editing .react-grid-placeholder{background:var(--color-primary)!important;opacity:.2!important;border-radius:var(--radius-md)}.react-resizable-handle{background-image:none!important;width:16px;height:16px}.react-resizable-handle:after{content:"";position:absolute;right:4px;bottom:4px;width:8px;height:8px;border-right:2px solid var(--color-text-secondary);border-bottom:2px solid var(--color-text-secondary);opacity:.6}.dashboard-grid-item:not(.is-editing) .react-resizable-handle:after{display:none}.section-title{font-size:1.5rem;font-weight:600;margin:var(--spacing-2xl) 0 var(--spacing-lg);color:var(--color-text)}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--spacing-lg);color:var(--color-text-secondary)}.system-control-card{margin-bottom:0}.system-status{display:flex;flex-direction:column;gap:var(--spacing-lg)}.status-header{display:flex;justify-content:space-between;align-items:center}.status-header h2{font-size:1.25rem;font-weight:600}.status-info{display:flex;flex-wrap:wrap;gap:var(--spacing-lg)}.info-item{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-text-secondary)}.info-label{font-weight:500}.info-value{color:var(--color-text);font-weight:600;text-transform:uppercase;font-size:.875rem}.control-buttons{display:flex;gap:var(--spacing-md);flex-wrap:wrap}.override-controls{display:flex;gap:var(--spacing-sm);align-items:center}.override-input{width:80px;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:.875rem}.override-input:focus{outline:none;border-color:var(--color-primary)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.stat-card{display:flex;align-items:center;gap:var(--spacing-lg);padding:var(--spacing-lg)}.stat-icon{font-size:3rem;line-height:1}.stat-icon svg{stroke-width:1.5;color:var(--primary-color)}.stat-content{flex:1}.stat-value{font-size:2rem;font-weight:700;color:var(--color-text);line-height:1}.stat-label{font-size:.875rem;color:var(--color-text-secondary);margin-top:var(--spacing-xs)}.rooms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--spacing-lg)}.dashboard-editing .room-card-clickable{pointer-events:none;opacity:.85}.room-card{display:flex;flex-direction:column;gap:var(--spacing-md)}.room-card-clickable{cursor:pointer;transition:all var(--transition-normal)}.room-card-clickable:hover{transform:translateY(-4px);box-shadow:var(--shadow-xl);border-color:var(--color-primary)}.room-card-clickable:active{transform:translateY(-2px)}.room-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.room-name{font-size:1.125rem;font-weight:600;color:var(--color-text)}.room-data{display:flex;flex-direction:column;gap:var(--spacing-md);flex:1}.data-item{display:flex;align-items:center;gap:var(--spacing-md)}.data-icon{flex-shrink:0}.data-icon.temperature{color:var(--color-danger)}.data-icon.humidity{color:var(--color-info)}.data-content{flex:1}.data-value{font-size:1.5rem;font-weight:700;color:var(--color-text);line-height:1}.data-label{font-size:.75rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-top:var(--spacing-xs)}.no-data{display:flex;align-items:center;justify-content:center;padding:var(--spacing-xl) 0;color:var(--color-text-secondary);font-style:italic}.room-footer{display:flex;gap:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-border);font-size:.875rem;color:var(--color-text-secondary)}.room-detail{display:flex;align-items:center;gap:var(--spacing-xs)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);text-align:center;gap:var(--spacing-md);color:var(--color-text-secondary)}.empty-state h3{color:var(--color-text);font-size:1.25rem}@media (max-width: 768px){.page-title{font-size:1.5rem}.stats-grid{grid-template-columns:repeat(2,1fr)}.rooms-grid{grid-template-columns:1fr}.control-buttons{flex-direction:column}.override-controls{width:100%}.override-input{flex:1}}.rule-editor{margin-bottom:1rem;padding:.75rem;background:var(--bg-secondary);border:1px solid var(--border-color)}.rule-header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.rule-title-section{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0}.expand-button{display:flex;align-items:center;gap:.5rem;background:none;border:none;cursor:pointer;padding:0;color:var(--text-primary);font-weight:600}.expand-button h4{margin:0;font-size:1rem}.expand-icon{display:inline-block;transition:transform .2s;font-size:.75rem;color:var(--text-secondary)}.expand-icon.expanded{transform:rotate(90deg)}.rule-summary{font-size:.875rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rule-actions{display:flex;gap:.25rem}.rule-content{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-color)}.form-section-mini{margin-top:1rem;padding:.75rem;background:var(--card-bg);border-radius:6px;border:1px solid var(--border-color)}.form-section-mini h5{margin:0 0 .25rem;font-size:.875rem;color:var(--text-primary);font-weight:600}.form-help-small{font-size:.75rem;color:var(--text-secondary);margin:0 0 .75rem}.btn-danger{color:var(--error-color, #dc2626)}.btn-danger:hover{color:var(--error-color-dark, #b91c1c)}.no-rooms-message{padding:1rem;text-align:center;color:var(--text-secondary);font-style:italic}.room-configs{display:flex;flex-direction:column;gap:.75rem}.room-config-item{display:flex;align-items:center;justify-content:space-between;padding:.75rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;gap:1rem}.room-config-header{flex:1;min-width:0}.room-config-header .checkbox-label{display:flex;align-items:center;gap:.5rem;margin:0}.room-name{font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-temp-inputs{display:flex;gap:.75rem;flex-shrink:0;flex-wrap:wrap}.room-temp-input{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;flex-shrink:0}.temp-label{font-size:.75rem;color:var(--text-secondary);font-weight:500;text-transform:uppercase;letter-spacing:.02em}.room-temp-input input{width:70px;padding:.4rem;border:1px solid var(--border-color);border-radius:4px;background:var(--bg-primary);color:var(--text-primary);font-size:.875rem}.room-temp-input input:focus{outline:none;border-color:var(--accent-color)}.room-temp-input input::placeholder{color:var(--text-secondary);opacity:.6;font-style:italic}.temp-unit{font-size:.75rem;color:var(--text-secondary);font-weight:500;margin-top:.25rem}@media (max-width: 640px){.rule-header{flex-wrap:wrap}.rule-title-section{width:100%}.rule-actions{width:100%;justify-content:flex-end}.rule-summary{max-width:200px}.room-config-item{flex-direction:column;align-items:flex-start}.room-config-header{width:100%}.room-temp-inputs{width:100%;justify-content:flex-start}}.rules-editor{margin-top:1.5rem}.rules-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.rules-header h3{margin:0;font-size:1.125rem;color:var(--text-primary)}.btn-sm{padding:.5rem .75rem;font-size:.875rem}.rules-help{font-size:.875rem;color:var(--text-secondary);margin:0 0 1rem}.rules-list{display:flex;flex-direction:column;gap:.75rem}.empty-rules{padding:2rem;text-align:center;background:var(--bg-secondary);border:1px dashed var(--border-color);border-radius:8px;color:var(--text-secondary)}.empty-rules p{margin:0}@media (max-width: 640px){.rules-header{flex-direction:column;align-items:flex-start;gap:.5rem}.rules-header .btn{width:100%}}.schedule-form-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.schedule-form-modal{max-width:600px;width:100%;max-height:90vh;overflow-y:auto;background:var(--card-bg);border:1px solid var(--border-color)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.modal-header h2{margin:0;font-size:1.5rem;color:var(--text-primary)}.btn-icon{background:none;border:none;cursor:pointer;padding:.25rem;color:var(--text-secondary);transition:color .2s}.btn-icon:hover{color:var(--text-primary)}.schedule-form{display:flex;flex-direction:column;gap:1.5rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-weight:500;color:var(--text-primary);font-size:.875rem}.form-group input[type=text],.form-group input[type=time],.form-group input[type=number],.form-group textarea,.form-group select{padding:.75rem;border:1px solid var(--border-color);border-radius:6px;background:var(--bg-primary);color:var(--text-primary);font-size:1rem;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--accent-color)}.form-group input:disabled,.form-group textarea:disabled,.form-group select:disabled{opacity:.6;cursor:not-allowed}.form-group textarea{resize:vertical;min-height:80px}.required{color:var(--error-color, #dc2626)}.checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-label span{font-weight:500;color:var(--text-primary)}.form-section{padding:1rem;background:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color)}.form-section h3{margin:0 0 .5rem;font-size:1.125rem;color:var(--text-primary)}.form-help{font-size:.875rem;color:var(--text-secondary);margin:0}.form-group .form-help{margin-top:-.25rem}.alert{padding:.75rem 1rem;border-radius:6px;font-size:.875rem}.alert-error{background:#dc26261a;border:1px solid rgba(220,38,38,.3);color:#dc2626}.days-selector{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}.day-button{padding:.5rem;border:2px solid var(--color-border);border-radius:6px;background:var(--color-surface);color:var(--color-text);font-size:.75rem;font-weight:600;cursor:pointer;transition:all .2s}.day-button:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-primary);transform:translateY(-1px)}.day-button.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;box-shadow:0 2px 4px #0003;font-weight:700}.day-button:disabled{opacity:.6;cursor:not-allowed}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.modal-footer .btn{min-width:100px}@media (max-width: 640px){.schedule-form-modal{max-width:100%;max-height:100vh;border-radius:0}.days-selector{grid-template-columns:repeat(4,1fr)}.form-row{grid-template-columns:1fr}}.schedules-page{padding:var(--spacing-xl) 0}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xl);flex-wrap:wrap;gap:var(--spacing-md)}.create-form{margin-bottom:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-md)}.form-help{color:var(--color-text-secondary);font-size:.875rem}.schedules-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:var(--spacing-lg)}.schedule-card{display:flex;flex-direction:column;gap:var(--spacing-md)}.schedule-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md)}.schedule-title-section{display:flex;flex-direction:column;gap:var(--spacing-sm);flex:1}.schedule-name{font-size:1.125rem;font-weight:600;color:var(--color-text)}.schedule-actions{display:flex;gap:var(--spacing-sm)}.schedule-status{padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.schedule-rules{display:flex;flex-direction:column;gap:var(--spacing-lg);flex:1}.rule-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.rule-days{font-weight:600;color:var(--color-text);text-transform:capitalize;font-size:.875rem}.period{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border-radius:var(--radius-md);border-left:3px solid var(--color-primary)}.period-time{font-weight:600;color:var(--color-text);font-size:.875rem}.period-rooms{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.room-config{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.75rem}.room-name-small{color:var(--color-text-secondary)}.target-temp{color:var(--color-text);font-weight:600}.schedule-footer{padding-top:var(--spacing-md);border-top:1px solid var(--color-border);font-size:.75rem;color:var(--color-text-secondary)}@media (max-width: 768px){.schedules-grid{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:stretch}}.history-page{padding:var(--spacing-xl) 0}.controls-card{margin-bottom:var(--spacing-xl)}.controls-row{display:flex;gap:var(--spacing-lg);align-items:flex-end;flex-wrap:wrap}.control-group{display:flex;flex-direction:column;gap:var(--spacing-sm);min-width:150px}.control-label{font-size:.875rem;font-weight:500;color:var(--color-text)}.checkbox-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer}.control-select{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:.875rem;cursor:pointer}.control-select:focus{outline:none;border-color:var(--color-primary)}.control-checkbox{width:18px;height:18px;cursor:pointer}.chart-card{margin-bottom:var(--spacing-xl)}.chart-title{font-size:1.125rem;font-weight:600;margin-bottom:var(--spacing-lg);color:var(--color-text)}.table-card{overflow:hidden}.table-container{overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table thead{background:var(--color-background);border-bottom:2px solid var(--color-border)}.data-table th{padding:var(--spacing-md);text-align:left;font-weight:600;color:var(--color-text);font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}.data-table td{padding:var(--spacing-md);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);font-size:.875rem}.data-table tbody tr:hover{background:var(--color-background)}.data-table tbody tr:last-child td{border-bottom:none}@media (max-width: 768px){.controls-row{flex-direction:column;align-items:stretch}.control-group{min-width:100%}.chart-card{padding:var(--spacing-md)}.data-table{font-size:.75rem}.data-table th,.data-table td{padding:var(--spacing-sm)}}.action-log-container{padding:2rem;min-height:100vh}.action-log-header{margin-bottom:2rem;padding-bottom:1rem;border-bottom:1px solid}.action-log-header h1{margin:0 0 .5rem;font-size:2rem}.action-log-header p{margin:0;font-size:.95rem}.action-log-controls{padding:1.5rem;border-radius:8px;border:1px solid;margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.filters{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group label{display:flex;align-items:center;gap:.25rem;font-weight:500;font-size:.9rem}.filter-group select,.filter-group input{padding:.5rem .75rem;border-radius:4px;border:1px solid;font-size:.9rem;min-width:150px}.filter-group select:focus,.filter-group input:focus{outline:none;border-color:#3b82f6}.btn-clear-filters{padding:.5rem 1rem;border-radius:4px;border:none;cursor:pointer;font-size:.9rem;font-weight:500;transition:opacity .2s}.btn-clear-filters:hover{opacity:.8}.control-buttons{display:flex;gap:.75rem}.btn-auto-refresh,.btn-refresh{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:4px;border:1px solid;cursor:pointer;font-size:.9rem;font-weight:500;transition:opacity .2s}.btn-auto-refresh:hover,.btn-refresh:hover{opacity:.8}.btn-refresh:disabled{opacity:.5;cursor:not-allowed}.action-log-summary{margin-bottom:1rem;font-size:.9rem}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:4rem 2rem;font-size:1rem}.no-logs{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:4rem 2rem;border-radius:8px;border:1px solid}.no-logs p{margin:0;font-size:1.1rem}.action-log-table-container{overflow-x:auto;border-radius:8px;margin-bottom:1.5rem}.action-log-table{width:100%;border-collapse:collapse;border-radius:8px;overflow:hidden}.action-log-table thead{border-bottom:2px solid}.action-log-table th{padding:1rem;text-align:left;font-weight:600;font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}.action-log-table td{padding:.875rem 1rem;font-size:.9rem}.action-log-table tbody tr{border-bottom:1px solid;transition:background-color .15s}.action-log-table tbody tr:hover{background-color:#ffffff05}.entity-badge,.action-badge{display:inline-block;padding:.25rem .625rem;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.entity-id{display:block;font-size:.75rem;margin-top:.25rem}.state-transition{display:inline-flex;align-items:center;gap:.375rem}.state-old{text-decoration:line-through;opacity:.6}.arrow{font-size:.85rem;opacity:.6}.state-new{font-weight:600}.reason-cell{max-width:350px}.error-message{font-size:.8rem;margin-top:.25rem;font-style:italic}.temp-info{display:flex;align-items:center;gap:.25rem;font-family:Courier New,monospace}.temp-low{color:#ef4444;font-weight:600}.temp-separator{opacity:.5}.status-cell{text-align:center}.pagination{display:flex;align-items:center;justify-content:center;gap:1.5rem;padding:1.5rem 0;border-top:1px solid}.pagination button{padding:.5rem 1.25rem;border-radius:4px;border:1px solid;cursor:pointer;font-size:.9rem;font-weight:500;transition:opacity .2s}.pagination button:hover:not(:disabled){opacity:.8}.pagination button:disabled{opacity:.4;cursor:not-allowed}.pagination span{font-size:.9rem;font-weight:500}@media (max-width: 1024px){.action-log-table{font-size:.85rem}.action-log-table th,.action-log-table td{padding:.75rem .5rem}}@media (max-width: 768px){.action-log-container{padding:1rem}.action-log-controls,.filters,.filter-group{flex-direction:column;align-items:stretch}.filter-group select,.filter-group input,.control-buttons{width:100%}.btn-auto-refresh,.btn-refresh{flex:1}.action-log-table-container{overflow-x:scroll}.action-log-table{min-width:800px}}.runtime-settings{padding:var(--spacing-xl) 0}.settings-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl);gap:var(--spacing-lg)}.page-subtitle{font-size:1rem;color:var(--color-text-secondary);margin-top:var(--spacing-sm)}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--spacing-lg)}.setting-card{display:flex;flex-direction:column;gap:var(--spacing-md)}.setting-header{display:flex;align-items:center;gap:var(--spacing-sm);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.category-icon{color:var(--color-primary);flex-shrink:0}.setting-key{font-size:1rem;font-weight:600;color:var(--color-text);margin:0}.setting-value{font-family:Courier New,monospace;font-size:.875rem;padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-secondary);word-break:break-all;white-space:pre-wrap}.value-true{color:var(--color-success);font-weight:600}.value-false{color:var(--color-danger);font-weight:600}.value-number{color:var(--color-info);font-weight:600}.value-string{color:var(--color-text)}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);text-align:center;gap:var(--spacing-md)}.error-icon{color:var(--color-danger)}.error-container h3{color:var(--color-text);font-size:1.25rem;margin:0}.error-container p{color:var(--color-text-secondary);margin:0}@media (max-width: 768px){.settings-header{flex-direction:column;align-items:flex-start}.settings-grid{grid-template-columns:1fr}}.home-assistant{padding:var(--spacing-xl) 0}.ha-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-xl);gap:var(--spacing-lg)}.error-banner{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:#ef44441a;border-color:var(--color-danger);color:var(--color-danger);margin-bottom:var(--spacing-lg)}.boiler-status-card{display:flex;flex-direction:column;gap:var(--spacing-lg);padding:var(--spacing-xl);margin-bottom:var(--spacing-xl);border-width:2px}.status-visual{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);padding:var(--spacing-xl) 0}.status-icon-on{color:var(--color-success);animation:pulse-glow 2s ease-in-out infinite}.status-icon-off{color:var(--color-text-secondary)}.status-icon-error{color:var(--color-danger)}.status-icon-disabled{color:var(--color-text-secondary);opacity:.5}.status-icon-unknown{color:var(--color-warning)}@keyframes pulse-glow{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}}.status-title{font-size:2rem;font-weight:700;margin:0;color:var(--color-text)}.status-on .status-title{color:var(--color-success)}.status-off .status-title{color:var(--color-text-secondary)}.status-error .status-title{color:var(--color-danger)}.status-message,.status-error{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);border-radius:var(--radius-md);font-size:.875rem}.status-message{background:#f59e0b1a;color:var(--color-warning);border:1px solid var(--color-warning)}.status-error{background:#ef44441a;color:var(--color-danger);border:1px solid var(--color-danger)}.status-details{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-lg);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md)}.detail-row{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md)}.detail-label{font-weight:600;color:var(--color-text-secondary);font-size:.875rem}.detail-value{color:var(--color-text);font-size:.875rem;display:flex;align-items:center;gap:var(--spacing-xs)}.detail-value.value-enabled{color:var(--color-success);font-weight:600}.detail-value.value-disabled{color:var(--color-danger);font-weight:600}.entity-id{font-family:Courier New,monospace;font-size:.8rem;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface);border-radius:var(--radius-sm)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-lg)}.info-card{display:flex;flex-direction:column;gap:var(--spacing-md)}.info-title{font-size:1.125rem;font-weight:600;color:var(--color-text);margin:0;display:flex;align-items:center;gap:var(--spacing-sm)}.info-title svg{color:var(--color-primary)}.info-text{font-size:.875rem;line-height:1.6;color:var(--color-text-secondary);margin:0}.info-text code{font-family:Courier New,monospace;font-size:.8rem;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface);border-radius:var(--radius-sm);color:var(--color-primary)}.spinning{animation:spin 1s linear infinite}.person-entities-card{margin-bottom:var(--spacing-xl);padding:var(--spacing-xl)}.card-title{display:flex;align-items:center;gap:var(--spacing-md);font-size:1.5rem;font-weight:600;margin:0 0 var(--spacing-sm) 0;color:var(--color-text)}.card-description{font-size:.875rem;color:var(--color-text-secondary);margin:0 0 var(--spacing-lg) 0;line-height:1.6}.person-entities-list{margin-bottom:var(--spacing-lg);min-height:100px}.loading-small{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-lg);justify-content:center;color:var(--color-text-secondary)}.spinner-small{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}.empty-state-small{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xl);color:var(--color-text-secondary)}.empty-state-small p{margin:0;font-size:.875rem}.text-muted{color:var(--color-text-tertiary);font-size:.8rem}.entity-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-sm)}.entity-item{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all .2s ease}.entity-item:hover{background:var(--color-background);border-color:var(--color-primary)}.btn-icon{background:none;border:none;padding:var(--spacing-xs);cursor:pointer;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:all .2s ease}.btn-danger-icon{color:var(--color-danger)}.btn-danger-icon:hover:not(:disabled){background:#ef44441a}.btn-icon:disabled{opacity:.5;cursor:not-allowed}.add-entity-form{display:flex;gap:var(--spacing-md);align-items:stretch}.entity-input{flex:1;padding:var(--spacing-md);font-size:.875rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-family:Courier New,monospace;transition:all .2s ease}.entity-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}.entity-input:disabled{opacity:.6;cursor:not-allowed}.entity-input::placeholder{color:var(--color-text-tertiary);font-style:italic}@media (max-width: 768px){.ha-header{flex-direction:column;align-items:flex-start}.status-title{font-size:1.5rem}.info-grid{grid-template-columns:1fr}.detail-row{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.add-entity-form{flex-direction:column}}.login-container{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-background);padding:var(--spacing-lg)}.loading-content{display:flex;flex-direction:column;align-items:center;justify-content:center}.login-card{max-width:480px;width:100%;display:flex;flex-direction:column;gap:var(--spacing-xl)}.login-header{text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.brand-icon{font-size:4rem;line-height:1;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.login-title{font-size:2rem;font-weight:700;color:var(--color-text);margin:0}.login-subtitle{font-size:1rem;color:var(--color-text-secondary);margin:0}.login-content{display:flex;flex-direction:column;gap:var(--spacing-lg)}.google-sign-in-btn{width:100%;padding:var(--spacing-md) var(--spacing-lg);background:var(--color-surface-hover);color:var(--color-text);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);font-size:1rem;transition:all var(--transition-normal)}.google-sign-in-btn:hover{background:var(--color-primary);border-color:var(--color-primary);transform:translateY(-2px);box-shadow:var(--shadow-lg)}.google-icon{width:24px;height:24px;flex-shrink:0}.google-text{font-weight:600}.login-info{text-align:center;display:flex;flex-direction:column;gap:var(--spacing-sm);font-size:.875rem;color:var(--color-text-secondary)}.security-notice{padding-top:var(--spacing-lg);border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--spacing-md)}.security-header{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-primary)}.security-header h3{font-size:1rem;font-weight:600;margin:0}.security-list{list-style:none;display:flex;flex-direction:column;gap:var(--spacing-sm)}.security-list li{display:flex;align-items:center;gap:var(--spacing-sm);font-size:.875rem;color:var(--color-text-secondary)}.security-list li svg{color:var(--color-info);flex-shrink:0}.local-login-form{margin-bottom:var(--spacing-xl);padding:var(--spacing-lg);background:var(--color-surface);border-radius:var(--border-radius-md);border:1px solid var(--color-border)}.form-section-title{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);font-size:1rem;font-weight:600;color:var(--color-text)}.form-group{margin-bottom:var(--spacing-md)}.form-group label{display:block;margin-bottom:var(--spacing-xs);font-size:.875rem;font-weight:500;color:var(--color-text)}.form-group input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:.9375rem;color:var(--color-text);background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--border-radius-sm);transition:border-color .2s,box-shadow .2s}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #3b82f61a}.form-group input:disabled{opacity:.6;cursor:not-allowed}.local-login-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md);margin-top:var(--spacing-lg);font-size:.9375rem;font-weight:600;background:var(--color-primary);color:#fff;border:none;border-radius:var(--border-radius-sm);transition:background-color .2s,transform .2s}.local-login-btn:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-2px)}.local-login-btn:disabled{opacity:.6;cursor:not-allowed}.btn-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-message{padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--border-radius-sm);color:#ef4444;font-size:.875rem}.login-divider{display:flex;align-items:center;margin:var(--spacing-xl) 0;text-align:center}.login-divider:before,.login-divider:after{content:"";flex:1;border-bottom:1px solid var(--color-border)}.login-divider span{padding:0 var(--spacing-md);font-size:.875rem;font-weight:500;color:var(--color-text-secondary)}.network-status-badge{display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);margin-top:var(--spacing-md);padding:var(--spacing-xs) var(--spacing-sm);font-size:.75rem;color:var(--color-text-secondary);background:#3b82f61a;border-radius:var(--border-radius-sm)}@media (max-width: 640px){.login-card{padding:var(--spacing-lg)}.brand-icon{font-size:3rem}.login-title{font-size:1.5rem}.local-login-form{padding:var(--spacing-md)}}:root{--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-secondary: #64748b;--color-background: #0f172a;--color-surface: #1e293b;--color-surface-hover: #334155;--color-text: #f1f5f9;--color-text-secondary: #94a3b8;--color-border: #334155;--color-success: #10b981;--color-warning: #f59e0b;--color-danger: #ef4444;--color-info: #3b82f6;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1);--transition-fast: .15s ease-in-out;--transition-normal: .25s ease-in-out;--transition-slow: .35s ease-in-out}*{margin:0;padding:0;box-sizing:border-box}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;background-color:var(--color-background);color:var(--color-text);line-height:1.5}#root{min-height:100vh;display:flex;flex-direction:column}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-background)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-md)}::-webkit-scrollbar-thumb:hover{background:var(--color-surface-hover)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=time],input[type=date],input[type=search],textarea,select{background-color:var(--color-input-bg);border:2px solid var(--color-input-border);color:var(--color-text);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input[type=text]:focus,input[type=email]:focus,input[type=password]:focus,input[type=number]:focus,input[type=time]:focus,input[type=date]:focus,input[type=search]:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-input-border-focus);box-shadow:0 0 0 3px #3b82f61a}input[type=text]::placeholder,input[type=email]::placeholder,input[type=password]::placeholder,input[type=number]::placeholder,textarea::placeholder{color:var(--color-text-secondary);opacity:.6}.container{width:100%;max-width:1400px;margin:0 auto;padding:0 var(--spacing-md)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-normal)}.card:hover{box-shadow:var(--shadow-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);border:none;border-radius:var(--radius-md);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-success{background:var(--color-success);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(1.1)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(1.1)}.btn-secondary{background:var(--color-surface-hover);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-border)}.badge{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.badge-success{background:#10b9811a;color:var(--color-success)}.badge-danger{background:#ef44441a;color:var(--color-danger)}.badge-warning{background:#f59e0b1a;color:var(--color-warning)}.badge-info{background:#3b82f61a;color:var(--color-info)}.spinner{border:3px solid var(--color-surface-hover);border-top:3px solid var(--color-primary);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.container{padding:0 var(--spacing-sm)}.card{padding:var(--spacing-md)}}
