:root{--bg: #0b0d10;--panel: #12161b;--raised: #171c22;--line: #232a33;--fg: #d5dae1;--muted: #7c8894;--accent: #60a5fa;--danger: #ef4444;--ok: #34d399;--app-h: 100dvh;--vv-top: 0px;--safe-t: env(safe-area-inset-top, 0px);--safe-b: env(safe-area-inset-bottom, 0px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);color-scheme:dark}html[data-kb]{--safe-b: 0px}*{box-sizing:border-box}*{scrollbar-width:none;-ms-overflow-style:none}*::-webkit-scrollbar{width:0;height:0;display:none}html{height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%;touch-action:manipulation}body{position:fixed;top:var(--vv-top);left:0;width:100%;height:var(--app-h);margin:0;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--fg);font:14px/1.45 -apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}#root{position:relative;height:100%}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.45;cursor:default}.muted{color:var(--muted)}.small{font-size:12px}.err{color:var(--danger);font-size:13px;padding:6px 14px}.center-pad{padding:24px;text-align:center}.page{position:relative;height:100%;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:var(--safe-t) var(--safe-r) calc(var(--safe-b) + 12px) var(--safe-l)}.page.center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;overflow:hidden}.page-shell{display:flex;flex-direction:column;overflow:hidden;padding-bottom:0}.scroller{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:calc(var(--safe-b) + 88px)}.login{display:flex;flex-direction:column;gap:12px;width:min(340px,88vw)}.login h1{margin:0;font-size:22px}.login p{margin:0}.input{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--fg);padding:9px 12px;font-size:16px;line-height:1.4;font-family:inherit;resize:none;outline:none}.input:focus{border-color:var(--accent)}.btn{background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:10px 14px;min-height:40px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#08111f;font-weight:600}.btn-small{padding:7px 11px;min-height:34px;font-size:13px}.btn.wide{width:100%}.btn:active{background:#1e242c}.btn-primary:active{background:#4f92e0}.listbar{display:flex;align-items:center;gap:10px;padding:10px 14px}.listbar h1{margin:0;font-size:18px;flex:1}.conn{font-size:12px;color:var(--muted)}.conn-ok{color:var(--ok)}.agentbar{flex:none;display:flex;gap:6px;padding:0 14px 8px;overflow-x:auto}.dot-on{background:var(--ok)}.chip.chip-offline{color:var(--muted);border-color:var(--line)}.chip-offline .dot{background:var(--muted)}.chip-count{font-variant-numeric:tabular-nums;opacity:.75}.cards{list-style:none;margin:0;padding:0 12px;display:flex;flex-direction:column;gap:10px}.card{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 44px 12px 14px}.card:active{background:#161b21}.card-attention{border-left:3px solid #fb923c}.card-top{display:flex;align-items:center;gap:8px}.card-title{font-weight:600;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-time{font-size:12px;color:var(--muted);white-space:nowrap}.card-host{flex:none;font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:1px 5px;white-space:nowrap}.card-cwd{font-size:12px;color:var(--muted);margin:4px 0 8px;word-break:break-all}.card-bottom{display:flex;align-items:center;gap:8px;font-size:12px;flex-wrap:wrap}.card-kill{position:absolute;top:4px;right:4px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}.dot-pulse{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.badge{border:1px solid var(--line);border-radius:999px;padding:4px 10px;font-size:12px;white-space:nowrap}.badge-on{background:#ffffff0f}.badge-danger{animation:danger 1.4s ease-in-out infinite}@keyframes danger{0%,to{box-shadow:0 0 #ef444480}50%{box-shadow:0 0 0 4px #ef444400}}.empty{text-align:center;padding:60px 20px}.fab{position:absolute;right:calc(16px + var(--safe-r));bottom:calc(20px + var(--safe-b));width:56px;height:56px;border-radius:50%;background:var(--accent);color:#08111f;font-size:30px;line-height:1;box-shadow:0 6px 20px #00000080}.fab:active{transform:scale(.94)}.modepick{padding:8px 14px;display:flex;flex-direction:column;gap:6px}.modepick-row{display:flex;gap:6px;flex-wrap:wrap}.crumbs{display:flex;gap:6px;padding:8px 14px;overflow-x:auto}.path-line{padding:0 14px 8px;font-size:12px;color:var(--muted);word-break:break-all}.dirs{list-style:none;margin:0;padding:0 12px;display:flex;flex-direction:column;gap:6px}.dir{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:4px 8px 4px 10px}.dir-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:10px 0;text-align:left}.dir-icon{width:20px;flex:none}.dir-name{word-break:break-all}.sticky-bottom{position:sticky;bottom:0;padding:12px;background:linear-gradient(transparent,var(--bg) 40%)}.chip{border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-size:12px;color:var(--muted);white-space:nowrap}.chip-on{color:var(--accent);border-color:var(--accent)}.chip:active{background:var(--raised)}.term-page{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;grid-template-columns:minmax(0,1fr);padding:var(--safe-t) var(--safe-r) var(--safe-b) var(--safe-l);overflow:hidden}.term-page>*{min-width:0}.statusbar{display:flex;align-items:center;gap:6px;padding:5px 8px;border-bottom:1px solid var(--line)}.back{font-size:24px;width:36px;height:36px;flex:none;color:var(--muted)}.sb-main{flex:1;min-width:0}.sb-line1{display:flex;align-items:center;gap:8px}.sb-title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-line2{font-size:11px;color:var(--muted);display:flex;gap:6px;min-width:0}.sb-cwd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-host{flex:none;color:var(--accent);white-space:nowrap}.sb-state{font-size:12px;display:flex;align-items:center;gap:5px;white-space:nowrap}.sb-elapsed{color:var(--muted)}.sb-offline{color:var(--danger)}.sb-gear{width:34px;height:34px;flex:none;color:var(--muted);font-size:17px}.term-host{position:relative;min-height:0;min-width:0;overflow:hidden;background:var(--bg);touch-action:pan-y;display:flex;align-items:flex-end}.term-host>.xterm{flex:0 0 auto;width:100%}.term-host .xterm-viewport{overflow-y:auto!important;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:transparent!important}.term-host .xterm-helper-textarea{display:none}.keybar{border-top:1px solid var(--line);background:var(--panel);overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}.keyrow{display:flex;gap:4px;padding:4px}.keyrow-secondary{overflow-x:auto;scroll-behavior:smooth}.keyrow-secondary[data-more]{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 32px),transparent)}.keyrow-primary{padding-left:14px;overflow-x:auto}.key{position:relative;overflow:hidden;flex:1 1 auto;min-width:42px;min-height:44px;border:1px solid var(--line);border-radius:8px;background:var(--raised);font-size:13px;white-space:nowrap;padding:0 2px;transition:transform 40ms ease-out,background 40ms ease-out}.keyrow-primary .key{flex:1 1 0;min-width:34px}.key:active{transform:scale(.94);background:#212832}.key-danger{color:#fca5a5;border-color:#4b2326}.key-literal{color:var(--accent);min-width:38px}.keyrow-secondary .key{min-height:38px;font-size:12px}.key-hold{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--danger);transform-origin:left;transform:scaleX(0)}@media(max-height:500px){.statusbar{padding:3px 8px}.sb-line2{display:none}.back{height:32px}.keyrow{padding:3px;gap:3px}.key{min-height:36px}.keyrow-secondary .key{min-height:30px;font-size:11px}.composer{padding:4px 8px}.composer-tools{padding-top:4px}.chip{padding:5px 10px}}.composer{border-top:1px solid var(--line);padding:6px 8px;background:var(--panel)}.composer-row{display:flex;gap:8px;align-items:flex-end}.composer-row .input{flex:1;min-width:0;max-height:120px;overflow-y:auto}.composer-row .btn{flex:none}.composer-tools{display:flex;gap:6px;align-items:center;padding-top:6px;overflow-x:auto}.hint{font-size:11px;color:var(--muted);white-space:nowrap}.sheet-mask{position:absolute;inset:0;background:#0009;display:flex;align-items:flex-end;z-index:50}.sheet{width:100%;background:var(--panel);border-radius:14px 14px 0 0;border-top:1px solid var(--line);padding:16px 14px calc(16px + var(--safe-b));display:flex;flex-direction:column;gap:12px;max-height:100%;overflow-y:auto}.sheet-title{font-size:15px;font-weight:600}.sheet-actions{display:flex;justify-content:flex-end;gap:8px}.sheet-row{display:flex;align-items:center;gap:10px}.sheet-row-label{flex:1}.stepper{display:flex;align-items:center;gap:4px}.stepper button{width:40px;height:40px;border:1px solid var(--line);border-radius:9px;background:var(--raised);font-size:18px}.stepper button:active{background:#212832}.stepper-value{min-width:46px;text-align:center;font-variant-numeric:tabular-nums}
