:root,:root[data-theme=dark]{--bg: #0c0e12;--bg-elev: #14171d;--bg-elev2: #1a1e26;--bg-hover: #1f242d;--bg-active: #242a34;--border: #262b34;--border-strong: #343b46;--text: #e7ecf3;--text-dim: #9aa4b2;--text-faint: #6b7480;--accent: #4f8ff7;--accent-hover: #6aa1f9;--accent-fg: #ffffff;--accent-soft: rgba(79, 143, 247, .14);--accent-border: rgba(79, 143, 247, .4);--green: #46c266;--green-soft: rgba(70, 194, 102, .14);--red: #f4564a;--red-soft: rgba(244, 86, 74, .13);--amber: #e0a64a;--amber-soft: rgba(224, 166, 74, .14);--shadow: 0 8px 30px rgba(0, 0, 0, .45);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);color-scheme:dark}:root[data-theme=light]{--bg: #ffffff;--bg-elev: #f7f8fa;--bg-elev2: #eef1f5;--bg-hover: #eef1f5;--bg-active: #e6eaf0;--border: #e2e6ec;--border-strong: #d0d7de;--text: #1a1f29;--text-dim: #5a6573;--text-faint: #8a94a3;--accent: #2f6fe0;--accent-hover: #2560c8;--accent-fg: #ffffff;--accent-soft: rgba(47, 111, 224, .1);--accent-border: rgba(47, 111, 224, .35);--green: #1f9d4d;--green-soft: rgba(31, 157, 77, .1);--red: #d83a2d;--red-soft: rgba(216, 58, 45, .09);--amber: #b9821f;--amber-soft: rgba(185, 130, 31, .12);--shadow: 0 10px 34px rgba(20, 30, 50, .12);--shadow-sm: 0 2px 8px rgba(20, 30, 50, .08);color-scheme:light}:root{--r-sm: 6px;--r: 9px;--r-lg: 13px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--mono: "SF Mono", ui-monospace, "JetBrains Mono", "Menlo", "Cascadia Code", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:var(--accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:9px;height:9px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:9px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 13px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s,transform .06s;-webkit-user-select:none;user-select:none}.btn:hover{background:var(--bg-hover);border-color:var(--text-faint)}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--bg-hover);border-color:transparent}.btn-danger{color:var(--red);border-color:var(--border-strong)}.btn-danger:hover{background:var(--red-soft);border-color:var(--red)}.btn-sm{height:27px;padding:0 10px;font-size:12px}.btn-icon{width:32px;padding:0}.input{width:100%;height:36px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--bg);color:var(--text);font-family:inherit;font-size:14px;outline:none;transition:border-color .12s,box-shadow .12s}.input::placeholder{color:var(--text-faint)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}textarea.input{height:auto;padding:9px 12px;resize:none;line-height:1.5}select.input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239aa4b2' stroke-width='2.5'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r)}.badge{display:inline-flex;align-items:center;gap:5px;height:19px;padding:0 7px;border-radius:5px;font-size:11px;font-weight:600;letter-spacing:.02em;background:var(--bg-elev2);color:var(--text-dim);text-transform:uppercase;font-family:var(--mono)}.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.dot-green{background:var(--green);box-shadow:0 0 0 3px var(--green-soft)}.dot-amber{background:var(--amber);box-shadow:0 0 0 3px var(--amber-soft)}.dot-red{background:var(--red);box-shadow:0 0 0 3px var(--red-soft)}.dot-dim{background:var(--text-faint)}.kbd{font-family:var(--mono);font-size:11px;padding:1px 5px;border-radius:4px;border:1px solid var(--border-strong);background:var(--bg-elev2);color:var(--text-dim)}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.mono{font-family:var(--mono)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.fade-in{animation:fadeIn .2s ease both}.spinner{width:15px;height:15px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.skeleton{background:linear-gradient(90deg,var(--bg-elev) 25%,var(--bg-elev2) 37%,var(--bg-elev) 63%);background-size:800px 100%;animation:shimmer 1.4s infinite linear;border-radius:var(--r-sm)}.app{display:grid;grid-template-rows:49px 1fr;height:100vh;overflow:hidden}.app-body{display:grid;min-height:0;transition:grid-template-columns .18s ease}.topbar{display:flex;align-items:center;gap:10px;padding:0 12px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.topbar .brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;letter-spacing:-.01em;padding-right:6px}.topbar .brand .logo{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--accent),#8d6cf0);display:grid;place-items:center;color:#fff;font-size:13px;font-weight:800}.topbar .sep{color:var(--text-faint);font-size:13px}.topbar .crumb{font-size:13px;color:var(--text-dim);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .crumb b{color:var(--text);font-weight:600}.topbar .spacer{flex:1}.seg{display:inline-flex;background:var(--bg-elev2);border:1px solid var(--border);border-radius:var(--r-sm);padding:2px;gap:2px}.seg button{height:26px;padding:0 12px;border:none;background:transparent;color:var(--text-dim);font-family:inherit;font-size:12.5px;font-weight:500;border-radius:5px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s,color .12s}.seg button:hover{color:var(--text)}.seg button.on{background:var(--bg);color:var(--text);box-shadow:var(--shadow-sm)}.statuspill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:99px;background:var(--bg-elev2);border:1px solid var(--border);font-size:12px;color:var(--text-dim)}.usermenu{position:relative}.avatar{width:28px;height:28px;border-radius:50%;background:var(--bg-elev2);border:1px solid var(--border-strong);color:var(--text);font-size:12px;font-weight:700;cursor:pointer;display:grid;place-items:center}.menu{position:absolute;right:0;top:36px;min-width:200px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--r);box-shadow:var(--shadow);padding:5px;z-index:50;animation:fadeIn .13s ease both}.menu .mi{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:13px;text-align:left;border-radius:var(--r-sm);cursor:pointer}.menu .mi:hover{background:var(--bg-hover)}.menu .mi.danger{color:var(--red)}.menu .mhead{padding:8px 10px 6px;font-size:12px;color:var(--text-faint)}.menu .mdiv{height:1px;background:var(--border);margin:5px 0}.sidebar{display:flex;flex-direction:column;background:var(--bg-elev);border-right:1px solid var(--border);min-width:0;overflow:hidden}.side-proj{padding:11px 12px;border-bottom:1px solid var(--border)}.side-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);margin-bottom:7px;display:flex;align-items:center;justify-content:space-between}.side-scroll{flex:1;overflow-y:auto;padding:8px}.proj-item,.sess-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 9px;border-radius:var(--r-sm);border:1px solid transparent;background:transparent;color:var(--text);font-family:inherit;font-size:13px;text-align:left;cursor:pointer;transition:background .1s}.proj-item:hover,.sess-item:hover{background:var(--bg-hover)}.sess-item.on{background:var(--accent-soft);border-color:var(--accent-border)}.sess-item .meta{display:flex;flex-direction:column;min-width:0;flex:1}.sess-item .meta .t1{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sess-item .meta .t2{font-size:11px;color:var(--text-faint);font-family:var(--mono);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sess-more{opacity:0;flex-shrink:0}.sess-item:hover .sess-more,.sess-item.on .sess-more{opacity:.75}.sess-more:hover{opacity:1!important}.agent-ic{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;font-family:var(--mono)}.agent-yark{background:var(--accent-soft);color:var(--accent)}.agent-bash{background:var(--green-soft);color:var(--green)}.agent-claude{background:#d9775729;color:#d97757}.agent-codex{background:var(--bg-elev2);color:var(--text-dim)}.side-foot{padding:10px;border-top:1px solid var(--border)}.create-err{font-size:12px;line-height:1.5;color:var(--red);background:var(--red-soft, rgba(240, 82, 82, .1));border:1px solid var(--red);border-radius:var(--r-sm);padding:7px 9px}.content-head{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.content-head .crumb{font-size:13px;color:var(--text-dim);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-head .crumb b{color:var(--text);font-weight:600}.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}.pane-fill{flex:1;min-height:0;position:relative}.term-wrap{position:absolute;top:0;right:0;bottom:0;left:0;background:#0a0c10;padding:8px 4px 8px 10px}.term-wrap .xterm{height:100%}.chat{display:flex;flex-direction:column;height:100%;min-height:0}.planbar{flex-shrink:0;position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg-elev) 78%,transparent);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);padding:8px max(22px,calc((100% - 760px)/2))}.planbar-activity{display:flex;align-items:center;gap:8px;font-size:12.5px}.planbar-phase{flex-shrink:0;font-size:11px;font-weight:500;padding:2px 9px;border-radius:20px;background:var(--accent-soft);color:var(--accent)}.planbar-phase.wait{background:var(--amber-soft);color:var(--amber)}.planbar-phase.done{background:var(--green-soft);color:var(--green)}.planbar-phase.idle{background:var(--bg-active);color:var(--text-dim)}.planbar-action{flex:1;min-width:0;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.planbar-time{flex-shrink:0;font-family:var(--mono);font-size:11.5px;color:var(--text-faint)}.planbar-plan{margin-top:6px}.planbar-head{display:flex;align-items:center;gap:6px;width:100%;border:none;background:transparent;color:var(--text-dim);font-size:12px;cursor:pointer;padding:2px 0}.planbar-label{flex-shrink:0}.planbar-count{flex-shrink:0;color:var(--text-secondary);font-variant-numeric:tabular-nums}.planbar-track{flex:1;height:4px;border-radius:2px;background:var(--bg-active);overflow:hidden}.planbar-fill{display:block;height:100%;background:var(--accent);transition:width .3s ease}.planbar-todos{list-style:none;margin:6px 0 2px;padding:0;display:flex;flex-direction:column;gap:4px;max-height:168px;overflow-y:auto}.planbar-todo{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text)}.planbar-dot{flex-shrink:0;width:8px;height:8px;border-radius:50%;border:1.5px solid var(--text-faint)}.planbar-todo.completed .planbar-dot{background:var(--green);border-color:var(--green)}.planbar-todo.completed .planbar-todo-text{color:var(--text-faint);text-decoration:line-through}.planbar-todo.in_progress .planbar-dot{background:var(--accent);border-color:var(--accent);animation:pulse 1.3s ease-in-out infinite}.planbar-todo.in_progress .planbar-todo-text{color:var(--accent);font-weight:500}.planbar-todo-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.chat-feed{flex:1;overflow-y:auto;display:flex;flex-direction:column}.chat-feed-body{flex:1;padding:22px max(22px,calc((100% - 760px)/2));display:flex;flex-direction:column;gap:18px}.load-earlier{align-self:center;margin-bottom:2px;padding:5px 14px;font-size:12px;color:var(--text-dim);background:var(--bg-elev2);border:1px solid var(--border);border-radius:999px;cursor:pointer}.load-earlier:hover{color:var(--text);border-color:var(--border-strong)}.turn{display:flex;gap:12px;animation:fadeIn .18s ease both}.turn .av{width:26px;height:26px;border-radius:7px;flex-shrink:0;display:grid;place-items:center;font-size:12px;font-weight:700;margin-top:1px;font-family:var(--mono)}.turn .av-spacer{width:26px;flex-shrink:0}.turn:not(:first-child){margin-top:-6px}.turn.user .av{background:var(--bg-elev2);color:var(--text-dim)}.turn.assistant .av{background:linear-gradient(135deg,var(--accent),#8d6cf0);color:#fff}.turn .body{min-width:0;flex:1}.turn .who{font-size:12px;font-weight:600;color:var(--text-dim);margin-bottom:3px}.bubble-user{white-space:pre-wrap;word-break:break-word;line-height:1.55}.tool{border:1px solid var(--border);border-radius:var(--r);background:var(--bg-elev);overflow:hidden;margin-top:4px}.tool>summary{display:flex;align-items:center;gap:8px;padding:8px 11px;cursor:pointer;list-style:none;font-family:var(--mono);font-size:12.5px;color:var(--text-dim)}.tool>summary::-webkit-details-marker{display:none}.tool>summary b{color:var(--text);font-weight:600}.tool .out{border-top:1px solid var(--border);margin:0;padding:10px 12px;max-height:280px;overflow:auto;font-family:var(--mono);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;background:var(--bg)}.diff-add{background:var(--green-soft);color:var(--green)}.diff-del{background:var(--red-soft);color:var(--red)}.approval{border:1px solid var(--accent-border);background:var(--accent-soft);border-radius:var(--r);padding:13px;margin-top:4px}.approval.danger{border-color:var(--red);background:var(--red-soft)}.approval .h{font-weight:600;font-size:13.5px;display:flex;align-items:center;gap:7px}.approval .sub{font-size:12px;color:var(--text-dim);margin-top:2px;font-family:var(--mono)}.approval pre{margin:9px 0 0;padding:9px 11px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);font-family:var(--mono);font-size:12px;overflow:auto;max-height:160px;white-space:pre-wrap;word-break:break-word}.approval .acts{display:flex;gap:8px;margin-top:11px}.approval .resolved{margin-top:9px;font-size:12px;color:var(--text-dim);display:inline-flex;align-items:center;gap:6px}.composer{padding:12px max(22px,calc((100% - 760px)/2)) 18px;border-top:1px solid var(--border);background:var(--bg)}.composer .box{display:flex;align-items:flex-end;gap:8px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--r-lg);padding:8px 8px 8px 14px;transition:border-color .12s,box-shadow .12s}.composer .box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.composer textarea{flex:1;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:14px;line-height:1.5;resize:none;outline:none;max-height:200px;padding:5px 0}.composer .send{width:34px;height:34px;border-radius:9px;border:none;background:var(--accent);color:#fff;cursor:pointer;display:grid;place-items:center;flex-shrink:0;transition:background .12s,opacity .12s}.composer .send:disabled{background:var(--bg-active);color:var(--text-faint);cursor:not-allowed}.composer .hint{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-faint);margin-top:7px}.composer .send.stop{background:var(--red)}.perm-select{display:inline-flex;align-items:center;color:var(--text-dim)}.composer .hint .ctx-new{display:inline-flex;align-items:center;border:none;background:transparent;color:var(--text-dim);font-size:11px;padding:2px 6px;border-radius:var(--r-sm);cursor:pointer}.composer .hint .ctx-new:hover{background:var(--bg-hover);color:var(--text)}.composer .hint .ctx-meter{font-size:11px;color:var(--text-faint);white-space:nowrap}.composer .hint .ctx-meter.hot{color:var(--amber)}.perm-select select{border:1px solid var(--border);background:var(--bg-elev2);color:var(--text-dim);border-radius:var(--r-sm);font-size:11px;padding:2px 4px;cursor:pointer}.perm-select select:hover{color:var(--text);border-color:var(--border-strong)}.md{line-height:1.65;word-break:break-word}.md>*:first-child{margin-top:0}.md>*:last-child{margin-bottom:0}.md p{margin:0 0 11px}.md h1,.md h2,.md h3,.md h4{margin:18px 0 9px;font-weight:650;line-height:1.3}.md h1{font-size:1.4em}.md h2{font-size:1.22em}.md h3{font-size:1.08em}.md ul,.md ol{margin:0 0 11px;padding-left:22px}.md li{margin:3px 0}.md a{color:var(--accent);text-decoration:none}.md a:hover{text-decoration:underline}.md blockquote{margin:0 0 11px;padding:2px 14px;border-left:3px solid var(--border-strong);color:var(--text-dim)}.md code{font-family:var(--mono);font-size:.88em;background:var(--bg-elev2);padding:1.5px 5px;border-radius:5px}.md table{border-collapse:collapse;margin:0 0 11px;font-size:.95em;display:block;overflow:auto}.md th,.md td{border:1px solid var(--border);padding:6px 11px;text-align:left}.md th{background:var(--bg-elev2);font-weight:600}.codeblock{position:relative;margin:0 0 12px}.codeblock pre{margin:0;padding:13px 14px;background:#0d1117;border:1px solid var(--border);border-radius:var(--r);overflow:auto;font-family:var(--mono);font-size:12.5px;line-height:1.55}.codeblock pre code.hljs{background:transparent;color:#c9d1d9}.codeblock pre code{background:none;padding:0;font-size:inherit}.codeblock .copy{position:absolute;top:8px;right:8px;opacity:0;transition:opacity .12s}.codeblock:hover .copy{opacity:1}.cursor-blink:after{content:"▋";margin-left:1px;animation:pulse 1.1s steps(1) infinite;color:var(--accent)}.rightpane{display:flex;flex-direction:column;border-left:1px solid var(--border);background:var(--bg-elev);min-width:0;min-height:0;overflow:hidden}.rp-head{display:flex;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid var(--border)}.rp-tabs{display:inline-flex;gap:2px}.rp-tabs button{height:27px;padding:0 11px;border:none;background:transparent;color:var(--text-dim);font-family:inherit;font-size:12.5px;border-radius:6px;cursor:pointer}.rp-tabs button:hover{background:var(--bg-hover);color:var(--text)}.rp-tabs button.on{background:var(--bg-active);color:var(--text)}.rp-body{flex:1;min-height:0;position:relative}.memory-pane{height:100%;display:flex;flex-direction:column}.memory-hint{padding:10px 12px;font-size:12px;line-height:1.55;color:var(--text-dim);border-bottom:1px solid var(--border)}.memory-hint code{font-family:var(--mono);font-size:11px;background:var(--bg-elev2);padding:1px 4px;border-radius:4px}.memory-editor{flex:1;min-height:0;resize:none;border:none;outline:none;padding:12px;background:transparent;color:var(--text);font-family:var(--mono);font-size:13px;line-height:1.6}.memory-foot{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--border)}.memory-err{color:var(--red);font-size:12px}.preview-bar{display:flex;align-items:center;gap:7px;padding:7px 10px;border-bottom:1px solid var(--border)}.preview-bar .url{flex:1;height:28px}.preview-frame{width:100%;height:100%;border:none;background:#fff}.files{height:100%;display:flex;flex-direction:column;position:relative}.tool-file{display:inline-flex;align-items:center;margin-left:8px;padding:1px 8px;border:1px solid var(--accent-border);background:var(--accent-soft);color:var(--accent);border-radius:999px;font-family:var(--mono);font-size:11px;cursor:pointer;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-file:hover{filter:brightness(1.05);text-decoration:underline}.files-toolbar{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid var(--border);flex-shrink:0}.files-search{flex:1;min-width:0;height:28px;font-size:12.5px;padding:0 8px}.files-section{font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--text-faint);text-transform:uppercase;padding:6px 10px 2px}.files-topic{display:flex;align-items:center;gap:6px;padding:7px 10px;cursor:pointer;border-top:1px solid var(--border);color:var(--text-dim);font-size:12.5px}.files-topic:hover{background:var(--bg-hover)}.files-topic-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-topic-count{font-size:11px;color:var(--text-faint);flex-shrink:0}.files-more{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;padding:7px;border:none;background:transparent;color:var(--text-dim);font-size:12px;cursor:pointer}.files-more:hover{background:var(--bg-hover);color:var(--text)}.files-badge{flex-shrink:0;margin-left:6px;padding:0 6px;border-radius:999px;font-size:10.5px;line-height:16px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}.files-badge-latest{background:var(--green-soft);color:var(--green);border-color:transparent}.files-toolbar .btn.on{color:var(--accent);border-color:var(--accent-border);background:var(--accent-soft)}.files-chips{display:flex;flex-wrap:wrap;gap:5px;padding:6px 8px;border-bottom:1px solid var(--border)}.files-chips .chip{font-size:11.5px;padding:2px 10px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer}.files-chips .chip:hover{border-color:var(--border-strong)}.files-chips .chip.on{color:var(--accent);border-color:var(--accent-border);background:var(--accent-soft)}.files-selbar{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.files-selcount{font-size:12px;color:var(--text-dim)}.files-del-btn{color:var(--red);border-color:var(--red-soft)}.files-del-btn:hover:not(:disabled){background:var(--red-soft)}.file-row.sel-on{background:var(--accent-soft)}.ctx-menu button.ctx-danger{color:var(--red)}.ctx-menu button.ctx-danger:hover{background:var(--red-soft)}.files-uperr{color:var(--red);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.files-dragover{outline:2px dashed var(--accent);outline-offset:-2px}.files-drop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent-soft) 88%,transparent);color:var(--accent);font-size:14px;font-weight:600;pointer-events:none}.file-tree{flex:1;overflow:auto;padding:6px}.file-row{display:flex;align-items:center;gap:7px;padding:4px 8px;border-radius:var(--r-sm);cursor:pointer;font-size:13px;color:var(--text);white-space:nowrap}.file-row:hover{background:var(--bg-hover)}.file-row.on{background:var(--accent-soft)}.file-row .fi{width:15px;text-align:center;color:var(--text-faint);flex-shrink:0}.file-row .file-name{flex:1;min-width:0}.file-actions{display:flex;align-items:center;gap:1px;flex-shrink:0;margin-left:4px;opacity:0;transition:opacity .12s ease}.file-row:hover .file-actions{opacity:1}.file-act{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;border-radius:var(--r-sm);color:var(--text-faint);cursor:pointer}.file-act:hover{background:var(--bg-elev2);color:var(--text)}.file-view{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;flex-direction:column;z-index:4}.file-view-max{position:fixed;z-index:200}.file-view:fullscreen{background:var(--bg)}.file-html-frame{flex:1;width:100%;border:none;background:#fff}.file-view .fv-head{display:flex;align-items:center;gap:6px;padding:6px 10px;font-family:var(--mono);font-size:12px;color:var(--text-dim);border-bottom:1px solid var(--border);flex-shrink:0}.file-view pre{margin:0;padding:11px;overflow:auto;flex:1;min-height:0;font-family:var(--mono);font-size:12px;line-height:1.55}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60}.ctx-menu{position:fixed;transform:translate(-100%);z-index:61;min-width:132px;padding:4px;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--r);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1px}.ctx-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border:none;background:transparent;border-radius:var(--r-sm);color:var(--text);font-size:13px;text-align:left;cursor:pointer}.ctx-menu button:hover{background:var(--bg-hover)}.ctx-menu button svg{color:var(--text-faint);flex-shrink:0}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:30px;gap:8px;color:var(--text-dim)}.empty .ic{width:52px;height:52px;border-radius:14px;background:var(--bg-elev2);display:grid;place-items:center;margin-bottom:6px;color:var(--text-faint)}.empty h3{margin:0;font-size:15px;color:var(--text);font-weight:600}.empty p{margin:0;font-size:13px;max-width:360px;line-height:1.6}.center-fill{display:grid;place-items:center;height:100%}.login-wrap{height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(900px 500px at 50% -10%,var(--accent-soft),transparent 60%),var(--bg)}.login-card{width:100%;max-width:380px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--r-lg);padding:30px 28px;box-shadow:var(--shadow);animation:fadeIn .25s ease both}.login-card .logo-lg{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--accent),#8d6cf0);display:grid;place-items:center;color:#fff;font-weight:800;font-size:22px;margin-bottom:16px}.login-card h1{font-size:20px;margin:0 0 4px;font-weight:650}.login-card .sub{color:var(--text-dim);font-size:13.5px;margin-bottom:22px}.field{margin-bottom:13px}.field label{display:block;font-size:12.5px;color:var(--text-dim);margin-bottom:6px;font-weight:500}.login-card .err{background:var(--red-soft);border:1px solid var(--red);color:var(--red);padding:8px 11px;border-radius:var(--r-sm);font-size:13px;margin-bottom:13px}.login-card .toggle{text-align:center;margin-top:16px;font-size:13px;color:var(--text-dim)}.linklike{background:none;border:none;color:var(--accent);cursor:pointer;font-family:inherit;font-size:inherit;padding:0}.linklike:hover{text-decoration:underline}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:100;padding:20px;animation:fadeIn .15s ease both}.modal{width:100%;max-width:540px;max-height:85vh;overflow:auto;background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--r-lg);box-shadow:var(--shadow)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg-elev)}.modal-head h2{margin:0;font-size:16px;font-weight:650}.modal-body{padding:20px}.cred-row{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--border)}.cred-row:last-child{border-bottom:none}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%);background:var(--bg-elev);border:1px solid var(--border-strong);border-radius:var(--r);padding:10px 16px;font-size:13px;box-shadow:var(--shadow);z-index:200;animation:fadeIn .2s ease both;display:flex;align-items:center;gap:9px}.row{display:flex;gap:8px}.grow{flex:1}.collapse-btn{position:absolute;z-index:5}.admin-shell{display:flex;flex-direction:column;height:100vh;background:var(--bg)}.admin-top{display:flex;align-items:center;gap:12px;padding:0 16px;height:48px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.admin-top .brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px}.admin-top .logo{width:22px;height:22px;border-radius:6px;background:linear-gradient(135deg,var(--accent),#8d6cf0);display:grid;place-items:center;color:#fff;font-size:13px;font-weight:800}.admin-badge{font-size:12px;font-weight:600;color:var(--text-dim);padding:2px 9px;border:1px solid var(--border);border-radius:999px}.admin-body{flex:1;display:flex;min-height:0}.admin-nav{width:200px;border-right:1px solid var(--border);padding:12px 8px;display:flex;flex-direction:column;gap:2px;background:var(--bg-elev)}.admin-navitem{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--r-sm);border:0;background:transparent;color:var(--text-dim);font-size:13.5px;cursor:pointer;text-align:left;width:100%}.admin-navitem:hover{background:var(--bg-hover);color:var(--text)}.admin-navitem.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.admin-content{flex:1;overflow-y:auto;padding:24px;min-width:0}.admin-panel{max-width:760px;margin:0 auto}@media (max-width: 1024px){.app.narrow .rightpane{position:fixed;top:49px;bottom:0;right:0;width:min(440px,82vw);z-index:45;box-shadow:var(--shadow)}.scrim-right{position:fixed;top:49px;right:0;bottom:0;left:0;background:#0006;z-index:44;animation:fadeIn .15s ease both}}@media (max-width: 760px){.app.mobile{height:100dvh}.app.mobile .app-body{grid-template-columns:1fr}.app.mobile .sidebar{position:fixed;top:49px;bottom:0;left:0;width:min(84vw,320px);z-index:50;box-shadow:var(--shadow);transform:translate(-100%);transition:transform .22s ease}.app.mobile.drawer-open .sidebar{transform:translate(0)}.scrim{position:fixed;top:49px;right:0;bottom:0;left:0;background:#00000073;z-index:40;animation:fadeIn .15s ease both}.app.mobile .rightpane{left:0;width:100%;border-left:none}.topbar{padding:0 6px;gap:4px}.topbar .crumb{display:none}.content-head .crumb{max-width:44vw}.overlay{padding:0}.modal{max-width:100%;max-height:100%;height:100dvh;border:none;border-radius:0}.btn-icon{min-width:34px;min-height:34px}.file-actions{opacity:1}.sess-item .sess-more{opacity:.6}.composer{padding:10px 12px max(10px,env(safe-area-inset-bottom))}.composer .hint{flex-wrap:wrap;row-gap:4px}.composer .kbdhint{display:none}.term-wrap{padding:6px 3px 6px 6px}}@media (hover: none){.file-actions{opacity:1}.sess-item .sess-more{opacity:.6}.file-row{padding-top:8px;padding-bottom:8px}.file-act{width:30px;height:30px}.ctx-menu button{padding:10px 12px}.file-row:active,.sess-item:active,.files-topic:active,.files-more:active,.files-chips .chip:active{background:var(--bg-hover)}}.admin-head{margin-bottom:10px}.admin-head h2{margin:0;font-size:15px;font-weight:600}.admin-sub{display:block;font-size:12.5px;color:var(--text-dim);margin-top:3px}.egress-list{display:flex;flex-direction:column;gap:8px}.egress-row{border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;background:var(--bg-elev)}.egress-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.egress-host{font-size:13.5px;color:var(--text)}.egress-risk{font-size:10.5px;padding:1px 8px;border-radius:20px}.egress-risk.risk-ok{color:var(--green);background:var(--green-soft)}.egress-risk.risk-mid{color:var(--amber);background:var(--amber-soft)}.egress-risk.risk-bad{color:var(--red);background:var(--red-soft)}.egress-meta{font-size:11.5px;color:var(--text-dim);margin-top:4px}.egress-sample{font-size:11px;color:var(--text-faint);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.egress-actions{display:flex;gap:8px;margin-top:10px}.egress-actions .btn{padding:5px 14px;font-size:13px}.btn-approve{background:var(--green-soft);border-color:transparent;color:var(--green);font-weight:600}.btn-approve:disabled{opacity:.55}.egress-state{font-size:11px;font-weight:600;padding:1px 8px;border-radius:999px;margin-left:6px}.egress-state.ok{background:var(--green-soft);color:var(--green)}.egress-state.bad{background:var(--red-soft);color:var(--red)}.egress-row.status-denied{opacity:.6}.node-list{display:flex;flex-direction:column;gap:8px}.node-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-elev)}.status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;display:inline-block}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}/**
* 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:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.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}
