.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;-webkit-user-select:none;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}/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
* @license MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Originally forked from (with the author's permission):
*   Fabrice Bellard's javascript vt100 for jslinux:
*   http://bellard.org/jslinux/
*   Copyright (c) 2011 Fabrice Bellard
*   The original design remains. The terminal itself
*   has been extended to include xterm CSI codes, among
*   other features.
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}:root{--bg: #f5f6fa;--bg-card: #ffffff;--bg-hover: #eef0f5;--text: #2c3e50;--text-muted: #7f8c8d;--accent: #00a888;--accent-dim: #008f73;--danger: #e74c3c;--warning: #f39c12;--success: #27ae60;--border: #dcdfe6;--radius: 8px}[data-theme=dark]{--bg: #0f0f1a;--bg-card: #1a1a2e;--bg-hover: #252540;--text: #e0e0e0;--text-muted: #888;--accent: #00d4aa;--accent-dim: #00a888;--danger: #ff4757;--warning: #ffa502;--success: #2ed573;--border: #2a2a4a}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-dim)}.container{max-width:1200px;margin:0 auto;padding:0 16px}.app-layout{display:flex;min-height:100vh}.sidebar{width:220px;background:var(--bg-card);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:100}.sidebar__header{display:flex;align-items:center;padding:16px;border-bottom:1px solid var(--border)}.sidebar__logo{font-size:1.1rem;font-weight:700;color:var(--text)!important;text-decoration:none!important;display:flex;align-items:center;gap:8px}.sidebar__nav{flex:1;overflow-y:auto;padding:8px 0}.sidebar__section{margin-bottom:2px}.sidebar__section-title{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;border-left:3px solid var(--accent);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:8px 16px;cursor:pointer;transition:all .2s ease;background:color-mix(in srgb,var(--accent) 6%,transparent)}.sidebar__section-title:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--text)}.sidebar__section--expanded .sidebar__section-title{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.sidebar__section-arrow{font-size:.9rem;font-weight:400}.sidebar__menu{list-style:none;padding:0;margin:0;max-height:0;overflow:hidden;transition:max-height .25s ease}.sidebar__section--expanded .sidebar__menu{max-height:300px}.sidebar__link{display:flex;align-items:center;gap:8px;padding:7px 16px 7px 22px;color:var(--text-muted)!important;text-decoration:none!important;font-size:.85rem;transition:all .15s ease;border-left:3px solid transparent}.sidebar__link:hover{background:var(--bg-hover);color:var(--text)!important}.sidebar__badge{background:var(--accent);color:#fff;font-size:.65rem;font-weight:700;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:9px;padding:0 5px;margin-left:auto}.sidebar__link--active{background:var(--bg-hover);color:var(--accent)!important;border-left-color:var(--accent)}.sidebar__footer{padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.sidebar__theme-btn{width:100%;padding:6px 12px;background:var(--bg-hover);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;font-size:.8rem;transition:all .15s}.sidebar__theme-btn:hover{background:var(--border);color:var(--text)}.sidebar__account-link{display:block;padding:6px 12px;background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 20%,transparent);border-radius:var(--radius);color:var(--accent)!important;text-decoration:none!important;font-size:.8rem;text-align:center;transition:all .15s}.sidebar__account-link:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}.sidebar__logout-btn{width:100%;padding:6px 12px;background:none;border:1px solid var(--danger);border-radius:var(--radius);color:var(--danger);cursor:pointer;font-size:.8rem;transition:all .15s}.sidebar__logout-btn:hover{background:color-mix(in srgb,var(--danger) 10%,transparent)}.sidebar__version{font-size:.7rem;color:var(--text-muted);text-align:center;padding-top:4px;opacity:.6}.app-content{flex:1;margin-left:220px;padding:20px 0 40px;min-height:100vh}.mobile-header,.mobile-overlay{display:none}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;margin-top:16px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:var(--radius);font-size:.9rem;cursor:pointer;transition:background .2s}.btn-primary{background:var(--accent);color:#000}.btn-primary:hover{background:var(--accent-dim)}.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-hover)}.badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:600}.badge-online{background:#2ed57326;color:var(--success)}.badge-offline{background:#ff475726;color:var(--danger)}.gauge{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-top:4px}.gauge-fill{height:100%;border-radius:3px;transition:width .3s}.gauge-ok{background:var(--success)}.gauge-warn{background:var(--warning)}.gauge-crit{background:var(--danger)}.metric-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.metric-label{font-size:.8rem;color:var(--text-muted)}.metric-value{font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums}.time-range{display:flex;gap:4px;margin:16px 0}.time-range button{padding:4px 12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;font-size:.8rem}.time-range button.active{background:var(--accent);color:#000;border-color:var(--accent)}input,select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:8px 12px;font-size:.9rem}input:focus,select:focus{outline:none;border-color:var(--accent)}.token-display{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px;font-family:monospace;font-size:.85rem;word-break:break-all;margin:8px 0}.page-title{font-size:1.4rem;margin:24px 0 8px}.page-subtitle{color:var(--text-muted);font-size:.9rem;margin-bottom:16px}.loading{text-align:center;padding:40px;color:var(--text-muted)}.chart-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}.chart-title{font-size:.9rem;color:var(--text-muted);margin-bottom:12px}.disk-squares{display:flex;gap:4px;flex-wrap:wrap;margin-top:8px}.disk-square{width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.55rem;font-weight:700;color:#fff;position:relative;cursor:default}.disk-square.disk-ok{background:var(--success)}.disk-square.disk-warn{background:var(--warning)}.disk-square.disk-crit{background:var(--danger)}.disk-square-tooltip{display:none;position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--bg-card);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:.7rem;white-space:nowrap;z-index:10;color:var(--text);box-shadow:0 2px 8px #00000026;margin-bottom:4px}.disk-square:hover .disk-square-tooltip{display:block}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0006;display:flex;align-items:center;justify-content:center}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;max-width:400px;width:90%;max-height:80vh;overflow-y:auto}.modal-content h3{margin-bottom:12px;font-size:1rem}.disk-config-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:.85rem}.disk-config-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);padding:0}.disk-config-row .disk-mount{flex:1;font-family:monospace;font-size:.8rem}.disk-config-row .disk-pct{font-weight:600;font-variant-numeric:tabular-nums}.disk-settings-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.85rem;padding:2px 4px;border-radius:4px;transition:color .2s}.disk-settings-btn:hover{color:var(--accent)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg)}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:32px;width:100%;max-width:380px}.login-card h1{text-align:center;font-size:1.4rem;margin-bottom:24px}.login-card h1 span{color:var(--accent)}.tag-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;font-size:.7rem;font-weight:600;border:1px solid transparent;cursor:default;transition:opacity .15s,border-color .15s}.tag-badge.tag-badge-clickable{cursor:pointer}.tag-badge.tag-badge-clickable:hover{opacity:.85}.tag-badge.tag-badge-active{border-color:currentColor}.tag-badge .tag-remove{background:none;border:none;color:inherit;cursor:pointer;font-size:.8rem;padding:0;line-height:1;opacity:.7}.tag-badge .tag-remove:hover{opacity:1}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table th{text-align:left;padding:8px;color:var(--text-muted);border-bottom:2px solid var(--border);font-weight:600;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.data-table th:hover{color:var(--accent)}.data-table th .sort-indicator{margin-left:4px;font-size:.65rem}.data-table td{padding:8px;border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr{transition:background .15s}.data-table tbody tr:hover{background:var(--bg-hover)}.data-table tbody tr.clickable{cursor:pointer}.filter-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:16px 0}.search-input{flex:0 1 260px;min-width:160px}.filter-tags{display:flex;gap:4px;flex-wrap:wrap}.view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.view-toggle button{padding:5px 14px;background:var(--bg-card);border:none;color:var(--text-muted);cursor:pointer;font-size:.8rem;transition:background .15s,color .15s}.view-toggle button:not(:last-child){border-right:1px solid var(--border)}.view-toggle button.active{background:var(--accent);color:#000}.bulk-bar{position:sticky;bottom:0;background:var(--bg-card);border-top:2px solid var(--accent);padding:10px 16px;display:flex;align-items:center;gap:12px;z-index:50;box-shadow:0 -2px 8px #0000001a}.bulk-bar .bulk-count{font-size:.85rem;font-weight:600;color:var(--accent);white-space:nowrap}.bulk-bar .btn{padding:6px 12px;font-size:.8rem}.bulk-bar .btn-deselect{background:none;border:1px solid var(--border);color:var(--text-muted)}.bulk-bar .btn-deselect:hover{border-color:var(--text);color:var(--text)}.data-table td.checkbox-cell,.data-table th.checkbox-cell{width:32px;text-align:center;cursor:pointer}.data-table th.checkbox-cell:hover{color:var(--text-muted)}.data-table .checkbox-cell input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;padding:0}.data-table tbody tr.selected{background:color-mix(in srgb,var(--accent) 8%,var(--bg))}.data-table tbody tr.selected:hover{background:color-mix(in srgb,var(--accent) 14%,var(--bg))}.bulk-tag-panel{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1}.bulk-tag-panel .tag-badge{cursor:pointer}.form-group{margin-bottom:14px}.form-label{display:block;font-size:.8rem;color:var(--text-muted);margin-bottom:4px}.form-input{width:100%}.form-error{color:var(--danger);font-size:.85rem;text-align:center;margin-bottom:12px}.commands-section{margin-top:32px;padding:20px;background:var(--card-bg);border:1px solid var(--border);border-radius:8px}.commands-title{margin:0 0 16px;font-size:1rem;font-weight:600}.commands-actions{display:flex;gap:8px;margin-bottom:12px}.commands-shell-form{display:flex;gap:8px;margin-bottom:16px}.commands-shell-input{flex:1;padding:6px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-family:monospace;font-size:.85rem}.commands-timeout-input{width:60px;padding:6px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text);font-size:.85rem;text-align:center}.commands-list{display:flex;flex-direction:column;gap:6px}.command-item{padding:8px 12px;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:background .15s}.command-item:hover{background:var(--hover)}.command-header{display:flex;align-items:center;gap:8px;font-size:.85rem}.command-status-badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.7rem;font-weight:600;color:#fff;text-transform:uppercase}.command-type{font-weight:500;color:var(--text)}.command-time{color:var(--text-muted);font-size:.75rem;margin-left:auto}.command-exit{font-family:monospace;font-size:.75rem;padding:1px 6px;border-radius:4px}.exit-ok{color:#00d4aa;background:#00d4aa1a}.exit-err{color:#ff4757;background:#ff47571a}.command-preview{margin-top:4px;font-family:monospace;font-size:.8rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.command-output{margin-top:8px;padding:10px;background:var(--bg);border:1px solid var(--border);border-radius:4px;font-family:monospace;font-size:.8rem;white-space:pre-wrap;word-break:break-all;max-height:300px;overflow-y:auto;color:var(--text)}.btn-sm{padding:5px 12px;font-size:.8rem}.expanded-row td{padding:0!important;border-bottom:2px solid var(--accent)}.expanded-content{padding:16px 20px;background:color-mix(in srgb,var(--accent) 3%,var(--bg-card))}.tab-bar{display:flex;gap:0;margin:16px 0;border-bottom:2px solid var(--border)}.tab-bar button{padding:8px 20px;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;color:var(--text-muted);cursor:pointer;font-size:.9rem;font-weight:500;transition:color .15s,border-color .15s}.tab-bar button:hover{color:var(--text)}.tab-bar button.active{color:var(--accent);border-bottom-color:var(--accent)}.chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:16px}.load-avg-display{display:flex;gap:24px}.load-avg-item{display:flex;flex-direction:column;align-items:center}.load-avg-label{font-size:.7rem;text-transform:uppercase;opacity:.7;margin-bottom:2px}.load-avg-value{font-size:1.2rem;font-weight:700;font-variant-numeric:tabular-nums}.cert-expiry{white-space:nowrap}@media(max-width:768px){.mobile-header{display:flex;align-items:center;justify-content:space-between;position:fixed;top:0;left:0;right:0;height:52px;background:var(--bg-card);border-bottom:1px solid var(--border);padding:0 16px;z-index:150}.mobile-header__title{font-size:1rem;font-weight:700;display:flex;align-items:center;gap:6px}.mobile-header__toggle{background:none;border:none;color:var(--text);font-size:1.4rem;padding:6px;cursor:pointer;line-height:1}.sidebar{left:-220px;width:220px;transition:left .3s ease;z-index:200}.app-layout--mobile-open .sidebar{left:0}.app-content{margin-left:0;margin-top:52px;padding:12px 0 40px;min-height:calc(100vh - 52px)}.container{padding:0 10px}.mobile-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:190}.app-layout--mobile-open .mobile-overlay{display:block}.filter-bar{flex-direction:column;align-items:stretch}.search-input{flex:1 1 auto}.hide-mobile{display:none}.data-table{font-size:.8rem}.data-table th,.data-table td{padding:6px 4px}.expanded-content{padding:12px}.chart-grid,.card-grid{grid-template-columns:1fr}.page-title{font-size:1.2rem;margin:16px 0 4px}.bulk-bar{flex-wrap:wrap;gap:8px;padding:8px 10px}.bulk-bar .btn{padding:5px 10px;font-size:.75rem}.tab-bar{overflow-x:auto;-webkit-overflow-scrolling:touch}.tab-bar button{padding:8px 14px;font-size:.8rem;white-space:nowrap}.login-card{padding:24px 20px;margin:0 12px}.websites-header{flex-direction:column;align-items:flex-start!important;gap:8px}.websites-actions{width:100%;flex-wrap:wrap}.websites-table{table-layout:auto!important;min-width:0!important}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}
