:root{--header-gap:18px;--page-inline:20px;--button-inline:14px;--filter-inline:10px;--login-block:40px;--login-inline:44px;--logo-header:40px;--logo-login:96px;--logo-login-mobile:66px;--header-mobile:52px;--nav-min-width:70px;--grid-min-height:120px;--grid-page-offset:290px;--grid-number-width:34px;--chip-dot-size:6px;--login-side-width:460px;--login-form-width:380px;--login-main-inline:72px;--brand-bar-width:56px;--denied-max-width:640px;--denied-label-width:100px}*,:before,:after{box-sizing:border-box}#root{flex-direction:column;min-height:100vh;display:flex}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-size:var(--fs-13);letter-spacing:0}.nil{color:var(--color-disabled)}svg.ic{width:var(--sp-5);height:var(--sp-5);fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.logo-h,.logo-v{object-fit:contain;flex:none;align-self:flex-start;width:auto;display:block}.hdr .logo-h,.m-hdr .logo-h{align-self:center}.logo-h{height:var(--logo-header);aspect-ratio:268/77}.logo-v{height:var(--logo-login);aspect-ratio:153/110}.hdr{align-items:center;gap:var(--header-gap);height:var(--hdr-h);padding:0 var(--page-inline);background:var(--color-hdr-bg);border-bottom:2px solid var(--color-primary);flex:none;display:flex}.pname{white-space:nowrap;flex-direction:column;line-height:1.5;display:flex}.pname b{font-size:var(--fs-20);color:var(--color-ink);font-weight:700}.pname small{font-size:var(--fs-12);color:var(--color-ink-3)}.nav{align-items:stretch;gap:var(--sp-1);height:100%;margin-left:auto;display:flex}.nav svg.ic{width:var(--sp-4);height:var(--sp-4)}.nbtn{justify-content:center;align-items:center;gap:var(--sp-1);min-width:var(--nav-min-width);padding:0 var(--sp-2);margin:var(--sp-1) 0;border-radius:var(--radius);color:var(--color-ink-2);font:500 var(--fs-12)/1.5 var(--font-body);white-space:nowrap;background:0 0;border:1px solid #0000;flex-direction:column;text-decoration:none;display:flex;position:relative}.nbtn[aria-current=page]{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary);font-weight:700}.nbtn[aria-current=page]:after{content:"";background:var(--color-accent);height:3px;position:absolute;bottom:0;left:0;right:0}.nbtn[aria-disabled=true]{color:var(--color-disabled);cursor:default}.soon{font-size:var(--fs-11);padding:0 var(--sp-1);border-radius:var(--radius);border:1px solid;font-style:normal;font-weight:600;line-height:1.5}.user{align-items:center;gap:var(--sp-3);padding-left:var(--sp-4);margin-left:var(--sp-2);border-left:1px solid var(--color-rule);white-space:nowrap;height:60%;display:flex}.user .name{font-weight:600}.role{font:700 var(--fs-11)/1.5 var(--font-mono);letter-spacing:0;padding:0 var(--sp-2);border-radius:var(--radius);background:var(--color-primary-soft);color:var(--color-primary);border:1px solid var(--color-primary)}.role.viewer{background:var(--color-info-bg);color:var(--color-info);border-color:var(--color-info)}.m-hdr{align-items:center;gap:var(--sp-3);height:var(--header-mobile);padding:0 var(--sp-3);background:var(--color-hdr-bg);border-bottom:2px solid var(--color-primary);flex:none;display:flex}.m-hdr .logo-h{height:var(--ctl-h)}.m-hdr .t{font-weight:700;font-size:var(--fs-14);white-space:nowrap;line-height:1.5}.m-hdr .t small{font-weight:400;font-size:var(--fs-11);color:var(--color-ink-3);display:block}.m-hdr .u{gap:var(--sp-2);align-items:center;margin-left:auto;display:flex}.m-nav{background:var(--color-hdr-bg);border-bottom:1px solid var(--color-rule);flex:none;display:flex;overflow-x:auto}.m-nav a,.m-nav span{align-items:center;gap:var(--sp-1);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-13);color:var(--color-disabled);white-space:nowrap;border-bottom:3px solid #0000;flex:none;text-decoration:none;display:flex}.m-nav a{color:var(--color-ink-2)}.m-nav svg.ic{width:var(--sp-4);height:var(--sp-4)}.m-nav a[aria-current=page]{color:var(--color-primary);border-bottom-color:var(--color-accent);font-weight:700}.page{min-height:0;padding:var(--sp-4) var(--page-inline);flex-direction:column;flex:1;display:flex}.ptitle{justify-content:space-between;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-3);display:flex}.ptitle h1{font-size:var(--fs-20);margin:0;font-weight:700;line-height:1.5}.ptitle .meta{font-size:var(--fs-12);color:var(--color-ink-3);margin-top:var(--sp-1)}.filters{align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) var(--filter-inline);margin-bottom:var(--sp-3);background:var(--color-bg);border:1px solid var(--color-rule);border-radius:var(--radius);flex-wrap:wrap;display:flex}.filters .flabel{align-items:center;gap:var(--sp-2);font-size:var(--fs-12);color:var(--color-ink-2);display:flex}.filters .spacer{margin-left:auto}.seg{border:1px solid var(--color-input-line);border-radius:var(--radius);display:inline-flex;overflow:hidden}.seg button{height:calc(var(--ctl-h) - 2px);padding:0 var(--button-inline);font:400 var(--fs-12)/1 var(--font-body);letter-spacing:-.02em;color:var(--color-ink-2);background:var(--color-bg);cursor:pointer;border:0}.seg button+button{border-left:1px solid var(--color-input-line)}.seg button[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary);font-weight:600}.seg button:focus-visible{outline-offset:-2px}.kpis{background:var(--color-bg);border:1px solid var(--color-rule);border-radius:var(--radius);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.kpi{padding:var(--sp-2) var(--sp-4);border-right:1px solid var(--color-rule)}.kpi:last-child{border-right:0}.kpi .k{font-size:var(--fs-12);color:var(--color-ink-3)}.kpi .v{font-weight:600;font-size:var(--fs-20);font-variant-numeric:tabular-nums;line-height:1.5}.kpi.ok .v{color:var(--color-ok)}.kpi.bad .v{color:var(--color-bad)}.kpi.off .v{color:var(--color-off)}.gwrap{min-height:var(--grid-min-height);max-height:calc(100vh - var(--grid-page-offset));flex:0 auto}.grid{border-collapse:separate;border-spacing:0}.grid td.rn,.grid th.rn{width:var(--grid-number-width);text-align:right;color:var(--color-ink-3);font-size:var(--fs-12);border-left:3px solid #0000;background:var(--color-grid-head)!important}.grid tbody tr{cursor:default}.grid tbody tr.is-bad>td.rn{border-left-color:var(--color-bad)}.grid tbody tr.is-bad>td{background:var(--color-bad-row)}.grid tbody tr.is-bad>td.n24{color:var(--color-bad);font-weight:700}.grid tbody tr.is-off>td,.grid tbody tr.cont>td.dimc{color:var(--color-ink-3)}.grid td.mono{font-family:var(--font-mono);font-size:var(--fs-13);letter-spacing:0}.grid .logk{font-family:var(--font-mono);font-size:var(--fs-12);letter-spacing:0;color:var(--color-info)}.gstate{padding:var(--sp-6) var(--sp-4);text-align:center;color:var(--color-ink-3);background:var(--color-bg);border:1px solid var(--color-rule);border-radius:var(--radius)}.chip .chip-dot{width:var(--chip-dot-size);height:var(--chip-dot-size);background:currentColor;border-radius:50%}.chip.ok{background:var(--color-ok-bg);color:var(--color-ok)}.chip.bad{background:var(--color-bad-bg);color:var(--color-bad)}.chip.off{background:var(--color-off-bg);color:var(--color-off)}.chip.chip .MuiChip-icon{color:inherit}.statusbar{gap:var(--sp-1) var(--sp-4);min-height:var(--ctl-h-sm);padding:var(--sp-1) var(--sp-3);margin-top:var(--sp-2);font-size:var(--fs-12);color:var(--color-ink-3);border-top:1px solid var(--color-rule);flex-wrap:wrap;align-items:center;display:flex}.statusbar b{color:var(--color-ink-2);font-weight:600}.statusbar .push{margin-left:auto}.alert{gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-rule);border-radius:var(--radius);font-size:var(--fs-14);background:var(--color-bg);margin-bottom:var(--sp-4);border-left:4px solid;grid-template-columns:auto 1fr;align-items:start;display:grid}.alert svg.ic{width:var(--sp-5);height:var(--sp-5)}.alert.bad{border-left-color:var(--color-bad);background:var(--color-bad-bg)}.alert.bad svg{color:var(--color-bad)}.alert.info{border-left-color:var(--color-info);background:var(--color-info-bg)}.alert.info svg{color:var(--color-info)}.alert.warn{border-left-color:var(--color-warn);background:var(--color-warn-bg)}.alert.warn svg{color:var(--color-warn)}.alert.off{border-left-color:var(--color-off);background:var(--color-off-bg)}.alert.off svg{color:var(--color-off)}.login{grid-template-columns:var(--login-side-width) 1fr;flex:1;min-height:100vh;display:grid}.login-side{padding:var(--login-block) var(--login-inline);background:var(--color-bg);color:var(--color-ink);border-right:1px solid var(--color-rule);flex-direction:column;display:flex}.login-side h1{margin:auto 0 var(--sp-2);font-size:var(--fs-28);color:var(--color-primary);font-weight:700;line-height:1.5}.login-side h1:after{content:"";width:var(--brand-bar-width);background:var(--color-accent);height:4px;margin-top:var(--sp-4);display:block}.login-side .mod{font-size:var(--fs-15);color:var(--color-ink-2)}.login-side .foot{margin-top:var(--sp-6);padding-top:var(--sp-4);border-top:1px solid var(--color-rule);font-size:var(--fs-12);color:var(--color-ink-3)}.login-main{padding:var(--login-block) var(--login-main-inline);background:var(--color-surface);align-items:center;display:flex}.lform{width:var(--login-form-width);max-width:100%}.lform h2{margin:0 0 var(--sp-1);font-size:var(--fs-20);line-height:1.5}.lform .sub{margin:0 0 var(--sp-5);font-size:var(--fs-13);color:var(--color-ink-3)}.lfld{margin-bottom:var(--sp-4);display:block}.lfld>label{font-size:var(--fs-13);color:var(--color-ink-2);margin-bottom:var(--sp-2);font-weight:600;display:block}.lfld .MuiOutlinedInput-root{height:var(--ctl-h-lg);font-size:var(--fs-15);width:100%}.lfld .MuiOutlinedInput-input{padding:0 var(--sp-3)}.lfld .ferr{margin-top:var(--sp-1);font-size:var(--fs-12);color:var(--color-bad)}.MuiFormControlLabel-root.lremember{margin:0 0 var(--sp-4);color:var(--color-ink-2)}.lremember .MuiFormControlLabel-label{font-size:var(--fs-13)}.lremember .MuiCheckbox-root{padding:var(--sp-1);margin-right:var(--sp-1);color:var(--color-input-line)}.lremember .MuiCheckbox-root.Mui-checked{color:var(--color-primary)}.lremember .MuiCheckbox-root.Mui-focusVisible{outline:2px solid var(--color-focus);outline-offset:1px}.lform .help{margin-top:var(--sp-4);font-size:var(--fs-12);color:var(--color-ink-3)}.deny{max-width:var(--denied-max-width);background:var(--color-bg);border:1px solid var(--color-rule);border-top:4px solid var(--color-primary);border-radius:var(--radius);padding:var(--sp-5) var(--sp-6)}.deny .code{font:700 var(--fs-12) var(--font-mono);letter-spacing:0;color:var(--color-ink-3)}.deny h1{margin:var(--sp-2) 0 var(--sp-2);font-size:var(--fs-20);line-height:1.5}.deny p{margin:0 0 var(--sp-4);color:var(--color-ink-2)}.deny dl{grid-template-columns:var(--denied-label-width) 1fr;gap:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--color-surface);border-radius:var(--radius);display:grid}.deny dt{color:var(--color-ink-3)}.deny dd{margin:0;font-weight:600}.deny .row{gap:var(--sp-2);flex-wrap:wrap;display:flex}.boot{padding:var(--login-block);color:var(--color-ink-3)}@media (width<=640px){.page{padding:var(--sp-3)}.ptitle .meta{font-size:var(--fs-11)}.filters{gap:var(--sp-2)}.kpis{grid-template-columns:repeat(3,1fr);display:grid}.kpi{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--color-rule)}.gwrap{max-height:none}.grid.m th:nth-child(2),.grid.m td:nth-child(2){z-index:1;background:var(--color-bg);border-right:1px solid var(--color-rule);position:sticky;left:0}.grid.m th:nth-child(2){z-index:3;background:var(--color-grid-head)}.grid.m tbody tr:nth-of-type(2n)>td:nth-child(2){background:var(--color-zebra)}.grid.m tbody tr.is-bad>td:nth-child(2){background:var(--color-bad-row)}.hint-scroll{font-size:var(--fs-11);color:var(--color-ink-3);text-align:right;margin-top:var(--sp-1)}.login{grid-template-rows:auto 1fr;grid-template-columns:1fr}.login-side{padding:var(--sp-5) var(--sp-4);border-right:0;border-bottom:4px solid var(--color-accent)}.login-side .logo-v{height:var(--logo-login-mobile);margin-bottom:var(--sp-5)}.login-side h1{margin:0 0 var(--sp-1);font-size:var(--fs-20)}.login-side h1:after{display:none}.login-side .mod{font-size:var(--fs-13);color:var(--color-ink-3)}.login-side .foot{display:none}.login-main{padding:var(--sp-5) var(--sp-4) var(--sp-6);align-items:flex-start}.lform h2,.lform .sub{display:none}.reset-form h2{display:block}.deny{padding:var(--sp-5) var(--sp-4)}}
