:root{color:#18201f;background:#f5f7f7;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}.shell{width:min(1180px,calc(100vw - 32px));margin:0 auto;padding:28px 0 40px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:28px}.eyebrow{margin:0 0 6px;color:#4d6b5b;font-size:.85rem;font-weight:700;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;color:#17201d;font-size:2rem;line-height:1.08}.toolbar{display:inline-flex;align-items:center;flex-wrap:wrap;gap:10px}.status-pill{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border:1px solid #cdd8cf;border-radius:999px;background:#fff;color:#546158;font-size:.95rem;font-weight:700;white-space:nowrap}.icon-button{display:inline-grid;width:40px;height:40px;place-items:center;border:1px solid #cdd8cf;border-radius:8px;background:#fff;color:#33423c;cursor:pointer}.icon-button:hover{border-color:#8ca89b}.icon-button:disabled{color:#7b8983;cursor:not-allowed}.auth-panel{display:inline-flex;align-items:end;gap:8px;min-height:40px}.auth-panel label{display:grid;gap:4px;color:#546158;font-size:.74rem;font-weight:800}.auth-panel input{width:132px;height:40px;border:1px solid #cdd8cf;border-radius:8px;padding:0 10px;background:#fff;color:#17201d}.auth-panel input:focus{border-color:#6f9a7b;outline:2px solid #d9eadf;outline-offset:1px}.auth-panel p{max-width:180px;margin:0;color:#9b2f24;font-size:.82rem;font-weight:700}.auth-panel[data-state=authenticated]{align-items:center;min-height:40px}.auth-identity{display:grid;min-width:116px;max-width:180px;height:40px;align-content:center;padding:0 12px;border:1px solid #cdd8cf;border-radius:8px;background:#fff}.auth-identity strong,.auth-identity span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-identity strong{color:#24312d;font-size:.9rem;line-height:1.15}.auth-identity span{color:#607067;font-size:.74rem;font-weight:800;text-transform:uppercase}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 14px;border:1px solid #22623a;border-radius:8px;background:#236137;color:#fff;cursor:pointer;font-weight:800;white-space:nowrap}.primary-button:hover{background:#1b4f2d}.primary-button:disabled{border-color:#98aaa0;background:#98aaa0;cursor:not-allowed}.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:0 12px;border:1px solid #b8c8c0;border-radius:8px;background:#fff;color:#285c3f;font-size:.86rem;font-weight:800;text-decoration:none;white-space:nowrap}.secondary-button:hover{border-color:#86a593;background:#f3f8f5}.secondary-button:disabled{border-color:#ccd8d2;background:#f2f5f3;color:#7b8982;cursor:not-allowed}.backend-action-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));gap:8px;margin-top:10px}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.status-pill[data-state=ok]{border-color:#97c4a2;color:#236137}.status-pill[data-state=error]{border-color:#e1aaa1;color:#9b2f24}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:16px}.metric-card{display:grid;grid-template-rows:auto auto 1fr auto;min-height:168px;padding:18px;border:1px solid #d8e0df;border-radius:8px;background:#fff;box-shadow:0 14px 32px #1f2b290f}.metric-card[data-tone=import] .metric-icon{color:#1f6f92;background:#e7f4f8}.metric-card[data-tone=export] .metric-icon{color:#7a5413;background:#fff1d5}.metric-card[data-tone=solar] .metric-icon{color:#8a6a00;background:#fff7bf}.metric-card[data-tone=home] .metric-icon{color:#285c3f;background:#e7f3eb}.metric-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.metric-icon{display:inline-grid;width:38px;height:38px;place-items:center;border-radius:8px}.metric-card p{margin:18px 0 6px;color:#58645f;font-size:.92rem;font-weight:700}.metric-card strong{align-self:end;color:#141b19;font-size:2rem;line-height:1.05}.metric-card small{margin-top:12px;overflow:hidden;color:#71807a;text-overflow:ellipsis;white-space:nowrap}.quality-badge{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid #d0d8d4;border-radius:999px;background:#f8faf9;color:#4d5d56;font-size:.78rem;font-weight:800;text-transform:uppercase;white-space:nowrap}.quality-badge[data-quality=good]{border-color:#9fcaab;background:#edf8f0;color:#22623a}.quality-badge[data-quality=estimated]{border-color:#d9c078;background:#fff8dc;color:#70540c}.quality-badge[data-quality=stale]{border-color:#d6b18c;background:#fff2e5;color:#7b491d}.quality-badge[data-quality=error]{border-color:#dda49f;background:#fff0ef;color:#952f29}.confidence-badge{display:inline-flex;align-items:center;min-height:26px;margin-left:auto;padding:0 9px;border:1px solid #b7cfc0;border-radius:999px;background:#edf6ef;color:#236137;font-size:.82rem;font-weight:800}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.panel{min-height:230px;padding:22px;border:1px solid #dbe3dd;border-radius:8px;background:#fff;box-shadow:0 18px 45px #25342a14}.panel-wide{grid-column:1 / -1;min-height:0}.panel-title{display:flex;align-items:center;gap:10px;margin-bottom:18px;color:#275d3d}.panel-title h2{margin:0;font-size:1.1rem}.panel-title .quality-badge{margin-left:auto}.facts{display:grid;gap:14px;margin:0}.facts div,.balance-row>div,.flag-list li{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:46px;border-bottom:1px solid #edf1ee}.facts dt,.balance-row span,.flag-list span{color:#5b675f}.facts dd,.balance-row strong{margin:0;font-weight:800;text-align:right}.balance-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.flag-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.flag-list strong,.balance-row strong{color:#236137;text-align:right}.flag-list strong[data-enabled=false]{color:#8c4b20}.reason-list{display:grid;gap:10px;margin:0;padding:0;color:#4e5a55;list-style:none}.reason-list li{padding:10px 0;border-bottom:1px solid #edf1ee}.scheduler-run-list{display:grid;gap:6px;margin:12px 0 0;padding:0;color:#4e5a55;font-size:.88rem;list-style:none}.scheduler-run-list li{display:grid;grid-template-columns:minmax(120px,1fr) minmax(0,1fr);gap:12px;padding:7px 0;border-bottom:1px solid #edf1ee}.scheduler-run-list strong{color:#236137;text-align:right;overflow-wrap:anywhere}.scheduler-run-list li[data-tone=error] strong{color:#952f29}.tariff-list,.operating-mode-list,.optimizer-list,.action-list,.audit-list,.device-list,.user-list,.report-day-list{display:grid;gap:8px}.tariff-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:38px;border-bottom:1px solid #edf1ee}.tariff-row span,.empty-state,.panel-warning{color:#5b675f}.tariff-row strong{color:#1d5a3a}.operating-mode-summary{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}.operating-mode-row{display:grid;grid-template-columns:minmax(190px,1fr) minmax(120px,.45fr) minmax(90px,auto) 42px minmax(78px,auto);align-items:end;gap:12px;min-height:74px;padding:10px 0;border-bottom:1px solid #edf1ee}.operating-mode-identity{display:grid;align-self:center;gap:4px;min-width:0}.operating-mode-identity strong{overflow:hidden;color:#17201d;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.operating-mode-identity span{overflow:hidden;color:#5b675f;font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.operating-mode-identity .operating-mode-sync{color:#55635d;font-weight:800}.operating-mode-sync[data-status=pending_commit]{color:#70540c}.operating-mode-sync[data-status=confirmed]{color:#22623a}.operating-mode-sync[data-status=sent]{color:#435c8a}.operating-mode-row label{display:grid;gap:6px;min-width:0;color:#51605a;font-size:.86rem;font-weight:800}.operating-mode-row input[type=number]{width:100%;min-height:40px;border:1px solid #cfd9d4;border-radius:8px;padding:0 10px;background:#fff;color:#17201d}.operating-mode-row input:focus{border-color:#6f9a7b;outline:2px solid #d9eadf;outline-offset:1px}.operating-mode-row .icon-button{width:40px;height:40px}.operating-mode-row .status-tag{align-self:center;justify-self:end}.operating-mode-row p{grid-column:1 / -1;margin:0;color:#236137;font-size:.86rem;font-weight:700}.operating-mode-row p[role=alert]{color:#952f29}.report-summary{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:16px}.report-cost-summary{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:10px}.report-year-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.report-control-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:end;margin-bottom:18px}.report-filter-form{display:grid;grid-template-columns:repeat(3,minmax(120px,1fr)) auto;gap:10px;align-items:end}.report-filter-form label{display:grid;gap:6px;min-width:0;color:#51605a;font-size:.86rem;font-weight:800}.report-filter-form input{width:100%;min-height:40px;border:1px solid #cfd9d4;border-radius:8px;padding:0 10px;background:#fff;color:#17201d}.report-filter-form input:focus{border-color:#6f9a7b;outline:2px solid #d9eadf;outline-offset:1px}.report-downloads{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.report-day-row{display:grid;grid-template-columns:minmax(130px,1fr) repeat(4,minmax(88px,auto)) minmax(80px,auto);align-items:center;gap:14px;min-height:52px;padding:8px 0;border-bottom:1px solid #edf1ee}.report-cost-row{display:grid;grid-template-columns:minmax(160px,1fr) repeat(3,minmax(88px,auto)) minmax(80px,auto);align-items:center;gap:14px;min-height:50px;padding:8px 0;border-bottom:1px solid #edf1ee}.report-day-row div:first-child,.report-cost-row div:first-child{display:grid;gap:4px;min-width:0}.report-day-row strong,.report-cost-row strong{color:#17201d}.report-day-row span,.report-day-row em,.report-cost-row span,.report-cost-row em{color:#5b675f;text-align:right;white-space:nowrap}.report-day-row div:first-child span,.report-cost-row div:first-child span{overflow:hidden;text-align:left;text-overflow:ellipsis}.report-day-row em,.report-cost-row em{font-style:normal;font-weight:800;text-transform:uppercase}.report-day-row em[data-quality=good],.report-cost-row em[data-quality=good]{color:#22623a}.report-day-row em[data-quality=estimated],.report-cost-row em[data-quality=estimated]{color:#70540c}.report-day-row em[data-quality=stale],.report-cost-row em[data-quality=stale]{color:#7b491d}.report-day-row em[data-quality=error],.report-cost-row em[data-quality=error]{color:#952f29}.report-cost-section,.report-year-section,.report-month-section{margin-top:20px}.report-cost-section h3,.report-year-section h3,.report-month-section h3{margin:0 0 10px;color:#4f5d56;font-size:.86rem;font-weight:800;text-transform:uppercase}.tariff-form{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto auto;gap:12px;align-items:end}.tariff-form label{display:grid;gap:6px;min-width:0;color:#51605a;font-size:.86rem;font-weight:800}.tariff-form input[type=datetime-local],.tariff-form input[type=text]{width:100%;min-height:42px;border:1px solid #cfd9d4;border-radius:8px;padding:0 10px;background:#fff;color:#17201d}.tariff-form input:focus{border-color:#6f9a7b;outline:2px solid #d9eadf;outline-offset:1px}.check-row{display:flex!important;align-items:center;gap:8px!important;min-height:42px;white-space:nowrap}.check-row input{width:16px;height:16px}.device-settings-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.settings-form{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.35fr) minmax(0,.8fr);gap:18px;align-items:start}.settings-section{min-width:0}.section-heading{display:flex;align-items:center;gap:8px;min-height:28px;margin-bottom:10px;color:#4f5d56}.section-heading h3{margin:0;font-size:.86rem;font-weight:800;text-transform:uppercase}.device-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(190px,1.1fr) minmax(80px,auto) minmax(130px,auto) 44px;align-items:center;gap:14px;min-height:58px;padding:9px 0;border-bottom:1px solid #edf1ee}.device-row div:first-child{display:grid;gap:4px;min-width:0}.device-row strong{color:#17201d;line-height:1.25}.device-row span{overflow:hidden;color:#5b675f;text-overflow:ellipsis;white-space:nowrap}.device-row em{color:#236137;font-style:normal;font-weight:800;text-align:right}.device-row[data-enabled=false] em{color:#8c4b20}.nibe-recommendations{display:grid;grid-column:1 / -1;gap:8px;min-width:0;padding:8px 10px;border:1px solid #dce6e0;border-radius:8px;background:#f8fbf9}.recommendation-badges{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.recommendation-badges strong,.recommendation-badges span{display:inline-flex;align-items:center;min-height:24px;border-radius:999px;padding:0 8px;font-size:.78rem;font-weight:800;white-space:nowrap}.recommendation-badges strong{border:1px solid #9fcaab;background:#edf8f0;color:#22623a}.recommendation-badges span{border:1px solid #d0d8d4;background:#fff;color:#4d5d56}.recommendation-warning{margin:0;color:#8c4b20;font-size:.86rem;font-weight:800}.recommendation-action-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.recommendation-action-list li{display:grid;grid-template-columns:minmax(160px,.45fr) minmax(0,1fr);gap:10px;align-items:center;min-width:0}.recommendation-action-list strong{overflow:hidden;color:#17201d;font-size:.86rem;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.recommendation-action-list span{min-width:0;color:#5b675f;font-size:.84rem;white-space:normal}.toggle-grid,.secret-list{display:grid;gap:6px;margin:0}.toggle-row,.secret-list div{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;border-bottom:1px solid #edf1ee;color:#5b675f}.toggle-row input{width:18px;height:18px;accent-color:#236137}.threshold-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}.threshold-grid label{display:grid;gap:6px;min-width:0;color:#51605a;font-size:.86rem;font-weight:800}.unit-input{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center;min-height:40px;border:1px solid #cfd9d4;border-radius:8px;background:#fff;overflow:hidden}.unit-input input{width:100%;min-width:0;min-height:38px;border:0;padding:0 10px;color:#17201d}.unit-input input:focus{outline:2px solid #d9eadf;outline-offset:-2px}.unit-input em{color:#6a7771;font-size:.82rem;font-style:normal;font-weight:800;text-align:center}.secret-list dt,.secret-list dd{margin:0}.secret-list dd{color:#236137;font-weight:800;text-align:right}.settings-save{grid-column:1 / -1;justify-self:end}.user-management-grid{display:grid;grid-template-columns:minmax(260px,.72fr) minmax(0,1.5fr);gap:18px;align-items:start}.user-create-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.user-create-form .section-heading{grid-column:1 / -1}.user-create-form label,.user-row label{display:grid;gap:6px;min-width:0;color:#51605a;font-size:.86rem;font-weight:800}.user-create-form input[type=text],.user-create-form input[type=password],.user-create-form select,.user-row input[type=text],.user-row input[type=password],.user-row select{width:100%;min-height:40px;border:1px solid #cfd9d4;border-radius:8px;padding:0 10px;background:#fff;color:#17201d}.user-create-form input:focus,.user-create-form select:focus,.user-row input:focus,.user-row select:focus{border-color:#6f9a7b;outline:2px solid #d9eadf;outline-offset:1px}.user-create-form .primary-button{align-self:end}.user-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(150px,1.1fr) minmax(104px,.55fr) minmax(84px,.45fr) minmax(140px,.9fr) 42px minmax(72px,auto);align-items:end;gap:12px;min-height:82px;padding:10px 0;border-bottom:1px solid #edf1ee}.user-row-identity{display:grid;align-self:center;gap:4px;min-width:0}.user-row-identity strong{overflow:hidden;color:#17201d;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.user-row-identity span{overflow:hidden;color:#5b675f;font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.user-row .icon-button{width:40px;height:40px}.user-row .status-tag{align-self:center;justify-self:end}.user-row p{grid-column:1 / -1;margin:0;color:#236137;font-size:.86rem;font-weight:700}.user-row p[role=alert]{color:#952f29}.optimizer-summary{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.optimizer-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:18px}.optimizer-block h3{margin:0 0 10px;color:#4f5d56;font-size:.86rem;font-weight:800;text-transform:uppercase}.optimizer-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;min-height:58px;padding:10px 0;border-bottom:1px solid #edf1ee}.optimizer-row div:first-child,.action-row div:first-child{display:grid;gap:4px;min-width:0}.optimizer-row strong{color:#17201d;line-height:1.25}.optimizer-row span,.optimizer-reasons{color:#5b675f}.optimizer-row-meta{display:grid;justify-items:end;gap:4px;min-width:92px}.action-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(118px,auto) 88px;align-items:center;gap:16px;min-height:62px;padding:10px 0;border-bottom:1px solid #edf1ee}.action-row:not([data-status=pending_commit]){grid-template-columns:minmax(0,1fr) minmax(118px,auto) 88px}.action-row strong{color:#17201d;line-height:1.25}.action-row span{color:#5b675f}.action-row-meta{display:grid;justify-items:end;gap:5px}.action-row-meta em{color:#6b7872;font-size:.82rem;font-style:normal;font-weight:700}.action-row-controls{display:inline-flex;justify-content:flex-end;gap:8px}.action-row-controls .icon-button{width:36px;height:36px}.audit-filter-form{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr)) minmax(96px,auto) auto auto auto;align-items:end;gap:8px;margin-bottom:14px}.audit-filter-form label{display:grid;gap:5px;min-width:0;color:#546158;font-size:.76rem;font-weight:800}.audit-filter-form input,.audit-filter-form select{width:100%;height:38px;border:1px solid #cdd8cf;border-radius:8px;padding:0 10px;background:#fff;color:#17201d}.audit-filter-form input:focus,.audit-filter-form select:focus{border-color:#6f9a7b;outline:2px solid #d9eadf;outline-offset:1px}.audit-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;min-height:54px;padding:8px 0;border-bottom:1px solid #edf1ee}.audit-row div:first-child{display:grid;gap:4px;min-width:0}.audit-row strong{color:#17201d;line-height:1.25}.audit-row span,.audit-row em{color:#5b675f}.audit-detail-list{display:flex;flex-wrap:wrap;gap:5px 8px;margin:2px 0 0;padding:0;list-style:none}.audit-detail-list li{max-width:100%;padding:3px 7px;border:1px solid #dbe5df;border-radius:999px;background:#f8faf8;color:#4e5a55;font-size:.76rem;font-weight:700;overflow-wrap:anywhere}.audit-row em{font-style:normal;font-weight:800;white-space:nowrap}.status-tag{display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid #ccd8d2;border-radius:999px;background:#f7faf8;color:#4d5d56;font-size:.76rem;font-weight:800;text-transform:uppercase;white-space:nowrap}.status-tag[data-status=pending_commit]{border-color:#d9c078;background:#fff8dc;color:#70540c}.status-tag[data-status=proposed]{border-color:#9fc0d5;background:#eef7fc;color:#255d80}.status-tag[data-status=validated],.status-tag[data-status=sent]{border-color:#9eb8dd;background:#f0f5ff;color:#335d9b}.status-tag[data-status=confirmed]{border-color:#9fcaab;background:#edf8f0;color:#22623a}.status-tag[data-status=failed]{border-color:#dda49f;background:#fff0ef;color:#952f29}.status-tag[data-status=cancelled]{border-color:#d6b18c;background:#fff2e5;color:#7b491d}.status-tag[data-status=rolled_back]{border-color:#c6b8df;background:#f3effa;color:#564185}.optimizer-row-meta em{color:#236137;font-style:normal;font-weight:800}.optimizer-reasons{display:grid;gap:8px;margin:0;padding:0;list-style:none}.optimizer-reasons li{min-height:38px;padding:9px 0;border-bottom:1px solid #edf1ee}.empty-state{margin:0}.panel-warning{margin:14px 0 0;font-size:.9rem}.panel-warning[data-tone=error]{color:#952f29}.panel-warning[data-tone=warning]{color:#7b491d}.panel-warning[data-tone=ok]{color:#236137}@media(max-width:760px){.shell{width:min(100vw - 24px,560px);padding:24px 0}.topbar,.toolbar,.metric-grid,.grid,.balance-row,.tariff-form,.settings-form,.threshold-grid,.report-summary,.operating-mode-summary,.operating-mode-row,.optimizer-summary,.optimizer-grid,.optimizer-row,.scheduler-run-list li,.action-row,.audit-filter-form,.audit-row,.device-row,.user-management-grid,.user-create-form,.user-row,.report-control-panel,.report-filter-form,.report-day-row{display:grid;grid-template-columns:1fr}.optimizer-row-meta,.action-row-meta,.scheduler-run-list strong{justify-items:start;text-align:left;min-width:0}.action-row-controls{justify-content:flex-start}.device-row em,.secret-list dd,.report-day-row span,.report-day-row em{text-align:left}.recommendation-action-list li{grid-template-columns:1fr}.settings-save{justify-self:stretch}.report-downloads{justify-content:stretch}.secondary-button{width:100%}.operating-mode-row .status-tag,.user-row .status-tag{justify-self:start}.toolbar{gap:8px}.status-pill,.icon-button{justify-content:center;width:100%}.metric-card strong{font-size:1.7rem}}
