:root{--chrome:#131a24;--chrome-2:#0e141d;--chrome-line:#25303f;--chrome-hi:#33445a;--chrome-ink:#e9eff7;--chrome-sub:#93a3b8;--chrome-faint:#61728a;--chrome-active:#1b2634;--bg:#f4f6fa;--surface:#fff;--surface-2:#f8fafc;--surface-3:#eef2f7;--line:#e7ebf1;--line-2:#dce2ea;--ink:#18212e;--sub:#586576;--faint:#93a0b1;--brand:#2f6bed;--brand-ink:#fff;--brand-soft:#e9f0fe;--brand-deep:#1e50c4;--run:#0e9f6a;--run-soft:#e4f6ee;--stop:#8794a6;--warm:#dd8b12;--warm-soft:#fdf1dd;--hot:#e5463a;--hot-soft:#fdeae8;--heat-cool-bg:#e4f6ee;--heat-cool-ink:#0c7a4f;--heat-warm-bg:#fdf1dd;--heat-warm-ink:#b0701a;--heat-hot-bg:#fdeae8;--heat-hot-ink:#c5342a;--r:14px;--r-sm:9px;--r-xs:6px;--sh:0 1px 3px #141c2812,0 1px 2px #141c280d;--sh-md:0 8px 26px #141c281a,0 2px 6px #141c280f;--f-body:"Pretendard","Malgun Gothic","맑은 고딕",system-ui,-apple-system,"Segoe UI",sans-serif;--f-mono:ui-monospace,"IBM Plex Mono","Consolas","D2Coding","DejaVu Sans Mono",monospace;--f-disp:"Chakra Petch","Pretendard","Malgun Gothic",system-ui,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--f-body);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.55}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}.muted{color:var(--faint)}.spin{border:2px solid var(--line-2);border-top-color:var(--brand);vertical-align:-2px;border-radius:50%;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes blink{50%{opacity:.3}}.shell{grid-template-columns:236px 1fr;min-height:100vh;display:grid}.side{background:linear-gradient(180deg,var(--chrome),var(--chrome-2));border-right:1px solid var(--chrome-line);height:100vh;color:var(--chrome-ink);flex-direction:column;padding:16px 12px;display:flex;position:sticky;top:0}.brand{flex-direction:column;align-items:flex-start;gap:10px;padding:8px 6px 18px;display:flex}.brandmark{align-items:center;gap:11px;display:flex}.brandmark .sym{background:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;padding:5px;display:flex;box-shadow:0 2px 10px #00000038}.brandmark .sym img{object-fit:contain;width:auto;max-width:100%;height:auto;max-height:100%;display:block}.brandmark .wm{font-family:var(--f-disp);letter-spacing:.5px;color:var(--chrome-ink);font-size:21px;font-weight:700}.brand .tag{color:var(--chrome-faint);letter-spacing:.02em;padding-left:2px;font-size:10.5px;font-weight:600}.nav-grp{color:var(--chrome-faint);letter-spacing:.13em;text-transform:uppercase;padding:15px 12px 6px;font-size:10px;font-weight:700}.nav-subh{color:var(--chrome-faint);letter-spacing:.04em;opacity:.85;padding:7px 12px 3px 20px;font-size:10px;font-weight:600}.nav-sub{border-left:1px solid var(--chrome-line);margin-left:8px}.nav-sub .nav{padding-left:16px}.nav{color:var(--chrome-sub);cursor:pointer;border-left:3px solid #0000;border-radius:9px;align-items:center;gap:11px;margin-bottom:1px;padding:8.5px 12px;font-size:13.5px;font-weight:500;text-decoration:none;display:flex}.nav .i{text-align:center;opacity:.85;width:17px;font-size:14px}.nav:hover{background:var(--chrome-active);color:var(--chrome-ink);text-decoration:none}.nav.on{background:var(--chrome-active);color:#fff;border-left-color:var(--brand);font-weight:600}.nav .cnt{background:var(--hot);color:#fff;font-family:var(--f-mono);border-radius:9px;place-items:center;min-width:17px;height:17px;margin-left:auto;padding:0 5px;font-size:10px;font-weight:700;display:grid}.side .grow{flex:1}.side .me{border:1px solid var(--chrome-line);background:#ffffff08;border-radius:11px;align-items:center;gap:10px;padding:10px;display:flex}.side .me .av{color:#7a3d12;background:linear-gradient(145deg,#ffd089,#ff9d6b);border-radius:50%;flex-shrink:0;place-items:center;width:30px;height:30px;font-size:12px;font-weight:700;display:grid}.side .me b{color:var(--chrome-ink);font-size:12.5px}.side .me small{color:var(--chrome-faint);font-size:10.5px;display:block}.main{flex-direction:column;min-width:0;display:flex}.topbar{background:linear-gradient(180deg,var(--chrome),var(--chrome-2));border-bottom:1px solid var(--chrome-line);height:56px;color:var(--chrome-ink);z-index:6;flex-shrink:0;align-items:center;gap:16px;padding:0 22px;display:flex;position:sticky;top:0}.topbar .crumb{color:var(--chrome-sub);font-size:13px}.topbar .crumb b{color:var(--chrome-ink);font-weight:600}.topbar .live{color:#2ee6a6;font-size:12px;font-family:var(--f-mono);align-items:center;gap:7px;display:inline-flex}.topbar .live .d{background:#2ee6a6;border-radius:50%;width:8px;height:8px;animation:2.4s infinite pulse;box-shadow:0 0 10px #2ee6a699}.topbar .clock{font-family:var(--f-mono);color:var(--chrome-ink);letter-spacing:.04em;margin-left:auto;font-size:13px}.topbar .sep{background:var(--chrome-line);width:1px;height:22px}.topbar .co{color:var(--chrome-sub);font-size:12px}.topbar .co b{color:#7fb0ff;font-family:var(--f-mono);font-size:11px}.iconbtn{border:1px solid var(--chrome-line);height:34px;color:var(--chrome-sub);cursor:pointer;background:0 0;border-radius:9px;align-items:center;gap:6px;padding:0 12px;font-family:inherit;font-size:13px;display:inline-flex}.iconbtn:hover{color:#fff;background:var(--chrome-active)}.content{flex:1;min-width:0;padding:24px}.page-h{flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:20px;display:flex}.page-h h1{font-family:var(--f-disp);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:700}.page-h p{color:var(--sub);margin:4px 0 0;font-size:13px}.page-h .tools{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.error-banner{background:var(--hot-soft);color:var(--hot);border-radius:var(--r-sm);border:1px solid #f3c9c5;margin-bottom:16px;padding:11px 14px;font-size:13px}.empty{text-align:center;color:var(--faint);padding:44px}.btn{border:1px solid var(--line-2);background:var(--surface);color:var(--ink);border-radius:var(--r-sm);cursor:pointer;box-shadow:var(--sh);align-items:center;gap:7px;padding:8.5px 15px;font-family:inherit;font-size:13px;font-weight:600;transition:all .14s;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 4px 12px #2f6bed42}.btn.primary:hover{background:var(--brand-deep)}.btn.ghost{box-shadow:none;background:0 0}.btn.sm{padding:5px 11px;font-size:12px}.btn.danger{color:var(--hot);border-color:#f2c7c3}.btn.danger:hover{background:var(--hot-soft)}.badge{border-radius:20px;align-items:center;gap:6px;padding:3px 10px;font-size:11.5px;font-weight:700;display:inline-flex}.badge.run{background:var(--run-soft);color:var(--run)}.badge.stop,.badge.off{background:var(--surface-3);color:var(--sub)}.badge.on{background:var(--run-soft);color:var(--run)}.badge.alarm{background:var(--hot-soft);color:var(--hot)}.badge.warn{background:var(--warm-soft);color:var(--warm)}.badge.brand{background:var(--brand-soft);color:var(--brand-deep)}.lamp{background:var(--stop);border-radius:50%;flex-shrink:0;width:9px;height:9px}.lamp.run{background:var(--run)}.lamp.alarm{background:var(--hot)}.lamp.warn{background:var(--warm)}.kpis{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);padding:16px 18px}.kpi .t{color:var(--sub);align-items:center;gap:8px;font-size:12.5px;font-weight:500;display:flex}.kpi .t .ic{border-radius:8px;place-items:center;width:26px;height:26px;font-size:13px;display:grid}.kpi.r .ic{background:var(--run-soft);color:var(--run)}.kpi.s .ic{background:var(--surface-3);color:var(--sub)}.kpi.a .ic{background:var(--hot-soft);color:var(--hot)}.kpi.c .ic{background:var(--warm-soft);color:var(--warm)}.kpi .v{font-family:var(--f-mono);letter-spacing:-.02em;align-items:baseline;gap:6px;margin-top:8px;font-size:29px;font-weight:600;display:flex}.kpi .v small{color:var(--faint);font-size:13px;font-weight:500;font-family:var(--f-body)}.tablewrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}.cp-split{grid-template-columns:220px 1fr;align-items:start;gap:14px;display:grid}.cp-groups{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}.cp-groups ul{max-height:70vh;margin:0;padding:6px;list-style:none;overflow-y:auto}.cp-groups li{margin:0}.cp-groups li button{text-align:left;border-radius:var(--r-sm);cursor:pointer;width:100%;font-family:var(--f-body);color:var(--sub);background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;font-size:12.5px;font-weight:600;display:flex}.cp-groups li button:hover{background:var(--surface-2)}.cp-groups li button .chip{font-family:var(--f-mono)}.cp-groups li.on button{background:var(--accent,#2563eb);color:#fff}.cp-groups li.on button .chip{color:#fff;background:#ffffff38;border-color:#0000}@media (max-width:720px){.cp-split{grid-template-columns:1fr}}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:14px;display:flex}.tabs button{font-family:var(--f-disp);color:var(--sub);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 16px;font-size:13.5px;font-weight:700}.tabs button.on{color:var(--brand-deep,#1d4ed8);border-bottom-color:var(--brand,#2563eb)}.ok-banner{background:var(--run-soft);color:var(--run);border-radius:var(--r-sm);border:1px solid #b7e0c4;margin-bottom:16px;padding:11px 14px;font-size:13px}.authtool{border-bottom:1px solid var(--line);gap:6px;padding:8px;display:flex}.authtool select{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface-2);flex:1;min-width:0;padding:6px 8px;font-size:12px}.userlist{max-height:64vh;margin:0;padding:6px;list-style:none;overflow-y:auto}.userlist li{border-radius:var(--r-sm);align-items:center;gap:8px;display:flex}.userlist li.on{background:var(--brand-soft,#eef2ff)}.userlist li>input{margin-left:8px}.userlist li button{text-align:left;cursor:pointer;color:var(--ink);background:0 0;border:0;flex-direction:column;flex:1;align-items:flex-start;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.userlist li button small{color:var(--faint);font-family:var(--f-mono);font-size:11px;font-weight:400}table.permgrid td,table.permgrid th{padding:7px 10px}table.permgrid input[type=checkbox]{cursor:pointer;width:16px;height:16px}.permgrid .pgh{cursor:pointer;flex-direction:column;align-items:center;gap:3px;font-size:11px;display:inline-flex}.tabletop{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:13px 16px;display:flex}.tabletop h2{font-family:var(--f-disp);margin:0;font-size:15px;font-weight:700}.tabletop .chip{font-family:var(--f-mono);color:var(--faint);background:var(--surface-2);border:1px solid var(--line);border-radius:20px;padding:2px 9px;font-size:11px}.tabletop .r{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.tabletop input{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface-2);width:200px;padding:8px 12px;font-family:inherit;font-size:12.5px}.tw-scroll{overflow-x:auto}table.data{border-collapse:collapse;width:100%;font-size:13px}table.data th{background:var(--surface-2);text-align:left;color:var(--sub);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--line-2);white-space:nowrap;padding:10px 14px;font-size:11px;font-weight:700;position:sticky;top:0}table.data th.num,table.data td.num{text-align:right}table.data td{border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle;padding:11px 14px}table.data tbody tr:hover{background:var(--brand-soft)}table.data tbody tr:last-child td{border-bottom:none}table.data tr.alarm{background:#fff7f6}table.data tr.alarm:hover{background:#ffefed}table.data.selrows tbody tr{cursor:pointer}table.data.selrows tbody tr.sel,table.data.selrows tbody tr.sel:hover{background:var(--brand-soft)}table.data.selrows tbody tr.sel td{color:var(--brand-deep);font-weight:600}table.data.selrows tbody tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--brand)}.cellname b{font-weight:600}.cellname .c{font-family:var(--f-mono);color:var(--faint);font-size:10.5px}.heat{text-align:right;border-radius:var(--r-xs);min-width:56px;font-family:var(--f-mono);font-variant-numeric:tabular-nums;padding:4px 9px;font-weight:600;display:inline-block}.heat.cool{background:var(--heat-cool-bg);color:var(--heat-cool-ink)}.heat.warm{background:var(--heat-warm-bg);color:var(--heat-warm-ink)}.heat.hot{background:var(--heat-hot-bg);color:var(--heat-hot-ink)}.heat.na{color:var(--faint);background:var(--surface-3)}.gauge{background:var(--surface-3);border:1px solid var(--line);border-radius:5px;min-width:96px;height:7px;position:relative;overflow:hidden}.gauge i{background:linear-gradient(90deg,var(--run),var(--warm) 62%,var(--hot));height:100%;display:block}.gauge .mk{background:var(--hot);opacity:.5;width:2px;position:absolute;top:-2px;bottom:-2px;left:100%}.fchips{gap:4px;display:flex}.fchip{background:var(--surface-3);color:#aeb8c6;border:1px solid var(--line);border-radius:5px;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:9.5px;font-weight:700;display:grid}.fchip.on{background:var(--run-soft);color:var(--run);border-color:#bfe6d3}.fchip.on.dg{background:var(--hot-soft);color:var(--hot);border-color:#f3c9c9}.ctrl{gap:5px;display:inline-flex}.ctrl button{font-family:var(--f-disp);border-radius:var(--r-xs);border:1px solid var(--line-2);background:var(--surface);cursor:pointer;color:var(--sub);padding:5.5px 11px;font-size:11.5px;font-weight:600}.ctrl button.run.on{background:var(--run);border-color:var(--run);color:#fff}.ctrl button.stop.on{border-color:var(--hot);color:var(--hot);background:#fff}.ctrl button:disabled{opacity:.4;cursor:not-allowed}.seg{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-sm);padding:3px;display:inline-flex}.seg button{color:var(--sub);border-radius:var(--r-xs);cursor:pointer;background:0 0;border:0;padding:6px 13px;font-family:inherit;font-size:12.5px;font-weight:600}.seg button.on{background:var(--brand-soft);color:var(--brand-deep)}.filterbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.chipsel{border:1px solid var(--line-2);background:var(--surface);border-radius:var(--r-sm);color:var(--sub);box-shadow:var(--sh);cursor:pointer;align-items:center;gap:8px;padding:8px 13px;font-size:12.5px;font-weight:600;display:inline-flex}.chipsel b{color:var(--ink)}.almty{align-items:center;gap:7px;font-weight:600;display:inline-flex}.almty .dot{border-radius:50%;width:8px;height:8px}.sev-crit{color:var(--hot)}.sev-crit .dot{background:var(--hot)}.sev-warn{color:var(--warm)}.sev-warn .dot{background:var(--warm)}.sev-info{color:var(--brand-deep)}.sev-info .dot{background:var(--brand)}.sev-ok{color:var(--run)}.sev-ok .dot{background:var(--run)}.ack-pill{white-space:nowrap;border-radius:20px;padding:4px 10px;font-size:11.5px;font-weight:700}.ack-pill.no{background:var(--hot-soft);color:var(--hot)}.ack-pill.yes{background:var(--surface-3);color:var(--sub)}.field{flex-direction:column;gap:5px;display:flex}.field label{color:var(--sub);font-size:12px;font-weight:600}.field input,.field select{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);padding:9px 11px;font-family:inherit;font-size:13px}.field input:focus,.field select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.field .err{color:var(--hot);font-size:11.5px}.field.lock input,.field input:disabled,.field select:disabled{background:var(--surface-3);color:var(--faint);cursor:not-allowed}.field.fchk{justify-content:center}.field .chk{cursor:pointer;align-items:center;gap:9px;padding:8px 2px;display:flex}.field .chk span{color:var(--ink);font-size:13px;font-weight:600}.field .chk input[type=checkbox]{width:18px;height:18px;accent-color:var(--brand);cursor:pointer;flex:none;margin:0}.field .chk input:disabled{cursor:not-allowed}.field .chk input:disabled+span{color:var(--faint)}.modal-bd{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:50;background:#0c121c80;justify-content:center;align-items:center;padding:48px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:16px;width:100%;max-width:600px;margin:auto;position:relative;overflow:hidden;box-shadow:0 20px 60px #0a101c59}.modal .m-h{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:18px 22px;display:flex}.modal .m-h h2{font-family:var(--f-disp);margin:0;font-size:17px;font-weight:700}.modal .m-h .x{border:1px solid var(--line);background:var(--surface);cursor:pointer;width:32px;height:32px;color:var(--sub);border-radius:8px;margin-left:auto;font-size:16px}.modal .m-h .x:hover{background:var(--surface-2)}.modal .m-b{padding:22px}.form-grid{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.form-grid .full{grid-column:1/-1}.modal .m-f{border-top:1px solid var(--line);background:var(--surface-2);justify-content:flex-end;gap:8px;padding:16px 22px;display:flex}.modal .m-busy{z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffd1;flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex;position:absolute;inset:0}.modal .m-busy .spin{border-width:3px;width:34px;height:34px}.modal .m-busy .txt{color:var(--sub);font-size:13px;font-weight:600}.modal .m-busy .pbar{background:var(--surface-3);border-radius:6px;width:min(240px,72%);height:6px;position:relative;overflow:hidden}.modal .m-busy .pbar:before{content:"";background:var(--brand);border-radius:6px;width:40%;height:100%;animation:1.15s ease-in-out infinite indet;position:absolute;top:0;left:-40%}@keyframes indet{0%{left:-40%}to{left:100%}}.board{color:#e7eef8;background:radial-gradient(1100px 460px at 82% -12%,#5a8cff12,#0000 60%),linear-gradient(#0c1119,#0c1119);min-height:calc(100vh - 56px);margin:-24px;padding:24px}.board .page-h h1{color:#e7eef8}.board .page-h p{color:#8598ad}.board .b-strip{background:#1c2735;border:1px solid #1c2735;border-radius:12px;grid-template-columns:repeat(5,1fr);gap:1px;margin-bottom:20px;display:grid;overflow:hidden}.board .bs{background:#111825;align-items:center;gap:13px;padding:14px 18px;display:flex}.board .bs .lp{border-radius:50%;flex-shrink:0;width:13px;height:13px}.board .bs .lp.run{background:#2ee6a6;box-shadow:0 0 12px #2ee6a68c}.board .bs .lp.stop{background:#5f6c7e}.board .bs .lp.alarm{background:#ff4d4d;animation:1s infinite blink;box-shadow:0 0 14px #ff4d4d99}.board .bs .lp.warn{background:#ffb020;box-shadow:0 0 12px #ffb02080}.board .bs .lp.avg{background:#37c2d6;box-shadow:0 0 12px #37c2d666}.board .bs .n{font-family:var(--f-mono);font-size:25px;font-weight:600;line-height:1}.board .bs .k{color:#8598ad;font-size:11.5px}.board .bs .k b{color:#5d6d82;text-transform:uppercase;letter-spacing:.1em;font-size:9.5px;font-family:var(--f-mono);margin-top:2px;display:block}.board .seg{background:#151d29;border-color:#26303f}.board .seg button{color:#8598ad}.board .seg button.on{color:#cfe0ff;background:#1f2b3a}.board .iconbtn{color:#8598ad;border-color:#31404f}.board .iconbtn:hover{color:#e7eef8;background:#1a2431}.board .empty{color:#5d6d82}.board .grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.pcard{background:linear-gradient(#151d29,#111825);border:1px solid #26303f;border-radius:14px;padding:15px;position:relative;overflow:hidden}.pcard:before{content:"";pointer-events:none;background:repeating-linear-gradient(#0000 0 3px,#ffffff03 3px 4px);border-radius:14px;position:absolute;inset:0}.pcard.run{border-color:#1e3a34}.pcard.alarm{background:linear-gradient(#1e1417,#160f12);border-color:#4a2020}.pcard.alarm:after{content:"";pointer-events:none;border-radius:14px;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #ff4d4d52,inset 0 0 32px #ff4d4d1c}.pcard.comm{opacity:.72}.pcard .ph{align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.pcard .plamp{background:#5f6c7e;border-radius:50%;flex-shrink:0;width:12px;height:12px;margin-top:4px}.pcard.run .plamp{background:#2ee6a6;box-shadow:0 0 0 2px #2ee6a626,0 0 13px #2ee6a680}.pcard.alarm .plamp{background:#ff4d4d;animation:1s infinite blink;box-shadow:0 0 0 2px #ff4d4d33,0 0 15px #ff4d4d99}.pcard .pt{flex:1;min-width:0}.pcard .pt h3{color:#e7eef8;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:14.5px;font-weight:600;overflow:hidden}.pcard .pt .c{font-family:var(--f-mono);color:#5d6d82;font-size:10.5px}.pcard .pcomm{font-family:var(--f-mono);color:#8598ad;white-space:nowrap;border:1px solid #31404f;border-radius:5px;padding:3px 7px;font-size:10px}.pcard .pcomm.bad{color:#ffb020;background:#ffb02014;border-color:#4a3a18}.pcard .ro{align-items:flex-end;gap:10px;margin:4px 0 12px;display:flex}.pcard .ro .big{font-family:var(--f-mono);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:#e7eef8;text-shadow:0 0 20px #ffb02021;font-size:42px;font-weight:600;line-height:.9}.pcard.alarm .ro .big{color:#ff8a6b;text-shadow:0 0 20px #ff5a3c47}.pcard .ro .u{font-family:var(--f-mono);color:#8598ad;margin-bottom:5px;font-size:14px}.pcard .ro .set{text-align:right;margin-left:auto}.pcard .ro .set .l{color:#5d6d82;text-transform:uppercase;letter-spacing:.09em;font-size:9.5px;font-family:var(--f-mono)}.pcard .ro .set .v{font-family:var(--f-mono);color:#37c2d6;font-size:15px}.pcard .therm{background:#0c1119;border:1px solid #26303f;border-radius:6px;height:8px;margin-bottom:4px;overflow:hidden}.pcard .therm i{background:linear-gradient(90deg,#2ee6a6,#ffb020 62%,#ff5a3c);border-radius:6px;height:100%;display:block}.pcard .thx{font-family:var(--f-mono);color:#5d6d82;justify-content:space-between;margin-bottom:12px;font-size:9px;display:flex}.pcard .thx .o{color:#ff5a3c}.pcard .plamps{flex-wrap:wrap;gap:6px;margin-bottom:13px;display:flex}.pind{color:#5d6d82;font-size:11px;font-family:var(--f-mono);background:#0e141d;border:1px solid #26303f;border-radius:6px;align-items:center;gap:6px;padding:4px 9px;display:inline-flex}.pind .b{background:#2a3444;border-radius:50%;width:7px;height:7px}.pind.on{color:#e7eef8;border-color:#1e3a34}.pind.on .b{background:#2ee6a6;box-shadow:0 0 8px #2ee6a680}.pind.dg.on{color:#ffb3a6;border-color:#4a2020}.pind.dg.on .b{background:#ff4d4d;box-shadow:0 0 8px #ff4d4d99}.pcard .pctrl{align-items:center;gap:8px;display:flex}.rocker{background:#0d131c;border:1px solid #31404f;border-radius:9px;flex:1;display:flex;overflow:hidden}.rocker button{color:#8598ad;font-family:var(--f-disp);cursor:pointer;letter-spacing:.03em;background:0 0;border:0;flex:1;padding:9px 0;font-size:12.5px;font-weight:600;transition:all .14s}.rocker button.run.act{color:#eafff6;background:linear-gradient(#12855a,#0e6a48);box-shadow:inset 0 0 0 1px #2ee6a64d}.rocker button.stop.act{color:#ffecec;background:linear-gradient(#8a2a2a,#6f2020)}.rocker button:hover:not(.act):not(:disabled){color:#e7eef8}.rocker button:disabled{opacity:.45;cursor:not-allowed}.setbtn{color:#8598ad;cursor:pointer;background:#0d131c;border:1px solid #31404f;border-radius:9px;width:42px;height:38px;font-size:15px}.setbtn:hover:not(:disabled){color:#37c2d6}.setbtn:disabled{opacity:.45;cursor:not-allowed}.pcard .pf{font-family:var(--f-mono);color:#5d6d82;justify-content:space-between;margin-top:11px;font-size:9.5px;display:flex}.pcard .pmsg{font-family:var(--f-mono);color:#8598ad;min-height:1px;margin-top:9px;font-size:11px}.pcard .setrow{gap:8px;margin-top:9px;display:flex}.pcard .setrow input{color:#e7eef8;font-family:var(--f-mono);background:#0d131c;border:1px solid #31404f;border-radius:8px;flex:1;padding:7px 10px;font-size:13px}.pcard .setrow input:focus{border-color:#37c2d6;outline:none}.board .tablewrap{box-shadow:none;background:#111825;border-color:#26303f}.board .tabletop{border-color:#26303f}.board .tabletop h2{color:#e7eef8}.board .tabletop .chip,.board table.data th{color:#8598ad;background:#0f1520;border-color:#26303f}.board table.data td{color:#cdd7e5;border-color:#1c2735}.board table.data tbody tr:hover{background:#16202e}.board .heat.cool{color:#48e0a8;background:#2ee6a621}.board .heat.warm{color:#f0b558;background:#ffb02024}.board .heat.hot{color:#ff8a6b;background:#ff5a3c29}.board .heat.na{color:#5d6d82;background:#1a2431}.board .gauge{background:#0c1119;border-color:#26303f}.board .fchip{color:#5d6d82;background:#141c27;border-color:#26303f}.board .badge.stop{color:#8598ad;background:#1a2431}.board .ctrl button{color:#8598ad;background:#0d131c;border-color:#31404f}.login{grid-template-columns:1.25fr 1fr;min-height:100vh;display:grid}.login .hero{background:#0b1220;position:relative;overflow:hidden}.login .hero .img{background:url(/login-hero.png) 50% 42%/cover no-repeat;position:absolute;inset:0;transform:scale(1.02)}.login .hero .scrim{background:linear-gradient(#090f1a9e 0%,#090f1a26 34%,#090e18b8 78%,#080c14f0 100%),radial-gradient(900px 500px at 20% 90%,#2f6bed38,#0000 60%);position:absolute;inset:0}.login .hero .inner{flex-direction:column;height:100%;padding:40px 46px;display:flex;position:relative}.login .hero .brand{flex-direction:column;align-items:flex-start;gap:13px;padding:0;display:flex}.login .hero .brandmark .sym{border-radius:13px;width:50px;height:50px;padding:6px;box-shadow:0 8px 26px #00000052}.login .hero .brandmark .wm{color:#fff;font-size:27px}.login .hero .bmeaning{color:#c4d2e6;letter-spacing:.01em;font-size:12.5px;font-weight:500}.login .hero .mid{margin-top:auto}.login .hero .eyebrow{font-family:var(--f-mono);letter-spacing:.16em;color:#7fb0ff;text-transform:uppercase;background:#2f6bed24;border:1px solid #5a8cff4d;border-radius:20px;align-items:center;gap:8px;margin-bottom:20px;padding:6px 12px;font-size:11.5px;display:inline-flex}.login .hero .eyebrow .d{background:#2ee6a6;border-radius:50%;width:7px;height:7px;animation:2.2s infinite pulse;box-shadow:0 0 10px #2ee6a6b3}.login .hero h1{font-family:var(--f-disp);color:#fff;letter-spacing:-.01em;text-shadow:0 2px 24px #0006;margin:0;font-size:38px;font-weight:700;line-height:1.14}.login .hero h1 .hl{color:#ff7a45}.login .hero p.lede{color:#c3d0e2;max-width:30em;margin:16px 0 26px;font-size:15px;line-height:1.6}.feats{flex-wrap:wrap;gap:10px;display:flex}.feat{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#dbe6f4;background:#1018258c;border:1px solid #7896be33;border-radius:11px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:500;display:inline-flex}.feat .ic{color:#5a8cff}.login .hero .lfoot{color:#7d8ea6;align-items:center;gap:18px;margin-top:30px;font-size:11.5px;display:flex}.login .formside{background:linear-gradient(#131a24,#0e141d);border-left:1px solid #26303f;justify-content:center;align-items:center;padding:40px 30px;display:flex}.loginbox{width:100%;max-width:360px}.loginbox h2{font-family:var(--f-disp);color:#eaf0f8;margin:0 0 6px;font-size:24px;font-weight:700}.loginbox .sub{color:#8fa0b5;margin:0 0 28px;font-size:13.5px}.loginbox .field{margin-bottom:16px}.loginbox label{color:#a8b6c9;font-size:12.5px}.loginbox input{color:#eaf0f8;background:#0f1621;border:1px solid #2a3646;border-radius:10px;padding:12px 13px;font-family:inherit;font-size:14px}.loginbox input::placeholder{color:#5d6d82}.loginbox input:focus{background:#111a27;border-color:#2f6bed;outline:none;box-shadow:0 0 0 3px #2f6bed38}.loginbox .signin{justify-content:center;width:100%;margin-top:8px;padding:13px;font-size:14.5px}.loginbox .rowline{color:#8fa0b5;justify-content:space-between;align-items:center;margin-top:16px;font-size:12.5px;display:flex}.loginbox .rowline label{cursor:pointer;color:#a8b6c9;align-items:center;gap:7px;margin:0;display:flex}.loginbox .rowline a{color:#7fb0ff}.loginbox .brandfoot{color:#5d6d82;border-top:1px solid #232e3d;margin-top:36px;padding-top:18px;font-size:11.5px;line-height:1.7}.loginbox .brandfoot b{color:#8fa0b5;font-weight:600}.loginbox .brandfoot .links{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.loginbox .brandfoot .links a{color:#8fa0b5;font-weight:600;text-decoration:none}.loginbox .brandfoot .links a:hover{color:#c9d4e2;text-decoration:underline}.loginbox .lerr{color:#ff9d86;background:#ff5a3c1f;border:1px solid #ff5a3c59;border-radius:9px;margin-bottom:16px;padding:10px 13px;font-size:12.5px}.loginbox .lnotice{color:#ffcf7a;background:#ffb0201f;border:1px solid #ffb02061;border-radius:9px;margin-bottom:16px;padding:10px 13px;font-size:12.5px}.mobilebrand{display:none}@media (max-width:920px){.login{grid-template-columns:1fr}.login .hero{display:none}.login .formside{border-left:0}.mobilebrand{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:26px;display:flex}.mobilebrand .brandmark .sym{width:42px;height:42px}.mobilebrand .brandmark .wm{color:#fff;font-size:22px}.mobilebrand small{color:#8fa0b5;font-size:11.5px;font-weight:500;display:block}}@media (max-width:860px){.shell{grid-template-columns:0 1fr}.side{display:none}.kpis{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
