.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{color:#d8e2dc;background:#080c0a;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #d8e2dc;--muted: #839089;--panel: #101613;--line: #26302b;--green: #88f2a8;--green-dark: #142a1b;--danger: #ff7f84}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{min-width:320px;min-height:100dvh;overflow-x:hidden;background:radial-gradient(circle at 75% -10%,rgba(75,158,99,.14),transparent 28rem),#080c0a}button,input{font:inherit}button{color:inherit}.brand{display:inline-flex;align-items:center;gap:10px}.brand-mark{display:grid;place-items:center;width:33px;height:33px;border:1px solid #3a4a42;border-radius:9px;color:var(--green);background:#111814;font:700 13px/1 ui-monospace,monospace;box-shadow:inset 0 0 0 1px #ffffff06}.brand-name{font-weight:730;letter-spacing:-.02em}.brand-button{padding:0;border:0;background:none;cursor:pointer}.eyebrow{margin:0;color:#6fa780;font:700 11px/1.2 ui-monospace,monospace;letter-spacing:.15em}.login-page{min-height:100dvh;display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top)) 20px max(24px,env(safe-area-inset-bottom))}.login-panel{width:min(100%,430px);padding:28px 24px 26px;border:1px solid var(--line);border-radius:20px;background:#0f1512f0;box-shadow:0 28px 80px #0000005c}.login-panel .eyebrow{margin-top:48px}.login-title{margin:13px 0 12px;max-width:330px;font-size:clamp(31px,8vw,43px);line-height:.98;letter-spacing:-.055em}.login-copy{margin:0;color:var(--muted);line-height:1.55}.login-form{margin-top:30px}.field-label{display:block;margin-bottom:8px;color:#aebbb4;font-size:13px;font-weight:620}.token-input{width:100%;height:52px;padding:0 14px;border:1px solid #303c35;border-radius:11px;outline:none;color:var(--ink);background:#090e0b;font-family:ui-monospace,monospace}.token-input:focus{border-color:#6cc88a;box-shadow:0 0 0 3px #6cc88a1f}.primary-button{width:100%;height:50px;margin-top:12px;border:0;border-radius:11px;background:var(--green);color:#071009;font-weight:760;cursor:pointer}.primary-button:disabled{opacity:.55;cursor:wait}.form-error{min-height:20px;margin:10px 0 0;color:var(--danger);font-size:13px}.login-hint{margin:22px 0 0;color:#647169;font:12px/1.4 ui-monospace,monospace}.dashboard{width:min(100%,850px);min-height:100dvh;margin:auto;padding:0 18px max(38px,env(safe-area-inset-bottom))}.topbar{min-height:70px;display:flex;align-items:center;gap:14px;border-bottom:1px solid rgba(53,67,60,.62)}.computer-status{margin-left:auto;display:flex;align-items:center;gap:7px;color:#92a098;font-size:12px}.online-dot,.connection-dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px #88f2a814}.ghost-button,.icon-button,.back-button,.menu-button,.key-button{border:0;background:transparent;cursor:pointer}.ghost-button{padding:8px;color:#87948c;font-size:12px}.install-button[hidden]{display:none}.login-panel>.install-button{width:100%;margin-top:4px;padding:10px;color:#9acaaa}.dashboard-heading{display:flex;justify-content:space-between;align-items:end;margin:38px 0 18px}.dashboard-title{margin:7px 0 0;font-size:clamp(28px,8vw,38px);letter-spacing:-.045em}.session-summary{margin:7px 0 0;color:#728078;font-size:12px}.icon-button{min-width:39px;height:39px;border:1px solid var(--line);border-radius:10px;color:#a7b2ac;background:var(--panel)}.dashboard-actions{display:flex;align-items:center;gap:8px}.new-terminal-button{min-height:39px;padding:0 13px;border:1px solid #477156;border-radius:10px;color:var(--green);background:#132219;font-size:12px;font-weight:720;cursor:pointer}.create-panel{margin:-2px 0 18px;padding:18px;border:1px solid #34513e;border-radius:14px;background:linear-gradient(145deg,#142019,#0e1511);box-shadow:0 14px 38px #0000002e}.create-panel[hidden]{display:none}.create-title{margin:0;font-size:18px;letter-spacing:-.02em}.create-copy{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.create-form{display:grid;gap:13px;margin-top:18px}.create-field{display:block}.create-input{width:100%;height:45px;padding:0 12px;border:1px solid #303c35;border-radius:9px;outline:none;color:var(--ink);background:#090e0b;font-family:ui-monospace,monospace;font-size:12px}.create-input:focus{border-color:#6cc88a;box-shadow:0 0 0 3px #6cc88a1a}.create-form .form-error{margin:-3px 0 0}.create-actions{display:flex;justify-content:flex-end;gap:8px}.secondary-button,.create-submit{min-height:42px;padding:0 14px;border-radius:9px;font-size:12px;font-weight:720;cursor:pointer}.secondary-button{border:1px solid #344039;color:#9eaaa4;background:#151c18}.create-submit{border:0;color:#071009;background:var(--green)}.create-submit:disabled{opacity:.55;cursor:wait}.session-list{display:grid;gap:10px}.session-card{width:100%;overflow:hidden;border:1px solid var(--line);border-radius:14px;text-align:left;background:linear-gradient(150deg,#131a16,#0e1411);box-shadow:0 10px 28px #00000021;transition:border-color .15s,transform .15s,background .15s}.session-card:hover{border-color:#3b4c43;background:#151d19;transform:translateY(-1px)}.session-card:active{transform:translateY(0)}.session-open{width:100%;padding:17px;border:0;color:inherit;text-align:left;background:transparent;cursor:pointer}.session-card-row,.session-identity,.session-meta{display:flex;align-items:center}.session-card-row{justify-content:space-between;gap:10px}.session-identity{gap:9px;min-width:0}.session-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%}.session-dot.live{background:var(--green);box-shadow:0 0 8px #88f2a861}.session-dot.ended{background:#66716b}.session-name{overflow:hidden;margin:0;font-size:16px;text-overflow:ellipsis;white-space:nowrap}.status-badge{flex:0 0 auto;padding:5px 7px;border-radius:6px;font:700 9px/1 ui-monospace,monospace;letter-spacing:.1em}.status-badge.running{color:var(--green);background:var(--green-dark)}.status-badge.finished{color:#87948d;background:#202823}.session-command{display:block;overflow:hidden;margin:14px 0 15px;color:#bdc9c2;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.session-meta{color:#738078;font-size:11px;gap:12px}.cwd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-age{margin-left:auto}.card-arrow{color:#607168;font-size:21px;line-height:10px}.card-controls{display:flex;justify-content:flex-end;gap:8px;padding:9px 12px;border-top:1px solid #242d28;background:#0508062e}.card-action{min-height:34px;padding:0 11px;border:1px solid #344039;border-radius:8px;color:#aab7b0;background:#171e1a;font-size:11px;font-weight:650;cursor:pointer}.card-action:hover{border-color:#516158;color:var(--ink)}.card-action.danger{border-color:#4a3031;color:var(--danger);background:#211718}.card-action:disabled{opacity:.5;cursor:wait}.start-hint{display:flex;gap:13px;margin-top:20px;padding:16px;border:1px dashed #2b3731;border-radius:13px;color:#7b8981}.hint-icon{display:grid;flex:0 0 auto;place-items:center;width:27px;height:27px;border-radius:7px;color:#769b80;background:#152019;font:18px/1 ui-monospace,monospace}.hint-title{display:block;color:#9ca9a1;font-size:12px}.hint-copy{margin:4px 0 0;font-size:11px;line-height:1.45}.hint-command{display:block;margin-top:9px;color:#7fab8a;font-size:10px;white-space:nowrap}.empty-state{padding:60px 20px;border:1px dashed var(--line);border-radius:16px;text-align:center}.empty-prompt{color:var(--green);font:18px ui-monospace,monospace}.empty-title{margin:16px 0 8px;font-size:20px}.empty-copy{max-width:330px;margin:auto;color:var(--muted);font-size:13px;line-height:1.5}.terminal-page{height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;background:#070a09}.terminal-header{min-height:60px;display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;padding:max(4px,env(safe-area-inset-top)) 8px 4px;border-bottom:1px solid #202722;background:#0e1310}.back-button{font-size:32px;color:#91a099}.terminal-identity{min-width:0;text-align:center}.terminal-name,.terminal-subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.terminal-name{font-size:14px}.terminal-subtitle{margin-top:3px;color:#69756e;font:10px/1.2 ui-monospace,monospace}.terminal-header .icon-button{border:0;background:transparent;letter-spacing:2px}.actions-menu{position:fixed;z-index:5;top:calc(56px + env(safe-area-inset-top));right:10px;display:none;width:170px;padding:6px;border:1px solid #2f3934;border-radius:11px;background:#151b18;box-shadow:0 14px 50px #0009}.actions-menu.open{display:block}.menu-button{width:100%;padding:11px;border-radius:7px;text-align:left;font-size:13px}.menu-button:hover{background:#202824}.menu-button.danger{color:var(--danger)}.menu-button:disabled{opacity:.35;cursor:not-allowed}.connection-bar{min-height:30px;display:flex;align-items:center;justify-content:center;gap:7px;border-bottom:1px solid #181e1b;color:#7d8982;background:#0b0f0d;font:10px/1 ui-monospace,monospace;letter-spacing:.03em}.connection-bar .connection-dot{width:5px;height:5px;background:#d3b866;box-shadow:none}.connection-bar.online .connection-dot{background:var(--green)}.connection-bar.offline .connection-dot{background:#7c8580}.connection-bar.warning .connection-dot{background:#e7b65a}.terminal-frame{min-height:0;overflow:hidden;padding:10px 6px 4px 10px}.terminal-mount,.terminal-mount .xterm{width:100%;height:100%}.terminal-mount .xterm-viewport{overscroll-behavior-y:contain;scrollbar-color:#344139 transparent;scrollbar-width:thin;touch-action:pan-y;-webkit-overflow-scrolling:touch}.extra-keys{display:flex;gap:6px;overflow-x:auto;padding:7px 8px max(7px,env(safe-area-inset-bottom));border-top:1px solid #202722;background:#0f1512;scrollbar-width:none}.extra-keys::-webkit-scrollbar{display:none}.key-button{flex:0 0 auto;min-width:47px;height:36px;padding:0 11px;border:1px solid #303a35;border-radius:7px;color:#aeb9b3;background:#171e1a;font:11px/1 ui-monospace,monospace}.key-button:active{color:var(--green);background:#203027;transform:translateY(1px)}@media(max-width:479px){.topbar .computer-status{display:none}.dashboard-heading{align-items:flex-start;flex-direction:column;gap:14px}.dashboard-actions{width:100%}.new-terminal-button{flex:1}}@media(min-width:680px){.dashboard{padding-left:28px;padding-right:28px}.session-list{grid-template-columns:repeat(2,minmax(0,1fr))}.start-hint{max-width:500px}.terminal-page{width:min(100%,1200px);margin:auto;border-left:1px solid #1a211d;border-right:1px solid #1a211d}.terminal-frame{padding:14px 10px 6px 14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
/*! Bundled license information:

@xterm/xterm/css/xterm.css:
  (**
   * 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.
   *)
*/
