:root{--ink:#162239;--muted:#7b8596;--blue:#5967ee;--border:#e8edf3;--bg:#f5f7fb}*{box-sizing:border-box}body{margin:0;font:14px/1.6 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}[hidden]{display:none!important}button,input,select{font:inherit}button{cursor:pointer;border:0;border-radius:9px;padding:11px 17px}button:disabled{cursor:not-allowed;opacity:.55}.primary{background:var(--blue);color:white;font-weight:600;box-shadow:0 4px 12px #5967ee26}.secondary,select{background:white;border:1px solid var(--border);border-radius:8px;padding:8px 12px}aside{position:fixed;inset:0 auto 0 0;width:224px;background:#17233b;color:white;padding:34px 23px;display:flex;flex-direction:column}.brand{font-size:21px;font-weight:750;letter-spacing:.3px}.brand span{display:block;font-size:9px;letter-spacing:2.5px;font-weight:400;color:#8592aa;padding:4px 0 0 29px}nav{margin-top:58px;display:grid;gap:9px}nav button{background:transparent;text-align:left;color:#9ca8bf;padding:12px 13px}nav button.active{background:#354265;color:#fff}nav button:hover{background:#293754}.sidefoot{margin-top:auto;font-size:12px;color:#a4b0c5}.sidefoot i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5bcaaa;margin-right:6px}.sidefoot span{display:block;margin:6px 0 16px}.sidefoot button{padding:0;background:none;color:#a4b0c5}main{margin-left:224px;max-width:1680px;padding:35px 40px 20px}header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:23px}.eyebrow{color:#9099ab;font-size:12px}h1{font-size:29px;letter-spacing:-.6px;margin:9px 0 6px;font-weight:720}p{margin:4px 0;color:var(--muted);font-size:12px}.actions{display:flex;gap:15px;align-items:center}.pill{display:inline-block;font-size:11px;line-height:1.3;padding:5px 9px;border-radius:6px;background:#edf0ff;color:#5663cf}.pill.bad{background:#fff0ec;color:#bb6045}.pill.good{background:#e9f7f1;color:#27896f}.notice{padding:12px 17px;background:#edf0ff;border:1px solid #e0e5fe;color:#566290;border-radius:9px;font-size:12px;margin-bottom:22px}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:24px}.metric,.card{background:white;border:1px solid var(--border);border-radius:13px;padding:23px}.metric.balance{background:linear-gradient(120deg,#5668ea,#7180f0);color:white;border:0}.label{font-size:12px;color:var(--muted);display:flex;justify-content:space-between;gap:8px}.balance .label,.balance p{color:#e3e8ff}.balance .pill{background:#ffffff25;color:white}.number{margin:16px 0 3px;font-size:38px;line-height:1.25;font-weight:650;letter-spacing:-1px}.number small{font-size:12px;font-weight:400;letter-spacing:0;margin-left:8px}.meter{height:4px;background:#ffffff30;margin-top:14px;border-radius:8px}.meter span{display:block;height:100%;background:#c5e7ff;border-radius:8px;width:50%}.grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr);gap:24px}.grid.equal{grid-template-columns:1fr 1fr}.card{margin-bottom:24px;min-width:0}.cardhead{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:20px}h2{font-size:16px;letter-spacing:.1px;margin:0 0 7px;font-weight:650}.chart{height:230px;position:relative}.chart svg{width:100%;height:100%;overflow:visible}.empty{display:flex;align-items:center;justify-content:center;height:100%;color:#94a0b4;font-size:13px}.chart .gridline{stroke:#edf0f6;stroke-width:1}.chart text{fill:#8b97aa;font-size:11px}.chart .bar{fill:#7885ed}.chart .bar:hover{fill:#5365df}.next{background:#f7f8fe;border-radius:10px;padding:16px;margin-bottom:12px}.next span{color:#858da5;font-size:11px}.next strong{display:block;font-size:21px;margin-top:5px;font-weight:650}dl{margin:0}dl div{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #f0f2f7;font-size:12px}dt{color:#8791a2}dd{margin:0;text-align:right}.footnote{font-size:11px;margin-top:14px;line-height:1.9}.legend{color:#7e889b;font-size:11px}.legend b,.legend i{display:inline-block;width:12px;height:3px;background:#6573e6;vertical-align:middle}.legend i{background:#48b7a9}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap;font-size:12px}th{color:#7e889b;background:#f9fafc;font-weight:500}td,th{padding:12px 15px;border-bottom:1px solid var(--border)}.eventlist{max-height:600px;overflow:auto}.event{padding:15px 0;border-bottom:1px solid var(--border)}.event strong{font-size:12px}.event time{float:right;color:#9da6b7;font-size:11px}.event p{word-break:break-word}footer{display:flex;justify-content:space-between;color:#a0a8b7;font-size:11px;padding:5px 2px 15px}.login{min-height:100vh;display:grid;place-items:center;background:radial-gradient(at 10% 0%,#e8ecff,transparent 65%)}.login form{width:min(400px,90vw);padding:38px;background:white;border:1px solid var(--border);border-radius:16px;box-shadow:0 20px 80px #35426512}.login .brand{color:var(--blue);margin-bottom:22px}.login h1{font-size:25px}.login label{display:block;font-size:12px;margin-top:20px}.login input{display:block;margin-top:7px;padding:11px;border:1px solid #dfe5ef;border-radius:8px;width:100%;outline:none}.login input:focus{border-color:var(--blue)}.login .primary{width:100%;margin-top:25px}#loginError{color:#bf5343;margin-top:16px}:focus-visible{outline:3px solid #a0afff;outline-offset:3px}@media(min-width:1500px){.chart{height:270px}}@media(max-width:1150px){main{padding:28px 24px}.metrics{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.grid.equal{grid-template-columns:1fr}.forecast dl{display:grid;grid-template-columns:1fr 1fr;column-gap:24px}.chart{height:250px}}@media(max-width:760px){aside{position:static;width:auto;padding:17px 19px}.brand{font-size:18px}.brand span,.sidefoot{display:none}nav{margin-top:15px;display:flex;gap:4px;overflow:auto}nav button{padding:8px;font-size:11px;white-space:nowrap}main{margin:0;padding:23px 16px}header{align-items:flex-start;gap:10px;flex-direction:column}h1{font-size:25px}.actions{width:100%;justify-content:space-between}.metrics{gap:11px}.metric{padding:17px 13px}.number{font-size:29px}.number small{font-size:10px;margin-left:5px}.label{font-size:11px}.label .pill{font-size:9px}.card{padding:18px}.forecast dl{display:block}.chart{height:230px}footer{gap:15px;font-size:10px}.cardhead p{max-width:230px}}

@media(max-width:760px){nav{scrollbar-width:none}nav::-webkit-scrollbar{display:none}}

.installform{width:min(760px,95vw)!important}.checks{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.checks span{padding:5px 9px;background:#e9f7f1;color:#27896f;font-size:11px;border-radius:5px}.checks .bad{background:#fff0ec;color:#b65740}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.formgrid.four{grid-template-columns:repeat(4,1fr)}.full{grid-column:1/-1}form label{display:block;font-size:12px;color:#536078}form input:not([type=checkbox]),form select{display:block;width:100%;margin-top:6px;border:1px solid #dfe5ef;border-radius:8px;padding:10px 12px;background:white;color:#162239;outline:none}form input:focus{border-color:#5967ee}form small{display:block;font-size:11px;color:#8c96a8;margin-top:6px}.check{display:flex!important;align-items:center;gap:8px;margin:18px 0!important}.check input{accent-color:#5967ee;width:16px!important;height:16px;margin:0!important}.formtitle{margin:28px 0 17px}.channelgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.channelgrid fieldset{border:1px solid #e3e8f2;border-radius:10px;padding:17px;min-width:0}.channelgrid legend{font-size:13px;color:#4a5774;padding:0 8px}.channelgrid select{font-size:12px}.formactions{display:flex;gap:18px;align-items:center;margin-top:20px}.formactions span{color:#647395;font-size:12px}#authToggle{width:100%;margin-top:12px}#installError{color:#b65740}#meterSelect{max-width:190px}nav{margin-top:38px}.actions{flex-wrap:wrap;justify-content:flex-end}.login .formgrid label{margin:0}.login .installform .primary{margin-top:18px}.login small{font-size:11px}.notice{word-break:break-word}@media(max-width:1100px){header{align-items:flex-start}.actions{max-width:380px}}@media(max-width:760px){.formgrid,.channelgrid{grid-template-columns:1fr}.formgrid.four{grid-template-columns:1fr 1fr}.actions{max-width:none;justify-content:flex-start;gap:8px}#meterSelect{max-width:170px}.installform{padding:23px!important}.formactions{align-items:flex-start;flex-direction:column}nav{margin-top:15px}aside{padding-bottom:12px}}
