@font-face{font-family:Nunito;font-weight:700;font-display:swap;src:url(./Nunito-Bold-BnT4jNLs.ttf) format("truetype")}@font-face{font-family:Nunito;font-weight:800;font-display:swap;src:url(./Nunito-ExtraBold-crwyulWK.ttf) format("truetype")}:root{--bg0: #101419;--top: #29353a;--surf: #192029;--surf2: #212d31;--raised: #293942;--line: #31414a;--text: #ffffff;--text2: #9caebd;--text3: #7b8e9c;--ice: #5ab2ef;--ice-d: #3a92d6;--warn: #efb642;--alarm: #ff5d5a;--alarm-top: #4a2021;--warn-bg: #3a2d10;--ice-bg: #19354a;--alarm-bg: #3a1821;--r-card: 14px;--r-btn: 12px;--gutter: 16px;--nav-h: 64px;--bar-h: 56px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}html,body{margin:0;padding:0}body{font-family:Nunito,system-ui,-apple-system,sans-serif;font-weight:700;font-size:16px;line-height:1.35;color:var(--text);background:linear-gradient(180deg,var(--top) 0,var(--bg0) 460px) no-repeat,var(--bg0);background-color:var(--bg0);min-height:100vh;min-height:100dvh;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}body.alarm-bg{background:linear-gradient(180deg,var(--alarm-top) 0,var(--bg0) 460px) no-repeat,var(--bg0)}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--ice)}h1,h2,h3{margin:0;font-weight:800}h1{font-size:22px}h2{font-size:18px}h3{font-size:16px}p{margin:0}.x{font-weight:800}.muted{color:var(--text2)}.faint{color:var(--text3)}.small{font-size:14px}.tiny{font-size:12px}.ice{color:var(--ice)}.warn{color:var(--warn)}.alarm{color:var(--alarm)}.num{font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1 1 auto;min-width:0}.stack{display:flex;flex-direction:column;gap:12px}.stack.tight{gap:8px}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.center{text-align:center}.hidden{display:none!important}.app{min-height:100vh;min-height:100dvh}.page{padding:12px calc(var(--gutter) + var(--safe-r)) 24px calc(var(--gutter) + var(--safe-l));max-width:560px;margin:0 auto}.has-nav .page{padding-bottom:calc(var(--nav-h) + var(--safe-b) + 24px)}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:8px;min-height:calc(var(--bar-h) + var(--safe-t));padding:var(--safe-t) calc(8px + var(--safe-r)) 0 calc(8px + var(--safe-l));background:var(--top);border-bottom:1px solid transparent}.topbar.alarm{background:var(--alarm-top)}.topbar .title{flex:1 1 auto;min-width:0;font-size:20px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .title.alarm{color:var(--alarm)}.topbar .logo{width:32px;height:32px;border-radius:8px;margin:0 4px 0 8px;flex:none}.iconbtn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 6px;border:0;border-radius:var(--r-btn);background:transparent;color:var(--ice);cursor:pointer}.iconbtn:active{background:var(--raised)}.topbar .right{display:flex;align-items:center;gap:4px;color:var(--text2);font-size:14px}.navbar{position:fixed;left:0;right:0;bottom:0;z-index:10;display:flex;justify-content:space-around;height:calc(var(--nav-h) + var(--safe-b));padding:0 var(--safe-r) var(--safe-b) var(--safe-l);background:var(--bg0);border-top:1px solid var(--line)}.navbar a{position:relative;flex:1 1 0;max-width:140px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text2);text-decoration:none;font-size:13px;font-weight:800}.navbar a.on{color:var(--ice)}.navbar a.on:before{content:"";position:absolute;top:-1px;left:22%;right:22%;height:3px;border-radius:0 0 3px 3px;background:var(--ice)}.navbar .badge{position:absolute;top:6px;left:calc(50% + 4px);min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--warn);color:var(--bg0);font-size:12px;line-height:20px;text-align:center}.navbar .badge.alarm{background:var(--alarm)}.card{background:linear-gradient(180deg,var(--surf2),var(--surf));border:1px solid var(--line);border-radius:var(--r-card);padding:14px}.card.tap{cursor:pointer;display:block;color:inherit;text-decoration:none}.card.tap:active{border-color:var(--ice-d)}.card.warn{border-color:var(--warn)}.card.alarm{border-color:var(--alarm)}.card.dim{opacity:.55}.card.dashed{background:transparent;border-style:dashed}.card .cap{color:var(--text2);font-size:14px}.card.flat{padding:0;overflow:hidden}.section-title{color:var(--text2);font-size:14px;font-weight:800;margin:18px 4px 8px;text-transform:none}.section-title:first-child{margin-top:4px}.strip{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 14px;border-radius:24px;background:var(--ice-bg);color:var(--ice);font-size:16px;font-weight:800;border:0;width:100%;text-align:left;text-decoration:none}.strip.warn{background:var(--warn-bg);color:var(--warn)}.strip.alarm{background:var(--alarm-bg);color:var(--alarm)}.strip .grow{overflow:hidden;text-overflow:ellipsis}button.strip,a.strip{cursor:pointer}.state{display:flex;align-items:center;gap:8px;font-weight:800;font-size:17px}.state .dot{width:12px;height:12px;border-radius:6px;background:var(--ice);flex:none;margin:0 2px}.state .dot.idle{background:var(--text3)}.state.warn{color:var(--warn)}.state.alarm{color:var(--alarm)}.big{font-size:40px;font-weight:800;line-height:1;letter-spacing:-.5px}.big .unit{font-size:18px;color:var(--text2);margin-left:4px;letter-spacing:0}.mid{font-size:28px;font-weight:800;line-height:1.05}.mid .unit{font-size:15px;color:var(--text2);margin-left:3px}.bar{height:10px;border-radius:5px;background:var(--bg0);overflow:hidden}.bar>i{display:block;height:100%;border-radius:5px;background:var(--ice)}.bar.warn>i{background:var(--warn)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tile{padding:10px 12px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border-radius:24px;border:1px solid var(--line);background:var(--raised);color:var(--text);font-weight:800;font-size:16px;cursor:pointer;text-decoration:none;user-select:none;-webkit-user-select:none}.btn:active{background:var(--line)}.btn.primary{background:var(--ice);border-color:var(--ice);color:var(--bg0)}.btn.primary:active{background:var(--ice-d);border-color:var(--ice-d)}.btn.ghost{background:transparent}.btn.danger{background:var(--alarm);border-color:var(--alarm);color:var(--bg0)}.btn.block{width:100%}.btn.sm{min-height:40px;padding:0 14px;font-size:15px}.btn[disabled]{opacity:.45;cursor:default}.sel{display:flex;align-items:center;gap:10px;min-height:64px;padding:8px 8px 8px 14px}.sel .label{flex:1 1 auto;min-width:0;font-size:17px;overflow:hidden;text-overflow:ellipsis}.sel.stacked{flex-direction:column;align-items:stretch;gap:6px;padding:8px 0;min-height:0}.sel.stacked .label{font-size:14px;color:var(--text2)}.sel.stacked .ctl{justify-content:space-between}.sel.stacked .val{flex:1 1 auto}.sel .label .tiny{display:block;color:var(--text3)}.sel .ctl{display:flex;align-items:center;gap:6px;flex:none}.sel .val{min-width:92px;text-align:center;font-weight:800;font-size:16px}.arrow{width:48px;height:44px;border-radius:var(--r-btn);border:0;background:var(--raised);color:var(--ice);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.arrow:active{background:var(--line)}.arrow[disabled]{color:var(--text3);cursor:default;background:var(--raised);opacity:.7}.list>.sel+.sel,.list>.li+.li{border-top:1px solid var(--line)}.hold{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:56px;padding:0 22px;border-radius:28px;border:0;background:var(--alarm);color:var(--bg0);font-weight:800;font-size:18px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none}.hold.ice{background:var(--ice)}.hold svg.ring{flex:none}.hold .ring circle.track{stroke:#10141940}.hold .ring circle.prog{stroke:var(--bg0);transition:none}.hold.block{width:100%}.field{display:flex;flex-direction:column;gap:6px}.field label{color:var(--text2);font-size:14px}.input{min-height:48px;padding:0 14px;border-radius:var(--r-btn);border:1px solid var(--line);background:var(--bg0);color:var(--text);font-size:17px;width:100%}.input:focus{outline:2px solid var(--ice);outline-offset:-1px;border-color:var(--ice)}.input.bad{border-color:var(--warn)}.input.mono,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:600}.err{color:var(--warn);font-size:14px;display:flex;gap:6px;align-items:center}.li{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 14px;color:inherit;text-decoration:none}.li .ico{flex:none;width:24px;display:flex;justify-content:center}.li .meta{color:var(--text3);font-size:13px}a.li:active{background:var(--raised)}.seg{display:flex;gap:6px;overflow-x:auto;padding:2px;scrollbar-width:none}.seg::-webkit-scrollbar{display:none}.seg button{flex:none;min-height:40px;padding:0 14px;border-radius:20px;border:1px solid var(--line);background:transparent;color:var(--text2);font-weight:800;cursor:pointer}.seg button.on{background:var(--ice-bg);border-color:var(--ice-d);color:var(--ice)}.overlay{position:fixed;inset:0;z-index:50;background:#101419e0;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:480px;background:linear-gradient(180deg,var(--surf2),var(--surf));border:1px solid var(--line);border-bottom:0;border-radius:20px 20px 0 0;padding:18px calc(var(--gutter) + var(--safe-r)) calc(18px + var(--safe-b)) calc(var(--gutter) + var(--safe-l))}.pin-dots{display:flex;justify-content:center;gap:18px;margin:14px 0 18px}.pin-dots i{width:18px;height:18px;border-radius:9px;border:2px solid var(--text2)}.pin-dots i.on{background:var(--ice);border-color:var(--ice)}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.keypad button{min-height:60px;border-radius:16px;border:1px solid var(--line);background:var(--raised);font-size:26px;font-weight:800;cursor:pointer}.keypad button:active{background:var(--line)}.keypad button.ok{background:var(--ice);color:var(--bg0);border-color:var(--ice);font-size:18px}.keypad button.fn{font-size:16px;color:var(--text2)}.toast{position:fixed;left:50%;transform:translate(-50%);z-index:60;bottom:calc(var(--nav-h) + var(--safe-b) + 14px);max-width:calc(100% - 32px);display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:24px;background:var(--raised);border:1px solid var(--line);font-size:15px}.toast.warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn)}.toast.ok{background:var(--ice-bg);color:var(--ice);border-color:var(--ice-d)}.chart{width:100%;min-height:180px}.chart .u-legend{display:none}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--text2)}.legend i{display:inline-block;width:14px;height:4px;border-radius:2px;vertical-align:middle;margin-right:6px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;color:var(--text2);font-weight:800;padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:6px 8px;border-bottom:1px solid var(--line);white-space:nowrap}.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}.console{background:var(--bg0);border:1px solid var(--line);border-radius:var(--r-btn);padding:10px 12px;min-height:240px;max-height:50vh;overflow-y:auto;font-size:13px;white-space:pre-wrap;word-break:break-word}.console .cmd{color:var(--ice)}.console .bad{color:var(--warn)}.kv{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:15px}.kv dt{color:var(--text2)}.kv dd{margin:0;text-align:right}.guide ol{margin:8px 0 0;padding-left:22px}.guide li{margin:6px 0}.share-ico{display:inline-flex;vertical-align:-4px;color:var(--ice)}.login{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center}.login .logo{width:88px;height:88px;border-radius:20px;margin:0 auto 18px;display:block}.navbar a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}@media(max-width:360px){.navbar a{font-size:12px}.sel .val{min-width:72px;font-size:15px}.arrow{width:44px}.big{font-size:34px}}.report{background:#fff;color:#000;min-height:100vh}.report .paper{max-width:800px;margin:0 auto;padding:24px 20px 40px}.report h1{font-size:22px}.report table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}.report th,.report td{text-align:left;border-bottom:1px solid #bbb;padding:5px 6px;vertical-align:top}.report .tag{font-weight:800}.report .sign{margin-top:36px;border-top:1px solid #000;padding-top:6px;width:60%;font-size:13px}.report .noprint{margin-bottom:16px}@media print{.noprint{display:none!important}body{background:#fff!important}.report .paper{padding:0}}.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}
