:root{--bg: #0b0d10;--panel: #12161b;--line: #232a33;--fg: #d5dae1;--muted: #7c8894;--accent: #60a5fa;--danger: #ef4444;--kb: 0px;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);font:14px/1.45 -apple-system,BlinkMacSystemFont,PingFang SC,Helvetica Neue,sans-serif;position:fixed;overflow:hidden;width:100%;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}button:disabled{opacity:.45;cursor:default}.muted{color:var(--muted)}.small{font-size:12px}.err{color:var(--danger);font-size:13px;padding:6px 0}.center-pad{padding:24px;text-align:center}.page{height:100dvh;overflow-y:auto;padding:env(safe-area-inset-top) env(safe-area-inset-right) calc(env(safe-area-inset-bottom) + 12px) env(safe-area-inset-left)}.page.center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.login{display:flex;flex-direction:column;gap:12px;width:min(320px,86vw)}.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:10px 12px;font:inherit;resize:none;outline:none}.input:focus{border-color:var(--accent)}.input-direct{border-color:var(--accent)}.btn{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:9px 14px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#08111f;font-weight:600}.btn-small{padding:6px 10px;font-size:13px}.btn.wide{width:100%}.listbar{display:flex;align-items:center;gap:10px;padding:12px 14px}.listbar h1{margin:0;font-size:18px;flex:1}.conn{font-size:12px;color:var(--muted)}.conn-ok{color:#34d399}.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 14px}.card-attention{border-left:3px solid #fb923c}.card-top{display:flex;align-items:center;gap:8px}.card-title{font-weight:600;flex:1}.card-time{font-size:12px;color:var(--muted)}.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:8px;right:8px;color:var(--muted);padding:6px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.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:3px 9px;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:fixed;right:calc(16px + env(safe-area-inset-right));bottom:calc(20px + env(safe-area-inset-bottom));width:52px;height:52px;border-radius:50%;background:var(--accent);color:#08111f;font-size:28px;line-height:1;box-shadow:0 6px 20px #00000080}.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 10px}.dir-main{flex:1;display:flex;align-items:center;gap:10px;padding:8px 0;text-align:left}.dir-icon{width:20px}.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:5px 11px;font-size:12px;color:var(--muted);white-space:nowrap}.chip-on{color:var(--accent);border-color:var(--accent)}.term-page{height:100dvh;display:grid;grid-template-rows:auto 1fr auto auto;padding-top:env(safe-area-inset-top);padding-bottom:calc(env(safe-area-inset-bottom) + var(--kb));transition:padding-bottom .15s ease-out;overflow:hidden}.statusbar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--line)}.back{font-size:22px;padding:0 8px;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}.sb-cwd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left}.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)}.term-host{min-height:0;overflow:hidden;padding:4px 2px}.keybar{border-top:1px solid var(--line);background:var(--panel);touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}.keyrow{display:flex;gap:3px;padding:4px}.keyrow-secondary{overflow-x:auto;scrollbar-width:none}.keyrow-secondary::-webkit-scrollbar{display:none}.keyrow-primary{padding-left:12px}.key{position:relative;overflow:hidden;flex:1 0 auto;min-width:40px;min-height:44px;border:1px solid var(--line);border-radius:8px;background:#171c22;font-size:13px;transition:transform 40ms ease-out,background 40ms ease-out}.key:active{transform:scale(.94);background:#212832}.key-danger{color:#fca5a5;border-color:#4b2326}.key-literal{color:var(--accent);min-width:34px}.keyrow-secondary .key{min-height:36px;font-size:12px}.key-hold{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--danger);transform-origin:left;transform:scaleX(0)}.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;max-height:140px}.composer-tools{display:flex;gap:6px;align-items:center;padding-top:6px;flex-wrap:wrap}.hint{font-size:11px;color:var(--muted)}.sheet-mask{position:fixed;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;padding:16px 14px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.sheet-title{font-size:14px}.sheet-actions{display:flex;justify-content:flex-end;gap:8px}
