:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-page:#0b0e14;--surface-1:#141822;--surface-2:#1b2130;--ink-1:#e9edf6;--ink-2:#a3adc2;--ink-muted:#6f7a90;--grid:#232a38;--axis:#333c50;--border:#ffffff14;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--s6:#008300;--s7:#9085e9;--s8:#e66767;--good:#0ca30c;--warn:#fab219;--serious:#ec835a;--critical:#d03b3b;--good-dim:#0ca30c24;--warn-dim:#fab21924;--serious-dim:#ec835a24;--critical-dim:#d03b3b29;--focus:#6ea8ff;--accent:var(--s1);--accent-ink:#fff;--font-sans:"Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", "JetBrains Mono", "D2Coding", Consolas, "Liberation Mono", monospace;--fs-xs:11px;--fs-sm:12px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:26px;--lh-tight:1.25;--lh-normal:1.55;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-sm:4px;--r-md:8px;--r-lg:12px;--shadow-1:0 1px 2px #0006;--shadow-2:0 6px 20px #00000073;--z-sticky:10;--z-overlay:100;--z-toast:200;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg-page)}body{background:var(--bg-page);min-height:100dvh;color:var(--ink-1);font-family:var(--font-sans);font-size:var(--fs-md);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:none;margin:0}#root{min-height:100dvh;padding-left:var(--safe-left);padding-right:var(--safe-right);flex-direction:column;display:flex}[hidden]{display:none!important}h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}h1{font-size:var(--fs-2xl);line-height:var(--lh-tight);font-weight:650}h2{font-size:var(--fs-xl);line-height:var(--lh-tight);font-weight:640}h3{font-size:var(--fs-lg);line-height:var(--lh-tight);font-weight:620}h4{font-size:var(--fs-md);line-height:var(--lh-tight);color:var(--ink-2);font-weight:620}ul,ol{margin:0;padding:0;list-style:none}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,kbd,pre,samp,.mono{font-family:var(--font-mono);font-variant-ligatures:none;font-size:.94em}.tabular{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}img,svg,video,canvas{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit;margin:0}button{cursor:pointer;background:var(--surface-2);color:var(--ink-1);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-3);touch-action:manipulation;min-height:36px;transition:background-color .12s,border-color .12s}button:hover:not(:disabled){background:#222a3b}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{background:var(--bg-page);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-2);min-height:34px}input::placeholder,textarea::placeholder{color:var(--ink-muted)}textarea{resize:vertical;line-height:1.45}input[type=number],input[type=text],input[type=password]{font-size:16px}input[type=number]{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}:focus:not(:focus-visible){outline:none}::selection{color:var(--ink-1);background:#3987e559}hr{border:0;border-top:1px solid var(--border);margin:var(--sp-4) 0}.app-shell{flex-direction:column;flex:auto;min-height:0;display:flex}.app-main{min-height:0;padding:var(--sp-4);padding-bottom:calc(var(--sp-4) + var(--safe-bottom));flex:auto}.row{align-items:center;gap:var(--sp-2);display:flex}.col{gap:var(--sp-2);flex-direction:column;display:flex}.grow{flex:auto;min-width:0}.muted{color:var(--ink-muted)}.dim{color:var(--ink-2)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}*{scrollbar-width:thin;scrollbar-color:var(--axis) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--axis);border:2px solid var(--bg-page);border-radius:6px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.ui-card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);min-width:0;box-shadow:var(--shadow-1);flex-direction:column;display:flex}.ui-card__head{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);display:flex}.ui-card__titles{flex:auto;min-width:0}.ui-card__title{font-size:var(--fs-md);font-weight:620;line-height:var(--lh-tight);color:var(--ink-1)}.ui-card__subtitle{font-size:var(--fs-sm);color:var(--ink-muted)}.ui-card__actions{align-items:center;gap:var(--sp-2);flex:none;display:flex}.ui-card__body{padding:var(--sp-4);min-width:0}.ui-card__body--flush{padding:0}.ui-card__foot{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--ink-2)}.ui-tabs{gap:var(--sp-1);padding:var(--sp-1);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);scrollbar-width:none;display:flex;overflow-x:auto}.ui-tabs::-webkit-scrollbar{display:none}.ui-tab{border-radius:var(--r-md);color:var(--ink-2);padding:var(--sp-2) var(--sp-4);white-space:nowrap;background:0 0;border:1px solid #0000;flex:none;font-weight:560}.ui-tab:hover:not(:disabled){background:var(--surface-2);color:var(--ink-1)}.ui-tab[aria-selected=true]{background:var(--surface-2);border-color:var(--border);color:var(--ink-1);box-shadow:inset 0 -2px 0 var(--accent)}.ui-tab__badge{min-width:18px;margin-left:var(--sp-2);background:var(--critical);color:var(--accent-ink);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;text-align:center;border-radius:9px;padding:0 5px;display:inline-block}.ui-field{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.ui-field__label{font-size:var(--fs-sm);color:var(--ink-2)}.ui-field__box{align-items:center;gap:var(--sp-1);padding-right:var(--sp-2);background:var(--bg-page);border:1px solid var(--border);border-radius:var(--r-sm);display:flex}.ui-field__box:focus-within{border-color:var(--focus)}.ui-field__input{min-width:0;padding:var(--sp-2);text-align:right;font-variant-numeric:tabular-nums;background:0 0;border:0;flex:auto}.ui-field__input:focus{outline:none}.ui-field__unit{color:var(--ink-muted);font-size:var(--fs-sm);flex:none}.ui-field__hint{font-size:var(--fs-xs);color:var(--ink-muted);min-height:1.2em}.ui-field--invalid .ui-field__box{border-color:var(--critical)}.ui-field--invalid .ui-field__hint{color:var(--critical)}.ui-field:has(.ui-field__input:disabled) .ui-field__box{opacity:.5}.ui-switch{align-items:center;gap:var(--sp-2);padding:var(--sp-1);color:var(--ink-1);background:0 0;border:0;display:inline-flex}.ui-switch:hover:not(:disabled){background:0 0}.ui-switch:disabled{opacity:.45;cursor:not-allowed}.ui-switch__track{background:var(--surface-2);border:1px solid var(--axis);border-radius:12px;flex:none;width:44px;height:24px;transition:background-color .14s,border-color .14s;position:relative}.ui-switch[aria-checked=true] .ui-switch__track{background:var(--good);border-color:var(--good)}.ui-switch__thumb{background:var(--ink-1);border-radius:50%;width:18px;height:18px;transition:transform .14s;position:absolute;top:2px;left:2px}.ui-switch[aria-checked=true] .ui-switch__thumb{transform:translate(20px)}.ui-switch__state{font-size:var(--fs-sm);color:var(--ink-muted)}.ui-gauge{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.ui-gauge__head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);display:flex}.ui-gauge__label{min-width:0;font-size:var(--fs-sm);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ui-gauge__value{font-size:var(--fs-sm);color:var(--ink-1);font-variant-numeric:tabular-nums;flex:none}.ui-gauge__state{margin-left:var(--sp-1);color:var(--ink-muted)}.ui-gauge__track{background:var(--surface-2);border:1px solid var(--border);border-radius:4px;height:8px;overflow:hidden}.ui-gauge__fill{background:var(--good);height:100%;transition:width .16s,background-color .16s}.ui-gauge--warn .ui-gauge__fill{background:var(--warn)}.ui-gauge--serious .ui-gauge__fill{background:var(--serious)}.ui-gauge--critical .ui-gauge__fill{background:var(--critical)}.ui-gauge--warn .ui-gauge__state{color:var(--warn)}.ui-gauge--serious .ui-gauge__state{color:var(--serious)}.ui-gauge--critical .ui-gauge__state{color:var(--critical)}.ui-statusbar{z-index:var(--z-sticky);align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);padding-top:calc(var(--sp-2) + var(--safe-top));background:var(--surface-1);border-bottom:1px solid var(--border);font-size:var(--fs-sm);color:var(--ink-2);flex-wrap:wrap;display:flex;position:sticky;top:0}.ui-statusbar__item{align-items:center;gap:var(--sp-2);display:inline-flex}.ui-statusbar__clock{color:var(--ink-1);font-variant-numeric:tabular-nums}.ui-statusbar__spacer{flex:auto}.ui-statusbar__estop{color:var(--critical);font-weight:640}.ui-dot{background:var(--ink-muted);border-radius:50%;flex:none;width:8px;height:8px}.ui-dot--open{background:var(--good)}.ui-dot--connecting,.ui-dot--reconnecting{background:var(--warn)}.ui-dot--fatal{background:var(--critical)}.ui-spinner-wrap{align-items:center;gap:var(--sp-2);color:var(--ink-2);font-size:var(--fs-sm);display:inline-flex}.ui-spinner{border-style:solid;border-color:var(--surface-2);border-top-color:var(--accent);border-radius:50%;flex:none;animation:.8s linear infinite ui-spin;display:inline-block}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-toasts{z-index:var(--z-toast);align-items:center;gap:var(--sp-2);padding:var(--sp-4);padding-bottom:calc(var(--sp-4) + var(--safe-bottom));pointer-events:none;flex-direction:column;display:flex;position:fixed;inset:auto 0 0}.ui-toast{pointer-events:auto;align-items:flex-start;gap:var(--sp-3);width:min(560px,100%);padding:var(--sp-3);background:var(--surface-2);border:1px solid var(--border);border-left:4px solid var(--ink-muted);border-radius:var(--r-md);box-shadow:var(--shadow-2);color:var(--ink-1);font-size:var(--fs-sm);animation:.16s ease-out ui-toast-in;display:flex}@keyframes ui-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.ui-toast--info{border-left-color:var(--s1)}.ui-toast--success{border-left-color:var(--good)}.ui-toast--warn{border-left-color:var(--warn)}.ui-toast--error{border-left-color:var(--critical)}.ui-toast__kind{font-size:var(--fs-xs);color:var(--ink-2);flex:none;padding-top:2px;font-weight:640}.ui-toast__msg{white-space:pre-wrap;word-break:break-word;flex:auto;min-width:0}.ui-toast__close{min-height:0;padding:0 var(--sp-1);color:var(--ink-muted);background:0 0;border:0;flex:none;line-height:1.2}.ui-toast__close:hover:not(:disabled){color:var(--ink-1);background:0 0}.ui-crash{align-items:flex-start;gap:var(--sp-3);margin:var(--sp-4);padding:var(--sp-5);background:var(--surface-1);border:1px solid var(--critical);border-radius:var(--r-lg);color:var(--ink-1);flex-direction:column;display:flex}.ui-crash__msg{width:100%;max-height:9em;color:var(--ink-2);font-family:var(--font-mono);font-size:var(--fs-sm);white-space:pre-wrap;word-break:break-word;overflow:auto}.dash{gap:var(--sp-4);flex-direction:column;min-width:0;display:flex}.dash-banner,.dash-error,.dash-empty{align-items:center;gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md);font-size:var(--fs-sm);margin:0;display:flex}.dash-banner{background:var(--warn-dim);border:1px solid var(--border);color:var(--ink-1)}.dash-banner>[aria-hidden]{color:var(--warn)}.dash-error{background:var(--critical-dim);border:1px solid var(--critical);color:var(--ink-1);flex-wrap:wrap}.dash-error button{min-height:30px;padding:var(--sp-1) var(--sp-3)}.dash-empty{color:var(--ink-2);padding:var(--sp-2) 0}.dash-chip{align-items:center;gap:var(--sp-1);padding:1px var(--sp-2);border:1px solid var(--border);background:var(--surface-2);color:var(--ink-2);font-size:var(--fs-xs);white-space:nowrap;border-radius:999px;flex:none;font-weight:600;line-height:1.6;display:inline-flex}.dash-chip>[aria-hidden]{font-size:9px;line-height:1}.dash-chip--good{background:var(--good-dim);color:var(--ink-1)}.dash-chip--good>[aria-hidden]{color:var(--good)}.dash-chip--warn{background:var(--warn-dim);color:var(--ink-1)}.dash-chip--warn>[aria-hidden]{color:var(--warn)}.dash-chip--critical{background:var(--critical-dim);color:var(--ink-1)}.dash-chip--critical>[aria-hidden]{color:var(--critical)}.dash-chip--unknown>[aria-hidden],.dash-chip--off>[aria-hidden]{color:var(--ink-muted)}.dash-tiles{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (min-width:720px){.dash-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1400px){.dash-tiles{grid-template-columns:repeat(8,minmax(0,1fr))}}.dash-tile{gap:var(--sp-1);min-width:0;padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);flex-direction:column;display:flex;position:relative;overflow:hidden}.dash-tile:before{content:"";background:var(--ink-muted);width:3px;position:absolute;inset:0 auto 0 0}.dash-tile--good:before{background:var(--good)}.dash-tile--warn:before{background:var(--warn)}.dash-tile--critical:before{background:var(--critical)}.dash-tile__label{font-size:var(--fs-sm);color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-weight:560;overflow:hidden}.dash-tile__value{align-items:baseline;gap:var(--sp-1);font-size:var(--fs-2xl);color:var(--ink-1);font-weight:640;line-height:1.15;display:flex}.dash-tile__unit{font-size:var(--fs-sm);color:var(--ink-2);font-weight:500}.dash-tile__status{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-2);display:flex}.dash-tile__icon{color:var(--ink-muted);font-size:10px;line-height:1}.dash-tile--good .dash-tile__icon{color:var(--good)}.dash-tile--warn .dash-tile__icon{color:var(--warn)}.dash-tile--critical .dash-tile__icon{color:var(--critical)}.dash-tile__word{color:var(--ink-1);font-weight:600}.dash-tile__note{padding:0 var(--sp-1);border-radius:var(--r-sm);background:var(--surface-2);color:var(--ink-2);font-size:var(--fs-xs);white-space:nowrap}.dash-tile--warn .dash-tile__note{background:var(--warn-dim);color:var(--ink-1)}.dash-tile--critical .dash-tile__note{background:var(--critical-dim);color:var(--ink-1)}.dash-tile__meta{font-size:var(--fs-xs);color:var(--ink-muted)}.dash-tile__sep{padding:0 var(--sp-1)}@media (max-width:640px){.dash-chart-card .ui-card__head{flex-wrap:wrap}.dash-chart-card .ui-card__titles,.dash-chart-card .ui-card__actions{flex:100%}.dash-chart-card .dash-ranges{width:100%}.dash-chart-card .dash-range{flex:1 1 0}}.dash-ranges{gap:2px;display:flex}.dash-range{min-height:30px;padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--fs-sm);background:0 0;border:1px solid #0000}.dash-range:hover:not(:disabled){background:var(--surface-2);color:var(--ink-1)}.dash-range[aria-pressed=true]{background:var(--surface-2);border-color:var(--border);color:var(--ink-1);box-shadow:inset 0 -2px 0 var(--accent);font-weight:620}.dash-chart{min-width:0;padding:var(--sp-2) var(--sp-2) var(--sp-3);position:relative}.dash-chart__canvas{touch-action:pan-y;cursor:crosshair;width:100%;display:block}.dash-chart__veil{background:color-mix(in srgb, var(--surface-1) 70%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.dash-tip{z-index:var(--z-sticky);pointer-events:none;min-width:148px;padding:var(--sp-2);background:var(--surface-2);border:1px solid var(--axis);border-radius:var(--r-md);box-shadow:var(--shadow-2);font-size:var(--fs-xs);color:var(--ink-2);will-change:transform;position:absolute;top:0;left:0}.dash-tip__title{font-size:var(--fs-sm);color:var(--ink-1);font-weight:620}.dash-tip__time{margin-bottom:var(--sp-1);color:var(--ink-muted)}.dash-tip__row{justify-content:space-between;gap:var(--sp-3);display:flex}.dash-tip__row>span:last-child{color:var(--ink-1)}.dash-acts{gap:var(--sp-2);flex-direction:column;display:flex}.dash-act{gap:var(--sp-2);padding:var(--sp-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;display:flex}.dash-act--on{border-color:color-mix(in srgb, var(--good) 45%, var(--border))}.dash-act__head{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.dash-act__name{min-width:0;font-size:var(--fs-md);flex:none}.dash-act__mode{font-size:var(--fs-xs);color:var(--ink-muted);flex:none}.dash-act__remain{font-size:var(--fs-sm);color:var(--ink-2);flex:none;margin-left:auto}.dash-act--on .dash-act__remain{color:var(--ink-1)}.dash-act__controls{align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap;display:flex}.dash-act__field{font-size:var(--fs-xs);color:var(--ink-2);flex-direction:column;gap:2px;display:flex}.dash-act__field b{color:var(--ink-1);font-weight:620}.dash-act__field select{min-width:92px}.dash-act__field input[type=range]{width:132px;min-height:34px;accent-color:var(--accent)}.dash-act__toggle{margin-left:auto}.dash-act__busy{font-size:var(--fs-xs);color:var(--ink-muted)}.dash-alarms{gap:var(--sp-2);flex-direction:column;display:flex}.dash-alarm{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--ink-muted);border-radius:var(--r-md);display:flex}.dash-alarm--good{border-left-color:var(--s1)}.dash-alarm--warn{border-left-color:var(--warn)}.dash-alarm--critical{border-left-color:var(--critical)}.dash-alarm__body{flex:auto;min-width:0}.dash-alarm__msg{color:var(--ink-1);font-size:var(--fs-sm);word-break:break-word}.dash-alarm__meta{font-size:var(--fs-xs);color:var(--ink-muted)}.dash-alarm__ack{min-height:32px;padding:var(--sp-1) var(--sp-3);font-size:var(--fs-sm);flex:none}.dash-alarm__acked{font-size:var(--fs-xs);color:var(--ink-muted);flex:none}@media (max-width:560px){.dash-tiles{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.dash-act__toggle{margin-left:0}.dash-alarm{flex-wrap:wrap}}
