@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700&family=Newsreader:opsz,wght@6..72,600&display=swap";:root{color:#17231e;font-synthesis:none;text-rendering:optimizelegibility;background:#f3f5f1;font-family:Manrope,sans-serif;font-size:17.5px}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer}.dealer-actions{gap:5px;display:flex}.dealer-actions button{color:#315f4e;white-space:nowrap;background:#fff;border:1px solid #d7dfd9;border-radius:4px;align-items:center;gap:5px;height:29px;padding:0 8px;font-size:9.5px;font-weight:700;display:flex}.dealer-actions button:hover{background:#f0f6f3;border-color:#79a08f}.dealer-actions svg{width:12px}.role-action-note{color:#8a9690;font-size:9.5px}.create-user-button.secondary{color:#28674f;background:#eef6f2;border:1px solid #2f755a}.bulk-assignment-modal{width:min(100%,620px)}.bulk-assignment-modal>label{color:#65756d;gap:6px;font-size:10.5px;font-weight:700;display:grid}.bulk-assignment-modal select{color:#24372e;background:#fbfcfb;border:1px solid #d8dfda;border-radius:4px;height:40px;padding:0 10px}.bulk-picker-head{color:#65756d;justify-content:space-between;align-items:center;margin-top:18px;font-size:10.5px;font-weight:700;display:flex}.bulk-picker-head button{color:#247657;background:0 0;border:0;font-size:10.5px;font-weight:700}.bulk-device-picker{border:1px solid var(--line);max-height:320px;margin:7px 0 16px;overflow-y:auto}.bulk-device-picker>p{color:var(--muted);text-align:center;padding:20px}.bulk-device-picker label{cursor:pointer;border-bottom:1px solid #edf0ed;align-items:center;gap:11px;min-height:54px;padding:9px 12px;display:flex}.bulk-device-picker label:last-child{border-bottom:0}.bulk-device-picker label:hover{background:#f5f8f6}.bulk-device-picker input{accent-color:#247657;width:16px;height:16px}.bulk-device-picker span{min-width:0}.bulk-device-picker strong,.bulk-device-picker small{display:block}.bulk-device-picker strong{font-size:11.5px}.bulk-device-picker small{color:var(--muted);margin-top:3px;font:500 9.5px DM Mono}:root{--ink:#17231e;--muted:#718078;--line:#dfe5df;--green:#1d7b58;--amber:#d99321;--paper:#fff}.app-shell{grid-template-columns:236px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{color:#d8e2dc;z-index:20;background:#19352d;flex-direction:column;height:100vh;padding:26px 18px 20px;display:flex;position:sticky;top:0}.brand{color:#fff;align-items:center;gap:10px;padding:0 4px 26px;display:flex}.brand>span:last-child{white-space:nowrap;font:600 16.5px Newsreader}.brand strong{color:#e9a83d;margin-top:2px;font:500 8.5px DM Mono;display:block}.brand-mark{color:#19352d;background:#f4b94f;border-radius:50%;flex:0 0 33px;place-items:center;width:33px;height:33px;display:grid}.brand-mark svg{width:20px}.nav-label{color:#839c92;margin:18px 11px 8px;font:500 11.5px DM Mono}nav button{color:#b9c9c2;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:12px;width:100%;height:43px;padding:0 11px;font-size:14.5px;font-weight:600;display:flex}nav button svg{width:18px}nav button.active{color:#fff;background:#285044;box-shadow:inset 3px 0 #f0b24a}nav button:hover{color:#fff}.nav-count,.alert-count{background:#31594d;border-radius:9px;margin-left:auto;padding:2px 6px;font:500 11.5px DM Mono}.alert-count{color:#ffd8c9;background:#8c4133}.operator{border-top:1px solid #355248;align-items:center;gap:9px;margin-top:auto;padding:13px 4px 0;display:flex}.operator>span{color:#23372f;background:#e9a83d;border-radius:50%;flex:0 0 30px;place-items:center;width:30px;height:30px;font-size:11.5px;font-weight:700;display:grid}.operator>div{min-width:0}.operator strong,.operator small{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;display:block;overflow:hidden}.operator small{color:#82998f;margin-top:2px}.operator button{color:#9db0a8;background:0 0;border:0;border-radius:4px;place-items:center;width:28px;height:28px;margin-left:auto;display:grid}.operator button:hover{color:#fff;background:#2d5046}.operator button svg{width:14px}main{min-width:0}header{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;gap:18px;min-height:89px;padding:12px 30px;display:flex}header p,.eyebrow{color:#87958e;letter-spacing:.08em;margin:0 0 4px;font:500 10.5px DM Mono}h1{margin:0;font:600 30.5px Newsreader}h2{margin:2px 0 0;font:600 19.5px Newsreader}.header-title{flex:none}.header-actions{justify-content:flex-end;align-items:center;gap:7px;min-width:0;display:flex}.header-select{border:1px solid var(--line);background:#fff;border-radius:5px;width:128px;height:42px;padding:5px 8px}.header-select.user-select{width:210px}.header-select.device-select{width:180px}.header-select span{color:#87958e;font:500 8.5px DM Mono;display:block}.header-select select{color:#26362f;background:#fff;border:0;outline:0;width:100%;margin-top:2px;font-size:10.5px;font-weight:700}.header-select select:disabled{color:#8c9892}.search{border:1px solid var(--line);border-radius:5px;align-items:center;gap:8px;width:145px;height:42px;padding:0 10px;display:flex}.search svg{color:#78857e;width:15px}.search input{border:0;outline:0;width:100%;font-size:11.5px}.icon-button{border:1px solid var(--line);color:#526159;background:#fff;border-radius:5px;place-items:center;width:36px;height:36px;display:grid;position:relative}.icon-button svg{width:17px}.icon-button i{background:#e05d39;border-radius:50%;width:5px;height:5px;position:absolute;top:7px;right:8px}.refresh-button,.export-button{color:#fff;background:#1f644d;border:0;border-radius:5px;align-items:center;gap:7px;height:36px;padding:0 14px;font-size:12.5px;font-weight:700;display:flex}.refresh-button svg,.export-button svg{width:14px}.menu-button,.close-sidebar{display:none}.content{padding:18px 30px 35px}.status-strip{border:1px solid var(--line);background:#fff;border-radius:6px;align-items:center;min-height:54px;margin-bottom:15px;display:flex}.connection{grid-template-columns:10px auto;align-items:center;column-gap:9px;min-width:270px;padding:0 18px;display:grid}.connection>span{background:#e0a13a;border-radius:50%;grid-row:1/3;width:8px;height:8px;box-shadow:0 0 0 4px #f9edd8}.connection.live>span{background:#2a9c6e;box-shadow:0 0 0 4px #dcefe8}.connection.error>span{background:#d75f48}.connection strong{text-transform:capitalize;font-size:12.5px}.connection small,.weather small,.last-sync small{color:var(--muted);margin-top:2px;font-size:10.5px;display:block}.weather{border-left:1px solid var(--line);align-items:center;gap:9px;margin-left:auto;padding:0 25px;display:flex}.weather>svg{color:#d99321;width:22px}.weather strong{font-size:13.5px}.last-sync{border-left:1px solid var(--line);align-items:center;gap:9px;height:32px;padding:0 19px;display:flex}.last-sync>svg{width:16px;color:var(--green)}.last-sync strong{font:500 12.5px DM Mono}.kpi-grid{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:12px;display:grid}.kpi{border:1px solid var(--line);background:#fff;border-radius:6px;gap:12px;min-height:112px;padding:18px;display:flex;position:relative;overflow:hidden}.kpi-icon{border-radius:5px;flex:0 0 30px;place-items:center;height:30px;display:grid}.kpi-icon svg{width:16px}.kpi-icon.green{color:#247c5a;background:#e3f1eb}.kpi-icon.amber{color:#be7c16;background:#fbefd9}.kpi-icon.blue{color:#35769b;background:#e3f0f5}.kpi-icon.teal{color:#258680;background:#ddf0ee}.kpi span{color:var(--muted);font:500 10.5px DM Mono;display:block}.kpi strong{margin:4px 0 2px;font:600 25.5px Newsreader;display:block}.kpi em{font:500 13.5px Manrope}.kpi small{color:#7a8780;white-space:nowrap;font-size:10.5px}.kpi small.positive{color:#27815f}.spark{align-items:end;gap:2px;height:30px;display:flex;position:absolute;bottom:18px;right:12px}.spark i{background:#b7ddcb;width:3px}.spark i:first-child{height:30%}.spark i:nth-child(2){height:45%}.spark i:nth-child(3){height:38%}.spark i:nth-child(4){height:65%}.spark i:nth-child(5){height:52%}.spark i:nth-child(6){height:78%}.spark i:nth-child(7){background:#27815f;height:92%}.progress{background:#edf0ed;height:3px;position:absolute;bottom:13px;left:60px;right:18px}.progress i{background:#dda13c;height:100%;display:block}.gauge-icon{color:#87b7cc;width:31px;position:absolute;bottom:16px;right:17px}.dot{border-radius:50%;width:5px;height:5px;display:inline-block}.dot.online{background:#2b966d}.dot.warning{background:#db9a2e}.dashboard-grid{grid-template-columns:minmax(0,1.65fr) minmax(270px,.75fr);gap:12px;display:grid}.panel{border:1px solid var(--line);background:#fff;border-radius:6px;min-width:0;padding:18px}.panel-head{justify-content:space-between;align-items:flex-start;margin-bottom:14px;display:flex}.range-tabs{background:#f0f3ef;border-radius:5px;padding:2px;display:flex}.range-tabs button{color:#7a8780;background:0 0;border:0;border-radius:4px;padding:5px 9px;font:500 10.5px DM Mono}.range-tabs button.active{color:#24453a;background:#fff;box-shadow:0 1px 3px #cfd6d0}.text-button{color:var(--green);background:0 0;border:0;font-size:11.5px;font-weight:700}.chart-summary strong{font:600 21.5px Newsreader}.chart-summary span{color:#89958f;margin-left:10px;font-size:10.5px}.recharts-text{fill:#89958f;font:10.5px DM Mono}.recharts-tooltip-wrapper{font-size:11.5px}.serial-label{color:#7b8982;margin-left:7px;font:500 10.5px DM Mono}.metric-tabs{gap:5px;margin:-2px 0 14px;display:flex;overflow-x:auto}.metric-tabs button{border:1px solid var(--line);color:#68776f;white-space:nowrap;background:#fff;border-radius:4px;padding:6px 9px;font-size:10.5px}.metric-tabs button.active{color:#206d50;background:#e8f3ee;border-color:#2f8a68}.empty-chart{color:#8a9690;flex-direction:column;justify-content:center;align-items:center;height:245px;display:flex}.empty-chart svg{width:24px;margin-bottom:7px}.empty-chart strong{font-size:12.5px}.empty-chart span{margin-top:3px;font-size:10.5px}.fleet-panel{grid-area:1/2/span 2}.fleet-pagination{border-top:1px solid #edf0ed;justify-content:space-between;align-items:center;padding:10px 18px;display:flex}.fleet-pagination button{border:1px solid var(--line);color:#2c4a3e;background:#fff;border-radius:4px;padding:5px 12px;font-size:10.5px;font-weight:600}.fleet-pagination button:disabled{color:#b3beb7;cursor:not-allowed}.fleet-pagination span{color:#7a8780;font:500 10px DM Mono}.fleet-head{gap:12px}.fleet-filter{align-items:center;gap:9px;display:flex}.status-tabs{background:#f0f3ef;border-radius:5px;padding:2px;display:flex}.status-tabs button{color:#718078;text-transform:capitalize;background:0 0;border:0;border-radius:4px;padding:5px 8px;font:500 9.5px DM Mono}.status-tabs button.active{color:#24453a;background:#fff;box-shadow:0 1px 3px #cfd6d0}.fleet-list{margin:0 -18px -18px}.fleet-item{text-align:left;background:#fff;border:0;border-top:1px solid #edf0ed;align-items:center;gap:10px;width:100%;min-height:54px;padding:8px 18px;display:flex}.fleet-item:hover,.fleet-item.selected{background:#f3f7f4}.fleet-item.selected{box-shadow:inset 3px 0 #338467}.device-state{color:#237556;background:#e3f1eb;border-radius:4px;place-items:center;width:29px;height:29px;display:grid}.device-state svg{width:14px}.device-state.warning{color:#b8781b;background:#fbefd9}.device-state.offline{color:#89938e;background:#edf0ee}.device-name strong,.device-name small,.device-output strong,.device-output small{display:block}.device-name strong,.device-output strong{font-size:11.5px}.device-name small,.device-output small{color:#89958f;margin-top:3px;font-size:9.5px}.device-output{text-align:right;margin-left:auto}.device-output small{text-transform:uppercase;font:500 8.5px DM Mono}.device-output small.online{color:#27815f}.device-output small.warning{color:#bd7b17}.result-count{color:var(--muted);font:500 10.5px DM Mono}.fleet-empty{text-align:center;color:var(--muted);border-top:1px solid #edf0ed;padding:28px 18px;font-size:11.5px}.detail-panel,.temp-panel,.inverter-panel{grid-column:1}.live-pill{color:#247a59;background:#e4f2ec;border-radius:9px;padding:4px 7px;font:500 9.5px DM Mono}.live-pill i{background:#269367;border-radius:50%;width:5px;height:5px;margin-right:3px;display:inline-block}.telemetry-grid{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.telemetry-grid>div{background:#f5f7f4;border-radius:4px;align-items:center;gap:9px;padding:12px;display:flex}.telemetry-grid svg{color:#5d756a;width:17px}.telemetry-grid span{color:#7a8780;font-size:9.5px}.telemetry-grid strong{color:#24332c;margin-top:4px;font:500 14.5px DM Mono;display:block}.export-button{color:#28634f;background:#eff5f2;margin:14px 0 0 auto}.events-panel{grid-area:3/2/span 2}.event{border-top:1px solid #edf0ed;gap:10px;padding:13px 0;display:flex}.event-icon{border-radius:50%;flex:0 0 27px;place-items:center;height:27px;display:grid}.event-icon svg{width:13px}.event-icon.warning{color:#b97919;background:#fbefd9}.event-icon.critical{color:#c54f3b;background:#f9e5e1}.event-icon.info{color:#347a98;background:#e4f0f4}.event strong,.event small{font-size:10.5px;display:block}.event small{color:#8a9690;margin-top:4px}.backdrop{display:none}.device-context{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px;display:grid}.device-context>span{background:#fbfcfb;border:1px solid #e6ebe7;grid-template-columns:20px 1fr;align-items:center;column-gap:7px;min-width:0;padding:10px 12px;display:grid}.device-context svg{color:#37745d;grid-row:1/3;width:16px}.device-context small{color:#7a8780;font:500 9.5px DM Mono}.device-context strong{text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.admin-view{max-width:1400px;margin:0 auto}.admin-view-head{justify-content:space-between;align-items:center;margin:4px 0 18px;display:flex}.admin-view-head h2{font-size:26.5px}.admin-view-head p{color:var(--muted);margin:4px 0 0;font:500 11.5px DM Mono}.admin-view-head .refresh-button:disabled{opacity:.65}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.diagnostic-kpis{border:1px solid var(--line);background:#fff;border-radius:6px;grid-template-columns:repeat(6,1fr);margin-bottom:12px;display:grid;overflow:hidden}.diagnostic-kpis article{border-right:1px solid var(--line);align-items:center;gap:10px;min-width:0;min-height:83px;padding:15px;display:flex}.diagnostic-kpis article:last-child{border:0}.diagnostic-kpis svg{color:#34785f;flex:0 0 19px}.diagnostic-kpis span{min-width:0;color:var(--muted);text-transform:uppercase;font-size:9.5px}.diagnostic-kpis strong{color:var(--ink);text-transform:none;white-space:nowrap;margin-top:5px;font:600 17.5px Newsreader;display:block}.health-banner{border:1px solid var(--line);background:#fff;border-left:3px solid #2d8b66;border-radius:5px;align-items:center;gap:12px;min-height:62px;margin-bottom:12px;padding:10px 16px;display:flex}.health-icon{border-radius:50%;place-items:center;width:31px;height:31px;display:grid}.health-icon svg{width:16px}.health-icon.good{color:#257555;background:#e3f1eb}.health-icon.bad{color:#c5543f;background:#f9e5e1}.health-banner strong,.health-banner small{font-size:11.5px;display:block}.health-banner small{color:var(--muted);margin-top:3px}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.admin-panel{border:1px solid var(--line);background:#fff;border-radius:6px;min-width:0;padding:18px}.admin-panel.full{grid-column:1/-1}.panel-title{align-items:center;gap:10px;margin-bottom:14px;display:flex}.panel-title>svg{color:#256f54;background:#e5f1ec;border-radius:4px;width:26px;height:26px;padding:6px}.panel-title h3{margin:0;font:600 18.5px Newsreader}.data-table{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.data-row{border-bottom:1px solid #edf0ed;justify-content:space-between;align-items:center;gap:12px;min-width:0;min-height:43px;padding:8px 10px 8px 0;display:flex}.data-row:nth-child(odd){margin-right:14px}.data-row span{color:var(--muted);font-size:10.5px}.data-row strong{text-overflow:ellipsis;color:#26362f;text-align:right;white-space:nowrap;max-width:60%;font:500 11.5px DM Mono;overflow:hidden}.cell-grid{grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:5px;margin-top:13px;display:grid}.cell-grid span{color:#75847c;background:#f3f6f3;border-radius:3px;padding:8px;font:500 9.5px DM Mono}.cell-grid strong{color:#26362f;margin-top:3px;font-size:11.5px;display:block}.admin-empty{color:#829088;background:#fff;border:1px dashed #cfd8d1;flex-direction:column;justify-content:center;align-items:center;min-height:360px;display:flex}.admin-empty svg{width:30px}.admin-empty h3{margin:10px 0 3px;font:600 19.5px Newsreader}.admin-empty p{font-size:11.5px}.collection-list>div{border-top:1px solid #edf0ed;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;min-height:55px;display:grid}.collection-list strong,.collection-list small{display:block}.collection-list strong{font:500 11.5px DM Mono}.collection-list small{color:var(--muted);margin-top:3px;font-size:9.5px}.collection-list b{font:600 16.5px Newsreader}.collection-state{color:#a4aea9}.collection-state svg{width:15px}.collection-state.ready{color:#28805e}.panel-note{color:var(--muted);margin:-5px 0 14px;font-size:10.5px}.config-panel{overflow:hidden}.json-branch h4{color:#3f6959;margin-top:12px;margin-bottom:4px;font:600 12.5px Manrope}.json-leaf{border-top:1px solid #edf0ed;grid-template-columns:minmax(120px,.7fr) minmax(0,1.3fr);align-items:center;min-height:37px;display:grid}.json-leaf span{color:var(--muted);font-size:10.5px}.json-leaf strong{overflow-wrap:anywhere;font:500 11.5px DM Mono}.config-panel details{border-top:1px solid var(--line);margin-top:16px}.config-panel summary{color:#29694f;cursor:pointer;padding:13px 0;font-size:11.5px;font-weight:700}.config-panel pre{color:#d9e6df;white-space:pre-wrap;overflow-wrap:anywhere;background:#182c25;border-radius:4px;max-height:300px;margin:0;padding:14px;font:10.5px/1.6 DM Mono;overflow:auto}.inverter-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;display:grid}.inverter-form-grid label{color:#65756d;flex-direction:column;gap:6px;min-width:0;font-size:10.5px;font-weight:700;display:flex}.inverter-form-grid input,.inverter-form-grid select,.inverter-form-grid textarea{color:#24372e;background:#fbfcfb;border:1px solid #d8dfda;border-radius:4px;outline:0;width:100%;min-width:0;padding:10px;font:500 11.5px DM Mono}.inverter-form-grid input,.inverter-form-grid select{height:38px}.inverter-form-grid input:focus,.inverter-form-grid select:focus,.inverter-form-grid textarea:focus{border-color:#388065;box-shadow:0 0 0 3px #38806518}.inverter-form-grid input:disabled{color:#849189;background:#f0f3f0}.inverter-form-grid .form-wide{grid-column:1/-1}.inverter-form-grid .form-toggle{border:1px solid #d8dfda;border-radius:4px;flex-direction:row;align-self:end;align-items:center;height:38px;padding:0 10px}.inverter-form-grid .form-toggle input{width:15px;height:15px}.inverter-form-actions{justify-content:flex-end;align-items:center;gap:14px;min-height:45px;margin-top:15px;display:flex}.inverter-form-actions p{margin:0;font-size:11.5px}.inverter-form-actions .success{color:#287057}.inverter-form-actions .error{color:#b64c3d}.inverter-form-actions button:disabled{opacity:.6}.assignment-field{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:7px;min-width:0;display:grid}.assign-user-button{color:#28674f;white-space:nowrap;background:#eef6f2;border:1px solid #2f755a;border-radius:4px;align-items:center;gap:6px;height:38px;padding:0 10px;font-size:10.5px;font-weight:700;display:flex}.assign-user-button svg{width:14px}.assign-user-button:disabled{opacity:.5}.assignment-field label>span b{color:#28674f;font-weight:700}.location-fields{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:14px}.map-frame{border:1px solid var(--line);background:#edf1ed;height:300px;position:relative;overflow:hidden}.map-frame iframe{border:0;width:100%;height:100%}.map-frame a{color:#245f49;background:#fff;border:1px solid #d7dfd9;border-radius:4px;align-items:center;gap:6px;height:32px;padding:0 10px;font-size:10.5px;font-weight:700;text-decoration:none;display:flex;position:absolute;bottom:10px;right:10px;box-shadow:0 2px 8px #17231e20}.map-frame a svg{width:13px}.map-empty{height:180px;color:var(--muted);background:#f7f9f7;border:1px dashed #cbd5ce;justify-content:center;align-items:center;gap:8px;font-size:11.5px;display:flex}.map-empty svg{width:18px}@media (width<=1000px){.inverter-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=620px){.inverter-form-grid{grid-template-columns:1fr}.inverter-form-grid .form-wide{grid-column:1}.assignment-field{grid-template-columns:1fr}.assign-user-button{justify-content:center}.inverter-form-actions{flex-direction:column;align-items:flex-end}.device-context{grid-template-columns:1fr}.map-frame{height:240px}}.user-search{border:1px solid var(--line);background:#fff;border-radius:5px;align-items:center;gap:8px;width:min(360px,45vw);height:40px;padding:0 12px;display:flex}.user-search svg{color:#718078;width:15px}.user-search input{border:0;outline:0;flex:1;min-width:0;font-size:11.5px}.user-summary{border:1px solid var(--line);background:#fff;border-radius:6px;grid-template-columns:repeat(3,1fr);margin-bottom:12px;display:grid;overflow:hidden}.user-summary article{border-right:1px solid var(--line);align-items:center;gap:12px;min-height:84px;padding:16px;display:flex}.user-summary article:last-child{border:0}.user-summary svg{color:#28775a;width:20px}.user-summary span{color:var(--muted);font-size:10.5px}.user-summary strong{color:var(--ink);margin-top:5px;font:600 21.5px Newsreader;display:block}.user-table-wrap{border:1px solid var(--line);background:#fff;border-radius:6px;max-width:100%;overflow-x:auto}.user-table{border-collapse:collapse;width:100%;min-width:980px}.user-table th{color:#74837b;text-align:left;white-space:nowrap;background:#f3f6f3;height:42px;padding:0 14px;font:500 9.5px DM Mono}.user-table td{color:#46564e;white-space:nowrap;border-top:1px solid #e8ece8;height:58px;padding:8px 14px;font-size:10.5px}.user-table tbody tr:hover{background:#f8faf8}.user-table td:first-child strong,.user-table td:first-child small{display:block}.user-table td:first-child strong{color:#25372f;font-size:11.5px}.user-table td:first-child small{color:#849189;margin-top:4px;font:500 9.5px DM Mono}.role-pill{color:#396753;background:#e8f1ec;border-radius:9px;padding:4px 7px;font:500 9.5px DM Mono}.device-total{color:#27684f;background:#e5f1eb;border-radius:50%;place-items:center;min-width:24px;height:24px;font:600 10.5px DM Mono;display:inline-grid}.access-state{color:#9a5548;align-items:center;gap:5px;display:inline-flex}.access-state.enabled{color:#247657}.access-state svg{width:13px}.user-empty{color:var(--muted);text-align:center;padding:38px;font-size:11.5px}.user-head-actions{align-items:center;gap:8px;display:flex}.create-user-button{color:#fff;white-space:nowrap;background:#1f644d;border:0;border-radius:5px;align-items:center;gap:7px;height:40px;padding:0 13px;font-size:11.5px;font-weight:700;display:flex}.create-user-button svg{width:15px}.password-state{color:#287057;align-items:center;gap:5px;font-weight:700;display:inline-flex}.password-state svg{width:13px}.device-expand{color:#506159;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:10.5px;display:flex}.device-expand>svg{width:13px}.device-detail-row:hover{background:#fff!important}.device-detail-row td{background:#f8faf8;height:auto;padding:0 14px 14px}.assigned-device-list{background:#fff;border:1px solid #e1e8e2;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:7px;padding:10px;display:grid}.assigned-device-list>span{color:var(--muted);padding:8px}.assigned-device-list article{border:1px solid #e8ece8;border-radius:4px;grid-template-columns:29px minmax(0,1fr) auto;align-items:center;gap:9px;min-width:0;padding:9px;display:grid}.assigned-device-list article span strong,.assigned-device-list article span small{display:block}.assigned-device-list article span strong{text-overflow:ellipsis;color:#26362f;font-size:10.5px;overflow:hidden}.assigned-device-list article span small{color:var(--muted);text-transform:capitalize;margin-top:3px;font:500 9.5px DM Mono}.assigned-device-list article>span:last-child{text-align:right}.user-modal-backdrop{z-index:40;background:#10251fa6;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.user-modal{background:#fff;border:1px solid #dce3dd;width:min(100%,440px);max-height:calc(100vh - 40px);padding:26px;overflow-y:auto;box-shadow:0 22px 65px #10251f38}.user-modal-head{justify-content:space-between;align-items:flex-start;margin-bottom:20px;display:flex}.user-modal-head h3{margin:3px 0 0;font:600 25.5px Newsreader}.user-modal-head button{border:1px solid var(--line);color:#66766e;background:#fff;border-radius:4px;place-items:center;width:32px;height:32px;display:grid}.user-modal-head button svg{width:15px}.user-modal>label{margin-top:14px;display:block}.user-modal>label>span{color:#66766e;margin-bottom:6px;font:500 9.5px DM Mono;display:block}.user-modal>label>input,.modal-password{background:#fff;border:1px solid #d9e1da;border-radius:4px;width:100%;height:44px}.user-modal>label>input,.modal-password input{outline:0;padding:0 12px;font-size:12.5px}.user-modal>label>input:focus,.modal-password:focus-within{border-color:#2e8061;box-shadow:0 0 0 3px #2e806112}.modal-password{align-items:center;display:flex}.modal-password input{background:0 0;border:0;flex:1;min-width:0;height:100%}.modal-password button{color:#718078;background:0 0;border:0;place-items:center;width:40px;height:100%;display:grid}.modal-password button svg{width:16px}.user-modal .login-submit{width:100%;margin-top:18px}.user-modal .login-submit svg{width:15px}.password-notice{color:#7c8982;justify-content:center;align-items:center;gap:5px;margin-top:12px;font-size:9.5px;display:flex}.password-notice svg{width:12px}.device-load-error{color:#a44f40!important}.session-loading{color:#18372d;background:#edf2ee;justify-content:center;align-items:center;gap:12px;min-height:100vh;font:600 19.5px Newsreader;display:flex}.login-page{background:#f4f6f2;grid-template-columns:minmax(360px,1.05fr) minmax(430px,.95fr);min-height:100vh;display:grid}.login-identity{color:#eef5f1;background-color:#17372d;background-image:linear-gradient(#ffffff0a 1px,#0000 1px),linear-gradient(90deg,#ffffff0a 1px,#0000 1px);background-size:42px 42px;flex-direction:column;min-height:100vh;padding:42px clamp(38px,6vw,90px);display:flex;position:relative;overflow:hidden}.login-identity:after{content:"";background:repeating-linear-gradient(90deg,#e9a83d 0 58px,#3b8f70 58px 116px,#e4ece7 116px 174px);height:9px;position:absolute;bottom:0;left:0;right:0}.login-brand{align-items:center;gap:11px;display:flex}.login-brand span{color:#17372d;background:#efb348;border-radius:50%;place-items:center;width:35px;height:35px;display:grid}.login-brand svg{width:20px}.login-brand strong{font:600 18.5px Newsreader}.login-message{max-width:560px;margin:auto 0}.login-message .eyebrow{color:#a4bbb1}.login-message h1{color:#fff;margin:15px 0 18px;font-size:clamp(42px,5vw,70px);line-height:.97}.login-message p{color:#aac0b7;max-width:430px;font-size:14.5px;line-height:1.8}.login-signal{align-items:center;gap:13px;display:flex}.login-signal>i{background:#45bb86;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 5px #45bb8622}.login-signal strong,.login-signal small{font-size:11.5px;display:block}.login-signal small{color:#89a49a;margin-top:3px}.login-form-wrap{place-items:center;padding:38px;display:grid}.login-form{background:#fff;border:1px solid #dce3dd;width:min(100%,390px);padding:34px;box-shadow:0 20px 55px #263c3112}.login-form-icon{color:#1f654d;background:#e3f0ea;border-radius:6px;place-items:center;width:42px;height:42px;margin-bottom:22px;display:grid}.login-form-icon svg{width:21px}.login-form h2{margin:6px 0;font-size:29.5px}.login-form>p{color:var(--muted);margin:0 0 24px;font-size:12.5px}.login-form label{margin-top:15px;display:block}.login-form label>span{color:#738179;margin-bottom:6px;font:500 9.5px DM Mono;display:block}.login-form label>div{border:1px solid #d9e0da;border-radius:5px;align-items:center;gap:9px;height:46px;padding:0 12px;display:flex}.login-form label>div:focus-within{border-color:#388369;box-shadow:0 0 0 3px #38836914}.login-form label svg{color:#7b8b83;width:16px}.login-form input{border:0;outline:0;flex:1;min-width:0;font-size:13.5px}.login-form label button{color:#65766e;background:0 0;border:0;place-items:center;width:28px;height:28px;display:grid}.login-error{color:#9f3e2f;background:#fbeae6;border-left:3px solid #c85540;margin-top:14px;padding:10px;font-size:11.5px}.login-submit{color:#fff;background:#1e624b;border:0;border-radius:5px;width:100%;height:45px;margin-top:20px;font-size:12.5px;font-weight:700}.login-submit:disabled{opacity:.65}.login-policy{color:#89958f;text-align:center;margin-top:14px;font-size:9.5px;display:block}@media (width<=1120px){header{flex-wrap:wrap}.header-actions{width:100%}.header-select{flex:1}.header-select.device-select{flex:1.4}.search{flex:1}.kpi-grid,.telemetry-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=1200px){.diagnostic-kpis{grid-template-columns:repeat(3,1fr)}.diagnostic-kpis article:nth-child(3){border-right:0}.diagnostic-kpis article:nth-child(-n+3){border-bottom:1px solid var(--line)}}@media (width<=820px){.login-page{grid-template-columns:1fr}.login-identity{min-height:280px;padding:30px}.login-message{margin:45px 0}.login-message h1{font-size:41.5px}.login-message p,.login-signal{display:none}.login-form-wrap{padding:24px}.login-form{padding:26px}}@media (width<=760px){.app-shell{display:block}.sidebar{width:236px;transition:left .25s;position:fixed;left:-250px}.sidebar.open{left:0}.close-sidebar{color:#fff;background:#29483f;border-color:#416157;display:grid;position:absolute;top:12px;right:12px}.backdrop{z-index:10;background:#10251f99;border:0;display:block;position:fixed;inset:0}.menu-button{margin-right:12px;display:grid}.header-actions .icon-button{display:none}header{flex-wrap:wrap;justify-content:flex-start;height:auto;min-height:76px;padding:12px 16px}header h1{font-size:24.5px}.header-actions{grid-template-columns:1fr 1.4fr;width:100%;margin-top:10px;display:grid}.header-select,.header-select.device-select{width:auto}.search{grid-column:1/-1;width:auto}.refresh-button{padding:0 10px;position:absolute;top:22px;right:16px}.content{padding:13px}.status-strip{flex-wrap:wrap;align-items:stretch}.connection{flex:1;min-width:100%;min-height:48px}.weather,.last-sync{flex:1;min-height:46px;padding:0 13px}.kpi-grid,.dashboard-grid,.admin-grid{grid-template-columns:1fr}.events-panel,.detail-panel,.temp-panel,.inverter-panel,.fleet-panel,.admin-panel.full{grid-area:auto/1}.chart-panel{overflow:hidden}.telemetry-grid,.diagnostic-kpis{grid-template-columns:repeat(2,1fr)}.diagnostic-kpis article:nth-child(3){border-right:1px solid var(--line)}.diagnostic-kpis article:nth-child(2n){border-right:0}.diagnostic-kpis article:nth-child(-n+4){border-bottom:1px solid var(--line)}.data-table{grid-template-columns:1fr}.data-row:nth-child(odd){margin-right:0}.json-leaf{grid-template-columns:1fr;gap:3px;padding-block:8px!important}.admin-view-head h2{font-size:23.5px}.user-management .admin-view-head{flex-direction:column;align-items:stretch;gap:12px}.user-head-actions{flex-direction:column;align-items:stretch}.user-search{width:100%}.create-user-button{justify-content:center}.user-summary{grid-template-columns:1fr}.user-summary article{border-right:0;border-bottom:1px solid var(--line);min-height:64px}.user-summary article:last-child{border-bottom:0}.user-modal-backdrop{padding:12px}.user-modal{padding:21px}.assigned-device-list{grid-template-columns:1fr}}@media (width<=420px){.kpi-grid{grid-template-columns:1fr}.weather{display:none}.telemetry-grid{grid-template-columns:1fr}.range-tabs button{padding-inline:7px}.refresh-button{font-size:0}.chart-summary span{margin:3px 0;display:block}.fleet-head{flex-direction:column;align-items:stretch}.fleet-filter{justify-content:space-between}}.chart-panel .panel-head{gap:12px}.range-tabs{flex-shrink:0}.custom-range{border:1px solid var(--line);background:#f7f9f7;align-items:flex-end;gap:8px;margin:-3px 0 14px;padding:10px;display:flex}.custom-range label{gap:4px;display:grid}.custom-range label span{color:var(--muted);font:500 9.5px DM Mono}.custom-range input,.custom-range select{color:#30463e;background:#fff;border:1px solid #d7dfd9;border-radius:4px;height:31px;padding:0 8px;font:500 10.5px DM Mono}.custom-range input{width:180px}.custom-range select{width:90px}.custom-range button{background:var(--green);color:#fff;border:0;border-radius:4px;height:31px;padding:0 13px;font-size:10.5px;font-weight:700}.custom-range button:disabled{cursor:not-allowed;background:#bdc8c2}.custom-range small{color:#b65d42;align-self:center;font-size:10.5px}@media (width<=650px){.chart-panel .panel-head{flex-direction:column;align-items:stretch}.range-tabs{align-self:flex-start;max-width:100%;overflow-x:auto}.custom-range{flex-direction:column;align-items:stretch}.custom-range input,.custom-range select{width:100%}.custom-range button{align-self:flex-start}}.login-message h1{font-size:clamp(43.5px,5vw + 1.5px,71.5px)}
