:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;--page: #f7f8f5;--surface: #ffffff;--surface-alt: #f3f7f3;--ink: #1b2a22;--muted: #66746b;--line: #dce5dc;--accent: #216f52;--accent-soft: #e5f1e8;--danger: #b34247;--danger-soft: #fff1f0;--terminal-bg: #111b16;--terminal-fg: #e8f4eb;color-scheme:light}:root[data-theme=dark]{--page: #101715;--surface: #19221e;--surface-alt: #202e26;--ink: #edf4ed;--muted: #a0b1a3;--line: #314238;--accent: #9bdeb0;--accent-soft: #274433;--danger: #f4a3a3;--danger-soft: #3a2828;--terminal-bg: #111b16;--terminal-fg: #e8f4eb;color-scheme:dark}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:var(--page);color:var(--ink)}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.topbar{border-bottom:1px solid var(--line);background:var(--surface)}.topbar-inner,.shell{width:min(980px,calc(100% - 40px));margin:0 auto}.topbar-inner{min-height:70px;display:flex;align-items:center;justify-content:space-between}.brand{display:inline-flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}.brand-mark{width:34px;height:34px;display:block;flex:0 0 auto;border-radius:8px;object-fit:cover}.brand strong{font-size:16px;letter-spacing:-.04em}.top-actions{display:flex;align-items:center;gap:15px}.hub-status{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.status-dot{width:7px;height:7px;display:inline-block;flex:0 0 auto;border-radius:50%;background:var(--muted)}.status-dot.online{background:var(--accent)}.icon-button{width:34px;height:34px;display:grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}.icon-button:hover,.refresh-button:hover,.device-toggle:hover{border-color:var(--accent);color:var(--accent)}.icon-button svg{width:16px;height:16px}.shell{padding:50px 0 90px}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-heading h1{display:flex;align-items:center;gap:10px;margin:0;font-size:27px;letter-spacing:-.05em}.page-heading h1 span{color:var(--muted);font-size:15px;font-weight:500;letter-spacing:0}.refresh-button{display:inline-flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);font-size:12px}.refresh-button svg{width:15px;height:15px}.device-list{display:grid;gap:12px}.device-card{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.device-card.expanded{border-color:var(--accent)}.device-main{min-height:82px;display:flex;align-items:center;gap:14px;padding:16px 18px}.device-icon{width:40px;height:40px;flex:0 0 auto;display:grid;place-items:center;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.device-icon svg{width:20px;height:20px}.device-info{min-width:0;flex:1}.device-title{display:flex;align-items:center;gap:7px}.device-title h2{overflow:hidden;margin:0 5px 0 0;font-size:14px;font-weight:720;text-overflow:ellipsis;white-space:nowrap}.status-text{color:var(--muted);font-size:11px}.device-info p{overflow:hidden;margin:5px 0 0;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.device-info p span{margin:0 5px}.device-toggle{display:inline-flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font-size:12px}.device-toggle svg{width:14px;height:14px}.sessions{border-top:1px solid var(--line);padding:14px 18px 18px 72px}.sessions-header{min-height:30px;display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:8px}.sessions-header strong{font-size:12px;font-weight:700}.sessions-header strong span{margin-left:5px;color:var(--muted);font-weight:500}.new-session-button{display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border:0;border-radius:6px;background:transparent;color:var(--accent);font-size:11px;font-weight:700}.new-session-button:hover{background:var(--accent-soft)}.new-session-button svg{width:14px;height:14px}.session-form{display:flex;gap:7px}.create-form{max-width:490px;margin:9px 0 13px}.session-form input{min-width:0;flex:1;padding:8px 10px;border:1px solid var(--line);border-radius:7px;outline:none;background:var(--surface-alt);color:var(--ink);font-size:12px}.session-form input:focus{border-color:var(--accent)}.session-form button{padding:7px 10px;border:1px solid var(--accent);border-radius:7px;background:var(--accent);color:var(--page);font-size:11px;font-weight:700}.session-form .subtle-button{border-color:var(--line);background:var(--surface);color:var(--muted)}.session-list{margin:0;padding:0;list-style:none}.session-row{min-height:49px;display:flex;flex-wrap:wrap;align-items:center;gap:10px;border-top:1px solid var(--line)}.terminal-icon{width:17px;height:17px;flex:0 0 auto;color:var(--accent)}.session-info{min-width:0;flex:1;display:flex;align-items:baseline;gap:12px}.session-info strong{overflow:hidden;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.session-info span{color:var(--muted);font-size:10px;white-space:nowrap}.session-open{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border:0;background:transparent;color:var(--ink);text-align:left}.session-open:hover strong,.session-open:hover .session-enter{color:var(--accent)}.session-enter{color:var(--muted);font-size:11px}.session-actions{display:flex;gap:5px}.session-actions button{width:28px;height:28px;display:grid;place-items:center;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted)}.session-actions button:hover{border-color:var(--line);color:var(--ink)}.session-actions .delete-button:hover{border-color:var(--danger);color:var(--danger)}.session-actions svg{width:14px;height:14px}.rename-form{flex-basis:100%;margin:0 0 10px 27px}.rename-form input{max-width:250px}.session-note{margin:8px 0 0;color:var(--muted);font-size:11px}.session-repair{margin-top:10px}.session-repair p{margin:0 0 6px}.session-repair pre{margin:0 0 6px;padding:8px;border-radius:6px;background:var(--surface-alt);color:var(--ink);white-space:pre;overflow-x:auto;scrollbar-width:none}.empty-sessions{margin:12px 0 2px}.notice{margin-bottom:10px;padding:9px 11px;border-radius:7px;font-size:11px}.notice.error{border:1px solid var(--danger);background:var(--danger-soft);color:var(--danger)}.text-button{margin-left:6px;padding:0;border:0;background:none;color:inherit;font-size:inherit;font-weight:700;text-decoration:underline}.empty-state{min-height:190px;display:grid;justify-items:center;align-content:center;gap:9px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);background:var(--surface);text-align:center}.empty-state svg{width:24px;height:24px;color:var(--accent)}.empty-state strong{color:var(--ink);font-size:13px}.empty-state span{font-size:11px}.terminal-shell{width:min(1180px,calc(100% - 40px));padding-top:24px}.terminal-page{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.terminal-toolbar{min-height:53px;display:flex;align-items:center;gap:18px;padding:9px 16px;border-bottom:1px solid var(--line)}.terminal-back{display:inline-flex;align-items:center;gap:6px;padding:5px 0;border:0;background:none;color:var(--accent);font-size:12px}.terminal-back svg,.terminal-expand svg{width:15px;height:15px}.terminal-heading{display:flex;align-items:baseline;gap:9px;min-width:0}.terminal-heading strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.terminal-heading span,.terminal-state{color:var(--muted);font-size:11px;white-space:nowrap}.terminal-state{margin-left:auto}.terminal-expand{display:grid;place-items:center;padding:5px;border:0;background:none;color:var(--muted)}.terminal-surface{height:min(72vh,760px);min-height:360px;padding:14px;background:var(--terminal-bg)}.terminal-surface .xterm{height:100%}.terminal-tools{display:flex;align-items:center;gap:2px}.terminal-tools button{width:30px;height:30px;display:grid;place-items:center;padding:0;border:1px solid transparent;border-radius:7px;background:none;color:var(--muted)}.terminal-tools button:hover:not(:disabled){border-color:var(--line);color:var(--ink)}.terminal-tools button.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.terminal-tools button:disabled{opacity:.35}.terminal-tools svg{width:15px;height:15px}.terminal-page.with-keys .terminal-surface{height:min(62vh,680px)}.terminal-keys{display:grid;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface-alt)}.key-row{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.key-row::-webkit-scrollbar{display:none}.key-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}.key-tabs::-webkit-scrollbar{display:none}.key-tabs button{flex:0 0 auto;height:26px;padding:0 11px;border:1px solid transparent;border-radius:13px;background:transparent;color:var(--muted);font-size:12px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.key-tabs button.active{border-color:var(--line);background:var(--surface);color:var(--ink);font-weight:600}.key-divider{flex:0 0 1px;align-self:stretch;margin:4px 1px;background:var(--line)}.key{min-width:42px;height:36px;flex:0 0 auto;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font:600 13px ui-monospace,SFMono-Regular,Menlo,monospace;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.key:active{background:var(--accent-soft)}.key.shortcut{color:var(--accent)}.key.modifier.once{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.key.modifier.lock{border-color:var(--accent);background:var(--accent);color:var(--page)}.command-line{display:flex;gap:6px}.command-line input{min-width:0;flex:1;height:38px;padding:0 11px;border:1px solid var(--line);border-radius:8px;outline:none;background:var(--surface);color:var(--ink);font:16px ui-monospace,SFMono-Regular,Menlo,monospace}.command-line input:focus{border-color:var(--accent)}.command-line button{width:44px;height:38px;display:grid;place-items:center;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:var(--page)}.command-line button svg{width:17px;height:17px}@media(min-width:601px)and (max-width:1024px){.terminal-shell{width:calc(100% - 24px);padding-top:12px}.terminal-surface{height:calc(100dvh - 190px)}.terminal-page.with-keys .terminal-surface{height:calc(100dvh - 330px);min-height:260px}}@media(pointer:coarse),(max-width:600px){.terminal-shell{width:100%;padding:0}.terminal-page{position:fixed;inset:0 0 auto;z-index:20;height:var(--terminal-viewport, 100dvh);display:flex;flex-direction:column;border:0;border-radius:0}.terminal-page .terminal-surface,.terminal-page.with-keys .terminal-surface{flex:1;height:auto;min-height:0}.terminal-toolbar{padding-top:max(9px,env(safe-area-inset-top))}}.user-name{color:var(--ink);font-size:12px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative}.login-theme{position:absolute;top:24px;right:24px}.login-card{width:min(400px,100%);padding:36px 30px 26px;border:1px solid var(--line);border-radius:18px;background:var(--surface);text-align:center;box-shadow:0 18px 60px #0000000b}.login-mark{width:72px;height:72px;display:block;margin:0 auto;border-radius:16px;object-fit:cover}.login-card h1{margin:22px 0 6px;font-size:29px;letter-spacing:-.05em}.login-card p{margin:0 0 34px;color:var(--muted);font-size:13px}.github-login{display:block;width:100%;padding:13px;border:1px solid var(--accent);border-radius:9px;background:var(--accent);color:var(--page);font-size:14px;font-weight:700;text-align:center;text-decoration:none}.github-login:hover{opacity:.88}.login-token-toggle{display:block;margin:20px auto 0;padding:6px 10px;border:0;background:none;color:var(--muted);font-size:12px}.login-token-toggle:hover{color:var(--ink)}.login-token-form{display:grid;gap:10px;margin-top:18px;text-align:left}.login-token-form label{color:var(--muted);font-size:12px}.login-token-form input{width:100%;padding:11px;border:1px solid var(--line);border-radius:8px;background:var(--surface-alt);color:var(--ink)}.login-token-form button{padding:11px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:var(--page);font-weight:700}.login-token-form .notice{margin:0}.login-card .login-token-help{margin:1px 0 5px;color:var(--muted);font-size:12px;line-height:1.7}.login-token-help code{padding:2px 5px;border-radius:4px;background:var(--surface-alt);color:var(--ink);font-size:11px;overflow-wrap:anywhere}.workspace-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-4px 0 18px}.workspace-bar label{margin-right:auto;color:var(--muted);font-size:12px}.workspace-bar select,.workspace-bar button,.secret-panel button{margin-left:5px;padding:7px 9px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font-size:12px}.workspace-bar button:hover,.secret-panel button:hover{border-color:var(--accent);color:var(--accent)}.workspace-bar select,.dialog-field select{appearance:none;-webkit-appearance:none;padding-right:34px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px;text-overflow:ellipsis;cursor:pointer}.workspace-bar select{field-sizing:content;min-width:120px;max-width:min(320px,70vw)}.workspace-bar select:hover{border-color:var(--accent)}.secret-panel{margin-bottom:16px;padding:15px;border:1px solid var(--accent);border-radius:9px;background:var(--surface);font-size:12px}.secret-panel .os-tabs{display:flex;gap:6px;margin:10px 0 2px}.secret-panel .os-tabs button{margin-left:0}.secret-panel .os-tabs button.active{border-color:var(--accent);background:var(--accent);color:var(--surface)}.secret-panel pre{overflow:auto;padding:10px;border-radius:6px;background:var(--surface-alt);-webkit-user-select:all;user-select:all}.management-panel{margin:0 0 16px;padding:10px 14px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}.management-heading,.management-row{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:12px}.management-heading strong,.management-row span{margin-right:auto}.management-row{border-top:1px solid var(--line)}.management-panel button,.device-revoke{padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--muted);font-size:11px}.management-panel button:hover,.device-revoke:hover{border-color:var(--accent);color:var(--accent)}.action-dialog{width:min(440px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);box-shadow:0 24px 70px #0004}.action-dialog::backdrop{background:#10171599}.action-dialog form{padding:24px}.action-dialog h2{margin:0;font-size:18px;letter-spacing:-.03em}.dialog-description{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.6;overflow-wrap:anywhere}.dialog-fields{display:grid;gap:16px;margin-top:22px}.dialog-field{display:grid;gap:7px;color:var(--ink);font-size:12px;font-weight:600}.dialog-field input,.dialog-field select{width:100%;min-height:42px;padding:9px 11px;border:1px solid var(--line);border-radius:8px;outline:none;background-color:var(--surface-alt);color:var(--ink);font-size:14px;font-weight:400}.dialog-field input:focus,.dialog-field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.dialog-error{margin:16px 0 0;color:var(--danger);font-size:12px;line-height:1.5}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:26px}.dialog-actions button{min-height:38px;padding:8px 14px;border-radius:8px;font-size:12px;font-weight:650}.dialog-cancel{border:1px solid var(--line);background:var(--surface);color:var(--ink)}.dialog-confirm{border:1px solid var(--accent);background:var(--accent);color:var(--page)}.dialog-confirm.destructive{border-color:var(--danger);background:var(--danger);color:var(--surface)}.dialog-cancel:hover{border-color:var(--accent)}.dialog-confirm:hover{opacity:.88}@media(max-width:600px){.topbar-inner,.shell{width:min(100% - 28px,980px)}.shell{padding-top:31px}.hub-status{font-size:11px}.device-main{gap:10px;padding:13px}.device-icon{width:35px;height:35px}.device-icon svg{width:18px;height:18px}.device-title h2{font-size:13px}.device-toggle{font-size:11px}.sessions{padding:12px 13px 15px}.session-info{display:grid;gap:3px}.terminal-shell{width:100%;padding-top:0}.terminal-page{border-left:0;border-right:0;border-radius:0}.terminal-toolbar{gap:9px;padding:9px 12px}.terminal-heading span,.terminal-expand{display:none}.terminal-state{max-width:34vw;overflow:hidden;text-overflow:ellipsis}.terminal-back{font-size:0;gap:0}.terminal-back svg{width:18px;height:18px}.terminal-tools{margin-left:auto}.terminal-surface{padding:6px}.terminal-keys{padding:6px 6px calc(6px + env(safe-area-inset-bottom));gap:5px}.key{min-width:40px;height:34px;padding:0 8px}.action-dialog form{padding:20px}}.login-token-form .login-help-toggle{margin:0 auto;padding:4px 0;border:0;background:none;color:var(--muted);font-size:11px;opacity:.75;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.login-token-form .login-help-toggle:hover{color:var(--accent)}.login-help{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-alt);color:var(--muted);font-size:12px;line-height:1.6;text-align:left}.login-card .login-help p{margin:0}.login-card .login-help .login-help-note{font-size:11px;opacity:.7;text-align:center}.login-help-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.login-help-row span{color:var(--ink);font-weight:600;letter-spacing:.02em}.login-help strong{color:var(--ink)}.login-help pre{margin:0;padding:8px 10px;white-space:pre;overflow-x:auto;scrollbar-width:none;border-radius:6px;background:var(--surface);color:var(--ink);font:11px ui-monospace,SFMono-Regular,Menlo,monospace;-webkit-user-select:all;user-select:all;text-align:center}.login-card .login-hint{margin:2px 0 0;color:var(--muted);font-size:13px;line-height:1.5;text-align:center}.login-card .login-hint strong{color:var(--ink)}.login-divider{display:flex;align-items:center;gap:10px;margin:16px 0 4px;color:var(--muted);font-size:12px}.login-divider:before,.login-divider:after{content:"";flex:1;border-top:1px solid var(--line)}.dialog-secondary{justify-self:start;padding:8px 12px;border:1px solid var(--accent);border-radius:8px;background:var(--accent-soft);color:var(--accent);font-size:13px;cursor:pointer}.workspace-bar button.danger-text{color:#c2410c}.workspace-bar button.danger-text:hover{border-color:#c2410c;color:#c2410c}:root{--notify-blue: #2f6fd0;--notify-green: #1f8a5b;--notify-yellow: #b7860b;--notify-red: #c9393f}:root[data-theme=dark]{--notify-blue: #8ab4ff;--notify-green: #7ddca5;--notify-yellow: #f2cf66;--notify-red: #ff9a9a}.notify-badge{display:inline-flex;align-items:center;gap:3px;height:20px;padding:0 7px;border-radius:10px;font-size:12px;font-weight:600;color:#fff;background:var(--notify-blue)}.notify-badge svg{width:12px;height:12px}.notify-badge.green{background:var(--notify-green)}.notify-badge.yellow{background:var(--notify-yellow)}.notify-badge.red{background:var(--notify-red)}.notify-dot{display:inline-block;width:8px;height:8px;margin-right:6px;border-radius:50%;background:var(--notify-blue);vertical-align:middle;flex:none}.notify-dot.green{background:var(--notify-green)}.notify-dot.yellow{background:var(--notify-yellow)}.notify-dot.red{background:var(--notify-red)}.session-row.notified,.pinned-row.notified{box-shadow:inset 3px 0 0 var(--notify-blue)}.notify-green.notified{box-shadow:inset 3px 0 0 var(--notify-green)}.notify-yellow.notified{box-shadow:inset 3px 0 0 var(--notify-yellow)}.notify-red.notified{box-shadow:inset 3px 0 0 var(--notify-red)}.notify-message{color:var(--ink);overflow-wrap:anywhere}.notify-hint{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding:9px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-alt);color:var(--muted);font-size:13px}.notify-hint svg{width:15px;height:15px}.notify-hint button{margin-left:auto}.session-actions button.active{color:var(--accent)}.sessions-header-actions{display:flex;gap:6px}.batch-bar{display:flex;align-items:center;gap:12px;padding:8px 0;font-size:13px}.batch-bar label{display:flex;align-items:center;gap:6px}.batch-check{width:16px;height:16px;margin:0 2px;accent-color:var(--accent)}.batch-error{color:var(--danger);font-size:12px}.pinned-section{margin:0 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.pinned-section h2{display:flex;align-items:center;gap:6px;margin:0 0 6px;font-size:14px}.pinned-section h2 svg{width:14px;height:14px;color:var(--accent)}.pinned-section ul{margin:0;padding:0;list-style:none}.pinned-row{display:flex;align-items:center;gap:10px;min-height:44px;padding-left:6px;border-top:1px solid var(--line)}.pinned-row:first-child{border-top:0}.pinned-row .session-info{flex:1;min-width:0}.pinned-row .terminal-icon{width:14px;height:14px;color:var(--muted)}.pinned-open{padding:4px 12px}.icon-only{width:28px;height:28px;display:grid;place-items:center;padding:0;border:1px solid transparent;background:none;color:var(--muted)}.icon-only svg{width:14px;height:14px}.export-menu{position:relative;display:inline-flex}.export-options{position:absolute;top:34px;right:0;z-index:20;display:flex;flex-direction:column;min-width:130px;padding:4px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 6px 20px #0000002e}.terminal-tools .export-options button{width:auto;height:32px;justify-content:start;padding:0 10px;color:var(--ink);white-space:nowrap;display:flex;align-items:center}
