@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-400.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-500.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-600.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2)format("woff2")}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg0:#070a0e;--bg1:#0c1117;--bg2:#121820;--bg3:#18202a;--border:#94a3b824;--border-strong:#94a3b847;--text:#e8eef6;--text-dim:#94a3b8;--muted:#64748b;--accent:#5eead4;--accent-dim:#5eead41f;--ok:#34d399;--warn:#fbbf24;--crit:#f87171;--offline:#64748b;--font:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--mono:"IBM Plex Mono", "SF Mono", ui-monospace, monospace;--radius:10px;--shadow:0 0 0 1px var(--border), 0 12px 40px #00000059}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font);color:var(--text);background:radial-gradient(1200px 600px at 10% -10%, #2dd4bf0f, transparent 55%), radial-gradient(900px 500px at 100% 0%, #38bdf80d, transparent 50%), linear-gradient(180deg, var(--bg0) 0%, var(--bg1) 40%, #05080c 100%);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;font-size:14px;line-height:1.45}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,.mono{font-family:var(--mono);font-size:.92em}.dim{color:var(--muted)}.muted{color:var(--text-dim)}.app-shell{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);background:#070a0ed9;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.5rem;display:flex;position:sticky;top:0}.topbar__brand{align-items:baseline;gap:.75rem;display:flex}.brand{color:var(--text);letter-spacing:-.02em;align-items:center;gap:.55rem;font-weight:600;text-decoration:none;display:inline-flex}.brand:hover{text-decoration:none}.brand__mark{background:var(--accent);border-radius:2px;width:10px;height:10px;box-shadow:0 0 12px #5eead48c}.brand__name{font-size:1.05rem}.brand__tag{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:.72rem}.topbar__actions{align-items:center;gap:.65rem;display:flex}.topbar__user{color:var(--text-dim);font-size:.85rem}.ws-pill{font-size:.72rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--border);color:var(--text-dim);background:var(--bg2);border-radius:999px;align-items:center;gap:.4rem;padding:.25rem .55rem;display:inline-flex}.ws-pill__dot{background:var(--muted);border-radius:50%;width:6px;height:6px}.ws-pill--open .ws-pill__dot{background:var(--ok);box-shadow:0 0 8px var(--ok)}.ws-pill--connecting .ws-pill__dot{background:var(--warn);animation:1.2s ease-in-out infinite pulse}.ws-pill--closed .ws-pill__dot{background:var(--crit)}@keyframes pulse{50%{opacity:.35}}.btn{appearance:none;border:1px solid var(--border-strong);background:var(--bg3);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;padding:.35rem .7rem}.btn:hover{border-color:var(--accent);background:var(--accent-dim)}.btn:disabled{cursor:not-allowed;opacity:.5}.btn:disabled:hover{border-color:var(--border-strong);background:var(--bg3)}.btn--ghost{background:0 0}.main{flex:1;width:100%;max-width:1280px;margin:0 auto;padding:1.5rem}.page__header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem;display:flex}.page__header--detail{flex-wrap:wrap}.page__title{letter-spacing:-.03em;margin:0;font-size:1.55rem;font-weight:700}.page__sub{color:var(--text-dim);margin:.35rem 0 0}.back-link{color:var(--text-dim);margin-bottom:.4rem;font-size:.85rem;display:inline-block}.back-link:hover{color:var(--accent)}.detail-title-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.rename-form{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.rename-form__input{border:1px solid var(--border-strong);background:var(--bg3);color:var(--text);font:inherit;letter-spacing:-.02em;border-radius:6px;min-width:220px;padding:.2rem .5rem;font-size:1.3rem;font-weight:700}.rename-form__input:focus{outline:2px solid var(--accent);outline-offset:1px}.rename-form__count{color:var(--text-dim);font-size:.75rem}.rename-form__error{color:var(--crit);flex-basis:100%;margin:.2rem 0 0;font-size:12px}.banner{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg2);margin-bottom:1rem;padding:.85rem 1rem}.banner--error{background:#f8717114;border-color:#f8717159}.banner__hint{color:var(--text-dim);margin-top:.35rem;font-size:.9rem;display:block}.empty{text-align:center;border:1px dashed var(--border-strong);border-radius:var(--radius);background:#12182080;padding:3rem 1.5rem}.empty h2{margin:0 0 .4rem}.empty p{color:var(--text-dim);margin:0}.server-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.server-card{border-radius:var(--radius);background:linear-gradient(165deg, var(--bg2) 0%, var(--bg1) 100%);box-shadow:var(--shadow);color:inherit;border:1px solid #0000;flex-direction:column;gap:.9rem;padding:1rem 1.05rem;text-decoration:none;transition:border-color .15s,transform .15s;display:flex}.server-card:hover{border-color:#5eead459;text-decoration:none;transform:translateY(-1px)}.server-card--offline .server-card__gauges,.server-card--offline .server-card__loss{filter:grayscale();opacity:.55}.server-card--down{border-color:#f8717180;box-shadow:0 0 0 1px #f8717159,0 12px 40px #00000059}.server-card--down:hover{border-color:#f87171b3}.server-card--ack{opacity:.7}.btn--ack{color:var(--crit);background:#f8717114;border-color:#f8717173;align-self:flex-start;padding:.3rem .6rem;font-size:.75rem}.btn--ack:hover{border-color:var(--crit);background:#f8717129}.btn--ack-active{border-color:var(--border-strong);color:var(--text-dim);background:var(--bg3)}.btn--ack-active:hover{border-color:var(--accent);background:var(--accent-dim)}.server-card__top{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.server-card__host{letter-spacing:-.02em;margin:0;font-size:1.05rem;font-weight:600}.server-card__hostname{color:var(--text-dim);margin:.15rem 0 0;font-size:.78rem}.server-card__meta{color:var(--text-dim);margin:.25rem 0 0;font-size:.78rem}.dot-sep{opacity:.5;margin:0 .3rem}.server-card__gauges{flex-direction:column;gap:.45rem;display:flex}.mini-gauge__head{justify-content:space-between;margin-bottom:.2rem;font-size:.75rem;display:flex}.mini-gauge__label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-size:.68rem}.mini-gauge__value{font-family:var(--mono);font-size:.8rem}.mini-gauge__track{background:#94a3b81f;border-radius:3px;height:5px;overflow:hidden}.mini-gauge__fill{border-radius:3px;height:100%;transition:width .35s}.badge{text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:.35rem;padding:.2rem .5rem;font-size:.68rem;font-weight:600;display:inline-flex}.badge__dot{border-radius:50%;width:6px;height:6px}.badge--online{color:var(--ok);background:#34d3991a;border-color:#34d3994d}.badge--online .badge__dot{background:var(--ok);box-shadow:0 0 6px var(--ok)}.badge--offline{color:var(--crit);background:#f871711f;border-color:#f8717166}.badge--offline .badge__dot{background:var(--crit);box-shadow:0 0 6px var(--crit);animation:1.4s ease-in-out infinite pulse}.badge--ack{color:var(--offline);background:#64748b1f}.badge--ack .badge__dot{background:var(--offline)}.loss{border:1px solid var(--border);background:#0003;border-radius:6px;flex-wrap:wrap;align-items:baseline;gap:.5rem;padding:.45rem .55rem;font-size:.8rem;display:flex}.loss__label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:.65rem}.loss__value{font-family:var(--mono);font-weight:600}.loss__rtt{color:var(--muted);font-family:var(--mono);margin-left:auto;font-size:.75rem}.loss--ok .loss__value{color:var(--ok)}.loss--warn{background:#fbbf2414;border-color:#fbbf2466}.loss--warn .loss__value{color:var(--warn)}.loss--crit{background:#f871711a;border-color:#f8717173}.loss--crit .loss__value{color:var(--crit)}.loss--muted .loss__value{color:var(--muted)}.range-toggle{border:1px solid var(--border);background:var(--bg2);border-radius:8px;padding:3px;display:inline-flex}.range-toggle__btn{appearance:none;color:var(--text-dim);font:inherit;font-family:var(--mono);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.35rem .75rem;font-size:.8rem}.range-toggle__btn.is-active{background:var(--accent-dim);color:var(--accent)}.kpi-row{grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;margin-bottom:1.15rem;display:grid}.kpi{border:1px solid var(--border);background:var(--bg2);border-radius:8px;flex-direction:column;gap:.3rem;min-width:0;padding:.8rem 1rem;display:flex}.kpi__label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.65rem}.kpi__value{font-family:var(--mono);color:var(--text);font-size:1.05rem;font-weight:600;line-height:1.3}.kpi__sub{font-family:var(--mono);color:var(--text-dim);font-size:.78rem;line-height:1.3}@media (width<=900px){.kpi-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){.kpi-row{grid-template-columns:1fr}}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.chart-panel{border-radius:var(--radius);border:1px solid var(--border);background:linear-gradient(180deg, var(--bg2), var(--bg1));min-width:0;padding:.85rem .9rem .5rem}.chart-panel--wide{grid-column:1/-1}.chart-panel__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);margin:0 0 .5rem;font-size:.78rem;font-weight:600}.disk-list{flex-direction:column;gap:.7rem;max-height:220px;margin:0;padding:.15rem 0 .6rem;list-style:none;display:flex;overflow-y:auto}.disk-list__empty{padding:1rem 0}.disk-list__item{flex-direction:column;gap:.3rem;display:flex}.disk-list__head{justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.8rem;display:flex}.disk-list__path{color:var(--text);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.disk-list__stats{color:var(--text-dim);white-space:nowrap;font-size:.75rem}.disk-list__pct--ok{color:var(--ok)}.disk-list__pct--warn{color:var(--warn)}.disk-list__pct--crit{color:var(--crit)}.disk-list__track{background:#94a3b81f;border-radius:3px;height:5px;overflow:hidden}.disk-list__fill{border-radius:3px;height:100%;transition:width .35s}.disk-list__fill--ok{background:var(--ok)}.disk-list__fill--warn{background:var(--warn)}.disk-list__fill--crit{background:var(--crit)}@media (width<=840px){.chart-grid{grid-template-columns:1fr}.chart-panel--wide{grid-column:auto}.main{padding:1rem}.topbar{padding:.65rem 1rem}}.auth-loading,.login-page{background:#080b0f;place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:#0f1419;border:1px solid #1e293b;border-radius:10px;gap:18px;width:min(100%,420px);padding:32px;display:grid;box-shadow:0 24px 80px #00000059}.login-brand{color:#e2e8f0;align-items:center;gap:10px;font-weight:700;display:flex}.login-card h1{margin:0;font-size:24px}.login-card label{color:#94a3b8;gap:8px;font-size:13px;display:grid}.login-card input{color:#e2e8f0;background:#0b1015;border:1px solid #334155;border-radius:6px;width:100%;padding:11px 12px}.login-card input:focus{outline-offset:2px;outline:2px solid #38bdf8}.login-submit{justify-content:center}.ack-error{color:var(--crit);margin:.4rem 0 0;font-size:12px}.offline-alarm{z-index:40;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#7f1d1d8c;border:1px solid #f8717199;border-radius:10px;margin:.75rem 1.25rem 0;padding:.75rem 1rem;animation:1.4s ease-in-out infinite alarm-pulse;position:sticky;top:0}@keyframes alarm-pulse{0%,to{box-shadow:0 0 #f8717159}50%{box-shadow:0 0 0 6px #f8717100}}.offline-alarm__head{align-items:center;gap:.6rem;display:flex}.offline-alarm__icon{color:var(--crit)}.offline-alarm__sound{margin-left:auto}.offline-alarm__muted,.server-card__sound-muted{color:#fbbf24;border:1px solid #fbbf2473;border-radius:999px;padding:.15rem .45rem;font-size:.72rem;font-weight:700}.offline-alarm__error{color:#fecaca;flex-basis:100%;margin:0;font-size:.78rem}.offline-alarm__list{flex-direction:column;gap:.35rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex}.offline-alarm__item{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.offline-alarm__name{font-weight:600}.server-card__sound-muted{align-self:flex-start}@media (width<=620px){.offline-alarm__sound{margin-left:0}}.danger-zone{border-radius:var(--radius);background:#7f1d1d14;border:1px solid #f8717166;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.25rem;padding:1rem;display:flex}.danger-zone h2,.danger-zone p{margin:0}.danger-zone h2{color:var(--crit);font-size:1rem}.danger-zone p{color:var(--text-dim);margin-top:.3rem}.btn--danger{color:#fee2e2;background:#b91c1c59;border-color:#f871718c}.btn--danger:hover{border-color:var(--crit);background:#b91c1c8c}.remove-dialog{border-radius:var(--radius);background:var(--bg1);border:1px solid #f8717173;width:min(100%,520px);padding:1.25rem;box-shadow:0 24px 80px #0000008c}.remove-dialog h2{color:var(--crit);margin:0}.remove-dialog p{color:var(--text-dim)}.remove-dialog label{color:var(--text-dim);gap:.5rem;display:grid}.remove-dialog__input{border:1px solid var(--border-strong);width:100%;color:var(--text);background:var(--bg3);border-radius:6px;padding:.65rem .75rem}.remove-dialog__input:focus{outline:2px solid var(--crit);outline-offset:2px}.remove-dialog__error{color:var(--crit)!important}.remove-dialog__actions{justify-content:flex-end;gap:.6rem;margin-top:1rem;display:flex}@media (width<=620px){.danger-zone{flex-direction:column;align-items:stretch}}.server-groups{flex-direction:column;gap:.85rem;display:flex}.server-group{border:1px solid var(--border);border-radius:var(--radius);background:#1218208c;overflow:visible}.server-group--alarm{border-color:#f871718c}.server-group__header{align-items:stretch;gap:.5rem;padding:.55rem;display:flex}.server-group__toggle{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:1;align-items:center;gap:.65rem;display:flex}.server-group__toggle:disabled{cursor:default;opacity:1}.server-group__name{font-weight:700}.server-group__counts{color:var(--text-dim);font-size:.8rem}.server-group__alarm{color:var(--crit);margin-left:auto;font-size:.78rem;font-weight:700}.server-group__actions{gap:.35rem;display:flex;position:relative}.server-group__menu{z-index:5;border:1px solid var(--border-strong);background:var(--bg2);min-width:10rem;box-shadow:var(--shadow);border-radius:8px;flex-direction:column;padding:.35rem;display:flex;position:absolute;top:calc(100% + .35rem);right:0}.server-group__menu button{color:var(--text);text-align:left;background:0 0;border:0;padding:.5rem .6rem}.server-group__menu button:hover{background:var(--accent-dim)}.server-group__panel{padding:.25rem .85rem .85rem}.server-group__empty{color:var(--text-dim);text-align:center;margin:0;padding:1rem}.server-card-slot{flex-direction:column;gap:.5rem;min-width:0;display:flex}.server-card-slot>.server-card{flex:1;height:auto}.server-group-picker{z-index:3;justify-content:flex-end;display:flex;position:relative}.server-group-picker__menu{border:1px solid var(--border-strong);background:var(--bg2);min-width:12rem;box-shadow:var(--shadow);border-radius:8px;flex-direction:column;padding:.35rem;display:flex;position:absolute;bottom:calc(100% + .35rem);right:0}.server-group-picker__menu button{color:var(--text);text-align:left;background:0 0;border:0;padding:.5rem .6rem}.server-group-picker__menu button:hover:not(:disabled){background:var(--accent-dim)}.modal-backdrop{z-index:100;background:#000000b8;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.server-group-dialog{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg2);width:min(30rem,100%);box-shadow:var(--shadow);padding:1.1rem}.server-group-dialog h2{margin-top:0}.server-group-dialog label,.server-group-dialog input{width:100%;display:block}.server-group-dialog input{border:1px solid var(--border-strong);color:var(--text);background:var(--bg1);border-radius:7px;margin-top:.4rem;padding:.65rem}.server-group-dialog__error{color:var(--crit)}.server-group-dialog__actions{justify-content:flex-end;gap:.6rem;margin-top:1rem;display:flex}@media (width<=620px){.server-group__header{flex-direction:column;align-items:flex-start}.server-group__toggle{flex-wrap:wrap;width:100%}.server-group__alarm{margin-left:0}}
