.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{color-scheme:light;--bg: #f6f6f6;--surface: #ffffff;--raised: #f1f1f1;--line: #e3e3e3;--line-strong: #cdcdcd;--fg: #111111;--fg-2: #555555;--fg-3: #737373;--ok: #17803f;--warn: #9a5d00;--bad: #d23a3a;--fuel-nuclear: #6455c8;--fuel-coal: #c9473f;--fuel-hydro: #2f6fc0;--fuel-gas: #d0642e;--fuel-wind: #23946b;--fuel-solar: #b98400;--fuel-storage: #c95688;--fuel-imports: #a3a3a3;--fuel-other: #d0d0d0;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif;--mono: ui-monospace, SFMono-Regular, "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--header-h: 45px}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--bg: #0a0a0a;--surface: #0a0a0a;--raised: #151515;--line: #232323;--line-strong: #343434;--fg: #ededed;--fg-2: #a3a3a3;--fg-3: #7a7a7a;--ok: #3fbf6a;--warn: #e0a316;--bad: #f05d5d;--fuel-nuclear: #8b80e0;--fuel-coal: #d66a62;--fuel-hydro: #4b8ad6;--fuel-gas: #cf6f3c;--fuel-wind: #2f9e78;--fuel-solar: #b8891a;--fuel-storage: #c7618b;--fuel-imports: #5e5e5e;--fuel-other: #3d3d3d}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--fg);font:13px/1.45 var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}button,input,select{font:inherit;color:inherit}:focus-visible{outline:1px solid var(--fg);outline-offset:1px}h1,h2,h3{margin:0;font:inherit}.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--fg-2)}.subtle{color:var(--fg-3)}.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}.label,.tile-label,.metric-label,th,.day{font:500 11px/1.2 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-3)}.u{text-transform:none;letter-spacing:0}.header{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--line)}.header-row{display:flex;align-items:center;gap:20px;max-width:1440px;height:44px;margin:0 auto;padding:0 16px}.brand{display:inline-flex;align-items:center;gap:8px;font:600 13px var(--mono);letter-spacing:-.02em}.brand:hover{text-decoration:none}.nav{display:flex;align-self:stretch;overflow-x:auto;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a{display:flex;align-items:center;padding:0 9px;color:var(--fg-2);white-space:nowrap}.nav a:hover{color:var(--fg);text-decoration:none}.nav a[aria-current=page]{color:var(--fg);box-shadow:inset 0 -2px 0 var(--fg)}.tools{margin-left:auto;display:flex;align-items:center;gap:6px}main{max-width:1440px;margin:0 auto;padding:16px}footer{max-width:1440px;margin:0 auto;padding:4px 16px 28px;display:flex;flex-wrap:wrap;gap:4px 16px;font:11px var(--mono);color:var(--fg-3)}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.bar .grow{flex:1}.count{font:11px var(--mono);color:var(--fg-3);white-space:nowrap}.board{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:clip}.board+.board{margin-top:12px}.tile{grid-column:span 12;display:flex;flex-direction:column;min-width:0;background:var(--surface);overflow:clip}.tile.s8{grid-column:span 8}.tile.s6{grid-column:span 6}.tile.s4{grid-column:span 4}.tile.r2{grid-row:span 2}.tile-head{display:flex;align-items:center;gap:12px;min-height:34px;padding:0 12px;border-bottom:1px solid var(--line)}.tile-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-label b{font-weight:500;color:var(--fg)}.tile-meta{margin-left:auto;display:flex;align-items:center;gap:12px;font:11px var(--mono);color:var(--fg-3);white-space:nowrap}.tile-meta a:hover{color:var(--fg)}.tile-body{flex:1;min-width:0;padding:12px}.tile-body.flush{padding:0}.tile.flash{box-shadow:inset 0 0 0 1px var(--fg)}.stick{position:sticky;top:calc(var(--header-h) + 12px)}.hint{display:none;margin:0;font:12px/1.5 var(--sans);color:var(--fg-2)}:root[data-explain] .hint{display:block}.tile>.hint{padding:8px 12px;border-bottom:1px solid var(--line)}.metric .hint{margin-top:6px;white-space:normal}.btn[aria-pressed=true]{color:var(--bg);background:var(--fg);border-color:var(--fg)}@media (max-width: 1100px){.tile.s8,.tile.s4{grid-column:span 12}.tile.r2{grid-row:auto}}@media (max-width: 760px){.tile.s6{grid-column:span 12}}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0 -1px -1px 0}.metric{padding:10px 12px 11px;min-width:0;box-shadow:inset -1px 0 0 var(--line),inset 0 -1px 0 var(--line)}.metric-value{margin-top:6px;font:500 22px/1.15 var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.03em;white-space:nowrap}.metric-value small{margin-left:4px;font-size:12px;font-weight:400;letter-spacing:0;color:var(--fg-3)}.metric-note{margin-top:3px;font:11px var(--mono);color:var(--fg-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{height:30px;padding:0 12px;text-align:left;white-space:nowrap;border-bottom:1px solid var(--line)}th{background:var(--surface)}th button{all:unset;cursor:pointer;display:inline-flex;gap:4px;align-items:center}th button:hover{color:var(--fg)}th button:focus-visible{outline:1px solid var(--fg)}th[aria-sort=ascending],th[aria-sort=descending]{color:var(--fg)}th.num,td.num{text-align:right}td.num,td.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}tbody tr:last-child td{border-bottom:0}tbody tr:hover>td{background:var(--raised)}tr.clickable{cursor:pointer}tr.clickable:focus-visible{outline:1px solid var(--fg);outline-offset:-1px}tr.open>td{background:var(--raised)}tr.pinned>td{font-weight:600}tr.group>td{height:26px;background:var(--raised)}tr.detail>td{height:auto;padding:12px;white-space:normal;background:var(--surface)}td.wrap{white-space:normal}td.strong{font-weight:600}.meter{display:inline-block;width:56px;height:4px;margin-right:10px;vertical-align:middle;background:var(--raised)}.meter>span{display:block;height:100%;background:var(--fg-3)}.meter>span.ok{background:var(--ok)}.meter>span.warn{background:var(--warn)}.meter>span.bad{background:var(--bad)}.rows{list-style:none;margin:0;padding:0}.rows>li{display:flex;align-items:center;gap:12px;min-height:30px;padding:0 12px;border-bottom:1px solid var(--line)}.rows>li:last-child{border-bottom:0}.rows>li:hover{background:var(--raised)}.rows .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rows .more{color:var(--fg-3);font:11px var(--mono)}.news>li{display:block;padding:8px 12px}.news .title{display:block;color:var(--fg);overflow-wrap:anywhere}.news .summary{margin-top:2px;color:var(--fg-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px;margin-top:3px;font:11px var(--mono);color:var(--fg-3)}.day{padding:7px 12px;background:var(--raised);border-bottom:1px solid var(--line);position:sticky;top:var(--header-h);z-index:2}.tag{padding:0 5px;border:1px solid var(--line-strong);border-radius:3px;font:10px/16px var(--mono);text-transform:uppercase;letter-spacing:.04em;color:var(--fg-2)}.tag.bad{color:var(--bad);border-color:currentColor}.tag.warn{color:var(--warn);border-color:currentColor}.kv{display:flex;flex-wrap:wrap;gap:8px 24px;margin-bottom:12px}.kv>div{min-width:0}.kv b{display:block;margin-top:3px;font:500 15px var(--mono);font-variant-numeric:tabular-nums}.kv b small{margin-left:3px;font-size:11px;font-weight:400;color:var(--fg-3)}.input,.select{height:28px;padding:0 10px;background:var(--surface);border:1px solid var(--line-strong);border-radius:4px;font:12px var(--mono)}.input{width:280px;max-width:100%}.input::placeholder{color:var(--fg-3)}.input:focus,.select:focus{outline:none;border-color:var(--fg-2)}.seg{display:inline-flex;flex-wrap:wrap;border:1px solid var(--line-strong);border-radius:4px;overflow:hidden}.seg button{height:26px;padding:0 10px;border:0;border-right:1px solid var(--line);background:none;font:12px var(--mono);color:var(--fg-2);cursor:pointer;white-space:nowrap}.seg button:last-child{border-right:0}.seg button:hover{color:var(--fg);background:var(--raised)}.seg button[aria-pressed=true]{color:var(--bg);background:var(--fg)}.seg button .n{margin-left:6px;opacity:.6}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:28px;padding:0 10px;background:var(--surface);border:1px solid var(--line-strong);border-radius:4px;font:12px var(--mono);color:var(--fg-2);cursor:pointer;white-space:nowrap}.btn:hover{color:var(--fg);border-color:var(--fg-3);text-decoration:none}.btn:disabled{cursor:default}.btn.bare{border-color:transparent;background:none}.btn.bare:hover{border-color:var(--line-strong)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}kbd{display:inline-block;min-width:18px;padding:0 4px;border:1px solid var(--line-strong);border-radius:3px;font:11px/16px var(--mono);text-align:center;color:var(--fg-2)}.dot{display:inline-block;flex:none;width:6px;height:6px;border-radius:50%;background:var(--fg-3)}.dot.ok{background:var(--ok)}.dot.degraded,.dot.stale,.dot.warn{background:var(--warn)}.dot.down,.dot.bad{background:var(--bad)}.dot.pending{background:none;box-shadow:inset 0 0 0 1px var(--fg-3)}.src{display:inline-flex;align-items:center;gap:6px;font:11px var(--mono);color:var(--fg-3);white-space:nowrap}.src a:hover{color:var(--fg)}.src.iso{font:13px var(--sans);color:var(--fg)}.banner{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:6px 10px;border:1px solid var(--line-strong);border-left:2px solid var(--warn);border-radius:4px;font:12px var(--mono);color:var(--fg-2);background:var(--surface)}.empty{padding:16px 12px;font:12px var(--mono);color:var(--fg-3)}.skeleton{display:block;background:var(--raised);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}.chart{position:relative;width:100%}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font:11px var(--mono);color:var(--fg-3)}.legend>span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.legend i{display:inline-block;width:8px;height:8px;border-radius:1px}.legend i.line{width:12px;height:0;border-top:2px solid;border-radius:0}.legend i.dash{width:12px;height:0;border-top:2px dashed;border-radius:0}.legend b{color:var(--fg);font-weight:500}.chart+.legend,.legend+.chart{margin-top:10px}.mixbar{display:flex;gap:1px;height:8px;min-width:80px}.mixbar>span{display:block;min-width:1px}.spark{display:block;overflow:visible}.spark path{fill:none;stroke:var(--fg-2);stroke-width:1.25}.spark circle{fill:var(--fg)}.uplot{font-family:var(--mono)}.u-cursor-pt{border-radius:50%}.tip{position:absolute;z-index:5;min-width:140px;padding:6px 8px;pointer-events:none;background:var(--surface);border:1px solid var(--line-strong);border-radius:4px;box-shadow:0 4px 14px #00000024;font:11px/1.55 var(--mono)}.tip-time{color:var(--fg-3)}.tip-row{display:flex;align-items:center;gap:6px}.tip-row i{flex:none;width:6px;height:6px;border-radius:1px}.tip-row b{margin-left:auto;padding-left:14px;font-weight:500;font-variant-numeric:tabular-nums}.map svg{display:block;width:100%;height:auto}.map .land{fill:var(--raised)}.map .borders{fill:none;stroke:var(--line-strong);stroke-width:.5}.map circle{stroke:var(--surface);stroke-width:1.5;cursor:pointer}.map circle.full{fill:var(--ok)}.map circle.reduced{fill:var(--warn)}.map circle.offline{fill:var(--bad)}.map circle.unknown{fill:var(--fg-3)}.map circle:hover,.map circle.active{stroke:var(--fg)}.map-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 12px;border-top:1px solid var(--line)}.map-foot .grow{flex:1}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px 16px;margin:12px 0 0}.facts div{min-width:0}.facts dt{font:500 10px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-3)}.facts dd{margin:2px 0 0;overflow-wrap:anywhere}.overlay{position:fixed;inset:0;z-index:20;display:grid;place-items:start center;padding-top:14vh;background:#00000073}.dialog{width:min(380px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;overflow:hidden}.keys{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;padding:12px;align-items:center;font:12px var(--mono);color:var(--fg-2)}@media (max-width: 760px){.header-row{flex-wrap:wrap;height:auto;gap:0 12px;padding:0 12px}.brand{height:44px}.nav{order:3;width:100%;height:36px;margin:0 -9px}main{padding:12px}.hide-sm{display:none}th,td{padding:0 8px}.input{width:100%}}@media (prefers-reduced-motion: reduce){.spin,.skeleton{animation:none}}
