/**
 * 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;inset: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;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{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: #0b0e14;--panel: #0f131c;--line: #1c2230;--fg: #bfbdb6;--muted: #6c7380;--accent: #4d9fff;--accent-2: #38bdf8;--ok: #7fd962;--wait: #6fb2ff;--err: #f07178;--mono: ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html,body,#app{height:100%;margin:0;background:transparent}body{color:var(--fg);font:13px/1.4 ui-sans-serif,-apple-system,system-ui,sans-serif}#app{display:grid;grid-template-columns:240px 1fr}.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden}.status{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);color:var(--muted);font-size:12px}.status[data-state=connected]{color:var(--ok)}.status[data-state=waiting]{color:var(--wait)}.status[data-state=error]{color:var(--err)}.status-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status button.settings{flex:none;padding:1px 6px;font-size:13px;color:var(--muted)}.status button.settings:hover{color:var(--fg)}.devices{padding:8px;overflow-y:auto}.empty{color:var(--muted);padding:8px;font-size:12px}.device{display:flex;align-items:center;gap:8px;padding:8px;border-radius:6px}.device:hover{background:#131826}.device-name{flex:1}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.device[data-state=connected] .dot{background:var(--ok)}.device[data-state=waiting] .dot{background:var(--wait)}button{background:#182031;color:var(--fg);border:1px solid var(--line);border-radius:5px;padding:3px 8px;font-size:12px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));grid-auto-rows:minmax(240px,1fr);gap:1px;background:transparent;overflow:auto;min-height:0}.pane{display:flex;flex-direction:column;background:transparent;min-height:0}.pane-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--panel);border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}.pane-header button{padding:0 6px}.pane-body{flex:1;min-height:0;position:relative}.pane-bg{position:absolute;inset:0;z-index:0;background-color:var(--bg)}.pane-term{position:absolute;inset:0;z-index:1;padding:4px}.pane-term .xterm,.pane-term .xterm .xterm-viewport,.pane-term .xterm .xterm-screen{background-color:transparent!important}.pane.focused{box-shadow:inset 0 0 0 1px var(--accent)}.pane.focused .pane-header{color:var(--accent)}.workspace{min-width:0;min-height:0;overflow:hidden;display:flex}.workspace>*{flex:1;min-width:0;min-height:0}.ws-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;padding:24px;text-align:center}.ws-split{display:flex;min-width:0;min-height:0}.ws-split.row{flex-direction:row}.ws-split.col{flex-direction:column}.ws-divider{flex:none;background:var(--line)}.ws-split.row>.ws-divider{width:5px;cursor:col-resize}.ws-split.col>.ws-divider{height:5px;cursor:row-resize}.ws-divider:hover{background:var(--accent)}.ws-leaf{position:relative;display:flex;min-width:0;min-height:0}.ws-leaf>.pane{flex:1;min-width:0;min-height:0}.ws-drop{position:absolute;inset:0;z-index:5;pointer-events:none}.ws-drop.active:after{content:"";position:absolute;background:#4d9fff38;border:1px solid var(--accent)}.ws-drop.active[data-zone=center]:after{inset:0}.ws-drop.active[data-zone=left]:after{left:0;top:0;bottom:0;width:50%}.ws-drop.active[data-zone=right]:after{right:0;top:0;bottom:0;width:50%}.ws-drop.active[data-zone=top]:after{left:0;right:0;top:0;height:50%}.ws-drop.active[data-zone=bottom]:after{left:0;right:0;bottom:0;height:50%}.session{display:flex;align-items:center;gap:6px;margin:1px 6px 1px 26px;padding:4px 8px;border-radius:5px;cursor:pointer;font-size:12px;color:var(--muted)}.session:hover{background:#131826;color:var(--fg)}.session[data-visible=true]{color:var(--fg)}.session[data-focused=true]{background:#182031;color:var(--accent)}.session[data-remote=true]{font-style:italic}.session-hint{flex:none;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);opacity:.7}.session-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-kill{flex:none;opacity:0;padding:0 4px;border-color:transparent;background:none;color:var(--muted)}.session:hover .session-kill{opacity:1}.session-kill:hover{color:var(--err);border-color:transparent}.connect{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;min-height:100%;padding:24px;background:var(--bg)}.connect-panel{width:min(560px,100%);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:28px 32px 32px;display:flex;flex-direction:column;gap:8px}.connect-panel h1{margin:0;font:600 20px/1.2 var(--mono);color:var(--accent);letter-spacing:.08em}.connect-subtitle{margin:0 0 12px;color:var(--muted);font-size:12px}.connect-panel label{margin-top:10px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.connect-panel input{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:5px;padding:8px 10px;font:13px/1.4 var(--mono);outline:none}.connect-panel input:focus{border-color:var(--accent)}.connect-panel input::placeholder{color:#454c59}.connect-hint{margin:2px 0 0;color:var(--muted);font-size:11px}.device-key{margin-top:18px;border:1px solid var(--line);border-radius:6px;padding:12px 14px;background:var(--bg)}.device-key-title{color:var(--accent);font-size:11px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px}.device-key-row{display:flex;align-items:center;gap:10px}.device-key-row code{flex:1;min-width:0;font:12px/1.5 var(--mono);color:var(--ok);word-break:break-all;user-select:all}.connect-error{margin:8px 0 0;min-height:1em;color:var(--err);font-size:12px}button.connect-go{margin-top:8px;align-self:flex-start;padding:8px 22px;font-size:13px;border-color:var(--accent);color:var(--accent)}button.connect-go:hover{background:#1d2536}.connect-buttons{display:flex;align-items:center;gap:12px;margin-top:8px}.connect-buttons .connect-go{margin-top:0}button.connect-back{background:none;border-color:transparent;color:var(--muted);padding:8px 10px;font-size:12px}button.connect-back:hover:not(:disabled){border-color:transparent;color:var(--fg)}.onboard{grid-column:1 / -1;display:flex;align-items:center;justify-content:center;min-height:100%;padding:24px;background:var(--bg)}.onboard-panel{width:min(760px,100%);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:32px 36px 36px;display:flex;flex-direction:column;gap:10px}.onboard-panel h1{margin:0;font:600 22px/1.2 var(--mono);color:var(--accent);letter-spacing:.08em}.onboard-narrative{margin:4px 0 0;color:var(--fg);font-size:13px;line-height:1.6;max-width:58ch}.onboard-prompt{margin:10px 0 2px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.role-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media (max-width: 640px){.role-cards{grid-template-columns:1fr}}.role-card{display:flex;flex-direction:column;align-items:stretch;gap:6px;text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:14px 16px 16px;cursor:pointer;transition:border-color .12s ease,background .12s ease}.role-card:hover:not(:disabled){border-color:var(--accent);background:#10151f}.role-card:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.role-card:disabled{opacity:.45;cursor:default}.role-card.busy{opacity:1;border-color:var(--wait)}.role-card.busy .role-title:after{content:" …";color:var(--wait)}.role-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.role-title{font:600 14px/1.3 var(--mono);color:var(--fg)}.role-tag{flex:none;font-size:10px;color:var(--accent);border:1px solid var(--line);border-radius:999px;padding:1px 7px;white-space:nowrap;letter-spacing:.04em}.role-desc{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.onboard-error{margin:6px 0 0;min-height:1em;color:var(--err);font-size:12px}.onboard-starting{color:var(--muted);font:13px/1.4 var(--mono)}.hubkey{margin:8px;padding:8px 10px;background:var(--bg);border:1px solid var(--line);border-radius:6px}.hubkey-title{color:var(--accent);font-size:10px;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}.hubkey-row{display:flex;align-items:center;gap:8px}.hubkey-row code{flex:1;min-width:0;font:10px/1.5 var(--mono);color:var(--ok);word-break:break-all;user-select:all}.hubkey-row button{flex:none;padding:1px 6px;font-size:10px}.tset-overlay{position:fixed;inset:0;z-index:100;background:#04060a8c;display:flex;align-items:center;justify-content:center;padding:24px}.tset-panel{width:min(520px,100%);max-height:min(90vh,720px);overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:20px 24px 22px;display:flex;flex-direction:column;gap:14px;box-shadow:0 18px 48px #00000080;outline:none}.tset-title{margin:0;font:600 15px/1.3 var(--mono);color:var(--accent);letter-spacing:.06em}.tset-section{border:1px solid var(--line);border-radius:8px;padding:12px 14px 14px;background:var(--bg);display:flex;flex-direction:column;gap:8px}.tset-section h3{margin:0 0 2px;color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em}.tset-row{display:flex;align-items:center;gap:12px;min-height:26px}.tset-label{flex:0 0 108px;color:var(--muted);font-size:12px}.tset-control{flex:1;min-width:0;display:flex;align-items:center;gap:10px}.tset-control select{flex:1;min-width:0;background:var(--panel);color:var(--fg);border:1px solid var(--line);border-radius:5px;padding:4px 8px;font-size:12px;outline:none}.tset-control select:focus{border-color:var(--accent)}.tset-control select:disabled{opacity:.4}.tset-control input[type=range]{flex:1;min-width:0;accent-color:var(--accent)}.tset-num{flex:none;width:56px;background:var(--panel);color:var(--fg);border:1px solid var(--line);border-radius:5px;padding:3px 6px;font:12px/1.4 var(--mono);outline:none}.tset-num:focus{border-color:var(--accent)}.tset-value{flex:none;min-width:44px;text-align:right;color:var(--muted);font:11px/1.4 var(--mono)}.tset-color{flex:none;width:40px;height:24px;padding:1px;background:var(--panel);border:1px solid var(--line);border-radius:5px;cursor:pointer}.tset-color:hover{border-color:var(--accent)}.tset-seg{display:inline-flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.tset-seg button{border:none;border-radius:0;border-right:1px solid var(--line);background:var(--panel);color:var(--muted);padding:4px 12px;font-size:12px}.tset-seg button:last-child{border-right:none}.tset-seg button:hover:not(:disabled){color:var(--fg);border-color:var(--line)}.tset-seg button.active{background:#1d2536;color:var(--accent)}.tset-check{display:inline-flex;align-items:center;gap:8px;color:var(--fg);font-size:12px;cursor:pointer}.tset-check input[type=checkbox]{accent-color:var(--accent)}.tset-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px}button.tset-reset{background:none;border-color:transparent;color:var(--muted);padding:6px 10px}button.tset-reset:hover:not(:disabled){border-color:transparent;color:var(--err)}button.tset-done{padding:6px 22px;font-size:13px;border-color:var(--accent);color:var(--accent)}button.tset-done:hover{background:#1d2536}.menu-toggle,.drawer-backdrop{display:none}@media (max-width: 720px){body{background:var(--bg)}#app{grid-template-columns:1fr}.sidebar{position:fixed;top:0;bottom:0;left:0;width:min(300px,85vw);z-index:40;transform:translate(-105%);transition:transform .18s ease;box-shadow:12px 0 32px #00000073;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}#app.drawer-open .sidebar{transform:translate(0)}.drawer-backdrop{position:fixed;inset:0;z-index:30;background:#04060a8c}#app.drawer-open .drawer-backdrop{display:block}.menu-toggle{display:flex;align-items:center;justify-content:center;position:fixed;top:calc(6px + env(safe-area-inset-top));left:calc(6px + env(safe-area-inset-left));z-index:50;width:44px;height:44px;font-size:18px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--fg)}.status{padding-top:14px}.status button.settings{min-width:40px;min-height:40px}.device{min-height:44px}.device button{min-height:36px;padding:6px 12px}.session{min-height:44px;margin-left:18px;padding:8px 10px}.session-kill{opacity:1;min-width:36px;min-height:36px}.grid{grid-template-columns:1fr}.workspace{padding-top:env(safe-area-inset-top)}.pane-header{min-height:40px;padding-left:58px}.connect,.onboard{padding:12px;padding-top:calc(12px + env(safe-area-inset-top))}.connect-panel{padding:20px 16px 22px}.onboard-panel{padding:22px 18px 24px}.connect-panel input{font-size:16px;padding:10px 12px}.role-cards{grid-template-columns:1fr}.connect-panel .connect-go,.role-card,button.connect-go,button.connect-back{min-height:44px}.tset-overlay{padding:12px;padding-top:calc(12px + env(safe-area-inset-top))}.tset-panel{max-height:calc(100dvh - 24px - env(safe-area-inset-top));padding:16px 14px 18px}.tset-label{flex:0 0 88px}.tset-row,.tset-seg button,button.tset-done,button.tset-reset{min-height:40px}}.join-overlay{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:24px;background:#0b0e14eb}.join-card{background:var(--panel);border:1px solid #1c2433;border-radius:12px;padding:28px 32px;max-width:360px;text-align:center}.join-title{font-size:15px;color:var(--fg);margin-bottom:12px}.join-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:40px;letter-spacing:.18em;color:var(--accent);margin:6px 0 14px}.join-hint{color:var(--muted);font-size:12px;line-height:1.5;margin-bottom:18px}.enroll-approve{position:fixed;top:calc(16px + env(safe-area-inset-top));right:16px;z-index:60;max-width:300px;padding:16px 18px;background:var(--panel);border:1px solid var(--accent);border-radius:10px;box-shadow:0 8px 30px #00000073}.enroll-approve-title{font-size:13px;color:var(--fg);margin-bottom:8px}.enroll-approve-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:26px;letter-spacing:.16em;color:var(--accent);margin-bottom:10px}.enroll-approve-input{width:100%;margin-bottom:10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:20px;letter-spacing:.18em;text-align:center}.version-foot{margin-top:auto;padding:8px 12px;font-size:10px;letter-spacing:.04em;color:var(--muted);opacity:.6}.update-banner{position:fixed;top:0;left:0;right:0;z-index:1000;display:flex;align-items:center;justify-content:center;gap:14px;padding:9px 16px;background:#1f6feb;color:#fff;font-size:13px;box-shadow:0 2px 10px #00000059}.update-banner[hidden]{display:none}.update-banner-text{font-weight:500}.update-banner-btn{border:1px solid rgba(255,255,255,.85);background:transparent;color:inherit;border-radius:6px;padding:4px 14px;font-size:12px;font-weight:600;cursor:pointer}.update-banner-btn:hover:not(:disabled){background:#ffffff26}.update-banner-btn:disabled{opacity:.6;cursor:default}
