*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{color:#23364f;background:#f4f7fb;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}button{font:inherit}.hydrometer-module{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex;overflow:auto}.module-filter-button{color:#284d72;cursor:pointer;background:#eef6ff;border:1px solid #bfd8f6;border-radius:999px;padding:6px 10px}.hydrometer-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-content:start;align-items:stretch;gap:12px;display:grid}.hydrometer-card{box-sizing:border-box;background:#fff;border:1px solid #d8e4f2;border-radius:14px;flex-direction:column;gap:10px;height:100%;padding:14px;transition:box-shadow .18s,border-color .18s,transform .18s;display:flex}.hydrometer-card:hover{border-color:#b8d2ee;transform:translateY(-1px);box-shadow:0 8px 18px #2d6fb11c}.hydrometer-card h3{letter-spacing:.01em;color:#264a71;margin:0;font-size:1.02rem;font-weight:700}.hydrometer-values{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;display:grid}.hydrometer-values>div{background:#f4f8ff;border:1px solid #dbe8f8;border-radius:10px;padding:10px}.hydrometer-values span{color:#5f7389;text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px;font-size:.76rem;display:block}.hydrometer-values strong{color:#264a71;font-size:clamp(1.08rem,1.45vw,1.5rem);font-weight:700}.hydrometer-card p{color:#5e748c;margin:0;font-size:.83rem}.hydrometer-card .data-status,.hydrometer-card .module-forward-fill-note{font-size:.82rem}.hydrometer-card .data-status{color:#355674}.hydrometer-card .data-status.is-stale{color:#a35d00;font-weight:600}.hydrometer-card .module-forward-fill-note{color:#7d5517}.hydrometer-card .module-card-status{background:#f2f8ff;border-color:#cadef2}.hydrometer-module .module-filter-button{color:#284d72;background:#f2f8ff;border-color:#cfe2fa}.hydrometer-module .module-filter-button.active{color:#fff;background:#2d6fb1;border-color:#2d6fb1}.hydrometer-graph-panel{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;display:grid}.hydrometer-graph-block{flex-direction:column;align-self:start;gap:4px;display:flex}@media (width<=720px){.hydrometer-grid,.hydrometer-values,.hydrometer-graph-panel{grid-template-columns:1fr}}.pv-module{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex;overflow:auto}.pv-module .module-header h2{color:#8c4f08}.pv-module .module-filter-button{color:#6a4b1e;background:#fff6dd;border-color:#ecd6a1}.pv-module .module-filter-button.active{color:#fff;background:#d18d13;border-color:#d18d13}.pv-card{box-sizing:border-box;background:#fff;border:1px solid #e6d4ad;border-radius:14px;flex-direction:column;gap:10px;width:100%;height:100%;padding:14px;transition:box-shadow .18s,border-color .18s,transform .18s;display:flex}.pv-card:hover{border-color:#d5ba83;transform:translateY(-1px);box-shadow:0 8px 18px #966a1521}.pv-card h3{letter-spacing:.01em;color:#8c4f08;margin:0;font-size:1.02rem;font-weight:700}.pv-sections{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-content:start;gap:12px;display:grid}.pv-battery-card{border-color:#dfc28a}.pv-graph-panel{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;display:grid}.pv-graph-block{flex-direction:column;align-self:start;gap:4px;width:100%;display:flex}.pv-module .timeseries-chart-wrapper{background:#fffaf0;border-color:#ecd8b6}.pv-module .timeseries-axis{stroke:#d8be97}.pv-module .timeseries-grid{stroke:#f2e3c8}.pv-module .timeseries-axis-tick{fill:#7a6038}.pv-graph-panel .timeseries-chart{min-height:77px}@media (width<=720px){.pv-graph-panel{grid-template-columns:1fr}.pv-graph-panel .timeseries-chart{min-height:91px}}.pv-value-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.pv-value-item{background:#fff9ea;border:1px solid #ffecbf;border-radius:10px;padding:10px}.pv-value-item span{color:#6e5a2f;text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px;font-size:.76rem;display:block}.pv-value-item strong{color:#8c4f08;font-size:clamp(1.08rem,1.45vw,1.5rem);font-weight:700}.pv-card p{color:#5e748c;margin:0;font-size:.83rem}.pv-card .data-status,.pv-card .module-forward-fill-note{font-size:.82rem}.pv-card .data-status{color:#355674}.pv-card .data-status.is-stale{color:#a35d00;font-weight:600}.pv-card .module-forward-fill-note{color:#7d5517}.pv-card .module-card-status{color:#70511f;background:#fff7e4;border-color:#e8d3ac}@media (width<=720px){.pv-sections,.pv-value-grid{grid-template-columns:1fr}}.dashboard-page{background:#f4f7fb;flex-direction:column;min-height:100dvh;display:flex}.dashboard-header{background:#fff;border-bottom:1px solid #d9e1ec;justify-content:space-between;align-items:center;gap:12px;padding:clamp(12px,1.3vw,20px) clamp(12px,1.6vw,30px);display:flex}.dashboard-header h1{color:#1f3046;margin:0;font-size:clamp(1.1rem,1.4vw,1.7rem)}.dashboard-tabs{background:#eef3f9;border-radius:999px;gap:8px;padding:4px;display:inline-flex}.dashboard-controls{align-items:center;gap:10px;display:inline-flex}.dashboard-theme-toggle{color:#2d4d6d;cursor:pointer;background:#f2f7fd;border:1px solid #c6d9ec;border-radius:999px;justify-content:center;align-items:center;min-width:108px;padding:7px 12px;font-size:.84rem;transition:background-color .16s,border-color .16s,transform .16s;display:inline-flex}.dashboard-theme-toggle:hover{background:#e5f1ff;border-color:#9ec1e7;transform:translateY(-1px)}.dashboard-tab{cursor:pointer;color:#35506e;background:0 0;border:0;border-radius:999px;padding:8px 14px;font-size:.95rem;transition:background-color .16s,color .16s,transform .16s}.dashboard-tab:hover{background:#dfeaf6;transform:translateY(-1px)}.dashboard-tab.active{color:#fff;background:#2d6fb1;font-weight:600}.dashboard-content{flex:1;min-height:0;padding:clamp(12px,1.5vw,24px)}.module-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.module-header h2{margin:0;font-size:clamp(1.2rem,1.5vw,1.7rem)}.module-filter-group{flex-wrap:wrap;gap:6px;display:flex}.module-filter-button{color:#284d72;cursor:pointer;background:#eef6ff;border:1px solid #bfd8f6;border-radius:999px;padding:6px 10px;transition:background-color .16s,border-color .16s,color .16s,transform .16s}.module-filter-button:hover{background:#e5f1ff;border-color:#9ec1e7;transform:translateY(-1px)}.module-filter-button.active{color:#fff;background:#2d6fb1;border-color:#2d6fb1}.module-error,.module-loading,.module-empty{border-radius:10px;padding:12px}.module-error{color:#a32331;background:#ffe9eb}.module-loading,.module-empty{color:#445c75;background:#f1f6fb}.module-card-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.module-card-header h3{margin:0}.module-card-status{white-space:nowrap;background:#f4f8fc;border:1px solid #d3e0ee;border-radius:999px;padding:3px 8px;line-height:1.15}.module-forward-fill-note{color:#7d5517;margin:0;font-size:.82rem}.metric-trend{margin-top:4px;font-size:.74rem;font-weight:600;display:block}.metric-trend.up{color:#2f7d39}.metric-trend.down{color:#a33b2c}.metric-trend.flat{color:#63788f}.timeseries-chart-wrapper{background:#f8fbff;border:1px solid #dbe6f3;border-radius:10px;flex-direction:column;gap:6px;width:100%;padding:8px;transition:box-shadow .18s,border-color .18s,transform .18s;display:flex}.timeseries-chart-wrapper:hover{border-color:#bfd3e8;transform:translateY(-1px);box-shadow:0 6px 14px #21487114}.timeseries-chart{aspect-ratio:640/200;width:95%;height:auto;min-height:120px;margin:0 auto;display:block}.timeseries-axis{stroke:#b4c7db;stroke-width:1px}.timeseries-grid{stroke:#e4edf7;stroke-width:1px;stroke-dasharray:3 3}.timeseries-hover-line{stroke:#95afca;stroke-width:1px;stroke-dasharray:4 3}.timeseries-hover-point{stroke:#fff;stroke-width:1.5px}.timeseries-zoom-selection{fill:#4c88c229;stroke:#2d6fb1a6;stroke-width:1px}.timeseries-tooltip-bg{fill:#0e1c2ce6}.timeseries-tooltip-title{fill:#fff;font-size:10px;font-weight:700}.timeseries-tooltip-meta{fill:#d7e6f5;font-size:9px}.timeseries-axis-tick{fill:#6a7d90;font-size:9px}.timeseries-axis-labels{justify-content:space-between;gap:8px;display:flex}.timeseries-reset-zoom{color:#2f587f;cursor:pointer;background:#edf5fc;border:1px solid #c8dced;border-radius:999px;padding:3px 8px;font-size:.68rem}.timeseries-axis-label{color:#4f6378;font-size:.68em;font-weight:600}.timeseries-legend{color:#3f556b;flex-wrap:wrap;gap:8px;font-size:.72em;display:flex}.timeseries-legend-item{align-items:center;gap:5px;display:inline-flex}.timeseries-legend-dot{border-radius:50%;width:9px;height:9px}.timeseries-status{margin-top:2px}.data-status{color:#4b6784;align-items:center;gap:6px;margin:0;font-size:.76rem;display:inline-flex}.data-status-icon{color:#4f7aa2;font-size:.7rem;line-height:1}.data-status.is-stale{color:#a35d00;font-weight:600}.data-status.is-stale .data-status-icon{color:#b16b00}.data-status.is-compact{white-space:nowrap}.timeseries-meta{color:#6a7d90;justify-content:space-between;font-size:.66em;display:flex}.timeseries-empty{color:#566b7e;background:#f5f8fb;border-radius:8px;padding:8px;font-size:.8em}.theme-dark{color:#d6e4f3;background:#101925}.theme-dark .dashboard-header{background:#162131;border-bottom-color:#25364c}.theme-dark .dashboard-header h1,.theme-dark .module-header h2{color:#e2eefb}.theme-dark .dashboard-tabs{background:#1d2c41}.theme-dark .dashboard-tab{color:#c8d9ec}.theme-dark .dashboard-tab:hover{background:#2b3f5b}.theme-dark .dashboard-theme-toggle{color:#d9e8f8;background:#1d2c41;border-color:#355071}.theme-dark .module-filter-button{color:#d3e4f6;background:#22344c;border-color:#3f5e83}.theme-dark .module-filter-button.active{background:#3b76b7;border-color:#3b76b7}.theme-dark .module-loading,.theme-dark .module-empty{color:#bfd2e6;background:#1e2f45}.theme-dark .hydrometer-card,.theme-dark .pv-card,.theme-dark .timeseries-chart-wrapper{background:#182638;border-color:#2c435f}.theme-dark .hydrometer-values>div,.theme-dark .pv-value-item{background:#21344b;border-color:#385575}.theme-dark .module-card-status{background:#233851;border-color:#355071}.theme-dark .hydrometer-card h3,.theme-dark .pv-card h3,.theme-dark .hydrometer-values strong,.theme-dark .pv-value-item strong,.theme-dark .hydrometer-card p,.theme-dark .pv-card p,.theme-dark .hydrometer-values span,.theme-dark .pv-value-item span{color:#d4e4f4}.theme-dark .timeseries-axis{stroke:#58799b}.theme-dark .timeseries-grid{stroke:#314862}.theme-dark .timeseries-axis-tick,.theme-dark .timeseries-axis-label,.theme-dark .timeseries-legend,.theme-dark .timeseries-tooltip-meta,.theme-dark .data-status{color:#c3d8ee;fill:#c3d8ee}.theme-dark .timeseries-hover-line{stroke:#6f8fb1}.theme-dark .metric-trend.up{color:#66c47a}.theme-dark .metric-trend.down{color:#f08e80}.theme-dark .metric-trend.flat{color:#9fb6cc}@media (width<=720px){.dashboard-header{flex-direction:column;align-items:stretch}.dashboard-tabs{width:100%}.dashboard-controls{flex-direction:column;align-items:stretch;width:100%}.dashboard-tab{width:100%}.timeseries-chart{width:100%;min-height:145px}.timeseries-axis-labels{flex-direction:column;align-items:flex-start;gap:4px}.timeseries-legend{gap:6px;font-size:.68em}}
