.xterm{cursor:text;-webkit-user-select:none;user-select:none;position:relative}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{z-index:5;position:absolute;top:0}.xterm .xterm-helper-textarea{opacity:0;z-index:-5;white-space:nowrap;resize:none;border:0;width:0;height:0;margin:0;padding:0;position:absolute;top:0;left:-9999em;overflow:hidden}.xterm .composition-view{color:#fff;white-space:nowrap;z-index:1;background:#000;display:none;position:absolute}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{cursor:default;background-color:#000;position:absolute;inset:0;overflow-y:scroll}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;top:0;left:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{visibility:hidden;line-height:normal;display:inline-block;position:absolute;top:0;left:-9999em}.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{z-index:10;color:#0000;pointer-events:none;position:absolute;inset:0}.xterm .xterm-accessibility-tree:not(.debug) ::selection{color:#0000}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{-webkit-text-decoration:underline double;text-decoration:underline double}.xterm-underline-3{-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.xterm-underline-4{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.xterm-underline-5{-webkit-text-decoration:underline dashed;text-decoration:underline dashed}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:underline overline}.xterm-overline.xterm-underline-2{-webkit-text-decoration:overline double underline;text-decoration:overline double underline}.xterm-overline.xterm-underline-3{-webkit-text-decoration:overline wavy underline;text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{-webkit-text-decoration:overline dotted underline;text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{-webkit-text-decoration:overline dashed underline;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;pointer-events:none;position:absolute;top:0;right:0}.xterm-decoration-top{z-index:2;position:relative}:root{--color-bg:#0f172a;--color-surface:#1e293b;--color-border:#334155;--color-primary:#3b82f6;--color-primary-hover:#2563eb;--color-text:#f1f5f9;--color-text-muted:#94a3b8;--color-error:#ef4444;--color-success:#22c55e;--font-mono:"Cascadia Code", "JetBrains Mono", "Fira Code", "Consolas", monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;min-height:100dvh;line-height:1.5;overflow-x:hidden}#root{flex-direction:column;min-height:100dvh;display:flex}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit;font-size:inherit;touch-action:manipulation}input,textarea,select{touch-action:manipulation;font-family:inherit;font-size:16px}code,pre{font-family:var(--font-mono)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}.safe-top{padding-top:var(--safe-area-top)}.safe-bottom{padding-bottom:var(--safe-area-bottom)}.flex-col{flex-direction:column;display:flex}.flex-row{align-items:center;display:flex}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.min-h-0{min-height:0}.min-w-0{min-width:0}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.w-full{width:100%}.h-full{height:100%}.relative{position:relative}.text-ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.text-muted{color:var(--color-text-muted)}.text-sm{font-size:.75rem}.text-center{text-align:center}.touch-44{min-width:44px;min-height:44px}.btn-ghost{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;font-size:inherit;background:0 0;border-radius:6px;font-family:inherit}.btn-primary{background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600;font-size:inherit;border:none;border-radius:6px;font-family:inherit}.btn-icon{justify-content:center;align-items:center;display:flex}.surface{background:var(--color-surface)}.border-bottom{border-bottom:1px solid var(--color-border)}.border-top{border-top:1px solid var(--color-border)}.empty-state{color:var(--color-text-muted);text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2rem;display:flex}.gap-xs{gap:.25rem}.gap-sm{gap:.5rem}.gap-md{gap:1rem}.main-layout{overscroll-behavior:none}header,nav[role=tablist],footer{-webkit-user-select:none;user-select:none}.pane-divider{cursor:row-resize;background:var(--color-border);touch-action:none;-webkit-user-select:none;user-select:none;z-index:10;flex-shrink:0;justify-content:center;align-items:center;height:10px;min-height:10px;transition:background .2s;display:flex}.pane-divider:active{background:var(--color-primary);transition:none}.pane-top,.pane-bottom{min-width:0;min-height:0}.pane-top>div,.pane-bottom .terminal-mount{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.session-banner{animation:.2s ease-out banner-slide-in}@keyframes banner-slide-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}[role=tab]{outline-offset:-2px}[role=tab]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px;border-radius:4px}select{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;padding-right:1.5rem!important}select:disabled{opacity:.5}.terminal-page{min-width:0;min-height:0}.terminal-status-bar{line-height:1.2}.terminal-container{isolation:isolate;overflow:hidden!important}.terminal-container .xterm{width:100%;height:100%;padding:.25rem}.terminal-container .xterm-viewport{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.terminal-container .xterm-screen{-webkit-touch-callout:none}@supports (touch-action:none){.terminal-container{touch-action:none}}.terminal-container .xterm-viewport::-webkit-scrollbar{width:4px}.terminal-container .xterm-viewport::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}.terminal__dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;transition:background .3s;display:inline-block}.terminal__dot--connected{background:var(--color-success)}.terminal__dot--connecting{background:#f59e0b}.terminal__dot--disconnected{background:var(--color-error)}.terminal__status-badge{border-radius:3px;padding:.1rem .4rem;font-size:.65rem;font-weight:600}.terminal__status-badge--running{color:var(--color-success);background:#22c55e26}.terminal__status-badge--exited,.terminal__status-badge--failed{color:var(--color-error);background:#ef444426}.terminal__status-badge--starting{color:var(--color-primary);background:#3b82f626}.terminal__reconnect-btn{border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:3px;flex-shrink:0;padding:.15rem .5rem;font-size:.65rem}.terminal-mount{min-width:0;min-height:0}.main-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);flex-shrink:0;align-items:center;gap:.5rem;min-height:44px;padding:.5rem .75rem;display:flex}.main-footer{color:var(--color-text-muted);background:var(--color-surface);border-top:1px solid var(--color-border);flex-shrink:0;align-items:center;gap:1rem;min-height:24px;padding:.3rem .75rem;font-size:.7rem;display:flex;overflow:hidden}.pane-divider__handle{background:var(--color-text-muted);border-radius:2px;width:40px;height:3px;transition:background .2s}.pane-divider:hover{background:var(--color-primary)}.pane-divider:hover .pane-divider__handle{background:#fff9}.pane-label{color:var(--color-text-muted);background:var(--color-surface);border-bottom:1px solid var(--color-border);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;align-items:center;min-height:22px;padding:.3rem .75rem;font-size:.65rem;display:flex}.content-tab{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;min-height:44px;padding:.5rem 1rem;font-size:.85rem;font-weight:400;transition:color .15s,border-color .15s;display:flex}.content-tab--active{color:var(--color-text);border-bottom-color:var(--color-primary);font-weight:600}.session-tabbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;height:44px;display:flex;overflow:hidden}.session-tabbar__add{width:44px;height:44px;color:var(--color-text-muted);cursor:pointer;touch-action:manipulation;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:22px;line-height:44px;display:flex}.session-tabbar__add:hover{color:var(--color-text);background:#ffffff0d}.session-tabbar__list{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1;gap:0;height:100%;display:flex;overflow:auto hidden}.session-tabbar__list::-webkit-scrollbar{display:none}.tab-item{border-right:1px solid var(--color-border);cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;opacity:.7;align-items:center;gap:6px;min-width:60px;max-width:150px;height:44px;padding:0 8px;transition:opacity .15s,background .15s;display:flex}.tab-item--active{opacity:1;border-bottom:2px solid var(--color-primary);background:#ffffff0f}.tab-item__status{border-radius:50%;flex-shrink:0;width:8px;height:8px}.tab-item__status--running{background:var(--color-success)}.tab-item__status--detached{background:#888}.tab-item__status--starting{background:#f59e0b;animation:1s ease-in-out infinite tab-pulse}.tab-item__status--failed{background:var(--color-error)}@keyframes tab-pulse{0%,to{opacity:1}50%{opacity:.4}}.tab-item__label{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;line-height:44px;overflow:hidden}.tab-item__close{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;touch-action:manipulation;background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;line-height:28px;display:flex}.tab-item__close:hover{color:#fff;background:#ffffff1a}.confirm-dialog{border:1px solid var(--color-border);background:var(--color-bg-secondary,#1a1a2e);color:var(--color-text);border-radius:8px;width:100%;max-width:360px;margin:auto;padding:0}.confirm-dialog::backdrop{background:#00000080}.confirm-dialog__content{padding:24px}.confirm-dialog__title{margin:0 0 8px;font-size:16px;font-weight:600}.confirm-dialog__message{color:var(--color-text-muted);margin:0 0 20px;font-size:14px;line-height:1.5}.confirm-dialog__actions{justify-content:flex-end;gap:8px;display:flex}.confirm-dialog__btn{border:1px solid var(--color-border);cursor:pointer;border-radius:4px;padding:8px 16px;font-size:14px;transition:background .15s}.confirm-dialog__btn--cancel{color:var(--color-text);background:0 0}.confirm-dialog__btn--cancel:hover{background:#ffffff0f}.confirm-dialog__btn--confirm{background:var(--color-error);color:#fff;border-color:var(--color-error)}.confirm-dialog__btn--confirm:hover{opacity:.85}.file-tree-row{cursor:pointer;border-bottom:1px solid var(--color-border);align-items:center;min-height:44px;padding:.4rem .5rem;font-size:16px;transition:background .1s;display:flex}.file-tree-row:hover{background:#3b82f614}.file-tree-row__icon{flex-shrink:0;margin-right:.5rem;font-size:1.1rem}.file-tree-row__name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:16px;overflow:hidden}.file-tree-row__meta,.file-tree-row__loading{color:var(--color-text-muted);flex-shrink:0;margin-left:.5rem;font-size:.75rem}.file-search-bar{border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;gap:.5rem;padding:.5rem .75rem;display:flex}.file-search-bar__input{border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text);border-radius:6px;outline:none;flex:1;min-width:0;min-height:44px;padding:.5rem .75rem;font-size:16px}.file-search-bar__clear-btn{border:1px solid var(--color-border);color:var(--color-text);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;min-height:44px;padding:.5rem .75rem;font-size:16px}.file-viewer__header{border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;min-height:44px;padding:.5rem .75rem;display:flex}.file-viewer__meta-bar{background:var(--color-surface);border-bottom:1px solid var(--color-border);color:var(--color-text-muted);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.75rem;min-height:28px;padding:.35rem .75rem;font-size:13px;display:flex}.file-viewer__content{font-family:var(--font-mono);color:var(--color-text);white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;tab-size:2;margin:0;padding:.75rem;font-size:15px;line-height:1.6}.file-editor__header{border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;min-height:44px;padding:.5rem .75rem;display:flex}.file-editor__textarea{resize:none;background:var(--color-bg);width:100%;min-height:300px;color:var(--color-text);font-family:var(--font-mono);tab-size:2;border:none;outline:none;flex:1;padding:.75rem;font-size:16px;line-height:1.6}.file-save-banner--success{color:var(--color-success);background:#22c55e26;flex-shrink:0;padding:.4rem .75rem;font-size:14px}.file-save-banner--error{color:var(--color-error);background:#ef444426;flex-shrink:0;padding:.4rem .75rem;font-size:14px}.install-banner{z-index:1000;padding:.75rem 1rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0px));background:var(--color-surface);border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:.75rem;animation:.2s ease-out banner-slide-in;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 20px #0006}.install-banner__text{color:var(--color-text);font-size:.85rem;font-weight:500}.install-banner__actions{flex-shrink:0;gap:.5rem;display:flex}.install-banner__btn{background:var(--color-primary);color:#fff;cursor:pointer;white-space:nowrap;touch-action:manipulation;border:none;border-radius:6px;min-height:44px;padding:.4rem .75rem;font-size:.8rem;font-weight:600}.loading-fallback{min-height:100dvh;color:var(--color-text-muted);justify-content:center;align-items:center;font-size:.875rem;display:flex}.login-page{flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:2rem;display:flex}.login-page__title{margin-bottom:2rem;font-size:1.5rem}.login-form{flex-direction:column;gap:1rem;width:100%;max-width:320px;display:flex}.login-form__field{flex-direction:column;gap:.25rem;display:flex}.login-form__label{color:var(--color-text-muted);font-size:.8rem}.login-form__input{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:8px;outline:none;padding:.75rem;font-size:16px}.login-form__submit{background:var(--color-primary);color:#fff;cursor:pointer;font-weight:600;font-size:inherit;border:none;border-radius:8px;padding:.75rem;font-family:inherit}.login-form__submit:disabled{background:var(--color-border);cursor:not-allowed}.login-form__error{color:var(--color-error);font-size:.875rem;line-height:1.4}.login-logout-reason{width:100%;max-width:320px;color:var(--color-error);background:#ef44441f;border:1px solid #ef44444d;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.85rem;line-height:1.5;display:flex}.login-logout-reason__dismiss{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.sw-update-toast{z-index:9999;color:#f1f5f9;background:#1e293b;border:1px solid #334155;border-radius:8px;align-items:center;gap:.75rem;max-width:90vw;padding:.75rem 1rem;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:.85rem;display:flex;position:fixed;bottom:1rem;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #00000080}.sw-update-toast__btn{color:#fff;cursor:pointer;white-space:nowrap;background:#3b82f6;border:none;border-radius:6px;padding:.4rem .75rem;font-size:.8rem;font-weight:600}@media (display-mode:standalone){.main-layout{padding-top:env(safe-area-inset-top,16px)}body{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}[data-install-banner]{display:none}}@supports (padding-top:env(safe-area-inset-top, 0px)){body{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}}
