body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg: #1e1e1e;--panel: #252526;--surface: #2d2d30;--input: #3c3c3c;--border: #3e3e42;--input-border: #474747;--text: #cccccc;--text-strong: #ffffff;--muted: #8b8b8b;--accent: #0e639c;--accent-hover: #1177bb;--focus: #007acc;--danger: #f48771;--danger-bg: rgba(244, 135, 113, .1);--ok: #89d185}*{margin:0;padding:0;box-sizing:border-box}input,textarea,select{font-size:16px!important}html{touch-action:manipulation;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;height:100%;overflow:hidden;-webkit-user-scalable:no;-moz-user-scalable:no;-ms-user-scalable:no;user-scalable:no;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%;overflow:hidden;touch-action:manipulation;-webkit-user-scalable:no;-moz-user-scalable:no;-ms-user-scalable:no;user-scalable:no}#root{height:100%;overflow:hidden}@keyframes fadeOut{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.9)}}@keyframes slideDown{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}.app{display:flex;height:calc(100vh - 28px);background-color:#1e1e1e;color:#ccc;overflow:hidden;box-sizing:border-box;height:calc(100dvh - 28px)}.sidebar{width:300px;background-color:#252526;border-right:1px solid #3e3e42;display:flex;flex-direction:column;transition:width .3s ease}.sidebar.collapsed{width:50px}@media (max-width: 768px){.app{padding-bottom:env(keyboard-inset-height,0px)}.sidebar.keyboard-hidden{width:0;overflow:hidden;opacity:0;pointer-events:none;transform:translate(-100%);transition:all .3s ease}.app.keyboard-visible{height:calc(100vh - 36px);height:calc(100svh - 36px)}}.sidebar-header{padding:16px;background-color:#2d2d30;border-bottom:1px solid #3e3e42;display:flex;justify-content:space-between;align-items:center}.sidebar-title{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;opacity:.8}.sidebar.collapsed .sidebar-title{display:none}.sidebar-toggle{background:none;border:none;color:#ccc;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s;border-radius:4px}.sidebar-toggle:hover{background-color:#3e3e42}.shell-list{flex:1;overflow-y:auto;padding:8px}.shell-item{display:flex;align-items:center;padding:8px 12px;margin-bottom:4px;background-color:transparent;border:1px solid transparent;border-radius:4px;cursor:pointer;transition:all .2s;position:relative}.shell-item:hover{background-color:#2a2d2e}.shell-item.active{background-color:#094771;border-color:#007acc}.shell-icon{margin-right:8px;flex-shrink:0}.shell-info{flex:1;min-width:0}.sidebar.collapsed .shell-info{display:none}.shell-name{font-size:13px;font-weight:500;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-address{font-size:11px;opacity:.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-status{width:8px;height:8px;border-radius:50%;position:absolute;right:-2px;bottom:-2px;border:2px solid #252526;box-sizing:content-box}.shell-status.connected{background-color:#4ec9b0}.shell-status.disconnected{background-color:#f48771}.shell-status.idle{background-color:#6b6b6b}.shell-status.connecting{background-color:#dcdcaa;animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.add-shell-btn{margin:8px;padding:10px;background-color:#0e639c;border:none;color:#fff;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;transition:background-color .2s}.add-shell-btn:hover{background-color:#17b}.sidebar.collapsed .add-shell-btn span{display:none}.main-content{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.tabs-container{display:flex;background-color:#2d2d30;border-bottom:1px solid #3e3e42;min-height:35px;align-items:flex-end;position:sticky;top:0;z-index:10}.tab{display:flex;align-items:center;padding:8px 12px;background-color:transparent;border:none;border-top:2px solid transparent;color:#969696;cursor:pointer;font-size:13px;transition:all .2s;gap:8px;position:relative;min-width:100px;max-width:200px}.tab>span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab:hover{color:#ccc;background-color:#2a2d2e}.tab.active{background-color:#1e1e1e;color:#fff;border-top-color:#007acc}.tab-actions{display:flex;gap:4px;align-items:center;margin-left:8px}.tab-duplicate,.tab-close{padding:2px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.tab-duplicate:hover{background-color:#4a4a4a}.tab-close:hover{background-color:#5a5a5a}.terminal-container{flex:1;background-color:#1e1e1e;overflow:auto;height:0}.terminal-wrapper{height:100%;background-color:#0c0c0c;border-radius:4px;position:relative}.xterm .xterm-viewport,.terminal-container,.terminal-wrapper{scrollbar-width:thin;scrollbar-color:#424242 #1e1e1e}.xterm .xterm-viewport::-webkit-scrollbar,.terminal-container::-webkit-scrollbar,.terminal-wrapper::-webkit-scrollbar{width:10px;height:10px}.xterm .xterm-viewport::-webkit-scrollbar-track,.terminal-container::-webkit-scrollbar-track,.terminal-wrapper::-webkit-scrollbar-track{background:#1e1e1e;border-radius:5px}.xterm .xterm-viewport::-webkit-scrollbar-thumb,.terminal-container::-webkit-scrollbar-thumb,.terminal-wrapper::-webkit-scrollbar-thumb{background:#424242;border-radius:5px;border:2px solid #1e1e1e}.xterm .xterm-viewport::-webkit-scrollbar-thumb:hover,.terminal-container::-webkit-scrollbar-thumb:hover,.terminal-wrapper::-webkit-scrollbar-thumb:hover{background:#4e4e4e}.xterm .xterm-viewport::-webkit-scrollbar-thumb:active,.terminal-container::-webkit-scrollbar-thumb:active,.terminal-wrapper::-webkit-scrollbar-thumb:active{background:#666}.xterm .xterm-viewport::-webkit-scrollbar-corner,.terminal-container::-webkit-scrollbar-corner,.terminal-wrapper::-webkit-scrollbar-corner{background:#1e1e1e}.scroll-to-bottom{position:absolute;bottom:20px;right:20px;width:32px;height:32px;border-radius:50%;background:#282828cc;color:#ffffffb3;border:1px solid rgba(100,100,100,.3);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:1000;box-shadow:0 2px 8px #0003;transition:all .2s ease;opacity:0;visibility:hidden;transform:translateY(10px);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.scroll-to-bottom.visible{opacity:.8;visibility:visible;transform:translateY(0)}.scroll-to-bottom:hover{background:#007acc99;color:#fff;box-shadow:0 3px 10px #007acc4d;transform:translateY(-1px);opacity:1}.scroll-to-bottom:active{background:#007acccc;transform:scale(.95);box-shadow:0 1px 4px #007acc4d}.scroll-to-bottom.keyboard-visible{bottom:280px;z-index:1002}@media (max-width: 768px){.scroll-to-bottom{bottom:70px;right:15px;width:36px;height:36px;font-size:16px;z-index:999}.scroll-to-bottom.keyboard-visible{bottom:320px;z-index:1002}}@keyframes scrollButtonFadeIn{0%{opacity:0;transform:translateY(20px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}.scroll-to-bottom.animate-in{animation:scrollButtonFadeIn .3s ease-out}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;opacity:.5}.empty-state-icon{font-size:64px;margin-bottom:16px}.empty-state-text{font-size:16px;margin-bottom:8px}.empty-state-hint{font-size:12px;opacity:.7}.status-bar{position:fixed;bottom:0;left:0;right:0;height:28px;background-color:#007acc;display:flex;align-items:center;justify-content:space-between;padding:0 12px;font-size:12px;color:#fff;z-index:100;border-top:1px solid #005a9e}.status-bar-section{display:flex;align-items:center;gap:12px}.status-item{display:flex;align-items:center;gap:4px;padding:0 8px;height:100%}.status-item:hover{background-color:#ffffff1a}.status-item.clickable{cursor:pointer;transition:all .2s ease}.status-item.clickable:hover{background-color:#ffffff26;transform:translateY(-1px)}.status-item.clickable:active{background-color:#fff3;transform:translateY(0)}@media (max-width: 768px){.app{height:calc(100vh - 36px);height:calc(100dvh - 36px)}.status-bar{height:36px;padding:0 8px;font-size:11px;flex-wrap:wrap;min-height:36px;overflow:hidden}.status-bar-section{gap:8px;flex-wrap:wrap;min-width:0}.status-item{padding:0 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex-shrink:1}.status-item span{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shell-type-badge{font-size:10px;padding:1px 4px;max-width:60px;overflow:hidden;text-overflow:ellipsis}.status-bar-section:last-child .status-item:nth-child(1),.status-bar-section:last-child .status-item:nth-child(2){display:none}.status-bar-section:first-child .status-item:first-child svg{display:none}@media (max-width: 360px){.status-bar{font-size:10px;height:32px;min-height:32px}.status-item{padding:0 4px}.status-item span{max-width:80px}}}.status-indicator{width:8px;height:8px;border-radius:50%;background-color:#ccc}.status-indicator.connecting{background-color:orange;animation:pulse 1.5s infinite}.status-indicator.connected{background-color:#4caf50}.status-indicator.disconnected{background-color:#f44336}@keyframes pulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.shell-type-badge{background-color:#fff3;padding:2px 6px;border-radius:3px;font-family:monospace;font-size:11px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000c;display:flex;align-items:center;justify-content:center;z-index:1000}.modal,.modal-content{background-color:#2d2d30;border-radius:8px;padding:24px;width:400px;max-width:90%;box-shadow:0 8px 32px #0006}.modal-content h2,.modal-header{font-size:18px;font-weight:600;margin-bottom:20px;color:#fff}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:12px;margin-bottom:6px;color:#ccc;text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group select{width:100%;padding:8px 12px;background-color:#3c3c3c;border:1px solid #474747;border-radius:4px;color:#ccc;font-size:13px;transition:border-color .2s}.form-group input:focus,.form-group select:focus{outline:none;border-color:#007acc}.form-label{display:block;font-size:12px;margin-bottom:6px;color:#ccc;text-transform:uppercase;letter-spacing:.5px}.form-input{width:100%;padding:8px 12px;background-color:#3c3c3c;border:1px solid #474747;border-radius:4px;color:#ccc;font-size:13px;transition:border-color .2s}.form-input:focus{outline:none;border-color:#007acc}.modal-footer,.modal-buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.btn{padding:8px 16px;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:background-color .2s}.btn-primary{background-color:#0e639c;color:#fff}.btn-primary:hover{background-color:#17b}.btn-secondary{background-color:#3c3c3c;color:#ccc}.btn-secondary:hover{background-color:#474747}.submit-btn,.cancel-btn{padding:8px 16px;border:none;border-radius:4px;font-size:13px;cursor:pointer;transition:background-color .2s}.submit-btn{background-color:#0e639c;color:#fff}.submit-btn:hover{background-color:#17b}.cancel-btn{background-color:#3c3c3c;color:#ccc}.cancel-btn:hover{background-color:#474747}.error-message{background-color:#f487711a;border:1px solid #f48771;color:#f48771;padding:8px 12px;border-radius:4px;margin-bottom:16px;font-size:13px}.shell-actions{display:flex;gap:4px;margin-left:auto}.edit-btn,.delete-btn{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.edit-btn{color:#4ec9b0}.edit-btn:hover{background-color:#4ec9b01a}.delete-btn{color:#f48771}.delete-btn:hover{background-color:#f487711a}.xterm-viewport{-webkit-overflow-scrolling:touch!important;overscroll-behavior:contain!important}@media (max-width: 768px) and (pointer: coarse){.terminal-wrapper{transform:translateZ(0);-webkit-transform:translate3d(0,0,0)}.xterm-viewport{-webkit-overflow-scrolling:touch!important;overflow-y:auto!important;overflow-x:hidden!important;scroll-behavior:auto!important;transform:translateZ(0)!important;-webkit-transform:translateZ(0)!important;will-change:transform!important;-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-perspective:1000!important;perspective:1000!important;touch-action:pan-y!important;overscroll-behavior:none!important;transition:none!important;scrollbar-width:none!important;-ms-overflow-style:none!important}.xterm-viewport::-webkit-scrollbar{display:none!important}.terminal,.xterm-screen,.xterm-rows,.xterm-rows>div{user-select:none!important;-webkit-user-select:none!important;-webkit-touch-callout:none!important;pointer-events:auto!important}.xterm-screen{transform:translateZ(0)!important;-webkit-transform:translateZ(0)!important}.terminal-wrapper{touch-action:manipulation}.scroll-to-bottom{position:absolute!important;bottom:75px!important;right:12px!important;z-index:1001!important;width:32px!important;height:32px!important;font-size:14px!important;background:#1e1e1eb3!important;border:1px solid rgba(100,100,100,.3)!important;box-shadow:0 2px 8px #0000004d!important}.scroll-to-bottom.visible{display:flex!important;opacity:.8!important}.scroll-to-bottom:active{background:#007acccc!important;transform:scale(.95)!important}.scroll-to-bottom.keyboard-visible{bottom:320px!important;z-index:1002!important}}.auth-loading{display:flex;justify-content:center;align-items:center;height:100vh;background:#1e1e1e}.loading-spinner{text-align:center;color:#ccc}.spinner{width:40px;height:40px;border:3px solid #3c3c3c;border-top:3px solid #007acc;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.user-info{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#2d2d30;border-bottom:1px solid #3c3c3c;margin-bottom:8px}.user-details{display:flex;flex-direction:column;min-width:0;flex:1}.username{font-size:14px;font-weight:600;color:#ccc;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:11px;color:#007acc;text-transform:uppercase;letter-spacing:.5px}.logout-btn{background:none;border:none;color:#f48771;padding:4px;cursor:pointer;border-radius:3px;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.logout-btn:hover{background:#f487711a;color:#ff6b6b}.icon-btn{background:none;border:none;color:#c5c5c5;cursor:pointer;padding:5px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;transition:background-color .15s,color .15s}.icon-btn:hover{background-color:#3e3e42;color:#fff}.icon-btn.danger:hover{background-color:#f4877126;color:#f48771}.icon-btn:focus-visible,.tab-btn:focus-visible,.shell-item:focus-visible,.tab:focus-visible,.btn:focus-visible,.add-shell-btn:focus-visible,.sidebar-link:focus-visible{outline:2px solid #007acc;outline-offset:1px}.sidebar-section-title{padding:12px 16px 4px;font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:#8b8b8b}.shell-list-empty{padding:8px;font-size:12px;color:#8b8b8b;line-height:1.5}.shell-icon-wrap{position:relative;display:inline-flex;margin-right:10px;flex-shrink:0}.shell-icon-wrap .shell-icon{margin-right:0;font-size:18px}.sidebar.collapsed .shell-item{justify-content:center;padding:8px 0}.sidebar.collapsed .shell-icon-wrap{margin-right:0}.shell-tab-count{margin-left:6px;font-size:10px;padding:0 5px;border-radius:8px;background:#3e3e42;color:#ccc;vertical-align:1px}.shell-item .shell-actions{opacity:0;transition:opacity .15s}.shell-item:hover .shell-actions,.shell-item:focus-within .shell-actions,.shell-item.active .shell-actions{opacity:1}@media (hover: none){.shell-item .shell-actions{opacity:1}}.sidebar-link{margin:0 8px 8px;padding:8px 10px;background:transparent;border:1px solid #3e3e42;border-radius:4px;color:#c5c5c5;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}.sidebar-link:hover{border-color:#007acc;color:#fff}.sidebar-link.small{margin:8px 0 0;padding:4px 8px;font-size:11px;width:100%}.sidebar.collapsed .sidebar-link span{display:none}.cache-panel{padding:10px 16px;border-top:1px solid #3e3e42}.cache-row{display:flex;align-items:center;justify-content:space-between}.cache-label{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:#a0a0a0}.cache-error{margin-top:4px;font-size:11px;color:#f48771}.switch{position:relative;display:inline-block;width:34px;height:18px}.switch input{opacity:0;width:0;height:0}.switch-track{position:absolute;top:0;right:0;bottom:0;left:0;background:#555;border-radius:18px;cursor:pointer;transition:background .2s}.switch-track:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;background:#fff;border-radius:50%;transition:transform .2s}.switch input:checked+.switch-track{background:#0e639c}.switch input:checked+.switch-track:before{transform:translate(16px)}.switch input:focus-visible+.switch-track{outline:2px solid #007acc;outline-offset:2px}.switch input:disabled+.switch-track{opacity:.4;cursor:not-allowed}.user-info{margin:auto 0 0;border-top:1px solid #3e3e42;border-bottom:none;gap:10px;padding:10px 12px}.cache-panel+.user-info,.sidebar-link+.user-info{margin-top:0}.sidebar .cache-panel{margin-top:auto}.user-avatar{width:28px;height:28px;flex-shrink:0;border-radius:50%;background:#0e639c;color:#fff;font-weight:600;font-size:13px;display:flex;align-items:center;justify-content:center}.logout-btn{color:#c5c5c5}.logout-btn:hover{background-color:#3e3e42;color:#fff}.sidebar.collapsed .user-info{flex-direction:column;padding:10px 0}.tab{-webkit-user-select:none;user-select:none}.tab-btn{background:none;border:none;color:inherit;cursor:pointer;padding:2px;border-radius:4px;display:flex;align-items:center;opacity:.6}.tab-btn:hover{background-color:#4a4a4a;opacity:1}.tab:not(.active):not(:hover) .tab-btn{visibility:hidden}@media (hover: none){.tab .tab-btn{visibility:visible!important}}.notice{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px 6px 14px;font-size:13px;background:#3a2a26;color:#f4c4b8;border-bottom:1px solid #5a3a32}.terminal-pane{height:100%}.empty-state .btn{margin-top:16px;display:inline-flex;align-items:center;gap:6px}.modal{width:440px}.modal:focus{outline:none}.form-row{display:flex;gap:12px}.form-row .form-group.grow{flex:1;min-width:0}.form-row .form-group.port{width:96px}.form-hint{font-size:12px;color:#a0a0a0;margin:-4px 0 12px;line-height:1.5}.form-hint.warn{color:#dcdcaa}.modal-message{font-size:13px;line-height:1.6;color:#ccc}.btn:disabled{opacity:.6;cursor:default}.btn-danger{background-color:#a1260d;color:#fff}.btn-danger:hover{background-color:#c72e0f}.lat-good{color:#89d185}.lat-ok{color:#dcdcaa}.lat-bad{color:#f48771}@media (max-width: 768px){.hide-on-phone{display:none!important}}.mobile-menu-btn,.drawer-backdrop{display:none}@media (max-width: 768px){.mobile-menu-btn{display:inline-flex;flex-shrink:0;margin:0 2px}.sidebar{position:fixed;top:0;bottom:36px;left:0;z-index:60;width:min(300px,85vw);box-shadow:4px 0 24px #00000080;transition:transform .25s ease}.sidebar.collapsed{width:min(300px,85vw);transform:translate(-100%);box-shadow:none}.sidebar.collapsed .shell-info,.sidebar.collapsed .sidebar-title{display:block}.drawer-backdrop{display:block;position:fixed;top:0;right:0;bottom:36px;left:0;z-index:55;background:#00000080}}.term-toolbar{display:flex;gap:6px;padding:5px 6px;flex-shrink:0;background:#252526;border-bottom:1px solid #3e3e42}.term-tool{flex:1;min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:6px;background:#333337;color:#d4d4d4;border:1px solid #3e3e42;border-radius:6px;font-size:13px;cursor:pointer;-webkit-tap-highlight-color:transparent}.term-tool.icon-only{flex:0 0 44px}.term-tool:active{background:#3e3e42}.term-tool.on{background:#0e639c;border-color:#17b;color:#fff}.term-tool:focus-visible{outline:2px solid #007acc;outline-offset:1px}.modal.modal-wide{width:760px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);overflow:auto}.info-message{background:#89d1851a;border:1px solid #89d185;color:#89d185;padding:8px 12px;border-radius:4px;margin-bottom:16px;font-size:13px}.accounts-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.accounts-count{font-size:12px;color:#8b8b8b}.btn svg{vertical-align:-2px;margin-right:4px}.accounts-new{display:grid;grid-template-columns:1fr 1.3fr 1fr auto auto;gap:8px;margin-bottom:14px}.accounts-new input,.accounts-new select,.accounts-table select,.acct-inline input{padding:7px 10px;background:#3c3c3c;border:1px solid #474747;border-radius:4px;color:#ccc;font-size:13px;min-width:0}.accounts-new input:focus,.accounts-new select:focus,.accounts-table select:focus,.acct-inline input:focus{outline:none;border-color:#007acc}.accounts-table-wrap{border:1px solid #3e3e42;border-radius:6px;overflow-x:auto}.accounts-table{width:100%;border-collapse:collapse;font-size:13px}.accounts-table th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:#8b8b8b;padding:8px 12px;background:#252526;border-bottom:1px solid #3e3e42}.accounts-table td{padding:10px 12px;border-bottom:1px solid #333337;vertical-align:middle}.accounts-table tr:last-child td{border-bottom:none}.accounts-table tr.inactive .acct-name,.accounts-table tr.inactive .acct-email{opacity:.5}.acct-name{color:#fff;font-weight:500}.acct-email{color:#8b8b8b;font-size:12px;margin-top:2px}.acct-you{margin-left:6px;font-size:10px;padding:1px 6px;border-radius:8px;background:#0e639c;color:#fff;vertical-align:1px}.acct-shells{color:#a0a0a0}.acct-actions{text-align:right;white-space:nowrap}.acct-inline td{background:#252526}.acct-inline form,.acct-inline.danger td{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acct-inline.danger td{color:#f4c4b8}.acct-inline input{flex:1;min-width:140px}.acct-inline .form-hint{margin:6px 0 0}@media (max-width: 640px){.accounts-new{grid-template-columns:1fr 1fr}.accounts-table th:nth-child(4),.accounts-table td:nth-child(4){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,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.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}.virtual-keyboard-overlay{position:fixed;bottom:78px;left:0;right:0;height:200px;background:#000c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;padding:10px 0;animation:slideUp .3s ease-out;box-sizing:border-box}@keyframes keyPress{0%{transform:scale(1);box-shadow:0 2px 4px #0003}50%{transform:scale(.95);box-shadow:0 1px 2px #0006;background-color:#87ceeb4d}to{transform:scale(1);box-shadow:0 2px 4px #0003}}.keyboard-key.key-pressed{animation:keyPress .2s ease-out;position:relative}.keyboard-key.key-pressed:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle,rgba(135,206,235,.4) 0%,transparent 70%);pointer-events:none;animation:ripple .4s ease-out}@keyframes ripple{0%{transform:scale(0);opacity:1}to{transform:scale(1.5);opacity:0}}.virtual-keyboard{background:#1a1a1a;border-radius:12px 12px 0 0;border:1px solid #333;box-shadow:0 -4px 20px #00000080;overflow:hidden;max-height:60vh;width:100%;max-width:100%;box-sizing:border-box}.keyboard-grid{padding:12px 8px;max-height:45vh;overflow-y:auto;width:100%;box-sizing:border-box}.keyboard-row{display:flex;gap:4px;margin-bottom:8px;justify-content:center;align-items:center;width:100%;box-sizing:border-box;overflow:hidden}.keyboard-row:nth-child(1){justify-content:center}.keyboard-row:nth-child(2){justify-content:center;width:100%}.keyboard-row:nth-child(3){display:flex;justify-content:center;align-items:center}.keyboard-row:nth-child(4){justify-content:center}.keyboard-row:nth-child(5){display:flex;justify-content:center;width:100%}.keyboard-key{background:#2d2d2d;border:1px solid #444;color:#ccc;border-radius:6px;cursor:pointer;font-family:Courier New,DejaVu Sans Mono,Liberation Mono,monospace;font-size:12px;font-weight:600;position:relative;overflow:hidden;transition:all .15s ease;-webkit-user-select:none;user-select:none;touch-action:manipulation;display:flex;align-items:center;justify-content:center;text-align:center;min-width:42px;height:44px;padding:6px 8px;flex:0 0 auto}.keyboard-key:active{background:#007acc;border-color:#09f;color:#fff;transform:scale(.95)}.keyboard-key:hover{background:#3d3d3d;border-color:#555}.normal-key{min-width:42px}.letter-key{background:#2d2d2d;color:#fff;min-width:42px;font-weight:700;font-family:Courier New,DejaVu Sans Mono,Liberation Mono,monospace;letter-spacing:0;display:flex;align-items:center;justify-content:center}.letter-key:active{background:#007acc;border-color:#09f;color:#fff;transform:scale(.95)}.letter-key:hover{background:#3d3d3d;border-color:#555}.special-key{background:#3a3a3a;color:orange;min-width:50px;font-size:12px}.special-key:active{background:#ff8c00;color:#000}.modifier-key{background:#404040;color:#87ceeb;min-width:58px;font-size:12px}.modifier-key:active{background:#87ceeb;color:#000}.modifier-key.active{background:#5a8eb4;color:#fff;border:2px solid #87ceeb}.settings-key{background:#4a4a4a;color:orange;min-width:40px;font-size:16px}.settings-key:active{background:orange;color:#000}.space-key{background:#353535;min-width:100px;flex:1 1 auto}.space-key:active{background:#555}.enter-key{background:#4a4a4a;color:#90ee90;min-width:60px;font-size:18px}.enter-key:active{background:#90ee90;color:#000}.tab-key{background:#4a4a4a;color:#87ceeb;min-width:50px;font-size:16px}.tab-key:active{background:#87ceeb;color:#000}.backspace-key{background:#4a3a3a;color:orange;min-width:60px;font-size:15px}.backspace-key:active{background:orange;color:#000}.arrow-key{background:#3a3a3a;color:#ffb347;min-width:44px;font-size:15px}.arrow-key:active{background:#ffb347;color:#000}.shortcut-key{background:#4a2c4a;color:#ff69b4;min-width:46px;font-size:11px;font-weight:700}.shortcut-key:active{background:#ff69b4;color:#000}.number-toggle-key{background:#2a4a2a;color:#90ff90;min-width:58px;font-size:12px;font-weight:700}.number-toggle-key:active{background:#90ff90;color:#000}.number-row{background:#2a4a2a1a;border:1px solid #2a4a2a;border-radius:6px;padding:4px;margin-bottom:8px}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@media (max-width: 768px){.virtual-keyboard-overlay{bottom:40px;height:220px;padding:10px 0}.keyboard-key{min-width:40px;height:42px;font-size:12px}.special-key{min-width:48px;font-size:11px}.modifier-key{min-width:56px;font-size:11px}.space-key{min-width:140px}.enter-key{min-width:70px;font-size:11px}.shortcut-key{min-width:44px;font-size:10px}.keyboard-row{gap:4px;margin-bottom:7px}}@media (max-width: 480px){.virtual-keyboard-overlay{padding:5px 0}.keyboard-key{min-width:30px;height:36px;font-size:11px;padding:4px 6px}.special-key{min-width:36px;font-size:10px}.modifier-key{min-width:42px;font-size:10px}.space-key{min-width:80px;max-width:140px}.enter-key{min-width:50px;font-size:10px}.backspace-key{min-width:45px;font-size:13px}.arrow-key{min-width:35px;font-size:13px}.shortcut-key{min-width:32px;font-size:9px}.keyboard-grid{padding:6px 4px}.keyboard-row{gap:2px;margin-bottom:5px}.keyboard-row:nth-child(1){flex-wrap:nowrap}.keyboard-row:nth-child(2) .letter-key{flex:1;min-width:28px;max-width:32px}}@media (max-width: 360px){.virtual-keyboard-overlay{padding:3px 0}.keyboard-key{min-width:26px;height:32px;font-size:10px;padding:3px 4px}.special-key{min-width:32px;font-size:9px}.modifier-key{min-width:36px;font-size:9px}.space-key{min-width:60px;max-width:120px}.enter-key{min-width:42px;font-size:9px}.backspace-key{min-width:38px;font-size:12px}.arrow-key{min-width:30px;font-size:12px}.shortcut-key{min-width:28px;font-size:8px}.number-toggle-key{min-width:36px;font-size:9px}.keyboard-grid{padding:4px 2px}.keyboard-row{gap:1px;margin-bottom:4px}.keyboard-row:nth-child(2) .letter-key{flex:1;min-width:24px;max-width:28px}}.virtual-keyboard .keyboard-row{justify-content:center;overflow:visible;gap:4px}.virtual-keyboard .keyboard-row .keyboard-key{flex:1 1 0;min-width:0;max-width:none;padding-left:2px;padding-right:2px}.virtual-keyboard .keyboard-row:nth-child(3){padding:0 4%}.virtual-keyboard .keyboard-row .space-key{flex:4 1 0}.virtual-keyboard .keyboard-row .modifier-key,.virtual-keyboard .keyboard-row .enter-key,.virtual-keyboard .keyboard-row .backspace-key,.virtual-keyboard .keyboard-row .shortcut-key{flex:1.5 1 0}.terminal-wrapper>.virtual-keyboard-overlay{position:relative;bottom:auto;left:auto;right:auto;height:auto;flex-shrink:0;z-index:1;padding:6px 0;background:#1e1e1e;-webkit-backdrop-filter:none;backdrop-filter:none;border-top:1px solid #3e3e42}.terminal-wrapper>.virtual-keyboard-overlay .virtual-keyboard{max-height:45vh}.auth-page{display:flex;justify-content:center;align-items:center;min-height:100vh;min-height:100dvh;background:var(--bg);padding:20px;box-sizing:border-box}.auth-page .auth-container{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px #00000059;padding:28px 28px 24px;box-sizing:border-box}.auth-page .auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}.auth-page .auth-logo{width:40px;height:40px;border-radius:8px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.auth-page .auth-title{margin:0;font-size:18px;font-weight:600;color:var(--text-strong)}.auth-page .auth-subtitle{margin:2px 0 0;font-size:13px;color:var(--muted)}.auth-page .form-group{margin-bottom:16px}.auth-page .form-group label{display:block;margin-bottom:6px;font-size:12px;color:var(--text);text-transform:uppercase;letter-spacing:.5px}.auth-page .form-group input{width:100%;box-sizing:border-box;padding:9px 12px;background:var(--input);border:1px solid var(--input-border);border-radius:4px;color:var(--text);font-size:14px;transition:border-color .15s}.auth-page .form-group input:focus{outline:none;border-color:var(--focus)}.auth-page .form-group input:disabled{opacity:.6}.auth-page .form-group input::placeholder{color:#6f6f6f}.auth-page .password-field{position:relative}.auth-page .password-field input{padding-right:40px}.auth-page .reveal-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--muted);padding:6px;border-radius:4px;cursor:pointer;display:flex}.auth-page .reveal-btn:hover{color:var(--text-strong);background:var(--border)}.auth-page .reveal-btn:focus-visible{outline:2px solid var(--focus)}.auth-page .error-message{background:var(--danger-bg);border:1px solid var(--danger);color:var(--danger);padding:8px 12px;border-radius:4px;margin-bottom:16px;font-size:13px}.auth-page .auth-button{width:100%;margin-top:4px;padding:10px;border:none;border-radius:4px;font-size:14px;font-weight:600;cursor:pointer;background:var(--accent);color:#fff;transition:background-color .15s}.auth-page .auth-button:hover:not(:disabled){background:var(--accent-hover)}.auth-page .auth-button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.auth-page .auth-button:disabled{opacity:.6;cursor:default}.auth-page .auth-switch{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);text-align:center;font-size:13px;color:var(--muted)}.auth-page .auth-switch-button{background:none;border:none;padding:0;color:var(--focus);font:inherit;font-weight:600;cursor:pointer}.auth-page .auth-switch-button:hover:not(:disabled){text-decoration:underline}.auth-page .auth-note{margin-top:16px;text-align:center;font-size:12px;color:var(--muted)}@media (max-width: 480px){.auth-page{padding:12px;align-items:flex-start;padding-top:12vh}.auth-page .auth-container{padding:22px 18px 18px}}
