:root{--bg: #0e0f12;--surface: #14161b;--raised: #1a1d23;--hover: #1f232a;--border: #262a32;--border-strong: #353b46;--text: #e7e9ed;--dim: #8d95a3;--accent: #9aa3b0;--accent-ink: #14161b;--accent-soft: rgba(154, 163, 176, .14);--ok: #4cc38a;--warn: #e8a33d;--err: #ef6a6a;--info: #5aa9f0;--add-bg: rgba(76, 195, 138, .13);--del-bg: rgba(239, 106, 106, .13);--code-bg: #0b0c0f;--shadow: 0 10px 40px rgba(0, 0, 0, .45);--sidebar-w: 272px;--panel-w: 460px;--radius: 10px;--mono: ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--sans: -apple-system, BlinkMacSystemFont, "Inter", "Segoe UI", system-ui, sans-serif;--hl-kw: #c792ea;--hl-str: #a5d6a7;--hl-num: #f4a261;--hl-com: #6b7385;--hl-fn: #82aaff;--hl-attr: #ffcb6b;color-scheme:dark}:root[data-theme=light]{--bg: #f6f5f1;--surface: #ffffff;--raised: #faf9f6;--hover: #efede7;--border: #e3e0d8;--border-strong: #cfcabd;--text: #1d2026;--dim: #6b7280;--accent: #5b6370;--accent-ink: #ffffff;--accent-soft: rgba(91, 99, 112, .12);--ok: #1f9d6a;--warn: #b9770e;--err: #d64545;--info: #2f7fd1;--add-bg: rgba(31, 157, 106, .12);--del-bg: rgba(214, 69, 69, .11);--code-bg: #f3f1ea;--shadow: 0 10px 40px rgba(40, 30, 10, .16);--hl-kw: #8a3fb0;--hl-str: #2f7d3a;--hl-num: #b25b1a;--hl-com: #8a8f9a;--hl-fn: #2557c7;--hl-attr: #9a6a00;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 var(--sans);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}button:disabled{cursor:not-allowed;opacity:.5}input,textarea,select{font:inherit;color:inherit}code,pre,kbd,.mono{font-family:var(--mono)}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:6px}::selection{background:var(--accent-soft)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:10px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.dim{color:var(--dim)}.small{font-size:12px}.mono{font-family:var(--mono)}.center{display:flex;justify-content:center;text-align:center}.pad{padding:14px}.grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.row{display:flex;gap:8px;align-items:center}kbd{background:var(--raised);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:11px}.h3{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);margin:18px 0 8px;display:flex;gap:6px;align-items:center}.boot{height:100%;display:grid;place-items:center}.spinner{display:inline-block;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border-radius:8px;border:1px solid var(--border-strong);background:var(--raised);font-weight:500;font-size:13px;text-decoration:none;color:var(--text)}.btn:hover:not(:disabled){background:var(--hover)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}.btn.danger{color:var(--err);border-color:color-mix(in srgb,var(--err) 45%,var(--border))}.btn.small{padding:4px 9px;font-size:12px}.btn.wide{width:100%}.btn.big{padding:11px 20px;font-size:15px;border-radius:10px}.input{width:100%;background:var(--code-bg);border:1px solid var(--border);border-radius:8px;padding:8px 10px;outline:none}.input:focus{border-color:var(--accent)}textarea.input{resize:vertical}.iconbtn{width:28px;height:28px;border-radius:7px;display:inline-grid;place-items:center;color:var(--dim);flex:none}.iconbtn:hover:not(:disabled){background:var(--hover);color:var(--text)}.iconbtn.active{color:var(--accent);background:var(--accent-soft)}.linkbtn{color:var(--accent);font-size:13px;padding:4px 0;display:inline-flex;gap:5px;align-items:center}.linkbtn:hover{text-decoration:underline}.linkbtn.center{display:flex;margin:6px auto}.badge{font-size:11px;padding:1px 8px;border-radius:999px;background:var(--hover);color:var(--dim);border:1px solid var(--border);white-space:nowrap}.badge.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 40%,var(--border))}.badge.err{color:var(--err);border-color:color-mix(in srgb,var(--err) 40%,var(--border))}.seg{display:inline-flex;background:var(--code-bg);border:1px solid var(--border);border-radius:8px;padding:2px}.seg button{padding:3px 10px;border-radius:6px;font-size:12px;color:var(--dim);display:inline-flex;gap:5px;align-items:center}.seg button.on{background:var(--raised);color:var(--text);box-shadow:0 0 0 1px var(--border)}.switch{display:inline-flex;gap:8px;align-items:center}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;font-size:12px;color:var(--dim);border:1px solid transparent;max-width:200px}.pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pill:hover,.pill.active{background:var(--hover);color:var(--text);border-color:var(--border)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;background:var(--hover);border:1px solid var(--border);font-size:12px;max-width:220px}.chip img{width:18px;height:18px;object-fit:cover;border-radius:4px}.chip button{color:var(--dim);display:grid}.btn-chip{cursor:pointer}.btn-chip.sel{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.warn{background:var(--warn);box-shadow:0 0 0 3px var(--accent-soft)}.dot.info{background:var(--info)}.popwrap{position:relative;display:inline-block}.popover{position:absolute;z-index:60;top:calc(100% + 6px);left:0;min-width:240px;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow);padding:6px}.popover.right{left:auto;right:0}.popover.up{top:auto;bottom:calc(100% + 6px)}.popover.picker{width:320px;max-width:86vw}.plist{max-height:340px;overflow:auto;display:flex;flex-direction:column;gap:1px}.pgroup{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);padding:8px 8px 3px}.pitem{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:7px 9px;border-radius:7px;font-size:13px}.pitem:hover:not(:disabled),.pitem.sel{background:var(--hover)}.pitem.col{flex-direction:column;align-items:flex-start;gap:0}.pitem.danger{color:var(--err)}.pitem>span:first-of-type{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.variants{display:flex;flex-wrap:wrap;gap:5px;padding:2px 9px 6px}.menu{position:absolute;bottom:calc(100% + 6px);left:0;right:0;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow);padding:5px;z-index:40;max-height:280px;overflow:auto}.login{height:100%;display:grid;place-items:center;padding:16px;background:radial-gradient(1000px 500px at 50% -10%,var(--accent-soft),transparent),var(--bg)}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}.login-card h1{margin:6px 0 0;font-size:22px}.login-card p{margin:0 0 6px}.login-card label{font-size:12px;color:var(--dim)}.app{height:100%;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden}.app.with-side{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.app.with-panel{grid-template-columns:minmax(0,1fr) var(--panel-w)}.app.with-side.with-panel{grid-template-columns:var(--sidebar-w) minmax(0,1fr) var(--panel-w)}.main{min-width:0;height:100%;display:flex;flex-direction:column;background:var(--bg)}.scrim{display:none}.sidebar{height:100%;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.side-head{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 8px 14px}.brand{display:flex;align-items:center;gap:9px;font-weight:650;letter-spacing:-.01em}.newbtn{margin:4px 12px 8px;display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:9px;background:var(--accent);color:var(--accent-ink);font-weight:600;font-size:13px}.newbtn:hover{filter:brightness(1.08)}.search{margin:0 12px 8px;display:flex;align-items:center;gap:7px;padding:0 8px;border:1px solid var(--border);border-radius:8px;background:var(--code-bg);color:var(--dim)}.search input{flex:1;background:none;border:0;outline:0;padding:7px 0;min-width:0}.kbdbtn{display:inline-flex;align-items:center;gap:2px;font-size:11px;color:var(--dim);border:1px solid var(--border);border-radius:5px;padding:0 5px}.sessions{flex:1;overflow:auto;padding:0 8px 8px;min-height:0}.group{margin-bottom:6px}.group-head{display:flex;align-items:center;gap:5px;width:100%;padding:6px;font-size:11.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--dim);text-align:left}.group-head span:nth-of-type(1){flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-head .count{font-weight:400}.sess{display:flex;align-items:center;gap:6px;width:100%;text-align:left;padding:7px 8px;border-radius:8px}.sess:hover{background:var(--hover)}.sess.active{background:var(--accent-soft)}.sess.archived{opacity:.6}.sess-state{width:14px;display:grid;place-items:center;flex:none}.sess-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sess-time{color:var(--dim);font-size:11px;flex:none}.archived-toggle{margin:8px 8px 0}.side-foot{display:flex;align-items:center;gap:2px;padding:8px 10px;border-top:1px solid var(--border)}.conn{margin-right:auto;display:inline-flex;align-items:center;padding-left:4px}.conn.on{color:var(--ok)}.conn.off{color:var(--err)}.chat{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.chat-head{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--border);min-height:48px}.chat-title{flex:1;min-width:0;display:flex;align-items:center;gap:10px}.title{font-weight:600;font-size:14.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;text-align:left;padding:3px 6px;border-radius:6px}.title:hover{background:var(--hover)}.title-input{background:var(--code-bg);border:1px solid var(--accent);border-radius:6px;padding:3px 6px;font-weight:600;outline:none;min-width:220px}.crumb{color:var(--dim);font-size:12px;white-space:nowrap}.crumb:hover{color:var(--text)}.dirchip{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--dim);border:1px solid var(--border);padding:1px 8px;border-radius:999px;white-space:nowrap}.head-actions{display:flex;gap:2px}.meter{display:flex;align-items:center;gap:8px}.meter-bar{width:70px;height:5px;background:var(--hover);border-radius:999px;overflow:hidden}.meter-fill{height:100%;background:var(--ok);border-radius:999px;transition:width .3s}.meter-fill.warm{background:var(--warn)}.meter-fill.hot{background:var(--err)}.scroll{flex:1;overflow-y:auto;min-height:0;scroll-behavior:auto}.thread{max-width:820px;margin:0 auto;padding:22px 18px 6px;display:flex;flex-direction:column;gap:16px}.jump{position:absolute;bottom:150px;left:50%;transform:translate(-50%);z-index:20;display:inline-flex;gap:6px;align-items:center;background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);padding:5px 12px;border-radius:999px;font-size:12px}.welcome{text-align:center;padding:8vh 0 0}.welcome h2{margin:0 0 6px;font-size:22px;letter-spacing:-.02em}.suggest{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-top:22px;text-align:left}.suggest-item{padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:13px}.suggest-item:hover{border-color:var(--accent);background:var(--raised)}.msg{display:flex;flex-direction:column;gap:8px;position:relative}.msg.user{align-items:flex-end}.bubble{max-width:88%;background:var(--raised);border:1px solid var(--border);border-radius:14px 14px 4px;padding:9px 13px}.user-text{white-space:pre-wrap;word-break:break-word}.msg-actions{display:flex;gap:2px;opacity:0;transition:opacity .12s}.msg:hover .msg-actions,.msg:focus-within .msg-actions{opacity:1}.msg.user .msg-actions{justify-content:flex-end}.msg-meta{display:flex;gap:10px;align-items:center;font-size:12px;flex-wrap:wrap}.msg-meta .agent{font-weight:600;color:var(--accent);text-transform:capitalize}.sep{text-align:center;font-size:12px;color:var(--dim);display:flex;gap:8px;align-items:center;justify-content:center}.sep:before,.sep:after{content:"";height:1px;background:var(--border);flex:1}.sep.err{color:var(--err)}.thinking,.working{display:flex;align-items:center;gap:9px;color:var(--dim);font-size:13px}.working{padding:2px 0}.banner{display:flex;gap:10px;align-items:flex-start;padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:var(--raised);font-size:13px}.banner.err{border-color:color-mix(in srgb,var(--err) 50%,var(--border));background:color-mix(in srgb,var(--err) 9%,var(--surface));color:var(--text)}.banner.err svg{color:var(--err);flex:none;margin-top:2px}.banner.warn{border-color:color-mix(in srgb,var(--warn) 50%,var(--border));background:var(--accent-soft);align-items:center}.banner.info{border-color:color-mix(in srgb,var(--info) 50%,var(--border));background:color-mix(in srgb,var(--info) 9%,var(--surface));margin:10px 0}.banner.revert{margin:8px 14px 0}.banner.revert span{flex:1}.md{word-break:break-word}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:.6em 0}.md ul,.md ol{padding-left:1.4em;margin:.6em 0}.md li{margin:.2em 0}.md h1,.md h2,.md h3,.md h4{margin:1.1em 0 .4em;line-height:1.3;letter-spacing:-.01em}.md h1{font-size:1.4em}.md h2{font-size:1.2em}.md h3{font-size:1.05em}.md blockquote{margin:.7em 0;padding:.1em 1em;border-left:3px solid var(--border-strong);color:var(--dim)}.md hr{border:0;border-top:1px solid var(--border);margin:1.2em 0}.md code{background:var(--hover);padding:.1em .38em;border-radius:5px;font-size:.88em}.md pre code{background:none;padding:0;font-size:12.5px}.tablewrap{overflow-x:auto;margin:.7em 0}.md table{border-collapse:collapse;font-size:13px}.md th,.md td{border:1px solid var(--border);padding:5px 10px;text-align:left}.md th{background:var(--raised)}.codeblock{margin:.7em 0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--code-bg)}.codeblock-head{display:flex;justify-content:space-between;align-items:center;padding:2px 6px 2px 12px;font-size:11px;color:var(--dim);border-bottom:1px solid var(--border);background:var(--raised)}.codeblock pre{margin:0;padding:12px;overflow-x:auto}.hljs-keyword,.hljs-selector-tag,.hljs-literal,.hljs-built_in,.hljs-type{color:var(--hl-kw)}.hljs-string,.hljs-regexp,.hljs-addition{color:var(--hl-str)}.hljs-number,.hljs-symbol,.hljs-bullet{color:var(--hl-num)}.hljs-comment,.hljs-quote,.hljs-meta{color:var(--hl-com);font-style:italic}.hljs-title,.hljs-section,.hljs-function{color:var(--hl-fn)}.hljs-attr,.hljs-attribute,.hljs-name,.hljs-variable,.hljs-property{color:var(--hl-attr)}.hljs-deletion{color:var(--err)}.streaming .md:after{content:"▍";color:var(--accent);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.reasoning button{display:inline-flex;align-items:center;gap:6px;color:var(--dim);font-size:12.5px;padding:2px 0}.reasoning button:hover{color:var(--text)}.reasoning-body{border-left:2px solid var(--border-strong);margin:4px 0 4px 6px;padding:2px 12px;color:var(--dim);font-size:13px;white-space:pre-wrap;max-height:320px;overflow:auto}.tool{border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden}.tool.running{border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.tool.error{border-color:color-mix(in srgb,var(--err) 40%,var(--border))}.tool-head{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:7px 10px;font-size:13px}.tool-head:hover{background:var(--hover)}.tool-head .chev,.tool-ico{color:var(--dim);display:grid;flex:none}.tool-title{font-weight:560;white-space:nowrap}.tool-sub-h{color:var(--dim);font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.tool-state{margin-left:auto;display:inline-flex;gap:8px;align-items:center;flex:none}.tool-state .ok{color:var(--ok)}.tool-state .err{color:var(--err)}.dur{color:var(--dim);font-size:11.5px}.tool-body{border-top:1px solid var(--border);padding:8px 10px;display:flex;flex-direction:column;gap:8px}.tool-cmd{display:flex;gap:8px;align-items:flex-start;background:var(--code-bg);padding:7px 10px;border-radius:8px}.tool-cmd code{flex:1;white-space:pre-wrap;word-break:break-all;font-size:12.5px}.tool-cmd .prompt{color:var(--accent);font-family:var(--mono)}.tool-out pre{margin:0;background:var(--code-bg);border-radius:8px;padding:9px 11px;font-size:12px;max-height:340px;overflow:auto;white-space:pre-wrap;word-break:break-word}.tool-err{color:var(--err);font-size:13px}.tool-sub{color:var(--dim);font-size:13px;white-space:pre-wrap;max-height:120px;overflow:auto}.todos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.todos li{display:flex;gap:8px;align-items:flex-start;font-size:13px}.todos li svg{margin-top:3px;flex:none;color:var(--dim)}.todos li.completed{color:var(--dim);text-decoration:line-through}.todos li.completed svg{color:var(--ok)}.todos li.in_progress svg{color:var(--accent)}.todos li.in_progress{font-weight:560}.diff{font-family:var(--mono);font-size:12px;border:1px solid var(--border);border-radius:8px;overflow:auto;background:var(--code-bg);max-height:460px}.dl{display:flex;white-space:pre;min-width:max-content}.dl .ln{width:38px;text-align:right;padding-right:8px;color:var(--dim);-webkit-user-select:none;user-select:none;flex:none;opacity:.7}.dl .sign{width:16px;text-align:center;flex:none;-webkit-user-select:none;user-select:none}.dl .code{padding-right:12px}.dl.add{background:var(--add-bg)}.dl.add .sign{color:var(--ok)}.dl.del{background:var(--del-bg)}.dl.del .sign{color:var(--err)}.dl.hunk{color:var(--info);background:color-mix(in srgb,var(--info) 8%,transparent)}.filediff{border:1px solid var(--border);border-radius:9px;margin-bottom:8px;overflow:hidden;background:var(--surface)}.filediff .diff{border:0;border-top:1px solid var(--border);border-radius:0;max-height:380px}.filediff-head{display:flex;align-items:center;gap:7px;width:100%;padding:7px 10px;text-align:left;font-size:12.5px}.filediff-head:hover{background:var(--hover)}.path{font-family:var(--mono);font-size:12px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat.add{color:var(--ok);font-family:var(--mono);font-size:12px}.stat.del{color:var(--err);font-family:var(--mono);font-size:12px}.st.added{color:var(--ok)}.st.deleted{color:var(--err)}.st.modified{color:var(--warn)}.gitrow{display:flex;gap:8px;align-items:center;padding:5px 4px;font-size:12.5px}.gitrow .st{font-family:var(--mono);font-weight:700;width:16px}.docks{padding:0 14px;display:flex;flex-direction:column;gap:8px}.docks>*{max-width:820px;width:100%;margin:0 auto}.dock{border:1px solid color-mix(in srgb,var(--accent) 55%,var(--border));border-radius:14px;background:var(--surface);padding:12px 14px;box-shadow:0 0 0 4px var(--accent-soft);display:flex;flex-direction:column;gap:9px}.dock-head{display:flex;align-items:center;gap:8px}.dock-head svg{color:var(--accent)}.dock-msg{color:var(--dim);font-size:13px}.dock-res{display:flex;flex-wrap:wrap;gap:6px}.dock-res code{background:var(--code-bg);padding:2px 8px;border-radius:6px;font-size:12px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.dock-pre{margin:0;background:var(--code-bg);padding:8px 10px;border-radius:8px;max-height:140px;overflow:auto;font-size:12px;white-space:pre-wrap}.dock-actions{display:flex;gap:8px;flex-wrap:wrap}.form-fields{display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12.5px;font-weight:560}.field.row{flex-direction:row;gap:10px}.opts{display:flex;flex-direction:column;gap:6px}.opt{display:flex;flex-direction:column;text-align:left;padding:8px 12px;border:1px solid var(--border);border-radius:9px;background:var(--raised)}.opt:hover{border-color:var(--border-strong)}.opt.sel{border-color:var(--accent);background:var(--accent-soft)}.composer-wrap{padding:8px 14px 14px}.composer{max-width:820px;margin:0 auto;position:relative;background:var(--surface);border:1px solid var(--border-strong);border-radius:16px;padding:10px 10px 8px;box-shadow:0 2px 14px #0000002e}.composer:focus-within{border-color:var(--accent)}.composer textarea{width:100%;background:none;border:0;outline:0;resize:none;padding:4px 6px;max-height:260px;line-height:1.5}.composer .chips.att{padding:0 4px 6px}.composer-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:4px}.composer-left,.composer-right{display:flex;align-items:center;gap:2px;min-width:0}.sendbtn{width:32px;height:32px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;margin-left:6px}.sendbtn:disabled{background:var(--hover);color:var(--dim);opacity:1}.sendbtn.stop{background:var(--err);color:#fff}.modal-back{position:fixed;inset:0;background:#05060899;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;display:grid;place-items:center;padding:16px}.modal-back.top{place-items:start center;padding-top:12vh}.modal{width:100%;max-width:520px;max-height:88vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border-strong);border-radius:16px;box-shadow:var(--shadow)}.modal.wide{max-width:860px}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px 8px 18px}.modal-head h2{margin:0;font-size:16px}.modal-body{padding:8px 18px 18px;overflow:auto}.modal-foot{padding:12px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.palette{width:100%;max-width:580px;background:var(--surface);border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}.palette-input{width:100%;background:none;border:0;border-bottom:1px solid var(--border);padding:14px 16px;font-size:15px;outline:0}.palette-list{max-height:50vh;overflow:auto;padding:6px}.dirpicker{border:1px solid var(--border);border-radius:10px;overflow:hidden}.dirpath{display:flex;gap:6px;padding:6px;border-bottom:1px solid var(--border);align-items:center}.dirlist{max-height:200px;overflow:auto;padding:4px}.dirnew{display:flex;gap:6px;padding:6px;border-top:1px solid var(--border)}.toasts{position:fixed;right:16px;bottom:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px))}.toast{background:var(--surface);border:1px solid var(--border-strong);border-left:3px solid var(--info);border-radius:10px;padding:9px 13px;box-shadow:var(--shadow);font-size:13px;animation:slide .18s ease-out}.toast.error{border-left-color:var(--err)}.toast.success{border-left-color:var(--ok)}@keyframes slide{0%{transform:translateY(8px);opacity:0}}.settings{display:grid;grid-template-columns:190px minmax(0,1fr);gap:18px;min-height:420px}.settings-nav{display:flex;flex-direction:column;gap:2px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin:12px 0}.card{border:1px solid var(--border);background:var(--raised);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.card-actions{display:flex;gap:6px;flex-wrap:wrap}.credrow{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:13px}.keyform{display:flex;flex-direction:column;gap:6px}.kv{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;font-size:13px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.stats div{border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--raised);display:flex;flex-direction:column}.stats b{font-size:20px}.stats span{color:var(--dim);font-size:12px}.tbl{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}.tbl th,.tbl td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--border)}.empty{text-align:center;padding:28px 12px;color:var(--dim)}.empty-ico{opacity:.6;margin-bottom:6px}.empty-title{color:var(--text);font-weight:560}.home-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center}.home-body h1{margin:0;font-size:30px;letter-spacing:-.03em}.home-body p{max-width:520px;margin:0}.panel{height:100%;min-width:0;border-left:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column}.panel-tabs{display:flex;align-items:center;border-bottom:1px solid var(--border);padding:0 6px;overflow-x:auto}.ptab{display:inline-flex;gap:6px;align-items:center;padding:12px 10px;font-size:12.5px;color:var(--dim);border-bottom:2px solid transparent;white-space:nowrap}.ptab:hover{color:var(--text)}.ptab.on{color:var(--text);border-bottom-color:var(--accent)}.pclose{margin-left:auto}.panel-content{flex:1;min-height:0;display:flex}.pane{flex:1;min-width:0;display:flex;flex-direction:column}.pane-bar{display:flex;align-items:center;gap:8px;padding:6px 10px;border-bottom:1px solid var(--border);min-height:40px}.pane-bar .iconbtn:last-child{margin-left:auto}.pane-body{flex:1;overflow:auto;padding:10px;min-height:0}.pane-body.tree{padding:6px 0}.pane-body.termbody{padding:0;background:var(--code-bg)}.pane-bar.tabs{gap:4px}.tab{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:7px;font-size:12px;color:var(--dim)}.tab.on{background:var(--hover);color:var(--text)}.tab .x{display:grid;opacity:.6}.tab .x:hover{opacity:1;color:var(--err)}.term{height:100%;padding:6px 4px 0 8px}.term .xterm{height:100%}.treerow{display:flex;align-items:center;gap:6px;width:100%;text-align:left;padding:3px 8px;font-size:12.5px;color:var(--text)}.treerow:hover{background:var(--hover)}.treerow span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.treerow svg{color:var(--dim);flex:none}.treerow .chev{transition:transform .1s}.treerow .chev.rot{transform:rotate(90deg)}.viewer{flex:1;min-width:0;display:flex;flex-direction:column}.filetext{margin:0;font-size:12px;line-height:1.55}.filetext .ln{display:inline-block;width:42px;color:var(--dim);text-align:right;padding-right:12px;-webkit-user-select:none;user-select:none}@media(max-width:1180px){.app.with-panel,.app.with-side.with-panel{grid-template-columns:minmax(0,1fr)}.app.with-side.with-panel{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.panel{position:fixed;top:0;right:0;bottom:0;width:min(520px,94vw);z-index:70;box-shadow:var(--shadow)}}@media(max-width:860px){.app,.app.with-side,.app.with-panel,.app.with-side.with-panel{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:min(86vw,320px);z-index:90;box-shadow:var(--shadow)}.scrim{display:block;position:fixed;inset:0;background:#00000080;z-index:80}.panel{position:fixed;inset:0;z-index:70;width:100%;border:0}.meter-bar{display:none}.settings{grid-template-columns:1fr}.settings-nav{flex-direction:row;overflow-x:auto}.dirchip{display:none}.thread{padding:14px 12px 4px}.bubble{max-width:94%}.msg-actions{opacity:1}.composer-wrap{padding:6px 8px calc(10px + env(safe-area-inset-bottom))}.pill{max-width:130px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition:none!important}}/**
 * 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;inset: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;inset: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}
