@amd-gaia/agent-ui 0.25.3 → 0.25.4-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AdvancedSettings-DERzP9Jc.js → AdvancedSettings-CuIQvcmD.js} +1 -1
- package/dist/assets/{ConnectorsPane-s0fFxmus.js → ConnectorsPane-DQYLrzjU.js} +1 -1
- package/dist/assets/DocumentLibrary-B5-Yd9vc.css +1 -0
- package/dist/assets/DocumentLibrary-s6IEqE1v.js +4 -0
- package/dist/assets/FileBrowser-Cna3BsT7.css +1 -0
- package/dist/assets/FileBrowser-EJp637PF.js +4 -0
- package/dist/assets/MemoryDashboard-DKeENiEN.js +1 -0
- package/dist/assets/{MemoryDashboard-Mo721-BI.css → MemoryDashboard-Dt6zI60b.css} +1 -1
- package/dist/assets/{MobileAccessModal-B31mPs50.js → MobileAccessModal-BOjyr9RN.js} +1 -1
- package/dist/assets/{ScheduleManager-b0gTAf2R.js → ScheduleManager-DMCckccQ.js} +2 -2
- package/dist/assets/index-BsYOJS61.js +78 -0
- package/dist/assets/index-cP47kET9.css +1 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/services/agent-seeder.cjs +22 -13
- package/dist/assets/DocumentLibrary-CIKp6qld.css +0 -1
- package/dist/assets/DocumentLibrary-DqapN_Tr.js +0 -4
- package/dist/assets/FileBrowser-Dil1lZJ4.css +0 -1
- package/dist/assets/FileBrowser-vAJV41RT.js +0 -4
- package/dist/assets/MemoryDashboard-CP5wVWkY.js +0 -1
- package/dist/assets/index-C-EM_5yl.css +0 -1
- package/dist/assets/index-Cae5Fje-.js +0 -78
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{a as t,n,o as r,r as i}from"./apiBase-CS6zLsJY.js";import{$t as a,Ft as o,H as s,It as c,Jt as l,Pt as u,Qt as d,Rt as f,U as p,V as ee,W as te,Wt as ne,X as re,Y as m,an as h,dt as ie,en as ae,hn as oe,nn as se,ot as g,pt as ce,st as _,t as le,tn as v,vn as ue,vt as y,yn as de}from"./index-Cae5Fje-.js";var b={name:`code`,size:24,node:[[`path`,{d:`m16 18 6-6-6-6`,key:`eg8j8`}],[`path`,{d:`m8 6-6 6 6 6`,key:`ppft3o`}]]};b.node;var fe=t(b),x={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};x.node;var pe=t(x),S={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};S.node;var C=t(S),w={name:`table`,size:24,node:[[`path`,{d:`M12 3v18`,key:`108xh3`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]};w.node;var T=t(w),E=e(r(),1),D=n();function me(e){if(e.type===`folder`)return(0,D.jsx)(d,{size:16});let t=(e.extension||``).toLowerCase();return[`.csv`,`.xlsx`,`.xls`,`.tsv`].includes(t)?(0,D.jsx)(T,{size:16}):[`.py`,`.js`,`.ts`,`.java`,`.c`,`.cpp`,`.go`,`.rs`].includes(t)?(0,D.jsx)(fe,{size:16}):[`.pdf`,`.doc`,`.docx`,`.txt`,`.md`].includes(t)?(0,D.jsx)(v,{size:16}):(0,D.jsx)(ae,{size:16})}function he(e){if(!e)return``;let t=new Date(e),n=new Date,r=n.getTime()-t.getTime(),i=Math.floor(r/36e5);if(i<1)return`Just now`;if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:t.getFullYear()===n.getFullYear()?void 0:`numeric`})}function ge(e){if(e.length===0)return``;let[t,...n]=e;return n.length>0?`${t} (+${n.length} more)`:t}function _e(e){switch(e){case`home`:return(0,D.jsx)(C,{size:14});case`desktop`:return(0,D.jsx)(l,{size:14});case`documents`:return(0,D.jsx)(v,{size:14});case`download`:return(0,D.jsx)(h,{size:14});default:return(0,D.jsx)(d,{size:14})}}var ve=[{label:`All Files`,value:``},{label:`Documents`,value:`pdf,doc,docx,txt,md`},{label:`Spreadsheets`,value:`csv,xlsx,xls,tsv`},{label:`Code`,value:`py,js,ts,java,c,cpp,go,rs,rb,sh`},{label:`Data`,value:`json,xml,yaml,yml,csv,tsv`}];async function O(e,t,n,r){let a=[],s=[];for(let t of e){let e=t.includes(`.`)?`.`+t.split(`.`).pop()?.toLowerCase():``;e&&!p(e)?s.push(t):a.push(t)}let c=[],l=[],u=0,d=``,f=new Set(t.filter(e=>e.type===`folder`).map(e=>e.path));for(let e of a)try{if(f.has(e)){let t=await g(e),n=[];t.documents.forEach(e=>{e.id&&n.push(e.id)}),n.length>0&&(n.forEach(e=>c.push(e)),l.push(e))}else{let t=await y(e);t?.id&&(c.push(t.id),l.push(e))}}catch(e){u++,d=e instanceof Error?e.message:`Unknown error`}if(n&&c.length>0){let e=[];for(let t of c)try{await m(n,t),e.push(t)}catch(e){i.doc.warn(`Could not attach document to session: ${e}`)}let t=o.getState().sessions.find(e=>e.id===n)?.document_ids??[],a=e.filter(e=>!t.includes(e));a.length>0&&r(n,{document_ids:[...t,...a]})}else c.length>0&&o.getState().addDraftDocuments(c);if(c.length>0)try{let e=await _();o.getState().setDocuments(e.documents||[])}catch(e){i.doc.error(`Could not refresh the document list after indexing`,e)}return{docIds:c,supported:a,succeededFiles:l,unsupported:s,failed:u,lastError:d}}var k=e=>e.startsWith(`.`);function A({onStartChat:e}){let{setShowFileBrowser:t,currentSessionId:n,updateSessionInList:r,setPendingPrompt:l}=o(),d=(0,E.useCallback)(()=>t(!1),[t]);u(!0,d);let m=(0,E.useRef)(null);te(m,!0);let[h,ae]=(0,E.useState)(``),[g,_]=(0,E.useState)(null),[v,y]=(0,E.useState)([]),[b,fe]=(0,E.useState)([]),[x,S]=(0,E.useState)(!1),[C,w]=(0,E.useState)(null),[T,A]=(0,E.useState)(!1),[j,M]=(0,E.useState)(``),[N,P]=(0,E.useState)(null),[F,I]=(0,E.useState)([]),[ye,be]=(0,E.useState)(!1),[L,R]=(0,E.useState)(!1),[z,xe]=(0,E.useState)(``),[B,V]=(0,E.useState)(new Set),[H,U]=(0,E.useState)(null),[Se,W]=(0,E.useState)(!1),[G,K]=(0,E.useState)(new Set),[Ce,q]=(0,E.useState)(null),J=(0,E.useRef)(null),[Y,X]=(0,E.useState)(null),Z=(0,E.useCallback)(async e=>{S(!0),w(null),P(null),M(``),I([]);try{let t=await re(e);ae(t.current_path),_(t.parent_path),y(t.entries),t.quick_links.length>0&&fe(t.quick_links),i.ui.info(`Browsing: ${t.current_path} (${t.entries.length} items)`)}catch(e){let t=e instanceof Error?e.message:`Failed to load directory`;w(t),i.ui.error(`Browse failed`,e)}finally{S(!1)}},[]);(0,E.useEffect)(()=>{Z()},[Z]),(0,E.useEffect)(()=>()=>{J.current&&clearTimeout(J.current)},[]);let we=(0,E.useCallback)(async()=>{if(!j.trim())P(null),I([]);else{R(!0),w(null);try{let e=await ce(j.trim(),z||void 0,30);P(e.results),I(e.searched_locations??[]),be(e.truncated===!0),i.ui.info(`Search "${j}": ${e.total} results`)}catch(e){let t=e instanceof Error?e.message:`Search failed`;w(t),i.ui.error(`Search failed`,e)}finally{R(!1)}}},[j,z]),Te=e=>{e.key===`Enter`&&we()},Ee=(0,E.useCallback)(e=>{e.type===`folder`&&(Z(e.path),V(new Set),U(null))},[Z]),De=(0,E.useCallback)(async e=>{W(!0);try{let t=await ie(e);U(t)}catch(e){i.ui.error(`Preview failed`,e)}finally{W(!1)}},[]),Oe=(0,E.useCallback)(e=>{V(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),ke=(0,E.useCallback)(async()=>{if(B.size===0)return;let e=Array.from(B);if(X(null),!e.some(e=>{let t=e.includes(`.`)?`.`+e.split(`.`).pop()?.toLowerCase():``;return!t||p(t)})){let t=e[0],n=t.lastIndexOf(`.`),r=n>0?t.slice(n).toLowerCase():``,i=s(r);X({filename:e.length===1?t.split(/[\\/]/).pop()||t:`${e.length} files`,error:i?i.message:`File type "${r}" is not supported for indexing.`})}else{K(new Set(e)),q(`Indexing ${e.length} file(s)...`);try{let t=await O(e,v,n,r);if(t.failed>0)q(`Done: ${t.docIds.length} indexed, ${t.failed} failed`),X({filename:`${t.failed} file(s)`,error:t.lastError||`Indexing failed for some files`});else{let e=t.unsupported.length>0?` (${t.unsupported.length} skipped — unsupported type)`:``;q(`Successfully indexed ${t.docIds.length} file(s)${e}`)}J.current&&clearTimeout(J.current),J.current=setTimeout(()=>q(null),5e3),V(new Set)}catch(t){i.doc.error(`Index selected failed`,t),X({filename:e.length===1?e[0].split(/[\\/]/).pop()||e[0]:`${e.length} files`,error:t instanceof Error?t.message:`An unexpected error occurred.`})}finally{K(new Set)}}},[B,n,r,v]),Q=(0,E.useRef)(!1),Ae=(0,E.useCallback)(async()=>{if(B.size===0||Q.current)return;Q.current=!0;let a=Array.from(B);X(null),K(new Set(a)),q(`Indexing ${a.length} file(s) for analysis...`);try{let i=await O(a,v,n,r);if(i.supported.length===0){let e=a[0].lastIndexOf(`.`),t=e>0?a[0].slice(e).toLowerCase():``,n=s(t);X({filename:a.length===1?a[0].split(/[\\/]/).pop()||a[0]:`${a.length} files`,error:n?.message??`File type "${t}" is not supported for indexing.`});return}if(i.docIds.length===0){X({filename:i.supported.length===1?i.supported[0].split(/[\\/]/).pop()||i.supported[0]:`${i.supported.length} files`,error:`Failed to index selected file(s). Please try again.`});return}i.failed>0&&q(`Warning: ${i.failed} file(s) failed to index and will be excluded.`);let o=(i.succeededFiles.length>0?i.succeededFiles:i.supported).map(e=>e.split(/[\\/]/).pop()||e),c=o.length===1?`Please analyze this document for me: ${o[0]}`:`Please analyze these documents for me:\n${o.map(e=>`- ${e}`).join(`
|
|
2
|
-
`)}`;n?l({sessionId:n,text:c}):await e(c),t(!1),V(new Set)}catch(e){i.doc.error(`Ask Agent failed`,e),X({filename:a.length===1?a[0].split(/[\\/]/).pop()||a[0]:`${a.length} files`,error:e instanceof Error?e.message:`An unexpected error occurred.`})}finally{Q.current=!1,K(new Set),q(null)}},[B,n,r,v,l,t,e]),je=h?h.replace(/\\/g,`/`).split(`/`).filter(Boolean):[],Me=je.map((e,t)=>({label:e,path:je.slice(0,t+1).join(`/`)+(t===0&&e.includes(`:`)?`/`:``)})),Ne=ge(F),Pe=v.filter(e=>!k(e.name)),$=N?N.map(e=>({name:e.name,path:e.path,type:`file`,size:e.size,extension:e.extension||``,modified:e.modified||``})):T?v:Pe,Fe=v.length-Pe.length;return(0,E.useEffect)(()=>{T||N||V(e=>{let t=[...e].filter(e=>!k(e.split(/[\\/]/).pop()??``));return t.length===e.size?e:new Set(t)})},[T,N]),(0,D.jsx)(`div`,{ref:m,className:`modal-overlay`,onClick:()=>t(!1),role:`dialog`,"aria-modal":`true`,"aria-label":`File browser`,children:(0,D.jsxs)(`div`,{className:`modal-panel file-browser-modal ${H?`has-preview`:``}`,onClick:e=>e.stopPropagation(),children:[(0,D.jsxs)(`div`,{className:`modal-header`,children:[(0,D.jsxs)(`h3`,{children:[(0,D.jsx)(a,{size:18}),` File browser`]}),(0,D.jsx)(`button`,{className:`btn-icon`,onClick:()=>t(!1),"aria-label":`Close`,children:(0,D.jsx)(c,{size:18})})]}),(0,D.jsxs)(`div`,{className:`file-browser-body`,children:[(0,D.jsx)(`div`,{className:`fb-quick-links`,children:b.map(e=>(0,D.jsxs)(`button`,{className:`fb-quick-link`,onClick:()=>Z(e.path),title:e.path,children:[_e(e.icon),(0,D.jsx)(`span`,{children:e.name})]},e.path))}),(0,D.jsxs)(`div`,{className:`fb-search-bar`,children:[(0,D.jsxs)(`div`,{className:`fb-search-input-wrap`,children:[(0,D.jsx)(ne,{size:14,className:`fb-search-icon`}),(0,D.jsx)(`input`,{type:`text`,className:`fb-search-input`,placeholder:`Search files on your PC...`,value:j,onChange:e=>M(e.target.value),onKeyDown:Te,"aria-label":`Search files`}),j&&(0,D.jsx)(`button`,{className:`fb-search-clear`,onClick:()=>{M(``),P(null),I([])},"aria-label":`Clear search`,children:(0,D.jsx)(c,{size:12})})]}),(0,D.jsx)(`select`,{className:`fb-type-filter`,value:z,onChange:e=>xe(e.target.value),"aria-label":`File type filter`,children:ve.map(e=>(0,D.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,D.jsx)(`button`,{className:`fb-search-btn`,onClick:we,disabled:!j.trim()||L,children:L?`Searching...`:`Search`})]}),!N&&(0,D.jsxs)(`div`,{className:`fb-pathbar`,children:[(0,D.jsxs)(`div`,{className:`fb-breadcrumb`,children:[(0,D.jsx)(`button`,{className:`fb-crumb`,onClick:()=>Z(`/`),children:(0,D.jsx)(pe,{size:12})}),Me.map((e,t)=>(0,D.jsxs)(`span`,{className:`fb-crumb-item`,children:[(0,D.jsx)(oe,{size:12,className:`fb-crumb-sep`}),(0,D.jsx)(`button`,{className:`fb-crumb`,onClick:()=>Z(e.path),children:e.label})]},t)),g&&(0,D.jsx)(`button`,{className:`fb-up-btn`,onClick:()=>Z(g),title:`Go up`,children:(0,D.jsx)(de,{size:14})})]}),(0,D.jsxs)(`label`,{className:`fb-hidden-toggle`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:T,onChange:e=>A(e.target.checked)}),`Show hidden`]})]}),N&&(0,D.jsxs)(`div`,{className:`fb-search-header`,children:[(0,D.jsxs)(`div`,{className:`fb-search-summary`,children:[(0,D.jsxs)(`span`,{children:[`Found `,N.length,` result(s) for "`,j,`"`]}),Ne&&(0,D.jsxs)(`span`,{className:`fb-search-scope`,title:F.join(`
|
|
3
|
-
`),children:[`Searching in: `,(0,D.jsx)(`code`,{children:Ne})]}),ye&&(0,D.jsx)(`span`,{children:`Search stopped early, so some matches may be missing. Try a more specific name.`})]}),(0,D.jsx)(`button`,{className:`fb-back-btn`,onClick:()=>{P(null),M(``),I([])},children:`Back to browsing`})]}),C&&(0,D.jsx)(`div`,{className:`fb-error`,children:C}),(0,D.jsxs)(`div`,{className:`fb-content`,children:[(0,D.jsxs)(`div`,{className:`fb-file-list`,children:[x&&(0,D.jsx)(`div`,{className:`fb-loading`,children:`Loading...`}),!x&&$.length===0&&(0,D.jsx)(`div`,{className:`fb-empty`,children:N?`No files found`:Fe>0?`Only hidden items here. Turn on Show hidden to see them.`:`This folder is empty`}),!x&&$.map(e=>{let t=e.extension||(e.name.includes(`.`)?`.`+e.name.split(`.`).pop()?.toLowerCase():``),n=e.type===`file`&&t&&!p(t),r=n?s(t):null;return(0,D.jsxs)(`div`,{className:`fb-entry ${e.type} ${B.has(e.path)?`selected`:``} ${n?`unsupported`:``}`,onClick:()=>e.type===`folder`?Ee(e):Oe(e.path),onDoubleClick:()=>e.type===`folder`?Ee(e):void 0,title:n?`${r?.label||`This`} file type cannot be indexed`:e.path,children:[(0,D.jsx)(`input`,{type:`checkbox`,className:`fb-entry-checkbox`,checked:B.has(e.path),onChange:()=>Oe(e.path),onClick:e=>e.stopPropagation(),"aria-label":`Select ${e.name}`}),(0,D.jsx)(`span`,{className:`fb-entry-icon`,children:me(e)}),(0,D.jsx)(`span`,{className:`fb-entry-name`,title:e.path,children:e.name}),n&&(0,D.jsx)(`span`,{className:`fb-unsupported-badge`,children:`Not indexable`}),e.type===`file`&&(0,D.jsx)(`button`,{type:`button`,className:`fb-entry-preview-btn`,onClick:t=>{t.stopPropagation(),De(e.path)},"aria-label":`Preview ${e.name}`,title:`Preview file`,children:(0,D.jsx)(se,{size:14})}),(0,D.jsx)(`span`,{className:`fb-entry-size`,children:e.type===`file`?le(e.size):``}),(0,D.jsx)(`span`,{className:`fb-entry-date`,children:he(e.modified)})]},e.path)})]}),H&&(0,D.jsxs)(`div`,{className:`fb-preview`,children:[(0,D.jsxs)(`div`,{className:`fb-preview-header`,children:[(0,D.jsx)(`span`,{className:`fb-preview-name`,children:H.name}),(0,D.jsx)(`button`,{className:`btn-icon-sm`,onClick:()=>U(null),"aria-label":`Close preview`,children:(0,D.jsx)(c,{size:14})})]}),(0,D.jsxs)(`div`,{className:`fb-preview-meta`,children:[(0,D.jsx)(`span`,{children:H.size_display}),H.total_lines&&(0,D.jsxs)(`span`,{children:[H.total_lines,` lines`]}),H.columns&&(0,D.jsxs)(`span`,{children:[H.columns.length,` columns`]}),H.row_count!==null&&(0,D.jsxs)(`span`,{children:[H.row_count,` rows`]})]}),H.columns&&(0,D.jsxs)(`div`,{className:`fb-preview-columns`,children:[(0,D.jsx)(`strong`,{children:`Columns:`}),` `,H.columns.join(`, `)]}),Se?(0,D.jsx)(`div`,{className:`fb-preview-loading`,children:`Loading preview...`}):H.is_text&&H.preview_lines.length>0?(0,D.jsx)(`pre`,{className:`fb-preview-content`,children:H.preview_lines.slice(0,30).join(`
|
|
4
|
-
`)}):(0,D.jsx)(`div`,{className:`fb-preview-binary`,children:`Binary file - no preview available`})]})]}),Y&&(0,D.jsx)(ee,{filename:Y.filename,error:Y.error,onDismiss:()=>X(null)}),(0,D.jsxs)(`div`,{className:`fb-actions`,children:[(0,D.jsx)(`div`,{className:`fb-selection-info`,children:B.size>0?`${B.size} item(s) selected`:`Select files to index or analyze`}),Ce&&(0,D.jsx)(`span`,{className:`fb-index-status`,children:Ce}),(0,D.jsxs)(`div`,{className:`fb-action-btns`,children:[(0,D.jsxs)(`button`,{className:`fb-action-btn secondary`,onClick:ke,disabled:B.size===0||G.size>0,title:`Index selected files for RAG search`,children:[(0,D.jsx)(f,{size:14}),`Index Selected`]}),(0,D.jsxs)(`button`,{className:`fb-action-btn primary`,onClick:Ae,disabled:B.size===0||G.size>0,title:`Index and send selected files to the chat agent for analysis`,children:[(0,D.jsx)(ue,{size:14}),`Ask Agent`]})]})]})]})]})})}export{A as FileBrowser};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-XKyaHtl9.js";import{a as t,n,o as r,r as i}from"./apiBase-CS6zLsJY.js";import{n as a,t as o}from"./zap-BogJn9oN.js";import{A as s,Bt as c,C as ee,D as te,E as l,F as ne,Ft as re,Gt as ie,Ht as ae,I as oe,It as se,Kt as ce,L as u,Lt as le,M as ue,N as de,O as fe,P as d,Pt as pe,R as f,S as me,T as he,Vt as ge,W as _e,Wt as ve,Xt as ye,_ as be,b as xe,c as Se,cn as Ce,d as we,f as Te,fn as Ee,g as De,gn as Oe,h as ke,hn as Ae,j as je,k as Me,l as Ne,ln as Pe,m as Fe,nn as Ie,on as Le,p as Re,qt as ze,s as Be,sn as Ve,t as He,u as Ue,un as We,v as Ge,vn as Ke,w as qe,x as Je,y as Ye,z as p,zt as m}from"./index-Cae5Fje-.js";var Xe={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};Xe.node;var Ze=t(Xe),h={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};h.node;var Qe=t(h),$e={name:`git-merge`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M6 21V9a9 9 0 0 0 9 9`,key:`7kw0sc`}]]};$e.node;var et=t($e),g={name:`shield-off`,size:24,node:[[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M5 5a1 1 0 0 0-1 1v7c0 5 3.5 7.5 7.67 8.94a1 1 0 0 0 .67.01c2.35-.82 4.48-1.97 5.9-3.71`,key:`1jlk70`}],[`path`,{d:`M9.309 3.652A12.252 12.252 0 0 0 11.24 2.28a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1v7a9.784 9.784 0 0 1-.08 1.264`,key:`18rp1v`}]]};g.node;var tt=t(g),nt={name:`shield`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}]]};nt.node;var rt=t(nt),it={name:`target`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};it.node;var at=t(it),ot={name:`trending-up`,size:24,node:[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]};ot.node;var st=t(ot),ct={name:`user`,size:24,node:[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]};ct.node;var lt=t(ct),_=e(r(),1),v=n(),ut=[{title:`Preferences`,categories:[`preference`]},{title:`About you`,categories:[`fact`,`profile`,`skill`]},{title:`Reminders`,categories:[`reminder`]},{title:`Notes`,categories:[`note`]}];function dt(e){switch(e){case`user`:return`You added this`;case`tool`:return`You asked GAIA to remember this`;case`llm_extract`:return`Picked up in a chat`;case`consolidation`:return`From an older chat`;case`inferred`:return`From your profile setup`;case`discovery`:return`Found on this PC during profile setup`;default:return`Saved`}}function ft(e){let t=new Date(e);if(Number.isNaN(t.getTime()))return``;let n=Math.floor((Date.now()-t.getTime())/864e5);return n<=0?`today`:n===1?`yesterday`:n<30?`${n} days ago`:t.toLocaleDateString(void 0,{month:`short`,day:`numeric`,year:`numeric`})}function y(e,t=new Date){let n=/^(\d{4})-(\d{2})-(\d{2})$/.exec(e),r=n?new Date(+n[1],n[2]-1,+n[3]):new Date(e);if(Number.isNaN(r.getTime()))return null;let i=r.getHours()===0&&r.getMinutes()===0&&r.getSeconds()===0,a=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),o=i?r.getTime()<a:r.getTime()<t.getTime(),s=r.toLocaleString(void 0,{weekday:`short`,month:`short`,day:`numeric`,...r.getFullYear()===t.getFullYear()?{}:{year:`numeric`},...i?{}:{hour:`numeric`,minute:`2-digit`}});return{text:`${o?`Was due`:`Due`} ${s}`,past:o}}function pt({memoryEnabled:e,reloadKey:t,onChanged:n,onOpenAdvanced:r,showToast:a}){let[o,s]=(0,_.useState)(null),[c,ee]=(0,_.useState)(null),[te,l]=(0,_.useState)(null),[ne,re]=(0,_.useState)(``),[ie,ae]=(0,_.useState)([]),[oe,se]=(0,_.useState)(new Set),[u,le]=(0,_.useState)(``),[ue,de]=(0,_.useState)(`fact`),[fe,d]=(0,_.useState)(null),pe=(0,_.useRef)(0),f=(0,_.useCallback)(async()=>{let e=++pe.current;try{let t=await me({about_user:!0,include_sensitive:!0,sort_by:`updated_at`,order:`desc`,limit:200});if(e!==pe.current)return;s(t.items),ee(null)}catch(t){if(e!==pe.current)return;i.system.warn(`Failed to load what GAIA knows about the user`,t),ee(t instanceof Error?t.message:String(t))}},[]);(0,_.useEffect)(()=>{f()},[f,t]);let he=(0,_.useCallback)(async e=>{let t=ne.trim();if(!t||t===e.content)l(null);else{d(e.id);try{await be(e.id,{content:t}),l(null),a(`Updated`,`success`),await f(),n()}catch(e){i.system.error(`Failed to edit memory`,e),a(`Couldn't save the change: ${e instanceof Error?e.message:e}`,`error`)}finally{d(null)}}},[ne,f,n,a]),_e=(0,_.useCallback)(async e=>{d(e.id);try{await De(e.id),pe.current++,s(t=>(t??[]).filter(t=>t.id!==e.id)),ae(t=>[e,...t]),n()}catch(e){i.system.error(`Failed to forget memory`,e),a(`Couldn't forget that: ${e instanceof Error?e.message:e}`,`error`)}finally{d(null)}},[n,a]),ve=(0,_.useCallback)(async e=>{d(e.id);try{await Fe({content:e.content,category:e.category,domain:e.domain??void 0,context:e.context,entity:e.entity??void 0,sensitive:e.sensitive,due_at:e.due_at??void 0}),ae(t=>t.filter(t=>t.id!==e.id)),await f(),n()}catch(e){i.system.error(`Failed to restore memory`,e),a(`Couldn't restore it: ${e instanceof Error?e.message:e}`,`error`)}finally{d(null)}},[f,n,a]),ye=(0,_.useCallback)(async()=>{let e=u.trim();if(e){d(`new`);try{await Fe({content:e,category:ue}),le(``),a(`Saved`,`success`),await f(),n()}catch(e){i.system.error(`Failed to add memory`,e),a(`Couldn't save it: ${e instanceof Error?e.message:e}`,`error`)}finally{d(null)}}},[u,ue,f,n,a]);if(!e)return(0,v.jsxs)(`div`,{className:`mem-about`,children:[(0,v.jsx)(`h2`,{className:`mem-about-title`,children:`What GAIA knows about you`}),(0,v.jsxs)(`div`,{className:`mem-about-empty`,children:[(0,v.jsx)(`p`,{children:`Memory is off, so GAIA isn't saving anything about you.`}),(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:r,children:`Turn it on in Advanced`})]})]});let xe=ut.map(e=>({...e,rows:(o??[]).filter(t=>e.categories.includes(t.category))})).filter(e=>e.rows.length>0);return(0,v.jsxs)(`div`,{className:`mem-about`,children:[(0,v.jsx)(`h2`,{className:`mem-about-title`,children:`What GAIA knows about you`}),(0,v.jsx)(`p`,{className:`mem-about-intro`,children:`GAIA uses these in every chat. Edit anything that's wrong, or forget it so GAIA stops using it.`}),(0,v.jsxs)(`form`,{className:`mem-about-add`,onSubmit:e=>{e.preventDefault(),ye()},children:[(0,v.jsx)(`input`,{className:`mem-input`,placeholder:`Tell GAIA something about you, e.g. “I prefer short answers”`,"aria-label":`Something GAIA should know about you`,value:u,onChange:e=>le(e.target.value)}),(0,v.jsxs)(`select`,{className:`mem-select`,"aria-label":`Kind`,value:ue,onChange:e=>de(e.target.value),children:[(0,v.jsx)(`option`,{value:`fact`,children:`About you`}),(0,v.jsx)(`option`,{value:`preference`,children:`Preference`}),(0,v.jsx)(`option`,{value:`reminder`,children:`Reminder`}),(0,v.jsx)(`option`,{value:`note`,children:`Note`})]}),(0,v.jsxs)(`button`,{className:`btn-primary`,type:`submit`,disabled:!u.trim()||fe===`new`,children:[(0,v.jsx)(ce,{size:14}),` Add`]})]}),ie.map(e=>(0,v.jsxs)(`div`,{className:`mem-about-forgotten`,role:`status`,children:[(0,v.jsxs)(`span`,{children:[`Forgotten: `,e.sensitive?`a sensitive memory`:`“${e.content}”`,` — GAIA won't learn it again from old chats.`]}),(0,v.jsxs)(`button`,{className:`mem-about-link`,disabled:fe===e.id,onClick:()=>ve(e),children:[(0,v.jsx)(m,{size:12}),` Undo`]})]},e.id)),c?(0,v.jsxs)(`div`,{className:`mem-about-empty`,children:[(0,v.jsxs)(`p`,{children:[`Couldn't load your memories: `,c]}),(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:f,children:`Try again`})]}):o===null?(0,v.jsxs)(`div`,{className:`mem-loading`,children:[(0,v.jsx)(`div`,{className:`mem-spinner`}),` Loading…`]}):xe.length===0?(0,v.jsxs)(`div`,{className:`mem-about-empty`,children:[(0,v.jsx)(`p`,{children:`GAIA hasn't saved anything about you yet.`}),(0,v.jsx)(`p`,{className:`mem-about-hint`,children:`Tell it in a chat (“remember that I live in Calgary”) or add something above.`})]}):xe.map(e=>(0,v.jsxs)(`section`,{className:`mem-about-group`,"aria-label":e.title,children:[(0,v.jsx)(`h3`,{className:`mem-about-group-title`,children:e.title}),(0,v.jsx)(`ul`,{className:`mem-about-list`,children:e.rows.map(e=>{let t=e.sensitive&&!oe.has(e.id),n=e.due_at?y(e.due_at):null;return(0,v.jsx)(`li`,{className:`mem-about-item`,children:te===e.id?(0,v.jsxs)(`form`,{className:`mem-about-edit`,onSubmit:t=>{t.preventDefault(),he(e)},children:[(0,v.jsx)(`textarea`,{className:`mem-input`,"aria-label":`Edit memory`,rows:2,autoFocus:!0,value:ne,onChange:e=>re(e.target.value),onKeyDown:t=>{t.key===`Escape`&&(t.stopPropagation(),l(null)),t.key===`Enter`&&!t.shiftKey&&(t.preventDefault(),he(e))}}),(0,v.jsxs)(`div`,{className:`mem-about-edit-actions`,children:[(0,v.jsx)(`button`,{className:`btn-primary`,type:`submit`,disabled:fe===e.id,children:`Save`}),(0,v.jsx)(`button`,{className:`btn-secondary`,type:`button`,onClick:()=>l(null),children:`Cancel`})]})]}):(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`div`,{className:`mem-about-text`,children:[t?(0,v.jsxs)(`button`,{className:`mem-about-link`,onClick:()=>se(t=>new Set(t).add(e.id)),children:[(0,v.jsx)(Ie,{size:12}),` Sensitive — show`]}):e.content,n&&(0,v.jsx)(`span`,{className:`mem-about-due${n.past?` is-overdue`:``}`,children:n.text}),(0,v.jsxs)(`span`,{className:`mem-about-meta`,children:[dt(e.source),` · `,ft(e.updated_at)]})]}),(0,v.jsxs)(`div`,{className:`mem-about-actions`,children:[(0,v.jsx)(`button`,{className:`mem-about-btn`,"aria-label":`Edit: ${t?`sensitive memory`:e.content}`,title:`Edit`,onClick:()=>{l(e.id),re(e.content)},children:(0,v.jsx)(ze,{size:14})}),(0,v.jsxs)(`button`,{className:`mem-about-btn mem-about-btn-remove`,"aria-label":`Forget: ${t?`sensitive memory`:e.content}`,title:`Forget`,disabled:fe===e.id,onClick:()=>_e(e),children:[(0,v.jsx)(ge,{size:14}),` Forget`]})]})]})},e.id)})})]},e.title))]})}function mt(e){if(!e)return`—`;try{let t=new Date(e);if(isNaN(t.getTime()))return`—`;let n={month:`short`,day:`numeric`};return t.getFullYear()!==new Date().getFullYear()&&(n.year=`numeric`),t.toLocaleDateString(void 0,n)}catch{return`—`}}function b(e){if(!e)return``;try{let t=new Date(e);return isNaN(t.getTime())?``:t.toLocaleString(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}catch{return``}}function x(e){if(!e)return`—`;try{let t=new Date(e);if(isNaN(t.getTime()))return`—`;let n=Date.now(),r=t.getTime()-n,i=Math.abs(r),a=Math.floor(i/1e3),o=Math.floor(i/6e4),s=Math.floor(i/36e5),c=Math.floor(i/864e5);return r<0?a<5?`just now`:a<60?`${a}s ago`:s===0?`${o}m ago`:c===0?`${s}h ago`:c===1?`yesterday`:c<30?`${c}d ago`:b(e):a<5?`now`:a<60?`in ${a}s`:s===0?`in ${o}m`:c===0?`in ${s}h`:c===1?`tomorrow`:c<30?`in ${c}d`:b(e)}catch{return`—`}}function ht(e){return e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(1)}s`}function gt(e){try{return new Date(e).getTime()<Date.now()}catch{return!1}}function _t(e){return e>=.7?`high`:e>=.4?`medium`:`low`}function vt(e){return e>=.9?`high`:e>=.7?`medium`:`low`}function yt(e,t){let n=mt(e),r=mt(t);return n===`—`&&r===`—`?``:n===r?n:`${n} \u2013 ${r}`}function bt(e){if(e.length===0)return 0;let t=new Date().toISOString().slice(0,10),n=e.find(e=>e.date===t);return n?n.knowledge_added:0}var xt=[`fact`,`preference`,`error`,`skill`,`note`,`reminder`],St={work:`blue`,technical:`purple`,personal:`green`,general:`gray`};function Ct(){let{setShowMemoryDashboard:e,sessions:t,setCurrentSession:n}=re(),r=(0,_.useMemo)(()=>new Map(t.map(e=>[e.id,e.title])),[t]),Ie=e=>r.get(e)||`${e.slice(0,8)}...`,[m,Xe]=(0,_.useState)(null),[h,$e]=(0,_.useState)([]),[g,nt]=(0,_.useState)(null),[it,ot]=(0,_.useState)([]),[ct,ut]=(0,_.useState)([]),[dt,ft]=(0,_.useState)([]),[y,mt]=(0,_.useState)(null),[Ct,wt]=(0,_.useState)([]),[Tt,Et]=(0,_.useState)(!0),[Dt,Ot]=(0,_.useState)(null),[kt,At]=(0,_.useState)(null),[jt,S]=(0,_.useState)(!1),[Mt,Nt]=(0,_.useState)(null),[Pt,Ft]=(0,_.useState)([]),It=(0,_.useRef)(0),[C,Lt]=(0,_.useState)([]),[Rt,zt]=(0,_.useState)(``),[Bt,Vt]=(0,_.useState)(``),[Ht,Ut]=(0,_.useState)(``),[w,Wt]=(0,_.useState)(`updated_at`),[Gt,Kt]=(0,_.useState)(`desc`),[T,E]=(0,_.useState)(0),[qt,Jt]=(0,_.useState)(!1),[Yt,Xt]=(0,_.useState)(``),[Zt,Qt]=(0,_.useState)(null),$t=(0,_.useRef)(null),[D,en]=(0,_.useState)(null),[tn,nn]=(0,_.useState)(!1),[O,rn]=(0,_.useState)(null),[k,A]=(0,_.useState)({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),[an,on]=(0,_.useState)(new Set),[j,sn]=(0,_.useState)(!1),[cn,ln]=(0,_.useState)(!1),[un,dn]=(0,_.useState)(!1),[M,N]=(0,_.useState)(!1),[fn,pn]=(0,_.useState)(!1),[P,mn]=(0,_.useState)(null),[hn,gn]=(0,_.useState)(!1),[F,I]=(0,_.useState)(null),[L,R]=(0,_.useState)(`about`),[_n,vn]=(0,_.useState)(0),[yn,bn]=(0,_.useState)([]),[xn,Sn]=(0,_.useState)(null),[Cn,wn]=(0,_.useState)(!1),[Tn,En]=(0,_.useState)(null),[Dn,On]=(0,_.useState)(null),[kn,An]=(0,_.useState)(!1),[jn,Mn]=(0,_.useState)({title:``,description:``,priority:`medium`}),[z,B]=(0,_.useState)(`idle`),[Nn,V]=(0,_.useState)([]),[H,U]=(0,_.useState)([]),[Pn,Fn]=(0,_.useState)(null),In=(0,_.useRef)(null),Ln=(0,_.useRef)(null),[W,G]=(0,_.useState)(`idle`),[Rn,K]=(0,_.useState)([]),[q,J]=(0,_.useState)([]),[zn,Bn]=(0,_.useState)(null),[Vn,Hn]=(0,_.useState)(!1),Un=(0,_.useRef)(null),Wn=(0,_.useRef)(null),[Gn,Kn]=(0,_.useState)(30),[qn,Jn]=(0,_.useState)(!1),[Yn,Xn]=(0,_.useState)(!1),[Zn,Qn]=(0,_.useState)(!1),[$n,er]=(0,_.useState)(!1),[tr,nr]=(0,_.useState)(!1),[rr,ir]=(0,_.useState)(!1),ar=(0,_.useRef)(null),or=(0,_.useRef)(null),sr=(0,_.useRef)(null),Y=(0,_.useCallback)((e,t=`info`)=>{let n=++It.current;Ft(r=>[...r,{id:n,text:e,type:t}]),setTimeout(()=>{Ft(e=>e.filter(e=>e.id!==n))},4e3)},[]);(0,_.useEffect)(()=>{if(!jt)return;let e=e=>{or.current&&!or.current.contains(e.target)&&S(!1)};return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[jt]),pe(!0,()=>{F?I(null):fn?pn(!1):hn?gn(!1):D?en(null):jt?S(!1):tn||O?(nn(!1),rn(null)):Mt?Nt(null):e(!1)}),_e(sr,!!F),(0,_.useEffect)(()=>{if(!F)return;let e=sr.current;if(!e)return;let t=document.activeElement;return e.focus(),()=>{t?.focus()}},[F]);let cr=(0,_.useCallback)(async()=>{try{let e=await l();Xe(e)}catch(e){i.system.warn(`Failed to load memory stats`,e)}},[]),lr=(0,_.useCallback)(async()=>{try{let e=await ee(Gn);$e(e)}catch(e){i.system.warn(`Failed to load memory activity`,e)}},[Gn]),X=(0,_.useCallback)(async()=>{try{let e=await me({category:C.length>0?C:void 0,context:Rt||void 0,entity:Bt||void 0,search:Ht||void 0,sort_by:w,order:Gt,offset:T,limit:15,include_sensitive:!0,include_superseded:qt});nt(e)}catch(e){i.system.warn(`Failed to load knowledge`,e)}},[C,Rt,Bt,Ht,w,Gt,T,qt]),ur=(0,_.useCallback)(async()=>{try{let e=await te();ot(e)}catch(e){i.system.warn(`Failed to load tool summary`,e)}},[]),dr=(0,_.useCallback)(async()=>{try{let e=await qe(20);ut(e)}catch(e){i.system.warn(`Failed to load conversations`,e)}},[]),fr=(0,_.useCallback)(async()=>{try{let e=await fe(7);ft(e)}catch(e){i.system.warn(`Failed to load upcoming items`,e)}},[]),Z=(0,_.useCallback)(async()=>{try{let e=await Ye();mt(e)}catch(e){i.system.warn(`Failed to load embedding coverage`,e)}},[]),pr=(0,_.useCallback)(async()=>{try{let e=await xe();wt(e||[])}catch(e){i.system.warn(`Failed to load entities`,e)}},[]),mr=(0,_.useCallback)(async()=>{try{let e=await he();ln(e.mcp_memory_enabled),sn(e.memory_enabled),dn(e.system_discovery_consent)}catch(e){i.system.warn(`Failed to load memory settings`,e)}},[]),hr=(0,_.useCallback)(async()=>{wn(!0);try{let[e,t]=await Promise.all([Me(),Je()]);bn(e.goals),Sn(t)}catch(e){i.system.warn(`Failed to load goals`,e)}finally{wn(!1)}},[]),gr=(0,_.useCallback)(async(e,t)=>{try{await e()}catch(e){i.system.error(t,e),Y(`${t}: ${e instanceof Error?e.message:e}`,`error`);return}hr()},[hr,Y]);(0,_.useEffect)(()=>{if(!Dn)return;let e=setTimeout(()=>On(null),3e3);return()=>clearTimeout(e)},[Dn]);let Q=(0,_.useCallback)(async()=>{Et(!0),Ot(null);try{await Promise.all([cr(),lr(),X(),ur(),dr(),fr(),Z(),pr(),mr(),hr()]),vn(e=>e+1)}catch(e){Ot(`Failed to load memory data. Is the backend running?`),i.system.error(`Memory dashboard load failed`,e)}finally{Et(!1)}},[cr,lr,X,ur,dr,fr,Z,pr,mr,hr]);(0,_.useEffect)(()=>{Q()},[Q]),(0,_.useEffect)(()=>{X()},[X]);let _r=(0,_.useRef)(!0);(0,_.useEffect)(()=>{_r.current?_r.current=!1:lr()},[lr]);let vr=(0,_.useCallback)(e=>{Ut(e),ir(!0),ar.current&&clearTimeout(ar.current),ar.current=setTimeout(()=>{E(0),ir(!1)},300)},[]),yr=(0,_.useCallback)(()=>{X(),cr(),Z(),fr(),pr()},[X,cr,Z,fr,pr]),$=(0,_.useCallback)(()=>{yr(),vn(e=>e+1)},[yr]),br=(0,_.useCallback)(async()=>{if(k.content.trim())try{let e=await Fe({content:k.content,category:k.category,domain:k.domain||void 0,context:k.context,entity:k.entity||void 0,sensitive:k.sensitive,due_at:k.due_at||void 0});nn(!1),A({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),$(),i.ui.info(`Created new knowledge entry`),e?.embedded===!1?Y(e.embed_error??`Saved, but not embedded`,`error`):Y(`Memory created successfully`,`success`)}catch(e){i.system.error(`Failed to create knowledge`,e),Y(`Failed to create memory`,`error`)}},[k,$,Y]),xr=(0,_.useCallback)(async()=>{if(O&&k.content.trim())try{let e=await be(O,{content:k.content,category:k.category,domain:k.domain||void 0,context:k.context,entity:k.entity||void 0,sensitive:k.sensitive,due_at:k.due_at||void 0});rn(null),A({content:``,category:`fact`,domain:``,context:`global`,entity:``,sensitive:!1,due_at:``}),$(),i.ui.info(`Updated knowledge ${O}`),e?.embedded===!1?Y(e.embed_error??`Saved, but not embedded`,`error`):Y(`Memory updated`,`success`)}catch(e){i.system.error(`Failed to update knowledge`,e),Y(`Failed to update memory`,`error`)}},[O,k,$,Y]),Sr=(0,_.useCallback)(async e=>{if(P!==e)mn(e);else{mn(null);try{await De(e),$(),i.ui.info(`Deleted knowledge ${e}`),Y(`Memory deleted`,`info`)}catch(e){i.system.error(`Failed to delete knowledge`,e),Y(`Failed to delete memory`,`error`)}}},[P,$,Y]);(0,_.useEffect)(()=>{if(!P)return;let e=setTimeout(()=>mn(null),3e3);return()=>clearTimeout(e)},[P]);let Cr=(0,_.useCallback)(async e=>{try{await be(e.id,{sensitive:!e.sensitive}),X(),i.ui.info(`Toggled sensitive for ${e.id}: ${!e.sensitive}`),Y(e.sensitive?`Unmarked as sensitive`:`Marked as sensitive`,`info`)}catch(e){i.system.error(`Failed to toggle sensitive`,e),Y(`Failed to toggle sensitive flag`,`error`)}},[X,Y]),wr=(0,_.useCallback)(e=>{rn(e.id),nn(!1),A({content:e.content,category:e.category,domain:e.domain||``,context:e.context,entity:e.entity||``,sensitive:e.sensitive,due_at:e.due_at||``})},[]),Tr=(0,_.useCallback)(e=>{navigator.clipboard.writeText(e).catch(()=>{}),i.ui.info(`Copied knowledge ID: ${e}`),Y(`ID copied to clipboard`,`info`)},[Y]),Er=(0,_.useCallback)(e=>{Xt(e),$t.current&&clearTimeout($t.current),e.trim()?$t.current=setTimeout(async()=>{try{let t=await f(e.trim(),20);Qt(t)}catch(e){i.system.warn(`Conversation search failed`,e)}},300):Qt(null)},[]),Dr=(0,_.useCallback)(async e=>{try{let t=await Ge(e);en({sessionId:e,turns:t})}catch(e){i.system.error(`Failed to load conversation detail`,e)}},[]),Or=(0,_.useCallback)(e=>{Lt(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e]),E(0)},[]),kr=(0,_.useCallback)(e=>{w===e?Kt(e=>e===`desc`?`asc`:`desc`):(Wt(e),Kt(`desc`)),E(0)},[w]),Ar=(0,_.useCallback)(async()=>{Jn(!0),S(!1);try{let e=await Te();await Q(),Y(`Consolidated ${e.consolidated??0} sessions, extracted ${e.extracted_items??0} items`,`success`)}catch(e){i.system.error(`Failed to consolidate sessions`,e),Y(`Failed to consolidate sessions`,`error`)}finally{Jn(!1)}},[Q,Y]),jr=(0,_.useCallback)(async()=>{Xn(!0),S(!1);try{let e=await ue();await Z(),Y(`Backfilled ${e.backfilled??0} embeddings${e.total_without?` (${e.total_without} were missing)`:``}`,`success`)}catch(e){i.system.error(`Failed to rebuild embeddings`,e),Y(`Failed to rebuild embeddings`,`error`)}finally{Xn(!1)}},[Z,Y]),Mr=(0,_.useCallback)(async()=>{Qn(!0),S(!1);try{let e=await d();await Q(),Y(`Checked ${e.pairs_checked??0} pairs: ${e.reinforced??0} reinforced, ${e.contradicted??0} contradicted`,`success`)}catch(e){i.system.error(`Failed to reconcile memory`,e),Y(`Failed to reconcile memory`,`error`)}finally{Qn(!1)}},[Q,Y]),Nr=(0,_.useCallback)(async()=>{er(!0),S(!1);try{await de(),await Q(),Y(`FTS indexes rebuilt successfully`,`success`)}catch(e){i.system.error(`Failed to rebuild FTS index`,e),Y(`Failed to rebuild FTS indexes`,`error`)}finally{er(!1)}},[Q,Y]),Pr=(0,_.useCallback)(async()=>{nr(!0),S(!1);try{let e=await ne();await Q(),e.skipped?Y(`System context collection is disabled — enable it in settings`,`error`):Y(`System context refreshed: ${e.stored} facts updated`,`success`)}catch(e){i.system.error(`Failed to refresh system context`,e),Y(`Failed to refresh system context`,`error`)}finally{nr(!1)}},[Q,Y]),Fr=qn||Yn||Zn||$n||tr,Ir=(0,_.useCallback)(()=>{B(`running`),V([]),U([]),Fn(null);let e=s();Ln.current=e,e.onmessage=t=>{try{let n=JSON.parse(t.data);if(n.type===`log`)V(e=>[...e,{text:n.message,kind:`log`}]);else if(n.type===`finding`){let e=n.item;V(t=>[...t,{text:` Found: ${e.content}`,kind:`finding`}]),U(t=>[...t,{...e,_checked:!0}])}else n.type===`error`?V(e=>[...e,{text:` Error: ${n.message}`,kind:`error`}]):n.type===`done`&&(e.close(),Ln.current=null,V(e=>[...e,{text:`Done. ${n.total??0} items discovered.`,kind:`log`}]),B(`review`))}catch{V(e=>[...e,{text:`Failed to parse event data.`,kind:`error`}])}},e.onerror=()=>{e.close(),Ln.current=null,V(e=>[...e,{text:`Connection error. Is the GAIA server running?`,kind:`error`}]),U(e=>(B(e.length>0?`review`:`idle`),e))}},[]),Lr=(0,_.useCallback)(async()=>{let e=H.filter(e=>e._checked);if(e.length!==0){B(`saving`);try{let t=e.map(({_checked:e,...t})=>t),n=await Ue(t);Fn(n.stored),B(`done`),$(),Y(`Saved ${n.stored} items to memory`,`success`)}catch(e){i.system.error(`Failed to commit discovery items`,e),Y(`Failed to save discovery items`,`error`),B(`review`)}}},[H,$,Y]),Rr=(0,_.useCallback)(()=>{G(`running`),K([]),J([]),Bn(null);let e=je(Vn);Wn.current=e,e.onmessage=t=>{try{let n=JSON.parse(t.data);if(n.type===`log`)K(e=>[...e,{text:n.message,kind:`log`}]);else if(n.type===`insight`){let e=n.item;K(t=>[...t,{text:` Insight: ${e.content}`,kind:`finding`}]),J(t=>[...t,{...e,_checked:!0}])}else n.type===`error`?K(e=>[...e,{text:` Error: ${n.message}`,kind:`error`}]):n.type===`done`&&(e.close(),Wn.current=null,K(e=>[...e,{text:`Done. ${n.total??0} insights generated.`,kind:`log`}]),G(`review`))}catch{K(e=>[...e,{text:`Failed to parse event data.`,kind:`error`}])}},e.onerror=()=>{e.close(),Wn.current=null,K(e=>[...e,{text:`Connection error. Is Lemonade Server running?`,kind:`error`}]),J(e=>(G(e.length>0?`review`:`idle`),e))}},[Vn]),zr=(0,_.useCallback)(async()=>{let e=q.filter(e=>e._checked);if(e.length!==0){G(`saving`);try{let t=e.map(({_checked:e,...t})=>t),n=await we(t);Bn(n.stored),G(`done`),$(),Y(`Saved ${n.stored} insights to memory`,`success`)}catch(e){i.system.error(`Failed to commit inference insights`,e),Y(`Failed to save inference insights`,`error`),G(`review`)}}},[q,$,Y]);(0,_.useEffect)(()=>{In.current&&(In.current.scrollTop=In.current.scrollHeight)},[Nn]),(0,_.useEffect)(()=>{Un.current&&(Un.current.scrollTop=Un.current.scrollHeight)},[Rn]),(0,_.useEffect)(()=>()=>{Ln.current&&=(Ln.current.close(),null),Wn.current&&=(Wn.current.close(),null)},[]);let Br=e=>w===e?(0,v.jsx)(`span`,{className:`mem-sort-arrow`,children:Gt===`desc`?`↓`:`↑`}):null,Vr=Math.max(1,...h.map(e=>e.conversations+e.tool_calls+e.knowledge_added+e.errors)),Hr=m?.knowledge?.by_context?Object.keys(m.knowledge.by_context):[];return(0,v.jsxs)(`div`,{className:`memory-dashboard-page`,children:[(0,v.jsxs)(`div`,{className:`memory-dashboard-header`,children:[(0,v.jsxs)(`div`,{className:`memory-dashboard-header-left`,children:[(0,v.jsx)(`button`,{className:`btn-icon settings-back-btn`,onClick:()=>e(!1),"aria-label":`Back`,children:(0,v.jsx)(Ze,{size:18})}),(0,v.jsxs)(`h1`,{children:[`Memory `,(0,v.jsx)(`span`,{style:{fontSize:11,fontWeight:600,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`2px 8px`,borderRadius:4,marginLeft:8,verticalAlign:`middle`,letterSpacing:`0.5px`},children:`BETA`})]})]}),(0,v.jsxs)(`div`,{className:`memory-dashboard-header-actions`,children:[L===`advanced`&&(0,v.jsxs)(v.Fragment,{children:[y&&y.total_items>0&&(0,v.jsxs)(`div`,{className:`mem-embedding-coverage`,title:`${y.with_embedding} of ${y.total_items} entries embedded`,children:[(0,v.jsx)(`div`,{className:`mem-embedding-bar`,children:(0,v.jsx)(`div`,{className:`mem-embedding-fill`,style:{width:`${Math.round(y.coverage_pct)}%`}})}),(0,v.jsxs)(`span`,{className:`mem-embedding-label`,children:[Math.round(y.coverage_pct),`% embedded`]})]}),(0,v.jsxs)(`div`,{className:`mem-maintenance-wrap`,ref:or,children:[(0,v.jsxs)(`button`,{className:`btn-icon ${Fr?`mem-spinning`:``}`,onClick:()=>S(e=>!e),title:`Maintenance actions`,"aria-label":`Maintenance actions`,"aria-expanded":jt,children:[Fr?(0,v.jsx)(`div`,{className:`mem-spinner-sm`}):(0,v.jsx)(Le,{size:16}),(0,v.jsx)(Oe,{size:10,style:{marginLeft:2}})]}),jt&&(0,v.jsxs)(`div`,{className:`mem-maintenance-menu`,role:`menu`,children:[(0,v.jsxs)(`button`,{className:`mem-maintenance-item`,onClick:Ar,disabled:qn,role:`menuitem`,children:[(0,v.jsx)(et,{size:14}),qn?`Consolidating...`:`Consolidate Sessions`]}),(0,v.jsxs)(`button`,{className:`mem-maintenance-item`,onClick:jr,disabled:Yn,role:`menuitem`,children:[(0,v.jsx)(o,{size:14}),Yn?`Rebuilding...`:`Rebuild Embeddings`]}),(0,v.jsxs)(`button`,{className:`mem-maintenance-item`,onClick:Mr,disabled:Zn,role:`menuitem`,children:[(0,v.jsx)(Ee,{size:14}),Zn?`Reconciling...`:`Reconcile Memory`]}),(0,v.jsx)(`div`,{className:`mem-maintenance-divider`}),(0,v.jsxs)(`button`,{className:`mem-maintenance-item`,onClick:Pr,disabled:tr,role:`menuitem`,children:[(0,v.jsx)(ie,{size:14}),tr?`Refreshing...`:`Refresh System Context`]}),(0,v.jsx)(`div`,{className:`mem-maintenance-divider`}),(0,v.jsxs)(`button`,{className:`mem-maintenance-item`,onClick:Nr,disabled:$n,role:`menuitem`,children:[(0,v.jsx)(ve,{size:14}),$n?`Rebuilding...`:`Rebuild FTS Indexes`]})]})]})]}),(0,v.jsx)(`button`,{className:`btn-icon`,onClick:Q,title:`Refresh`,"aria-label":`Refresh dashboard`,children:(0,v.jsx)(ie,{size:16})})]})]}),(0,v.jsxs)(`div`,{className:`mem-tab-bar`,role:`tablist`,children:[(0,v.jsxs)(`button`,{className:`mem-tab-btn${L===`about`?` mem-tab-active`:``}`,onClick:()=>R(`about`),role:`tab`,"aria-selected":L===`about`,children:[(0,v.jsx)(lt,{size:14}),` About you`]}),(0,v.jsxs)(`button`,{className:`mem-tab-btn${L===`goals`?` mem-tab-active`:``}`,onClick:()=>{R(`goals`),hr()},role:`tab`,"aria-selected":L===`goals`,children:[(0,v.jsx)(at,{size:14}),` Goals`,xn&&(xn.goals.pending_approval??0)>0&&(0,v.jsx)(`span`,{className:`mem-tab-badge`,children:xn.goals.pending_approval})]}),(0,v.jsxs)(`button`,{className:`mem-tab-btn${L===`profile`?` mem-tab-active`:``}`,onClick:()=>R(`profile`),role:`tab`,"aria-selected":L===`profile`,children:[(0,v.jsx)(ae,{size:14}),` Profile setup`]}),(0,v.jsxs)(`button`,{className:`mem-tab-btn${L===`advanced`?` mem-tab-active`:``}`,onClick:()=>R(`advanced`),role:`tab`,"aria-selected":L===`advanced`,children:[(0,v.jsx)(Ke,{size:14}),` Advanced`]})]}),(0,v.jsxs)(`div`,{className:`memory-dashboard-body`,children:[L===`about`&&(0,v.jsx)(pt,{memoryEnabled:j,reloadKey:_n,onChanged:yr,onOpenAdvanced:()=>R(`advanced`),showToast:Y}),L===`advanced`&&(0,v.jsx)(v.Fragment,{children:Tt&&!m?(0,v.jsxs)(`div`,{className:`mem-loading`,children:[(0,v.jsx)(`div`,{className:`mem-spinner`}),`Loading memory data...`]}):Dt?(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(c,{size:32})}),(0,v.jsx)(`p`,{children:Dt}),(0,v.jsxs)(`button`,{className:`btn-secondary`,onClick:Q,style:{marginTop:12},children:[(0,v.jsx)(ie,{size:14}),` Retry`]})]}):(0,v.jsxs)(v.Fragment,{children:[!j&&(0,v.jsxs)(`div`,{className:`mem-empty-state`,style:{margin:`40px 0`},children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,style:{opacity:.5},children:(0,v.jsx)(rt,{size:32})}),(0,v.jsx)(`p`,{style:{color:`var(--text-secondary)`,fontSize:14},children:`Memory is off. Turn it on in Settings below to let GAIA remember what you tell it.`})]}),j&&(0,v.jsxs)(v.Fragment,{children:[m?.embedding_error&&(0,v.jsxs)(`div`,{className:`mem-advanced-error`,role:`alert`,children:[(0,v.jsx)(c,{size:14}),` `,m.embedding_error]}),(0,v.jsxs)(`div`,{className:`mem-stat-cards`,children:[(0,v.jsxs)(`div`,{className:`mem-stat-card`,"data-accent":`purple`,children:[(0,v.jsx)(`div`,{className:`mem-stat-value`,children:m?.knowledge?.total??0}),(0,v.jsx)(`div`,{className:`mem-stat-label`,children:`Stored`}),(0,v.jsx)(`div`,{className:`mem-stat-sub`,children:(()=>{let e=bt(h);return e>0?`+${e} today`:m?.knowledge?.by_category?Object.entries(m.knowledge.by_category).slice(0,3).map(([e,t])=>`${t} ${e}${t===1?``:`s`}`).join(`, `):`No entries`})()})]}),(0,v.jsxs)(`div`,{className:`mem-stat-card`,"data-accent":`gold`,children:[(0,v.jsx)(`div`,{className:`mem-stat-value`,children:m?.knowledge?.total_retrievals??0}),(0,v.jsx)(`div`,{className:`mem-stat-label`,children:`Retrieved`}),(0,v.jsx)(`div`,{className:`mem-stat-sub`,children:m?.knowledge?.total&&m?.knowledge?.total_retrievals?`avg ${(m.knowledge.total_retrievals/m.knowledge.total).toFixed(1)}x per memory`:`No recalls yet`})]}),(0,v.jsxs)(`div`,{className:`mem-stat-card`,"data-accent":`blue`,children:[(0,v.jsx)(`div`,{className:`mem-stat-value`,children:m?.conversations?.total_sessions??0}),(0,v.jsx)(`div`,{className:`mem-stat-label`,children:`Sessions`}),(0,v.jsx)(`div`,{className:`mem-stat-sub`,children:yt(m?.conversations?.first_session??null,m?.conversations?.last_session??null)||`${m?.conversations?.total_turns??0} total turns`})]}),(0,v.jsxs)(`div`,{className:`mem-stat-card`,"data-accent":`green`,children:[(0,v.jsx)(`div`,{className:`mem-stat-value`,children:m?.tools?.total_calls??0}),(0,v.jsx)(`div`,{className:`mem-stat-label`,children:`Tool Calls`}),(0,v.jsxs)(`div`,{className:`mem-stat-sub`,title:`Memory tools (remember, recall, ...) are not logged`,children:[m?.tools?.unique_tools??0,` tools, excl. memory`]})]}),(0,v.jsxs)(`div`,{className:`mem-stat-card`,"data-accent":`red`,children:[(0,v.jsx)(`div`,{className:`mem-stat-value`,children:m?.tools?.overall_success_rate!=null&&(m.tools.total_calls??0)>0?`${Math.round(m.tools.overall_success_rate*100)}%`:`—`}),(0,v.jsx)(`div`,{className:`mem-stat-label`,children:`Success Rate`}),(0,v.jsx)(`div`,{className:`mem-stat-sub`,children:(m?.tools?.total_calls??0)>0?`${m?.tools?.total_errors??0} errors`:`No tool calls yet`})]})]}),(0,v.jsxs)(`div`,{className:`mem-section`,children:[(0,v.jsxs)(`div`,{className:`mem-section-title mem-section-title-row`,children:[(0,v.jsxs)(`span`,{className:`mem-section-title-left`,children:[(0,v.jsx)(st,{size:14}),` Activity`]}),(0,v.jsx)(`div`,{className:`mem-range-tabs`,role:`group`,"aria-label":`Activity range`,children:[1,7,30].map(e=>(0,v.jsx)(`button`,{className:`mem-range-tab${Gn===e?` active`:``}`,onClick:()=>Kn(e),children:e===1?`1D`:e===7?`7D`:`30D`},e))})]}),h.length>0?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`mem-activity-chart`,children:h.map((e,t)=>{let n=e.conversations+e.tool_calls+e.knowledge_added+e.errors,r=t===0||t===h.length-1||t%7==0,i=new Date(e.date+`T00:00:00`).toLocaleDateString(void 0,{month:`short`,day:`numeric`});return(0,v.jsxs)(`div`,{className:`mem-activity-bar-group`,onMouseEnter:()=>At(t),onMouseLeave:()=>At(null),children:[e.errors>0&&(0,v.jsx)(`div`,{className:`mem-activity-bar errors`,style:{height:`${e.errors/Vr*100}%`}}),e.knowledge_added>0&&(0,v.jsx)(`div`,{className:`mem-activity-bar knowledge`,style:{height:`${e.knowledge_added/Vr*100}%`}}),e.tool_calls>0&&(0,v.jsx)(`div`,{className:`mem-activity-bar tool_calls`,style:{height:`${e.tool_calls/Vr*100}%`}}),e.conversations>0&&(0,v.jsx)(`div`,{className:`mem-activity-bar conversations`,style:{height:`${e.conversations/Vr*100}%`}}),r&&(0,v.jsx)(`span`,{className:`mem-activity-date-label`,children:i}),kt===t&&n>0&&(0,v.jsxs)(`div`,{className:`mem-activity-tooltip`,children:[(0,v.jsx)(`strong`,{children:i}),(0,v.jsx)(`br`,{}),e.conversations>0&&(0,v.jsxs)(v.Fragment,{children:[e.conversations,` conversations`,(0,v.jsx)(`br`,{})]}),e.tool_calls>0&&(0,v.jsxs)(v.Fragment,{children:[e.tool_calls,` tool calls`,(0,v.jsx)(`br`,{})]}),e.knowledge_added>0&&(0,v.jsxs)(v.Fragment,{children:[e.knowledge_added,` learned`,(0,v.jsx)(`br`,{})]}),e.errors>0&&(0,v.jsxs)(v.Fragment,{children:[e.errors,` errors`]})]})]},e.date)})}),(0,v.jsxs)(`div`,{className:`mem-activity-legend`,children:[(0,v.jsxs)(`span`,{className:`mem-activity-legend-item`,children:[(0,v.jsx)(`span`,{className:`mem-activity-legend-dot conversations`}),` Conversations`]}),(0,v.jsxs)(`span`,{className:`mem-activity-legend-item`,children:[(0,v.jsx)(`span`,{className:`mem-activity-legend-dot tool_calls`}),` Tool Calls`]}),(0,v.jsxs)(`span`,{className:`mem-activity-legend-item`,children:[(0,v.jsx)(`span`,{className:`mem-activity-legend-dot knowledge`}),` Knowledge`]}),(0,v.jsxs)(`span`,{className:`mem-activity-legend-item`,children:[(0,v.jsx)(`span`,{className:`mem-activity-legend-dot errors`}),` Errors`]})]})]}):(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(st,{size:28})}),(0,v.jsx)(`p`,{children:`No activity data yet`})]})]}),(0,v.jsxs)(`div`,{className:`mem-section`,children:[(0,v.jsxs)(`div`,{className:`mem-section-title mem-section-title-row`,children:[(0,v.jsxs)(`span`,{className:`mem-section-title-left`,children:[(0,v.jsx)(Ke,{size:14}),` Knowledge Browser`,g&&g.total>0&&(0,v.jsx)(`span`,{className:`mem-section-count`,children:g.total})]}),!tn&&!O&&(0,v.jsxs)(`button`,{className:`mem-section-add-btn`,onClick:()=>nn(!0),title:`Add a memory entry`,children:[(0,v.jsx)(ce,{size:13}),` Add`]})]}),(0,v.jsxs)(`div`,{className:`mem-filters`,children:[(0,v.jsxs)(`div`,{className:`mem-category-pills`,role:`group`,"aria-label":`Filter by category`,children:[xt.map(e=>(0,v.jsx)(`button`,{className:`mem-category-pill ${e}${C.includes(e)?` active`:``}`,onClick:()=>Or(e),"aria-pressed":C.includes(e),children:e},e)),C.length>0&&(0,v.jsx)(`button`,{className:`mem-category-pill clear`,onClick:()=>{Lt([]),E(0)},"aria-label":`Clear category filters`,children:`✕ Clear`})]}),(0,v.jsxs)(`select`,{className:`mem-filter-select`,value:Rt,onChange:e=>{zt(e.target.value),E(0)},"aria-label":`Filter by context`,children:[(0,v.jsx)(`option`,{value:``,children:`All Contexts`}),Hr.map(e=>(0,v.jsx)(`option`,{value:e,children:e},e))]}),(0,v.jsxs)(`select`,{className:`mem-filter-select`,value:Bt,onChange:e=>{Vt(e.target.value),E(0)},"aria-label":`Filter by entity`,children:[(0,v.jsx)(`option`,{value:``,children:`All Entities`}),Ct.map(e=>(0,v.jsxs)(`option`,{value:e.entity,children:[e.entity,` (`,e.count,`)`]},e.entity))]}),(0,v.jsxs)(`div`,{className:`mem-filter-search-wrap`,children:[rr?(0,v.jsx)(`div`,{className:`mem-spinner-sm search-icon`,style:{width:12,height:12,borderWidth:1.5}}):(0,v.jsx)(ve,{size:13,className:`search-icon`}),(0,v.jsx)(`input`,{className:`mem-filter-search`,type:`text`,placeholder:`Search memories...`,value:Ht,onChange:e=>vr(e.target.value),"aria-label":`Search memories`})]}),(0,v.jsxs)(`label`,{className:`mem-filter-toggle`,title:`Show entries that have been superseded by newer versions`,children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:qt,onChange:e=>Jt(e.target.checked)}),(0,v.jsx)(`span`,{children:`Superseded`})]})]}),(tn||O)&&(0,v.jsxs)(`div`,{className:`mem-inline-form`,children:[(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Content`}),(0,v.jsx)(`textarea`,{value:k.content,onChange:e=>A(t=>({...t,content:e.target.value})),placeholder:`What should the agent remember?`})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Category`}),(0,v.jsx)(`select`,{value:k.category,onChange:e=>A(t=>({...t,category:e.target.value})),children:xt.map(e=>(0,v.jsx)(`option`,{value:e,children:e.charAt(0).toUpperCase()+e.slice(1)},e))})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Context`}),(0,v.jsx)(`input`,{type:`text`,value:k.context,onChange:e=>A(t=>({...t,context:e.target.value})),placeholder:`global`})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Domain`}),(0,v.jsx)(`input`,{type:`text`,value:k.domain,onChange:e=>A(t=>({...t,domain:e.target.value})),placeholder:`e.g., python, frontend`})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Entity`}),(0,v.jsx)(`input`,{type:`text`,value:k.entity,onChange:e=>A(t=>({...t,entity:e.target.value})),placeholder:`e.g., person:sarah_chen`})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Due At`}),(0,v.jsx)(`input`,{type:`text`,value:k.due_at,onChange:e=>A(t=>({...t,due_at:e.target.value})),placeholder:`ISO 8601 (e.g., 2026-03-25T09:00:00-07:00)`})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-row`,children:[(0,v.jsx)(`label`,{children:`Sensitive`}),(0,v.jsxs)(`label`,{style:{display:`flex`,alignItems:`center`,gap:6,cursor:`pointer`,fontSize:12},children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:k.sensitive,onChange:e=>A(t=>({...t,sensitive:e.target.checked}))}),`Mark as sensitive (excluded from system prompt)`]})]}),(0,v.jsxs)(`div`,{className:`mem-inline-form-actions`,children:[(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>{nn(!1),rn(null)},children:`Cancel`}),(0,v.jsx)(`button`,{className:`btn-primary`,onClick:O?xr:br,style:{padding:`8px 20px`,fontSize:13},children:O?`Update`:`Save`})]})]}),g&&g.items.length>0?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{style:{overflowX:`auto`},children:(0,v.jsxs)(`table`,{className:`mem-knowledge-table`,children:[(0,v.jsx)(`thead`,{children:(0,v.jsxs)(`tr`,{children:[(0,v.jsxs)(`th`,{onClick:()=>kr(`category`),className:w===`category`?`sorted`:``,children:[`Category`,Br(`category`)]}),(0,v.jsx)(`th`,{children:`Content`}),(0,v.jsxs)(`th`,{onClick:()=>kr(`context`),className:w===`context`?`sorted`:``,children:[`Context`,Br(`context`)]}),(0,v.jsx)(`th`,{children:`Entity`}),(0,v.jsxs)(`th`,{onClick:()=>kr(`confidence`),className:w===`confidence`?`sorted`:``,children:[`Confidence`,Br(`confidence`)]}),(0,v.jsx)(`th`,{children:`Source`}),(0,v.jsxs)(`th`,{onClick:()=>kr(`updated_at`),className:w===`updated_at`?`sorted`:``,children:[`Updated`,Br(`updated_at`)]}),(0,v.jsxs)(`th`,{onClick:()=>kr(`created_at`),className:w===`created_at`?`sorted`:``,children:[`Created`,Br(`created_at`)]}),(0,v.jsx)(`th`,{children:`Due`}),(0,v.jsx)(`th`,{className:`mem-actions-cell`})]})}),(0,v.jsx)(`tbody`,{children:g.items.map(e=>{let t=Mt===e.id,n=e.has_embedding;return(0,v.jsxs)(_.Fragment,{children:[(0,v.jsxs)(`tr`,{className:`${e.superseded_by?`mem-superseded-row`:``} ${t?`mem-expanded-row`:``}`,onClick:()=>Nt(t?null:e.id),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),Nt(t?null:e.id))},tabIndex:0,role:`row`,"aria-expanded":t,style:{cursor:`pointer`},children:[(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-cat-badge ${e.category}`,children:e.category})}),(0,v.jsx)(`td`,{children:(0,v.jsxs)(`div`,{className:`mem-content-cell`,title:e.content,children:[n!==void 0&&(0,v.jsx)(`span`,{className:`mem-embed-dot ${n?`embedded`:`missing`}`,title:n?`Embedded`:`Embedding missing`,children:(0,v.jsx)(We,{size:6,fill:`currentColor`})}),e.sensitive&&(0,v.jsx)(`span`,{className:`mem-sensitive-badge`,title:`Sensitive`,children:(0,v.jsx)(rt,{size:11})}),(0,v.jsx)(`span`,{className:e.sensitive&&!an.has(e.id)?`mem-sensitive-blur`:e.superseded_by?`mem-superseded-text`:``,onClick:t=>{e.sensitive&&(t.stopPropagation(),on(t=>{let n=new Set(t);return n.has(e.id)?n.delete(e.id):n.add(e.id),n}))},children:e.content})]})}),(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-date-cell`,children:e.context})}),(0,v.jsx)(`td`,{children:e.entity?(0,v.jsx)(`span`,{className:`mem-entity-link`,onClick:t=>{t.stopPropagation(),Vt(e.entity),E(0)},title:`Filter by ${e.entity}`,children:e.entity}):(0,v.jsx)(`span`,{className:`mem-date-cell`,children:`—`})}),(0,v.jsx)(`td`,{children:(0,v.jsxs)(`div`,{className:`mem-confidence`,children:[(0,v.jsx)(`div`,{className:`mem-confidence-bar`,children:(0,v.jsx)(`div`,{className:`mem-confidence-fill ${_t(e.confidence)}`,style:{width:`${e.confidence*100}%`}})}),e.confidence.toFixed(2)]})}),(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-date-cell`,children:e.source||`—`})}),(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-date-cell`,title:b(e.updated_at),children:x(e.updated_at)})}),(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-date-cell`,title:b(e.created_at),children:x(e.created_at)})}),(0,v.jsx)(`td`,{children:e.due_at?(0,v.jsx)(`span`,{className:`mem-due-badge ${gt(e.due_at)?`overdue`:`upcoming`}`,title:b(e.due_at),children:x(e.due_at)}):(0,v.jsx)(`span`,{className:`mem-due-badge none`,children:`—`})}),(0,v.jsx)(`td`,{className:`mem-actions-cell`,children:(0,v.jsxs)(`div`,{className:`mem-row-actions`,onClick:e=>e.stopPropagation(),children:[(0,v.jsx)(`button`,{className:`mem-row-action-btn`,onClick:()=>wr(e),title:`Edit`,children:(0,v.jsx)(ze,{size:13})}),(0,v.jsx)(`button`,{className:`mem-row-action-btn`,onClick:()=>Cr(e),title:e.sensitive?`Unmark sensitive`:`Mark sensitive`,children:e.sensitive?(0,v.jsx)(tt,{size:13}):(0,v.jsx)(rt,{size:13})}),(0,v.jsx)(`button`,{className:`mem-row-action-btn`,onClick:()=>Tr(e.id),title:`Copy ID`,children:(0,v.jsx)(Ce,{size:13})}),(0,v.jsx)(`button`,{className:`mem-row-action-btn delete${P===e.id?` is-confirm`:``}`,onClick:()=>Sr(e.id),title:P===e.id?`Click again to delete`:`Delete`,"aria-label":P===e.id?`Confirm delete memory`:`Delete memory`,children:P===e.id?(0,v.jsx)(`span`,{className:`mem-row-delete-label`,children:`Delete?`}):(0,v.jsx)(ge,{size:13})})]})})]}),t&&(0,v.jsx)(`tr`,{className:`mem-detail-row`,children:(0,v.jsx)(`td`,{colSpan:10,children:(0,v.jsxs)(`div`,{className:`mem-detail-panel`,children:[(0,v.jsxs)(`div`,{className:`mem-detail-grid`,children:[(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`ID`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:e.id})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Domain`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:e.domain||`—`})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Source`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:e.source||`—`})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Use Count`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:e.use_count??0})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Created`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:b(e.created_at)})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Updated`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:b(e.updated_at)})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Last Used`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:b(e.last_used)})]}),(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Reminded At`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:b(e.reminded_at)})]}),e.superseded_by&&(0,v.jsxs)(`div`,{className:`mem-detail-field`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Superseded By`}),(0,v.jsx)(`span`,{className:`mem-detail-value mem-detail-chain`,children:e.superseded_by})]}),e.metadata&&(0,v.jsxs)(`div`,{className:`mem-detail-field mem-detail-full`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Metadata`}),(0,v.jsx)(`span`,{className:`mem-detail-value`,children:typeof e.metadata==`object`?JSON.stringify(e.metadata,null,2):e.metadata})]})]}),(0,v.jsxs)(`div`,{className:`mem-detail-content-full`,children:[(0,v.jsx)(`span`,{className:`mem-detail-label`,children:`Full Content`}),(0,v.jsx)(`div`,{className:`mem-detail-content-text`,children:e.content})]})]})})})]},e.id)})})]})}),(0,v.jsxs)(`div`,{className:`mem-pagination`,children:[(0,v.jsxs)(`span`,{children:[T+1,`–`,Math.min(T+15,g.total),` of `,g.total]}),(0,v.jsxs)(`div`,{className:`mem-pagination-btns`,children:[(0,v.jsx)(`button`,{type:`button`,className:`mem-page-btn`,"aria-label":`Previous page`,disabled:T===0,onClick:()=>E(Math.max(0,T-15)),children:(0,v.jsx)(Qe,{size:14})}),(0,v.jsx)(`button`,{type:`button`,className:`mem-page-btn`,"aria-label":`Next page`,disabled:T+15>=g.total,onClick:()=>E(T+15),children:(0,v.jsx)(Ae,{size:14})})]})]})]}):(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(Ke,{size:28})}),(0,v.jsx)(`p`,{children:Ht||C.length>0||Rt||Bt?`No matching memories`:`No memories stored yet`})]})]}),(0,v.jsxs)(`div`,{className:`mem-two-col`,children:[(0,v.jsxs)(`div`,{className:`mem-section`,children:[(0,v.jsxs)(`div`,{className:`mem-section-title`,children:[(0,v.jsx)(le,{size:14}),` Tool Performance`,(0,v.jsx)(`span`,{className:`mem-section-note`,title:`remember, recall, update_memory, forget and search_past_conversations are not logged`,children:`excludes memory tools`})]}),it.length>0?(0,v.jsx)(`div`,{style:{overflowX:`auto`},children:(0,v.jsxs)(`table`,{className:`mem-tool-table`,children:[(0,v.jsx)(`thead`,{children:(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`th`,{children:`Tool`}),(0,v.jsx)(`th`,{children:`Calls`}),(0,v.jsx)(`th`,{children:`Success`}),(0,v.jsx)(`th`,{children:`Denied`}),(0,v.jsx)(`th`,{children:`Avg Time`}),(0,v.jsx)(`th`,{children:`Last Used`}),(0,v.jsx)(`th`,{children:`Last Error`})]})}),(0,v.jsx)(`tbody`,{children:it.map(e=>(0,v.jsxs)(`tr`,{children:[(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-tool-name`,children:e.tool_name})}),(0,v.jsx)(`td`,{children:e.total_calls}),(0,v.jsx)(`td`,{children:(0,v.jsxs)(`div`,{className:`mem-confidence`,children:[(0,v.jsx)(`div`,{className:`mem-confidence-bar`,style:{width:40},children:(0,v.jsx)(`div`,{className:`mem-confidence-fill ${vt(e.success_rate)}`,style:{width:`${e.success_rate*100}%`}})}),(0,v.jsxs)(`span`,{className:`mem-success-rate ${vt(e.success_rate)}`,children:[Math.round(e.success_rate*100),`%`]})]})}),(0,v.jsx)(`td`,{children:e.denied_count??0}),(0,v.jsx)(`td`,{children:ht(e.avg_duration_ms)}),(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-date-cell`,title:b(e.last_used),children:x(e.last_used)})}),(0,v.jsx)(`td`,{children:(0,v.jsx)(`span`,{className:`mem-tool-error`,title:e.last_error||``,children:e.last_error||`—`})})]},e.tool_name))})]})}):(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(le,{size:28})}),(0,v.jsx)(`p`,{children:`No tool calls recorded yet`})]})]}),(0,v.jsxs)(`div`,{className:`mem-section`,children:[(0,v.jsxs)(`div`,{className:`mem-section-title`,children:[(0,v.jsx)(Pe,{size:14}),` Upcoming & Overdue`]}),dt.length>0?(0,v.jsx)(`div`,{className:`mem-temporal-list`,children:dt.map(e=>{let t=gt(e.due_at);return(0,v.jsxs)(`div`,{className:`mem-temporal-item ${t?`overdue`:`upcoming`}`,children:[(0,v.jsx)(`span`,{className:`mem-temporal-icon`,children:t?(0,v.jsx)(c,{size:16}):(0,v.jsx)(Pe,{size:16})}),(0,v.jsxs)(`div`,{className:`mem-temporal-content`,children:[(0,v.jsx)(`div`,{className:`mem-temporal-text`,children:e.content}),(0,v.jsxs)(`div`,{className:`mem-temporal-date`,children:[t?`OVERDUE`:`Due`,`: `,x(e.due_at),e.context!==`global`&&` \u00B7 ${e.context}`]})]})]},e.id)})}):(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(Ee,{size:28})}),(0,v.jsx)(`p`,{children:`Nothing upcoming or overdue`})]})]})]}),(0,v.jsxs)(`div`,{className:`mem-section`,children:[(0,v.jsxs)(`div`,{className:`mem-section-title`,children:[(0,v.jsx)(a,{size:14}),` Conversation History`]}),(0,v.jsxs)(`div`,{className:`mem-conv-search`,children:[(0,v.jsx)(ve,{size:13,className:`search-icon`}),(0,v.jsx)(`input`,{type:`text`,placeholder:`Search conversations...`,value:Yt,onChange:e=>Er(e.target.value),"aria-label":`Search conversations`}),Yt&&(0,v.jsx)(`button`,{className:`mem-search-clear`,onClick:()=>{Xt(``),Qt(null)},"aria-label":`Clear search`,children:(0,v.jsx)(se,{size:12})})]}),Zt===null?ct.length>0?(0,v.jsx)(`div`,{className:`mem-conv-list`,children:ct.map(e=>(0,v.jsxs)(`div`,{className:`mem-conv-item`,onClick:()=>Dr(e.session_id),children:[(0,v.jsxs)(`div`,{className:`mem-conv-info`,children:[(0,v.jsxs)(`div`,{className:`mem-conv-session-id`,children:[Ie(e.session_id),e.consolidated&&(0,v.jsx)(`span`,{className:`mem-consolidated-badge`,title:`Consolidated`,children:(0,v.jsx)(et,{size:11})})]}),e.first_message&&(0,v.jsx)(`div`,{className:`mem-conv-preview`,children:e.first_message})]}),(0,v.jsxs)(`div`,{className:`mem-conv-meta`,children:[(0,v.jsxs)(`span`,{children:[e.turn_count,` turns`]}),(0,v.jsx)(`span`,{children:x(e.last_activity)})]})]},e.session_id))}):(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(a,{size:28})}),(0,v.jsx)(`p`,{children:`No conversation history in memory`})]}):Zt.length>0?(0,v.jsx)(`div`,{className:`mem-conv-list`,children:Zt.map(e=>(0,v.jsxs)(`div`,{className:`mem-conv-item`,onClick:()=>Dr(e.session_id),children:[(0,v.jsxs)(`div`,{className:`mem-conv-info`,children:[(0,v.jsxs)(`div`,{className:`mem-conv-session-id`,children:[(0,v.jsx)(`span`,{className:`mem-conv-turn-role ${e.role}`,children:e.role}),` `,Ie(e.session_id)]}),(0,v.jsx)(`div`,{className:`mem-conv-preview`,children:e.content})]}),(0,v.jsx)(`div`,{className:`mem-conv-meta`,children:(0,v.jsx)(`span`,{children:x(e.timestamp)})})]},e.id))}):(0,v.jsx)(`div`,{className:`mem-empty`,children:(0,v.jsxs)(`p`,{children:[`No conversations match “`,Yt,`”`]})})]}),D&&(0,v.jsxs)(`div`,{className:`mem-conv-detail-overlay`,children:[(0,v.jsxs)(`div`,{className:`mem-conv-detail-header`,children:[(0,v.jsx)(`h2`,{children:Ie(D.sessionId)}),(0,v.jsxs)(`div`,{className:`mem-conv-detail-actions`,children:[r.has(D.sessionId)&&(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>n(D.sessionId),children:`Open chat`}),(0,v.jsx)(`button`,{className:`btn-icon`,onClick:()=>en(null),"aria-label":`Close conversation`,children:(0,v.jsx)(se,{size:16})})]})]}),(0,v.jsxs)(`div`,{className:`mem-conv-detail-body`,children:[D.turns.map(e=>(0,v.jsxs)(`div`,{className:`mem-conv-turn`,children:[(0,v.jsxs)(`div`,{className:`mem-conv-turn-header`,children:[(0,v.jsx)(`div`,{className:`mem-conv-turn-role ${e.role}`,children:e.role}),(0,v.jsx)(`span`,{className:`mem-conv-turn-time`,title:b(e.timestamp),children:x(e.timestamp)})]}),(0,v.jsx)(`div`,{className:`mem-conv-turn-content`,children:e.content})]},e.id)),D.turns.length===0&&(0,v.jsx)(`div`,{className:`mem-empty`,children:`No turns found`})]})]})]}),(0,v.jsxs)(`div`,{className:`mem-section`,children:[(0,v.jsxs)(`div`,{className:`mem-section-title`,children:[(0,v.jsx)(rt,{size:14}),` Settings `,(0,v.jsx)(`span`,{style:{fontSize:10,fontWeight:600,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`1px 6px`,borderRadius:4,marginLeft:6,verticalAlign:`middle`,letterSpacing:`0.5px`},children:`BETA`})]}),(0,v.jsxs)(`div`,{className:`mem-setting-row`,children:[(0,v.jsxs)(`div`,{className:`mem-setting-info`,children:[(0,v.jsx)(`span`,{className:`mem-setting-label`,children:`Memory enabled`}),(0,v.jsx)(`span`,{className:`mem-setting-desc`,children:`When disabled, no knowledge or conversation data is stored during any session (global incognito).`})]}),(0,v.jsx)(`button`,{className:`mem-toggle${j?` mem-toggle-on`:``}`,disabled:M,onClick:async()=>{if(!j)I(`memory`);else{N(!0);try{let e=await p({memory_enabled:!1});sn(e.memory_enabled)}catch(e){i.system.warn(`Failed to disable memory`,e)}finally{N(!1)}}},"aria-pressed":j,"aria-label":`Memory is ${j?`enabled`:`disabled`}`,children:j?`On`:`Off`})]}),F&&(()=>{let e={memory:{title:`Enable Agent Memory?`,description:`Agent memory is a work-in-progress. By enabling it:`,bullets:[[`Conversations and facts are stored `,`locally on this machine`],[`Stored data `,`may be lost`,` during updates`],[`You can disable it at any time from this settings panel`]],buttonLabel:`Enable Memory`,onConfirm:async()=>{let e=await p({memory_enabled:!0});sn(e.memory_enabled),Y(`Memory enabled`,`info`)}},mcp:{title:`Enable MCP Memory Access?`,description:`This exposes memory data to external MCP clients:`,bullets:[[`MCP clients can `,`read your stored memories`,` (read-only)`],[`Requires an `,`MCP server restart`,` to take effect`],[`Intended for debugging and troubleshooting only`]],buttonLabel:`Enable MCP Access`,onConfirm:async()=>{let e=await p({mcp_memory_enabled:!0});ln(e.mcp_memory_enabled),Y(`MCP memory access enabled`,`info`)}},discovery:{title:`Enable System Discovery?`,description:`This scans your system to personalize responses:`,bullets:[[`Collects `,`hardware, software, and environment`,` information`],[`Scans files, git repos, browser history, and SSH config`],[`All data stays `,`local on this machine`]],buttonLabel:`Enable Discovery`,onConfirm:async()=>{let e=await p({system_discovery_consent:!0});if(dn(e.system_discovery_consent),e.system_context_error)Y(`System discovery enabled but scan failed: ${e.system_context_error}`,`error`);else{let t=e.system_context_refresh?.stored??0;Y(`System discovery enabled — ${t} system facts collected`,`info`)}Q()}}}[F];return(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{"aria-hidden":`true`,style:{position:`fixed`,inset:0,background:`var(--bg-modal-overlay)`,zIndex:9998,backdropFilter:`blur(4px)`},onClick:()=>I(null)}),(0,v.jsxs)(`div`,{ref:sr,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`mem-beta-confirm-title`,"aria-describedby":`mem-beta-confirm-desc`,tabIndex:-1,style:{position:`fixed`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:9999,background:`var(--bg-card)`,border:`1px solid var(--border)`,borderRadius:12,padding:`28px 32px`,maxWidth:420,width:`90vw`,boxShadow:`var(--shadow-lg)`},children:[(0,v.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:10,marginBottom:16},children:[(0,v.jsx)(`span`,{style:{fontSize:11,fontWeight:700,color:`var(--accent-yellow)`,background:`var(--accent-yellow-dim)`,padding:`3px 10px`,borderRadius:4,letterSpacing:`0.5px`},children:`BETA`}),(0,v.jsx)(`h2`,{id:`mem-beta-confirm-title`,style:{fontSize:16,fontWeight:600,color:`var(--text-primary)`},children:e.title})]}),(0,v.jsx)(`p`,{id:`mem-beta-confirm-desc`,style:{fontSize:13,lineHeight:1.6,color:`var(--text-secondary)`,margin:`0 0 8px`},children:e.description}),(0,v.jsx)(`ul`,{style:{fontSize:13,lineHeight:1.7,color:`var(--text-secondary)`,margin:`0 0 24px`,paddingLeft:20},children:e.bullets.map((e,t)=>(0,v.jsx)(`li`,{children:e.map((e,t)=>t%2==1?(0,v.jsx)(`strong`,{style:{color:`var(--text-primary)`},children:e},t):(0,v.jsx)(`span`,{children:e},t))},t))}),(0,v.jsxs)(`div`,{style:{display:`flex`,justifyContent:`flex-end`,gap:10},children:[(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>I(null),style:{padding:`8px 20px`,fontSize:13,borderRadius:6},children:`Cancel`}),(0,v.jsx)(`button`,{disabled:M,onClick:async()=>{N(!0);try{await e.onConfirm()}catch(e){i.system.warn(`Failed to update setting`,e),Y(`Failed to update setting. Please try again.`,`error`)}finally{N(!1),I(null)}},style:{padding:`8px 24px`,fontSize:13,fontWeight:600,borderRadius:6,border:`none`,cursor:`pointer`,background:`var(--accent-fill)`,color:`var(--accent-fill-text)`},children:e.buttonLabel})]})]})]})})(),(0,v.jsxs)(`div`,{className:`mem-setting-row`,children:[(0,v.jsxs)(`div`,{className:`mem-setting-info`,children:[(0,v.jsx)(`span`,{className:`mem-setting-label`,children:`MCP memory access`}),(0,v.jsx)(`span`,{className:`mem-setting-desc`,children:`Expose read-only memory tools to MCP clients (for debug/troubleshooting). Requires MCP server restart.`})]}),(0,v.jsx)(`button`,{className:`mem-toggle${cn?` mem-toggle-on`:``}`,disabled:M,onClick:async()=>{if(!cn)I(`mcp`);else{N(!0);try{let e=await p({mcp_memory_enabled:!1});ln(e.mcp_memory_enabled)}catch(e){i.system.warn(`Failed to update memory settings`,e)}finally{N(!1)}}},"aria-label":`Toggle MCP memory access`,"aria-pressed":cn,children:cn?`On`:`Off`})]}),(0,v.jsxs)(`div`,{className:`mem-setting-row`,children:[(0,v.jsxs)(`div`,{className:`mem-setting-info`,children:[(0,v.jsx)(`span`,{className:`mem-setting-label`,children:`System discovery`}),(0,v.jsx)(`span`,{className:`mem-setting-desc`,children:`Allow GAIA to scan your system for hardware, software, and environment information to personalize responses.`})]}),(0,v.jsx)(`button`,{className:`mem-toggle${un?` mem-toggle-on`:``}`,disabled:M,onClick:async()=>{if(!un)I(`discovery`);else{N(!0);try{let e=await p({system_discovery_consent:!1});dn(e.system_discovery_consent)}catch(e){i.system.warn(`Failed to update system discovery setting`,e)}finally{N(!1)}}},"aria-label":`Toggle system discovery`,"aria-pressed":un,children:un?`On`:`Off`})]}),(0,v.jsxs)(`div`,{className:`mem-setting-row mem-setting-row-danger`,children:[(0,v.jsxs)(`div`,{className:`mem-setting-info`,children:[(0,v.jsx)(`span`,{className:`mem-setting-label`,children:`Re-initialize memory`}),(0,v.jsx)(`span`,{className:`mem-setting-desc`,children:`Wipe all memories, conversations, and tool logs, then re-collect system information. This cannot be undone.`})]}),hn?(0,v.jsxs)(`div`,{className:`mem-delete-confirm`,children:[(0,v.jsx)(`span`,{className:`mem-delete-confirm-label`,children:`Are you sure?`}),(0,v.jsx)(`button`,{className:`mem-btn-danger`,disabled:M,onClick:async()=>{N(!0);try{let e=await oe();e.system_context.error?Y(e.system_context.error,`error`):Y(`Re-initialized: cleared ${e.cleared.knowledge} entries, restored ${e.system_context.stored} system facts`,`info`),Q()}catch(e){i.system.warn(`Failed to reinitialize memory`,e),Y(`Failed to re-initialize memory`,`error`)}finally{N(!1),gn(!1)}},children:`Yes, re-initialize`}),(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>gn(!1),style:{padding:`6px 14px`,fontSize:12},children:`Cancel`})]}):(0,v.jsx)(`button`,{className:`mem-btn-danger`,disabled:M,onClick:()=>gn(!0),children:`Re-initialize`})]}),(0,v.jsxs)(`div`,{className:`mem-setting-row mem-setting-row-danger`,children:[(0,v.jsxs)(`div`,{className:`mem-setting-info`,children:[(0,v.jsx)(`span`,{className:`mem-setting-label`,children:`Delete all memories`}),(0,v.jsx)(`span`,{className:`mem-setting-desc`,children:`Permanently wipe all knowledge entries, conversation history, and tool logs. This cannot be undone.`})]}),fn?(0,v.jsxs)(`div`,{className:`mem-delete-confirm`,children:[(0,v.jsx)(`span`,{className:`mem-delete-confirm-label`,children:`Are you sure?`}),(0,v.jsx)(`button`,{className:`mem-btn-danger`,disabled:M,onClick:async()=>{N(!0);try{let e=await Ne();Y(`Deleted ${e.knowledge} knowledge entries, ${e.conversations} conversations`,`info`),Q()}catch(e){i.system.warn(`Failed to clear memory`,e),Y(`Failed to clear memory`,`error`)}finally{N(!1),pn(!1)}},children:`Yes, delete all`}),(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>pn(!1),style:{padding:`6px 14px`,fontSize:12},children:`Cancel`})]}):(0,v.jsx)(`button`,{className:`mem-btn-danger`,disabled:M,onClick:()=>pn(!0),children:`Delete All`})]})]}),m&&(0,v.jsxs)(`div`,{className:`mem-db-footer`,children:[(0,v.jsxs)(`span`,{children:[`Database: `,He(m.db_size_bytes),m.knowledge?.avg_confidence!=null&&` \u00B7 Avg confidence: ${m.knowledge.avg_confidence.toFixed(2)}`]}),(0,v.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[m.knowledge?.entity_count!=null&&m.knowledge.entity_count>0&&(0,v.jsxs)(`span`,{children:[m.knowledge.entity_count,` entities`]}),m.knowledge?.sensitive_count!=null&&m.knowledge.sensitive_count>0&&(0,v.jsxs)(`span`,{children:[(0,v.jsx)(rt,{size:10}),` `,m.knowledge.sensitive_count,` sensitive`]})]})]})]})}),L===`profile`&&(0,v.jsxs)(`div`,{className:`mem-profile-grid`,children:[(0,v.jsxs)(`div`,{className:`mem-profile-card`,children:[(0,v.jsxs)(`div`,{className:`mem-profile-card-title`,children:[(0,v.jsx)(Ve,{size:16}),` System Discovery`]}),(0,v.jsx)(`p`,{className:`mem-profile-desc`,children:`Scan your system to discover apps, projects, and usage patterns.`}),(0,v.jsx)(`button`,{className:`btn-primary mem-profile-run-btn`,disabled:z===`running`||z===`saving`,onClick:Ir,children:z===`running`?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`mem-spinner-sm`}),` Running...`]}):`Run Discovery`}),Nn.length>0&&(0,v.jsx)(`div`,{className:`mem-log`,ref:In,children:Nn.map((e,t)=>(0,v.jsx)(`div`,{className:`mem-log-line ${e.kind}`,children:e.text},t))}),(z===`review`||z===`saving`||z===`done`)&&H.length>0&&(0,v.jsxs)(`div`,{className:`mem-review-section`,children:[(0,v.jsx)(`div`,{className:`mem-review-header`,children:`Review & Save`}),(0,v.jsx)(`div`,{className:`mem-review-list`,children:H.map((e,t)=>(0,v.jsxs)(`label`,{className:`mem-review-item`,children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:e._checked,disabled:z===`saving`||z===`done`,onChange:()=>{U(e=>e.map((e,n)=>n===t?{...e,_checked:!e._checked}:e))}}),(0,v.jsx)(`span`,{className:`mem-review-content`,children:e.content}),(0,v.jsx)(`span`,{className:`mem-source-badge`,children:e._source_name||e.category}),(0,v.jsxs)(`span`,{className:`mem-conf-badge`,children:[Math.round(e.confidence*100),`%`]})]},t))}),(0,v.jsxs)(`div`,{className:`mem-review-actions`,children:[(0,v.jsx)(`button`,{className:`btn-primary`,disabled:z===`saving`||z===`done`||H.filter(e=>e._checked).length===0,onClick:Lr,children:z===`saving`?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`mem-spinner-sm`}),` Saving...`]}):`Save Selected (${H.filter(e=>e._checked).length})`}),(0,v.jsxs)(`span`,{className:`mem-review-select-links`,children:[(0,v.jsx)(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>U(e=>e.map(e=>({...e,_checked:!0}))),children:`Select All`}),` / `,(0,v.jsx)(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>U(e=>e.map(e=>({...e,_checked:!1}))),children:`None`})]})]})]}),z===`done`&&Pn!==null&&(0,v.jsxs)(`div`,{className:`mem-profile-success`,children:[(0,v.jsx)(Ee,{size:14}),` Saved `,Pn,` items to memory`]}),z===`review`&&H.length===0&&(0,v.jsx)(`div`,{className:`mem-profile-empty`,children:`No items discovered.`})]}),(0,v.jsxs)(`div`,{className:`mem-profile-card`,children:[(0,v.jsxs)(`div`,{className:`mem-profile-card-title`,children:[(0,v.jsx)(ae,{size:16}),` AI Profile Inference`]}),(0,v.jsx)(`p`,{className:`mem-profile-desc`,children:`Use the local LLM to generate profile insights from your data.`}),(0,v.jsx)(`p`,{className:`mem-profile-note`,children:`Requires Lemonade Server running.`}),(0,v.jsxs)(`label`,{className:`mem-profile-checkbox`,children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:Vn,onChange:e=>Hn(e.target.checked),disabled:W===`running`||W===`saving`}),`Include browser history`]}),(0,v.jsx)(`button`,{className:`btn-primary mem-profile-run-btn`,disabled:W===`running`||W===`saving`,onClick:Rr,children:W===`running`?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`mem-spinner-sm`}),` Running...`]}):`Run Inference`}),Rn.length>0&&(0,v.jsx)(`div`,{className:`mem-log`,ref:Un,children:Rn.map((e,t)=>(0,v.jsx)(`div`,{className:`mem-log-line ${e.kind}`,children:e.text},t))}),(W===`review`||W===`saving`||W===`done`)&&q.length>0&&(0,v.jsxs)(`div`,{className:`mem-review-section`,children:[(0,v.jsx)(`div`,{className:`mem-review-header`,children:`Review & Save`}),(0,v.jsx)(`div`,{className:`mem-review-list`,children:q.map((e,t)=>(0,v.jsxs)(`label`,{className:`mem-review-item`,children:[(0,v.jsx)(`input`,{type:`checkbox`,checked:e._checked,disabled:W===`saving`||W===`done`,onChange:()=>{J(e=>e.map((e,n)=>n===t?{...e,_checked:!e._checked}:e))}}),(0,v.jsx)(`span`,{className:`mem-review-content`,children:e.content}),(0,v.jsx)(`span`,{className:`mem-domain-badge ${St[e.domain]||`gray`}`,children:e.domain}),(0,v.jsxs)(`span`,{className:`mem-conf-badge`,children:[Math.round(e.confidence*100),`%`]})]},t))}),(0,v.jsxs)(`div`,{className:`mem-review-actions`,children:[(0,v.jsx)(`button`,{className:`btn-primary`,disabled:W===`saving`||W===`done`||q.filter(e=>e._checked).length===0,onClick:zr,children:W===`saving`?(0,v.jsxs)(v.Fragment,{children:[(0,v.jsx)(`div`,{className:`mem-spinner-sm`}),` Saving...`]}):`Save Selected (${q.filter(e=>e._checked).length})`}),(0,v.jsxs)(`span`,{className:`mem-review-select-links`,children:[(0,v.jsx)(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>J(e=>e.map(e=>({...e,_checked:!0}))),children:`Select All`}),` / `,(0,v.jsx)(`button`,{type:`button`,className:`mem-link-btn`,onClick:()=>J(e=>e.map(e=>({...e,_checked:!1}))),children:`None`})]})]})]}),W===`done`&&zn!==null&&(0,v.jsxs)(`div`,{className:`mem-profile-success`,children:[(0,v.jsx)(Ee,{size:14}),` Saved `,zn,` insights to memory`]}),W===`review`&&q.length===0&&(0,v.jsx)(`div`,{className:`mem-profile-empty`,children:`No insights generated.`})]})]}),L===`goals`&&(0,v.jsxs)(`div`,{className:`mem-goals-tab`,children:[(0,v.jsx)(`div`,{className:`mem-goals-stats-row`,children:[`queued`,`in_progress`,`completed`,`failed`].map(e=>(0,v.jsxs)(`div`,{className:`mem-goals-stat-pill mem-goal-status-${e.replace(`_`,`-`)}`,children:[(0,v.jsx)(`span`,{className:`mem-goals-stat-n`,children:xn?.goals[e]??0}),(0,v.jsx)(`span`,{className:`mem-goals-stat-label`,children:e.replace(`_`,` `)})]},e))}),yn.filter(e=>e.status===`pending_approval`).length>0&&(0,v.jsxs)(`div`,{className:`mem-goals-approval-banner`,children:[(0,v.jsxs)(`div`,{className:`mem-goals-approval-title`,children:[(0,v.jsx)(o,{size:14}),` Agent suggested `,yn.filter(e=>e.status===`pending_approval`).length,` goal(s) — review before execution`]}),yn.filter(e=>e.status===`pending_approval`).map(e=>(0,v.jsxs)(`div`,{className:`mem-goals-approval-item`,children:[(0,v.jsxs)(`div`,{className:`mem-goals-approval-text`,children:[(0,v.jsx)(`strong`,{children:e.title}),(0,v.jsx)(`span`,{children:e.description})]}),(0,v.jsxs)(`div`,{className:`mem-goals-approval-actions`,children:[(0,v.jsx)(`button`,{className:`btn-danger-sm`,onClick:()=>gr(()=>u(e.id),`Couldn't reject the goal`),children:`Reject`}),(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>gr(()=>Be(e.id),`Couldn't accept the goal`),children:`Accept`})]})]},e.id))]}),(0,v.jsx)(`div`,{className:`mem-goals-toolbar`,children:(0,v.jsxs)(`button`,{className:`btn-primary`,onClick:()=>An(e=>!e),children:[(0,v.jsx)(ce,{size:14}),` New Goal`]})}),kn&&(0,v.jsxs)(`div`,{className:`mem-goals-add-form`,children:[(0,v.jsx)(`input`,{className:`mem-input`,placeholder:`Goal title`,value:jn.title,onChange:e=>Mn(t=>({...t,title:e.target.value}))}),(0,v.jsx)(`textarea`,{className:`mem-input`,placeholder:`Description — what should the agent work toward?`,rows:2,value:jn.description,onChange:e=>Mn(t=>({...t,description:e.target.value}))}),(0,v.jsxs)(`div`,{className:`mem-goals-form-row`,children:[(0,v.jsxs)(`select`,{className:`mem-select`,value:jn.priority,onChange:e=>Mn(t=>({...t,priority:e.target.value})),children:[(0,v.jsx)(`option`,{value:`low`,children:`Low priority`}),(0,v.jsx)(`option`,{value:`medium`,children:`Medium priority`}),(0,v.jsx)(`option`,{value:`high`,children:`High priority`})]}),(0,v.jsx)(`button`,{className:`btn-primary`,onClick:()=>{jn.title.trim()&&gr(async()=>{await Re(jn),Mn({title:``,description:``,priority:`medium`}),An(!1)},`Couldn't create the goal`)},children:`Create`}),(0,v.jsx)(`button`,{className:`btn-secondary`,onClick:()=>An(!1),children:`Cancel`})]})]}),Cn?(0,v.jsxs)(`div`,{className:`mem-loading`,children:[(0,v.jsx)(`div`,{className:`mem-spinner`}),` Loading goals...`]}):yn.filter(e=>e.status!==`pending_approval`&&e.status!==`rejected`).length===0?(0,v.jsxs)(`div`,{className:`mem-empty`,children:[(0,v.jsx)(`div`,{className:`mem-empty-icon`,children:(0,v.jsx)(at,{size:32})}),(0,v.jsx)(`p`,{children:`No goals yet. Create one or let the agent suggest goals in autonomous mode.`})]}):(0,v.jsx)(`div`,{className:`mem-goals-list`,children:yn.filter(e=>e.status!==`pending_approval`&&e.status!==`rejected`).map(e=>(0,v.jsxs)(`div`,{className:`mem-goal-card mem-goal-status-${e.status.replace(`_`,`-`)}`,children:[(0,v.jsxs)(`div`,{className:`mem-goal-header`,role:`button`,tabIndex:0,"aria-expanded":Tn===e.id,onClick:()=>En(t=>t===e.id?null:e.id),onKeyDown:t=>{t.target===t.currentTarget&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),En(t=>t===e.id?null:e.id))},children:[(0,v.jsxs)(`div`,{className:`mem-goal-header-left`,children:[(0,v.jsx)(`span`,{className:`mem-goal-status-dot status-${e.status.replace(`_`,`-`)}`}),(0,v.jsx)(`span`,{className:`mem-goal-title`,children:e.title}),(0,v.jsx)(`span`,{className:`mem-goal-priority mem-priority-${e.priority}`,children:e.priority}),e.source!==`user`&&(0,v.jsxs)(`span`,{className:`mem-goal-source-badge`,children:[(0,v.jsx)(o,{size:10}),` `,e.source.replace(`_`,` `)]})]}),(0,v.jsxs)(`div`,{className:`mem-goal-header-right`,children:[(0,v.jsxs)(`span`,{className:`mem-goal-task-count`,children:[(0,v.jsx)(ye,{size:12}),e.tasks.filter(e=>e.status===`completed`).length,`/`,e.tasks.length]}),e.status===`queued`&&(0,v.jsx)(`button`,{className:`mem-goal-action-btn mem-goal-cancel-btn`,onClick:t=>{t.stopPropagation(),gr(()=>Se(e.id),`Couldn't cancel the goal`)},children:`Cancel`}),Dn===e.id?(0,v.jsx)(`button`,{className:`mem-goal-action-btn mem-goal-delete-btn mem-goal-delete-confirm`,onClick:t=>{t.stopPropagation(),On(null),gr(()=>ke(e.id),`Couldn't delete the goal`)},children:`Delete?`}):(0,v.jsx)(`button`,{className:`mem-goal-action-btn mem-goal-delete-btn`,"aria-label":`Delete goal ${e.title}`,onClick:t=>{t.stopPropagation(),On(e.id)},children:(0,v.jsx)(ge,{size:12})}),(0,v.jsx)(Oe,{size:14,className:Tn===e.id?`mem-chevron-open`:``})]})]}),Tn===e.id&&(0,v.jsxs)(`div`,{className:`mem-goal-body`,children:[e.description&&(0,v.jsx)(`p`,{className:`mem-goal-desc`,children:e.description}),e.progress_notes&&(0,v.jsx)(`p`,{className:`mem-goal-progress`,children:e.progress_notes}),e.tasks.length>0?(0,v.jsx)(`div`,{className:`mem-task-list`,children:e.tasks.map(e=>(0,v.jsxs)(`div`,{className:`mem-task-row mem-task-status-${e.status}`,children:[(0,v.jsx)(`span`,{className:`mem-task-dot status-${e.status}`}),(0,v.jsx)(`span`,{className:`mem-task-desc`,children:e.description}),(0,v.jsx)(`span`,{className:`mem-task-status-label`,children:e.status}),e.result&&(0,v.jsx)(`span`,{className:`mem-task-result`,children:e.result})]},e.id))}):(0,v.jsx)(`p`,{className:`mem-goal-no-tasks`,children:`No tasks yet — the agent will break this down when it starts.`})]})]},e.id))})]})]}),Pt.length>0&&(0,v.jsx)(`div`,{className:`mem-toast-container`,"aria-live":`polite`,children:Pt.map(e=>(0,v.jsxs)(`div`,{className:`mem-toast mem-toast-${e.type}`,role:`status`,children:[e.type===`success`&&(0,v.jsx)(Ee,{size:14}),e.type===`error`&&(0,v.jsx)(c,{size:14}),e.type===`info`&&(0,v.jsx)(Ke,{size:14}),(0,v.jsx)(`span`,{children:e.text})]},e.id))})]})}export{Ct as MemoryDashboard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.popover{z-index:50;min-width:240px;max-width:min(360px,100vw - 32px);max-height:min(420px, 70vh, var(--popover-room,100vh));background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:4px;position:absolute;overflow-y:auto}.popover-above{bottom:calc(100% + 6px)}.popover-below{top:calc(100% + 6px)}.popover-start{left:0}.popover-end{right:0}.popover-heading{color:var(--text-muted);font-size:var(--fs-caption);padding:6px 8px 4px;font-weight:600}.popover-item{border-radius:var(--radius-sm);width:100%;color:var(--text-primary);font-size:var(--fs-ui);text-align:left;align-items:flex-start;gap:8px;padding:7px 8px;display:flex}.popover-item:hover:not(:disabled),.popover-item:focus-visible{background:var(--bg-hover)}.popover-item:disabled{color:var(--text-muted);cursor:default}.popover-item-body{flex-direction:column;flex:1;min-width:0;display:flex}.popover-item-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.popover-item-note{color:var(--text-secondary);font-size:var(--fs-label);line-height:1.4}.popover-item-check{width:14px;color:var(--accent);flex-shrink:0;margin-top:2px}.popover-divider{background:var(--border-light);height:1px;margin:4px 2px}.popover-message{color:var(--text-secondary);font-size:var(--fs-label);padding:8px}.popover-message.is-error{color:var(--danger)}.popover-row{align-items:center;gap:4px;display:flex}.popover-row>.popover-item{flex:1;min-width:0}.popover-row-state{flex-shrink:0;justify-content:center;width:52px;display:flex}.popover-item-note.is-warning,.model-row-meta.is-warning,.model-status-warning,.composer-chip.is-warning{color:var(--accent-yellow)}.composer-chip-next{color:var(--accent-blue);text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.model-state{color:var(--text-secondary);flex-shrink:0;align-items:center;gap:3px;padding:0 6px;font-size:11.5px;display:inline-flex}.model-state.is-loaded{background:var(--accent-green);border-radius:50%;width:8px;height:8px;margin:0 8px;padding:0}.model-state-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.model-state-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.model-badge{white-space:nowrap;border-radius:999px;align-items:center;padding:0 6px;font-size:11px;line-height:18px;display:inline-flex}.model-badge.is-fit,.model-badge.is-loaded{background:var(--accent-green-dim);color:var(--accent-green)}.model-badge.is-ready,.model-badge.is-custom{background:var(--bg-hover);color:var(--text-secondary)}.model-row-confirm{flex-shrink:0;gap:6px;display:inline-flex}.custom-model-checks{flex-direction:column;gap:4px;margin:0;padding:0;font-size:12.5px;list-style:none;display:flex}.custom-model-checks li{color:var(--text-secondary);align-items:flex-start;gap:6px;display:flex}.custom-model-checks li svg{flex-shrink:0;margin-top:2px}.custom-model-checks-summary summary{cursor:pointer;color:var(--text-secondary);align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.custom-model-checks-summary summary svg{color:var(--accent-green)}.custom-model-checks-summary[open] summary{margin-bottom:4px}.custom-model-checks li.is-ok svg{color:var(--accent-green)}.custom-model-checks li.is-failed{color:var(--danger)}.custom-model-checks li.is-warning{color:var(--accent-yellow)}.model-unavailable summary{cursor:pointer;color:var(--text-secondary);font-size:13px}.model-unavailable .model-row{opacity:.75}.model-status{flex-direction:column;gap:8px;min-width:320px;padding:6px 6px 4px;font-size:13px;display:flex}.model-status-head{align-items:center;gap:8px;font-weight:600;display:flex}.model-status-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:8px;height:8px}.model-status-dot.is-loaded{background:var(--accent-green)}.model-status-dot.is-warming{background:var(--accent-yellow)}.model-status-dot.is-stopped{background:var(--danger)}.model-status-grid{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}.model-status-grid dt{color:var(--text-secondary)}.model-status-grid dd{text-align:right;text-overflow:ellipsis;margin:0;overflow:hidden}.model-status-actions{justify-content:flex-end;gap:6px;display:flex}.sb-location-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.sb-location-dot.is-loaded{background:var(--accent-green)}.sb-location-dot.is-warming{background:var(--accent-yellow)}.sb-location-dot.is-stopped{background:var(--danger)}.sb-location-wrap{flex:1;min-width:0;display:flex;position:relative}.sb-location-wrap>.sb-location{width:100%}.sb-location-dot.is-idle{border:1px solid var(--text-secondary)}.model-status-confirm{color:var(--accent-yellow);flex-direction:column;gap:6px;display:flex}.sb{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--bg-sidebar);border-right:1px solid var(--border);height:100%;transition:width var(--duration) var(--ease), min-width var(--duration) var(--ease), transform var(--duration) var(--ease);-webkit-user-select:none;user-select:none;z-index:30;flex-direction:column;display:flex;position:relative}.sb.is-resizing{transition:none}.sb.is-collapsed{width:56px;min-width:56px}.sb-resize{cursor:col-resize;touch-action:none;z-index:2;width:8px;position:absolute;top:0;bottom:0;right:-4px}.sb-resize:after{content:"";background:var(--accent-solid);opacity:0;width:2px;transition:opacity var(--duration) var(--ease);position:absolute;top:0;bottom:0;left:3px}.sb-resize:hover:after,.sb-resize:focus-visible:after,.sb-resize.is-dragging:after{opacity:.6}.sb.is-collapsed .sb-top{flex-direction:column;gap:10px}.sb-top{justify-content:space-between;align-items:center;gap:8px;padding:12px 10px 8px 14px;display:flex}.sb.is-collapsed .sb-top{justify-content:center;padding-left:10px}.sb-brand{color:var(--text-primary);letter-spacing:.02em;align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.sb-brand img{border-radius:var(--radius-sm)}.sb-icon-btn{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.sb-icon-btn:hover,.sb-icon-btn.is-active{background:var(--bg-hover);color:var(--text-primary)}.sb-badge{border-radius:var(--radius-full);background:var(--text-primary);min-width:15px;height:15px;color:var(--bg-primary);text-align:center;padding:0 3px;font-size:9.5px;font-weight:600;line-height:15px;position:absolute;top:2px;right:1px}.sb-actions{flex-direction:column;gap:1px;padding:4px 8px 8px;display:flex}.sb-nav-item{border-radius:var(--radius-md);width:100%;min-height:34px;color:var(--text-primary);text-align:left;align-items:center;gap:10px;padding:6px 8px;font-size:13.5px;display:flex}.sb.is-collapsed .sb-nav-item{justify-content:center}.sb-nav-item svg{color:var(--text-secondary);flex-shrink:0}.sb-nav-item:hover,.sb-nav-item.is-active{background:var(--bg-hover)}.sb-search{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-primary);min-height:34px;color:var(--text-muted);align-items:center;gap:8px;margin:0 0 4px;padding:0 8px;display:flex}.sb-search:focus-within{border-color:var(--accent-light)}.sb-search input{background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:13px}.sb-search input:focus-visible{outline:none}.sb-list{flex:1;padding:0 8px 8px;overflow-y:auto}.sb-group+.sb-group{margin-top:10px}.sb-group-label{color:var(--text-muted);padding:6px 8px 4px;font-size:11.5px;font-weight:600}.sb-group ul{list-style:none}.sb-row{border-radius:var(--radius-md);align-items:center;display:flex;position:relative}.sb-row:hover,.sb-row:focus-within,.sb-row.is-active{background:var(--bg-hover)}.sb-row.is-active{background:var(--bg-active)}.sb-row-main{min-width:0;min-height:32px;color:var(--text-primary);text-align:left;flex:1;align-items:center;gap:6px;padding:5px 8px;font-size:13.5px;display:flex}.sb-row-edit{border:1px solid var(--accent-solid);border-radius:var(--radius-sm);background:var(--bg-primary);min-width:0;min-height:32px;color:var(--text-primary);font:inherit;outline:none;flex:1;margin:0 3px;padding:4px 8px;font-size:13.5px}.sb-row-edit:focus{box-shadow:0 0 0 3px var(--accent-ring)}.sb-row-icon{color:var(--text-muted);flex-shrink:0}.sb-row-title{white-space:nowrap;padding-right:24px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.sb-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:8px;height:8px}.sb-dot.is-running,.sb-dot.is-queued{background:var(--accent-green)}.sb-dot.is-running{animation:sb-dot-pulse var(--duration-pulse) var(--ease-in-out) infinite}.sb-dot.is-queued{box-shadow:inset 0 0 0 1.5px var(--accent-green);background:0 0}.sb-dot.is-waiting{background:var(--accent-yellow)}.sb-dot.is-done{background:var(--accent)}.sb-dot.is-failed{background:var(--danger)}@keyframes sb-dot-pulse{50%{opacity:.35}}@media (prefers-reduced-motion:reduce){.sb-dot.is-running{animation:none}}.sb-row.is-unread .sb-row-title{font-weight:600}.sb-row.is-kbd-active{background:var(--bg-hover);box-shadow:inset 0 0 0 1px var(--accent-ring)}.sb-row-text{flex-direction:column;gap:1px;min-width:0;display:flex}.sb-row-snippet{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.sb-hit{background:var(--accent-selection);color:inherit;border-radius:2px}.sb-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sb-row-queue{color:var(--text-muted);white-space:nowrap;flex-shrink:0;margin-left:auto;font-size:11.5px}.sb-row-queue.is-failed{color:var(--danger)}.sb-group.is-needs-you .sb-group-label{color:var(--accent-yellow)}.sb-filter{border-radius:var(--radius-md);width:100%;color:var(--text-muted);text-align:left;margin-top:10px;padding:6px 8px;font-size:12.5px;display:block}.sb-filter:hover{background:var(--bg-hover);color:var(--text-primary)}.sb-row-rename,.sb-row-pin,.sb-row-delete{border-radius:var(--radius-sm);min-width:26px;height:26px;color:var(--text-muted);opacity:0;justify-content:center;align-items:center;margin-right:3px;padding:0 4px;display:inline-flex}.sb-row-rename,.sb-row-pin{margin-right:0}.sb-row:hover .sb-row-rename,.sb-row:focus-within .sb-row-rename,.sb-row:hover .sb-row-pin,.sb-row:focus-within .sb-row-pin,.sb-row:hover .sb-row-delete,.sb-row:focus-within .sb-row-delete,.sb-row-delete.is-confirm{opacity:1}.sb-row-rename:hover,.sb-row-pin:hover{color:var(--text-primary)}.sb-row-delete:hover,.sb-row-delete.is-confirm{color:var(--danger)}.sb-row-delete-label{font-size:11.5px;font-weight:600}.sb-row-more{border-radius:var(--radius-md);width:44px;height:44px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.sb-row-more[aria-expanded=true]{color:var(--text-primary)}.sb-row-menu .popover-item{align-items:center;gap:10px;min-height:44px}.sb-row-menu .sb-row-menu-delete{color:var(--danger)}.sb-row-edit-btn{border-radius:var(--radius-md);width:44px;height:44px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.sb-row-edit-btn.is-save{color:var(--accent)}.sb-row.is-moved{background:var(--accent-dim);transition:background var(--duration-slow) var(--ease)}@media (prefers-reduced-motion:reduce){.sb-row.is-moved{transition:none}}.sb-empty,.sb-error{color:var(--text-muted);padding:8px;font-size:13px}.sb-error{color:var(--danger)}.sb-bottom{border-top:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:4px;padding:8px;display:flex}.sb.is-collapsed .sb-bottom{flex-direction:column;margin-top:auto}.sb-location{border-radius:var(--radius-md);min-width:0;min-height:32px;color:var(--text-secondary);text-align:left;flex:1;align-items:center;gap:6px;padding:4px 6px;font-size:12px;display:flex}.sb-location-text{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.sb-location-place{color:var(--text-muted);font-size:10px}.sb-location-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sb-location:hover{background:var(--bg-hover);color:var(--text-primary)}.sb-bottom-actions{align-items:center;gap:2px;display:flex}.sb.is-collapsed .sb-bottom-actions{flex-direction:column}@media (width<=768px){.sb{z-index:60;width:min(300px,85vw);min-width:0;box-shadow:var(--shadow-lg);position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sb.is-open{transform:translate(0)}}.perm-card{background:var(--bg-card);border:1px solid var(--accent-light);border-radius:var(--radius-lg);flex-direction:column;gap:10px;padding:12px 14px;display:flex}.perm-card-head{align-items:flex-start;gap:10px;display:flex}.perm-card-icon{color:var(--accent);flex-shrink:0;margin-top:3px}.perm-card-text{flex:1;min-width:0}.perm-card-title{color:var(--text-primary);font-size:14px;font-weight:600;line-height:1.45}.perm-card-detail{color:var(--text-secondary);overflow-wrap:anywhere;margin-top:2px;font-size:13px}.perm-card code{font-family:var(--font-mono);font-size:12.5px}.perm-card-timer{color:var(--text-muted);font-family:var(--font-sans);font-size:var(--fs-label);font-variant-numeric:tabular-nums;flex-shrink:0}.perm-card-args-toggle{color:var(--text-secondary);align-items:center;gap:4px;font-size:12.5px;display:inline-flex}.perm-card-args-toggle svg{transition:transform var(--duration-fast) var(--ease)}.perm-card-args-toggle svg.is-open{transform:rotate(90deg)}.perm-card-pre{background:var(--bg-code);max-height:200px;color:var(--text-code);border-radius:var(--radius-md);font-family:var(--font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin-top:6px;padding:8px 10px;font-size:12px;overflow:auto}.perm-card-exact{max-height:none}.perm-card-code{white-space:pre;overflow-wrap:normal;max-height:none}.perm-card-code.is-expanded{max-height:50vh}.perm-card-risk{color:var(--text-primary);margin-top:6px;font-size:13px;font-weight:600}.perm-card-actions{flex-wrap:wrap;gap:8px;display:flex}.perm-btn{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-primary);min-height:32px;color:var(--text-primary);align-items:center;gap:4px;padding:5px 12px;font-size:13px;display:inline-flex}.perm-btn:hover:not(:disabled){background:var(--bg-hover)}.perm-btn.is-primary{border-color:var(--accent-fill);background:var(--accent-fill);color:var(--accent-fill-text)}.perm-btn.is-primary:hover:not(:disabled){background:var(--accent-fill-hover)}.perm-btn.is-suggested{border-color:var(--accent-solid);color:var(--text-primary)}.perm-card-hint{color:var(--text-secondary);overflow-wrap:anywhere;font-size:13px}.perm-btn:disabled{opacity:.6;cursor:default}.perm-card-error{color:var(--danger);font-size:13px}.msg-collapsible.is-collapsed,.code-block.is-collapsed pre,.detail-result-content.is-collapsed{overflow-y:hidden;-webkit-mask-image:linear-gradient(#000 calc(100% - 3.5em),#0000);mask-image:linear-gradient(#000 calc(100% - 3.5em),#0000)}.msg-collapsible.is-collapsed{max-height:14.85em}.code-block.is-collapsed pre{max-height:461px}.detail-result-content.is-collapsed{max-height:32em}.expand-toggle{border-radius:var(--radius-xs);max-width:100%;font-family:var(--font-sans);color:var(--text-muted);white-space:nowrap;transition:background var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease);border:1px solid #0000;align-items:center;gap:4px;margin-top:4px;padding:2px 8px 2px 4px;font-size:12px;line-height:1.5;display:inline-flex}.expand-toggle:hover,.expand-toggle:focus-visible{background:var(--bg-tertiary);border-color:var(--border);color:var(--text-secondary)}.msg-expand-toggle{margin-left:-4px}.code-expand-toggle{border:none;border-top:1px solid var(--border-code);background:var(--bg-code-raised);width:100%;font-family:var(--font-mono);color:var(--text-code-dim);border-radius:0;margin:0;padding:6px 14px;font-size:11px;display:flex}.code-expand-toggle:hover,.code-expand-toggle:focus-visible{background:var(--bg-code-raised);border-color:var(--border-code);color:var(--text-code)}.code-expand-toggle:focus-visible{outline-offset:-2px}.step-expand-toggle{margin-left:-4px}.detail-result-note{font-family:var(--font-sans);color:var(--text-muted);margin-bottom:4px;font-size:11.5px}.agent-activity{flex-direction:column;gap:6px;width:100%;margin-bottom:10px;display:flex}.agent-icon-error{color:var(--danger)}.agent-timeline{flex-direction:column;gap:8px;display:flex}.agent-activity.active .flow-note{animation:thoughtSlideIn var(--duration) var(--ease)}.flow-note>:first-child{margin-top:0}.flow-note>:last-child{margin-bottom:0}.flow-steps{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.flow-steps-summary{border-radius:var(--radius-xs);max-width:100%;font-size:13px;font-family:var(--font-sans);color:var(--text-secondary);text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease);align-items:center;gap:6px;margin-left:-4px;padding:3px 8px 3px 4px;display:inline-flex}.flow-steps-summary:hover,.flow-steps-summary:focus-visible{background:var(--bg-tertiary);color:var(--text-primary)}.flow-steps-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.flow-steps-done{color:var(--text-muted);flex-shrink:0}.flow-steps-rows{flex-direction:column;gap:2px;width:100%;display:flex}.flow-steps.open:not(.live) .flow-steps-rows{border-left:1px solid var(--border);margin:2px 0 2px 6px;padding-left:10px}.flow-warning{color:var(--text-secondary);align-items:center;gap:7px;padding:3px 0;font-size:13px;display:flex}.flow-warning>svg{color:var(--accent-yellow);flex-shrink:0}.flow-live-line{padding:2px 0}.flow-live-line .thinking-indicator{font-size:12px}@keyframes thoughtSlideIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.flow-reasoning{width:100%}.flow-reasoning-toggle{border-radius:var(--radius-xs);font-size:13px;font-family:var(--font-sans);color:var(--text-secondary);text-align:left;cursor:pointer;align-items:center;gap:7px;margin-left:-4px;padding:3px 8px 3px 4px;display:inline-flex}.flow-reasoning-toggle:hover{color:var(--text-primary);background:var(--bg-tertiary)}.flow-reasoning.live .flow-reasoning-toggle{color:var(--text-primary)}.flow-thought-hacker{max-height:200px;font-size:13px;font-family:var(--font-sans);color:var(--text-secondary);word-break:break-word;white-space:pre-wrap;border-radius:var(--radius-xs);background:var(--bg-recessed);border:1px solid var(--border-recessed);margin-top:4px;padding:6px 8px;line-height:1.6;overflow-y:auto}.flow-thought-hacker::-webkit-scrollbar{width:4px}.flow-thought-hacker::-webkit-scrollbar-track{background:0 0}.flow-thought-hacker::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--accent) 20%, transparent);border-radius:0}.flow-thought-cursor{background:var(--accent);vertical-align:text-bottom;width:.55em;height:1.1em;animation:cursorBlink var(--duration-blink) var(--ease-step) infinite;margin-left:1px;display:inline-block}.flow-thought-hacker.peek{max-height:4.8em;color:var(--text-muted);background:0 0;border:none;margin:2px 0 0 20px;padding:0;font-size:12.5px;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,currentColor 45%);mask-image:linear-gradient(#0000,currentColor 45%)}.flow-tool{border-radius:var(--radius-xs);width:100%}.flow-steps.live .flow-tool{animation:toolSlideIn var(--duration) var(--ease) both}@keyframes toolSlideIn{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.flow-tool.skill .flow-tool-left>svg:not(.flow-tool-spinner),.flow-tool.skill .flow-tool-label{color:var(--accent)}.flow-tool-header{border-radius:var(--radius-xs);width:calc(100% + 4px);font-size:13px;font-family:var(--font-sans);color:var(--text-secondary);text-align:left;transition:background var(--duration-fast) var(--ease);cursor:pointer;justify-content:space-between;align-items:center;gap:8px;margin-left:-4px;padding:3px 6px 3px 4px;display:flex}.flow-tool-header:hover{background:var(--bg-hover)}.flow-tool-left{align-items:center;gap:7px;min-width:0;display:flex}.flow-tool-left>svg{transition:transform var(--duration) var(--ease), color var(--duration) var(--ease);flex-shrink:0}.flow-steps.live .flow-tool-left>svg:not(.flow-tool-spinner){animation:toolStatusPop var(--duration) var(--ease)}@keyframes toolStatusPop{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.flow-tool-right{flex-shrink:0;align-items:center;display:flex}.flow-tool-spinner{animation:spin var(--duration-spin) var(--ease-linear) infinite;color:var(--accent);flex-shrink:0}.flow-tool-icon{color:var(--text-muted);flex-shrink:0}.flow-tool-label{white-space:nowrap;text-overflow:ellipsis;color:var(--text-secondary);min-width:0;font-size:13px;overflow:hidden}.flow-tool.active .flow-tool-label{color:var(--text-primary)}.flow-tool-count{background:var(--bg-hover);color:var(--text-secondary);border-radius:999px;flex-shrink:0;padding:0 6px;font-size:12px;font-weight:600}.flow-tool-failure{color:var(--danger);white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:12px;overflow:hidden}.flow-tool-raw{align-items:center;gap:6px;padding-top:8px;display:flex}.flow-tool-badge{font-family:var(--font-mono);background:var(--bg-tertiary);color:var(--text-muted);white-space:nowrap;border:1px solid var(--border-light);border-radius:2px;padding:1px 6px;font-size:12px}.activity-filter-bar{gap:6px;padding:6px 0 0;display:flex}.activity-filter-input{font-family:var(--font-mono);border:1px solid var(--border-light);background:var(--bg-primary);color:var(--text-primary);border-radius:3px;outline:none;flex:1;padding:3px 8px;font-size:12px}.activity-filter-input:focus{border-color:var(--accent)}.activity-filter-select{font-family:var(--font-mono);border:1px solid var(--border-light);background:var(--bg-primary);color:var(--text-primary);cursor:pointer;border-radius:3px;outline:none;padding:3px 6px;font-size:12px}.activity-filter-select:focus-visible{border-color:var(--accent)}.flow-tool-mcp-server{font-family:var(--font-mono);background:color-mix(in srgb, var(--accent-purple) 10%, transparent);color:var(--accent-purple);white-space:nowrap;border-radius:2px;padding:1px 5px;font-size:12px;font-weight:500}.flow-tool-latency{font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;margin-right:4px;font-size:12px}.flow-tool-chevron{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease);align-items:center;display:flex}.flow-tool-chevron.expanded{transform:rotate(90deg)}.flow-tool-detail{animation:fadeIn var(--duration-fast) var(--ease);border-radius:var(--radius-xs);background:var(--bg-secondary);border:1px solid var(--border);flex-direction:column;gap:6px;margin:2px 0 6px 20px;padding:4px 10px 8px;display:flex;overflow:hidden}.flow-plan{border-radius:var(--radius-xs);background:color-mix(in srgb, var(--accent-yellow) 4%, transparent);border:1px solid color-mix(in srgb, var(--accent-yellow) 12%, transparent);animation:fadeIn var(--duration-fast) var(--ease);padding:6px 8px}[data-theme=dark] .flow-plan{background:color-mix(in srgb, var(--accent-yellow) 6%, transparent);border-color:color-mix(in srgb, var(--accent-yellow) 15%, transparent)}.flow-plan-header{color:var(--text-secondary);align-items:center;gap:6px;margin-bottom:4px;font-size:12px;font-weight:600;display:flex}.flow-plan-toggle{cursor:pointer;text-align:left;background:0 0;border:none;width:100%;margin-bottom:0;padding:0}.flow-plan-toggle:hover{opacity:.8}.flow-plan-count{color:var(--text-muted);margin-left:2px;font-size:12px;font-weight:400}.flow-plan-list{color:var(--text-secondary);margin:4px 0 0;padding:0;font-size:13px;list-style:none}.flow-plan-item{align-items:center;gap:8px;min-width:0;padding:2px 0;line-height:1.4;display:flex}.flow-plan-item>svg{flex-shrink:0}.flow-plan-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.flow-plan-item.running .flow-plan-text{color:var(--text-primary);font-weight:500}.flow-plan-item.pending .flow-plan-text,.flow-plan-item.done .flow-plan-text{color:var(--text-muted)}.plan-icon-done{color:var(--accent-green)}.plan-icon-failed{color:var(--danger)}.plan-icon-stopped{color:var(--text-muted)}.plan-icon-pending{color:var(--text-muted);opacity:.6}.agent-activity>.flow-plan{margin-top:2px}.flow-error{border-radius:var(--radius-xs);background:color-mix(in srgb, var(--danger) 4%, transparent);border:1px solid color-mix(in srgb, var(--danger) 15%, transparent);font-size:12px;font-family:var(--font-mono);color:var(--danger);align-items:flex-start;gap:6px;padding:6px 8px;display:flex}.flow-steps.live .flow-error,.flow-steps.live .flow-policy-alert{animation:errorSlideIn var(--duration-slow) var(--ease)}@keyframes errorSlideIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}[data-theme=dark] .flow-error{background:color-mix(in srgb, var(--danger) 6%, transparent)}.flow-policy-alert{border-radius:var(--radius-xs);background:color-mix(in srgb, var(--accent-yellow) 6%, transparent);border:1px solid color-mix(in srgb, var(--accent-yellow) 22%, transparent);font-family:var(--font-mono);padding:8px 10px}[data-theme=dark] .flow-policy-alert{background:color-mix(in srgb, var(--accent-yellow) 8%, transparent);border-color:color-mix(in srgb, var(--accent-yellow) 28%, transparent)}.flow-policy-alert-header{color:var(--accent-yellow);text-transform:uppercase;letter-spacing:.7px;align-items:center;gap:6px;font-size:12px;font-weight:700;display:flex}.flow-policy-alert-title{color:var(--text-primary)}.flow-policy-alert-decision{border-radius:var(--radius-xs);background:color-mix(in srgb, var(--accent-yellow) 14%, transparent);color:var(--accent-yellow);margin-left:auto;padding:1px 6px}.flow-policy-alert-body{color:var(--text-secondary);flex-direction:column;gap:5px;margin-top:7px;font-size:12px;display:flex}.flow-policy-alert-line{align-items:baseline;gap:8px;display:flex}.flow-policy-alert-line span{min-width:48px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px}.flow-policy-alert-line code{color:var(--text-primary);word-break:break-word}.flow-policy-alert-line em{color:var(--accent-yellow);font-style:normal}.flow-policy-alert-reason{color:var(--text-primary);word-break:break-word;line-height:1.5}.detail-section-label{font-size:12px;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);margin-top:6px;margin-bottom:4px;display:block}.step-detail-args{border-radius:var(--radius-xs);background:var(--bg-secondary);border:1px solid var(--border-light);padding:8px 10px 10px}.detail-args-content{font-size:12px;font-family:var(--font-mono);color:var(--text-secondary);line-height:1.6}.args-grid{flex-direction:column;gap:3px;display:flex}.arg-row{align-items:baseline;gap:8px;display:flex}.arg-key{font-family:var(--font-mono);color:var(--text-muted);flex-shrink:0;min-width:60px;font-size:12px;font-weight:600}.arg-key:after{content:":"}.arg-value{font-family:var(--font-mono);color:var(--text-primary);word-break:break-word;font-size:12px;line-height:1.6}.step-detail-result{border-radius:var(--radius-xs);padding:8px 10px 10px;font-size:12px;line-height:1.6}.step-detail-result.result-success{background:color-mix(in srgb, var(--accent-green) 3%, transparent);border:1px solid color-mix(in srgb, var(--accent-green) 10%, transparent)}.step-detail-result.result-error{background:color-mix(in srgb, var(--danger) 4%, transparent);border:1px solid color-mix(in srgb, var(--danger) 12%, transparent)}[data-theme=dark] .step-detail-result.result-success{background:color-mix(in srgb, var(--accent-green) 4%, transparent);border-color:color-mix(in srgb, var(--accent-green) 12%, transparent)}[data-theme=dark] .step-detail-result.result-error{background:color-mix(in srgb, var(--danger) 6%, transparent);border-color:color-mix(in srgb, var(--danger) 15%, transparent)}.detail-result-content{font-family:var(--font-mono);color:var(--text-primary);white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.6}.tool-result-path{overflow-wrap:anywhere;color:var(--accent);cursor:pointer;transition:background var(--duration-fast) var(--ease);border-radius:0;padding:0 2px;-webkit-text-decoration:underline dashed;text-decoration:underline dashed;display:inline}.tool-result-path svg{vertical-align:-1px;margin-right:3px}.tool-result-path:hover{background:color-mix(in srgb, var(--accent) 6%, transparent);color:var(--accent);text-decoration-style:solid}.chunks-view{margin-top:2px}.chunks-list{flex-direction:column;gap:3px;display:flex}.chunk-card{border-radius:var(--radius-xs);background:var(--bg-secondary);border:1px solid var(--border-light);transition:border-color var(--duration-fast) var(--ease);overflow:hidden}.chunk-card.expanded{border-color:color-mix(in srgb, var(--accent-cyan) 25%, transparent)}.chunk-header{width:100%;font-size:12px;font-family:var(--font-mono);color:var(--text-secondary);cursor:pointer;transition:background var(--duration-fast) var(--ease);justify-content:space-between;align-items:center;padding:5px 10px;display:flex}.chunk-header:hover{background:var(--bg-hover)}.chunk-header-left{align-items:center;gap:6px;min-width:0;display:flex}.chunk-source{font-family:var(--font-mono);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;max-width:200px;font-size:12px;font-weight:600;overflow:hidden}.chunk-page{font-family:var(--font-mono);color:var(--text-muted);background:var(--bg-tertiary);white-space:nowrap;border-radius:2px;padding:0 4px;font-size:12px}.chunk-score{font-family:var(--font-mono);color:var(--accent-cyan);background:color-mix(in srgb, var(--accent-cyan) 8%, transparent);border:1px solid color-mix(in srgb, var(--accent-cyan) 15%, transparent);white-space:nowrap;border-radius:2px;padding:0 4px;font-size:12px}.chunk-chevron{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease);flex-shrink:0;align-items:center;display:flex}.chunk-chevron.expanded{transform:rotate(90deg)}.chunk-body{overflow:hidden}.chunk-body:not(.show){max-height:0;padding:0}.chunk-body.show{max-height:400px;overflow-y:auto}.chunk-preview{font-size:12px;font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;padding:3px 8px 5px;font-style:italic;overflow:hidden}.chunk-content{font-family:var(--font-mono);color:var(--text-primary);white-space:pre-wrap;word-break:break-word;background:color-mix(in srgb, var(--accent-cyan) 3%, transparent);border-top:1px solid color-mix(in srgb, var(--accent-cyan) 10%, transparent);margin:0;padding:6px 10px 8px;font-size:12px;line-height:1.6}[data-theme=dark] .chunk-content{background:color-mix(in srgb, var(--accent-cyan) 5%, transparent)}.chunk-body.show::-webkit-scrollbar{width:4px}.chunk-body.show::-webkit-scrollbar-track{background:0 0}.chunk-body.show::-webkit-scrollbar-thumb{background:var(--tint-hover);border-radius:0}.cmd-output{border-radius:var(--radius-xs);border:1px solid var(--border-code);background:var(--bg-code);font-family:var(--font-mono);margin-top:6px;font-size:12px;line-height:1.55;overflow:hidden}.cmd-output.cmd-error{border-color:color-mix(in srgb, var(--code-danger) 30%, var(--bg-code))}.cmd-header{background:var(--bg-code-raised);border-bottom:1px solid var(--border-code);justify-content:space-between;align-items:center;padding:5px 10px;display:flex}.cmd-header-left{align-items:center;gap:6px;display:flex}.cmd-header-icon{color:var(--text-code-dim)}.cmd-header-title{color:var(--text-code);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.cmd-cwd{color:var(--text-code-dim);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:12px;overflow:hidden}.cmd-header-right{align-items:center;gap:8px;display:flex}.cmd-duration{color:var(--text-code-dim);font-size:12px}.cmd-exit-code{color:var(--code-danger);background:color-mix(in srgb, var(--code-danger) 12%, var(--bg-code));border-radius:2px;padding:0 4px;font-size:12px;font-weight:600}.cmd-exit-code.cmd-exit-expected{color:var(--text-code-dim);background:0 0}.cmd-copy{color:var(--text-code-dim);transition:all var(--duration-fast) var(--ease);cursor:pointer;border-radius:2px;align-items:center;padding:2px 4px;display:flex}.cmd-copy:hover{background:var(--bg-code-raised);color:var(--text-code)}.cmd-copy.copied{color:var(--code-success)}.cmd-line{color:var(--text-code);align-items:flex-start;gap:6px;padding:8px 10px 4px;display:flex}.cmd-prompt{color:var(--code-accent);-webkit-user-select:none;user-select:none;flex-shrink:0;font-weight:700}.cmd-text{color:var(--text-code);word-break:break-all}.cmd-stdout{color:var(--text-code);white-space:pre-wrap;word-break:break-word;max-height:300px;margin:0;padding:4px 10px 8px 22px;overflow-y:auto}.cmd-stdout::-webkit-scrollbar{width:4px}.cmd-stdout::-webkit-scrollbar-track{background:0 0}.cmd-stdout::-webkit-scrollbar-thumb{background:var(--border-code);border-radius:0}.cmd-stdout::-webkit-scrollbar-thumb:hover{background:var(--text-code-dim)}.cmd-stderr{color:var(--code-danger);white-space:pre-wrap;word-break:break-word;background:color-mix(in srgb, var(--code-danger) 6%, var(--bg-code));border-top:1px solid color-mix(in srgb, var(--code-danger) 14%, var(--bg-code));max-height:200px;margin:0;padding:4px 10px 8px 22px;overflow-y:auto}.cmd-truncated{color:var(--code-warning);text-align:center;background:color-mix(in srgb, var(--code-warning) 7%, var(--bg-code));border-top:1px solid color-mix(in srgb, var(--code-warning) 14%, var(--bg-code));padding:4px 10px;font-size:12px}.cmd-empty{color:var(--text-code-dim);padding:6px 10px 8px 22px;font-style:italic}@media (prefers-reduced-motion:reduce){.flow-tool-spinner,.agent-activity.active .flow-note,.flow-thought-hacker,.flow-steps.live .flow-tool,.flow-tool-detail,.flow-plan,.flow-steps.live .flow-error,.flow-steps.live .flow-policy-alert{animation:none}.flow-thought-cursor{opacity:1;animation:none}.flow-tool-left>svg,.flow-steps.live .flow-tool-left>svg:not(.flow-tool-spinner){transition:none;animation:none}.flow-tool-chevron{transition:none}}.email-connect-cta{border:1px solid var(--border-light);background:var(--bg-card);color:var(--text-primary);border-radius:8px;flex-wrap:wrap;align-items:flex-start;gap:12px;margin-top:8px;padding:10px 12px;font-size:13px;display:flex}.email-connect-cta__text{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.email-connect-cta__buttons{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.email-connect-cta__provider-slot{flex-direction:column;gap:4px;display:flex}.email-connect-cta__icon{color:var(--accent);flex-shrink:0}.email-connect-cta__button{background:var(--accent-fill);color:var(--accent-fill-text);border:1px solid var(--accent-fill);cursor:pointer;transition:background-color var(--duration-fast) var(--ease);border-radius:6px;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;display:inline-flex}.email-connect-cta__button:hover:not(:disabled){background:var(--accent-fill-hover);border-color:var(--accent-fill-hover)}.email-connect-cta__button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.email-connect-cta__button:disabled{opacity:.7;cursor:progress}.email-connect-cta__spinner{animation:email-connect-spin var(--duration-spin) var(--ease-linear) infinite}@keyframes email-connect-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.email-connect-cta__error{width:100%;color:var(--danger);font-size:12px}[data-theme=dark] .email-connect-cta{background:var(--bg-card);border-color:var(--border-light);color:var(--text-primary)}.email-pre-scan{background:var(--bg-card);border:1px solid var(--border-light);color:var(--text-primary);border-radius:12px;flex-direction:column;gap:12px;margin:8px 0;padding:14px 16px 12px;font-size:13px;line-height:1.4;display:flex;box-shadow:0 1px 2px #0000000a}.email-pre-scan__header{align-items:center;gap:8px;display:flex}.email-pre-scan__title{color:var(--text-primary);font-size:14px;font-weight:600}.email-pre-scan__totals{color:var(--text-muted);margin-left:auto;font-size:12px}.email-pre-scan__section{border:1px solid var(--border-light);background:var(--bg-card);border-radius:8px;overflow:hidden}.email-pre-scan__section-header{background:var(--bg-secondary);border-bottom:1px solid var(--border-light);color:var(--text-secondary);align-items:center;gap:6px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.email-pre-scan__section-title{flex:1}.email-pre-scan__section-count{background:var(--bg-tertiary);color:var(--text-secondary);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.email-pre-scan__section--urgent{border-left:3px solid var(--danger)}.email-pre-scan__section--actionable{border-left:3px solid var(--accent)}.email-pre-scan__section--archive{border-left:3px solid var(--text-muted)}.email-pre-scan__list{margin:0;padding:0;list-style:none}.email-pre-scan__row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:8px 12px;display:flex}.email-pre-scan__row:last-child{border-bottom:none}.email-pre-scan__row:hover{background:var(--bg-hover)}.email-pre-scan__row-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.email-pre-scan__row-meta{align-items:baseline;gap:8px;min-width:0;display:flex}.email-pre-scan__row-sender{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex-shrink:0;max-width:180px;font-weight:600;overflow:hidden}.email-pre-scan__row-subject{min-width:0;color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.email-pre-scan__row-reason{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.email-pre-scan__row-actions{flex-shrink:0;gap:4px;display:flex}.email-pre-scan__action{background:var(--bg-tertiary);border:1px solid var(--border-light);color:var(--text-secondary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease);border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-size:11.5px;font-weight:500;display:inline-flex}.email-pre-scan__action:hover{background:var(--bg-hover);border-color:var(--border-light)}.email-pre-scan__action:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.email-pre-scan__action:disabled{opacity:.55;cursor:progress}.email-pre-scan__action:disabled:hover{background:var(--bg-tertiary);border-color:var(--border-light)}.email-pre-scan__action--primary{background:var(--accent-fill);color:var(--accent-fill-text);border-color:var(--accent-fill)}.email-pre-scan__action--primary:hover{background:var(--accent-fill-hover);border-color:var(--accent-fill-hover)}.email-pre-scan__action--ghost{color:var(--text-muted);border-color:#0000}.email-pre-scan__action--ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.email-pre-scan__empty{color:var(--text-muted);background:var(--bg-card);border:1px dashed var(--border-light);border-radius:8px;align-items:center;gap:8px;padding:12px;font-style:italic;display:flex}.email-pre-scan__preferences{border-top:1px dashed var(--border);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;padding-top:6px;font-size:11.5px;display:flex}.email-pre-scan__preferences-label{font-weight:500}.email-pre-scan__preferences-chip{background:var(--bg-tertiary);color:var(--text-secondary);border-radius:999px;padding:2px 10px}[data-theme=dark] .email-pre-scan{background:var(--bg-card);border-color:var(--border-light);color:var(--text-primary);box-shadow:0 1px 2px #0006}[data-theme=dark] .email-pre-scan__section{background:var(--bg-card);border-color:var(--border-light)}[data-theme=dark] .email-pre-scan__section-header{background:var(--bg-secondary);border-bottom-color:var(--border-light)}[data-theme=dark] .email-pre-scan__row{border-bottom-color:var(--border)}[data-theme=dark] .email-pre-scan__row:hover{background:var(--bg-hover)}[data-theme=dark] .email-pre-scan__action{background:var(--bg-tertiary);border-color:var(--border-light);color:var(--text-secondary)}[data-theme=dark] .email-pre-scan__action:hover{background:var(--bg-hover)}[data-theme=dark] .email-pre-scan__empty{background:var(--bg-card);border-color:var(--border-light)}.render-card{margin:8px 0}.render-card-error{background:var(--bg-card);border:1px solid var(--danger);color:var(--danger);border-radius:8px;padding:10px 12px;font-size:13px}.render-unsupported{background:var(--bg-card);border:1px solid var(--border-light);color:var(--text-primary);border-radius:8px;padding:10px 12px;font-size:13px}.render-unsupported__message{margin:0 0 6px;font-weight:500}.render-unsupported__details summary{cursor:pointer;color:var(--text-secondary);font-size:12px}.render-unsupported__json{white-space:pre;margin:6px 0 0;font-size:12px;overflow-x:auto}.render-unsupported__too-large{color:var(--text-secondary);margin:6px 0 0;font-style:italic}.render-truncation{color:var(--text-secondary);padding:4px 0 0;font-size:12px;font-style:italic}.render-table-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;padding:10px 12px;font-size:13px}.render-table-card__title{margin-bottom:6px;font-weight:600}.render-table{overflow-x:auto}.render-table table{border-collapse:collapse;width:100%}.render-table th,.render-table td{text-align:left;border-bottom:1px solid var(--border-light);white-space:nowrap;padding:4px 10px 4px 0}.render-table th{color:var(--text-secondary);font-weight:600}.render-kv{background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;padding:10px 12px;font-size:13px}.render-kv__title{margin-bottom:6px;font-weight:600}.render-kv__list{flex-direction:column;gap:4px;margin:0;display:flex}.render-kv__row{gap:12px;display:flex}.render-kv__key{color:var(--text-secondary);flex-shrink:0;min-width:120px}.render-kv__value{overflow-wrap:anywhere;margin:0}.render-list{background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;padding:10px 12px;font-size:13px}.render-list__title{margin-bottom:6px;font-weight:600}.render-list__items{margin:0;padding-left:20px}.render-image{margin:0}.render-image__img{border-radius:8px;max-width:100%;display:block}.render-image__caption{color:var(--text-secondary);padding-top:4px;font-size:12px}.render-diff{background:var(--bg-card);border:1px solid var(--border-light);border-radius:8px;padding:10px 12px;font-size:12px}.render-diff__title{margin-bottom:6px;font-size:13px;font-weight:600}.render-diff__body{font-family:var(--font-mono);margin:0;overflow-x:auto}.render-diff__line{white-space:pre}.render-diff__line--added{background:var(--accent-green-dim)}.render-diff__line--removed{background:var(--danger-dim)}.render-diff__line--hunk{color:var(--text-secondary)}.render-diff__badge{color:var(--text-secondary);border:1px solid var(--border-light);border-radius:4px;margin-right:6px;padding:0 5px;font-size:11px;font-weight:500}.render-diff__note{color:var(--text-secondary);margin-bottom:4px}.render-confirmation{background:var(--bg-card);border:1px solid var(--accent-yellow);color:var(--text-primary);border-left-width:3px;border-radius:8px;padding:10px 12px;font-size:13px}.render-confirmation__header{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.render-confirmation__badge{background:var(--accent-yellow-dim);color:var(--accent-yellow);text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.render-confirmation__label{text-transform:capitalize;font-size:14px;font-weight:600}.render-confirmation__action{font-family:var(--font-mono);color:var(--text-secondary);background:var(--bg-secondary);border-radius:4px;padding:1px 6px;font-size:12px}.render-confirmation__summary{white-space:pre-wrap;word-break:break-word;margin:0 0 8px;font-family:inherit;font-size:13px}.render-confirmation__footer{justify-content:space-between;align-items:center;gap:8px;display:flex}.render-confirmation__note{color:var(--text-secondary);font-size:12px}.render-confirmation__dismiss{border:1px solid var(--border-light);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:3px 10px;font-size:12px}.render-confirmation__dismiss:hover{background:var(--bg-secondary)}.render-confirmation--dismissed{color:var(--text-secondary);border-style:dashed;font-size:12px}.render-needs-input{background:var(--bg-card);border:1px solid var(--border-light);color:var(--text-primary);border-left-width:3px;border-radius:8px;padding:10px 12px;font-size:13px}.render-needs-input__header{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.render-needs-input__badge{background:var(--accent-blue-dim);color:var(--accent-blue);text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.render-needs-input__sensitive-badge{background:var(--accent-yellow-dim);color:var(--accent-yellow);text-transform:uppercase;letter-spacing:.04em;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.render-needs-input__question{white-space:pre-wrap;word-break:break-word;margin:0 0 10px}.render-needs-input__options{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.render-needs-input__option{background:var(--bg-secondary);border:1px solid var(--border-light);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:5px 12px;font-size:12px}.render-needs-input__option:hover:not(:disabled){background:var(--accent-blue-dim)}.render-needs-input__option:disabled{opacity:.6;cursor:default}.render-needs-input__free-text{gap:6px;display:flex}.render-needs-input__free-text-input{border:1px solid var(--border-light);border-radius:6px;flex:1;padding:5px 8px;font-size:12px}.render-needs-input__free-text-submit{background:var(--accent-fill);color:var(--accent-fill-text);cursor:pointer;border:none;border-radius:6px;padding:5px 12px;font-size:12px}.render-needs-input__free-text-submit:disabled{opacity:.6;cursor:default}.render-needs-input__error{color:var(--danger);margin:8px 0 0;font-size:12px}.render-needs-input--answered{color:var(--text-secondary);border-style:dashed;font-size:12px}.render-needs-input--expired{border-style:dashed}.render-needs-input--expired .render-needs-input__question{color:var(--text-secondary)}.render-needs-input__expired-note{color:var(--text-secondary);margin:8px 0 0;font-size:12px}.turn-changes{color:var(--text-secondary);margin-top:8px;font-size:12px}.turn-changes-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.turn-changes-summary{color:var(--text-muted)}.turn-changes-btn{color:var(--text-secondary);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;display:inline-flex}.turn-changes-btn:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-muted)}.turn-changes-btn:disabled{opacity:.6;cursor:default}.turn-changes-btn.is-primary{color:var(--text-primary);border-color:var(--text-secondary)}.turn-changes-btn.is-danger{color:var(--danger);border-color:var(--danger)}.turn-changes-confirm{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.turn-changes-warning,.turn-changes.is-error{color:var(--accent-yellow);align-items:flex-start;gap:6px;margin-top:6px;display:flex}.turn-changes-warning ul{color:var(--text-secondary);font-family:var(--font-mono);word-break:break-all;margin:2px 0 0;padding-left:16px;font-size:11px}.turn-changes-warning summary{cursor:pointer}.turn-changes-message{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.turn-changes-message.is-ok{color:var(--text-secondary)}.turn-changes-message.is-error{color:var(--danger)}.changes-review.modal-panel{width:860px}.changes-review-body{flex-direction:column;gap:10px;display:flex;overflow-y:auto}.changes-review-file .render-diff__title{word-break:break-all}.changes-review-loading{color:var(--text-muted);align-items:center;gap:6px;display:flex}.undo-history-input{max-width:120px}.msg{width:100%;animation:msgFadeIn var(--duration) var(--ease) both;padding:10px 0;position:relative}@keyframes msgFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.msg-user{justify-content:flex-end;display:flex}.msg-user .msg-inner{background:var(--bg-user-msg);border-radius:var(--radius-xl);max-width:min(80%,620px);padding:10px 14px}.msg-user .msg-header{min-height:0;margin-bottom:0}.msg-inner{max-width:100%}.msg-header{justify-content:space-between;align-items:center;min-height:0;display:flex}.msg-header-left{align-items:center;gap:4px;display:flex}.msg-actions{opacity:0;transition:opacity var(--duration-fast) var(--ease);gap:2px;display:flex;position:absolute;bottom:-14px;right:0}.msg:hover .msg-actions,.msg:focus-within .msg-actions{opacity:1}.msg:focus-within{z-index:1}.msg:hover{z-index:2}.msg-action-btn,.msg-copy{border-radius:var(--radius-sm);color:var(--text-muted);align-items:center;gap:4px;padding:4px 6px;font-size:11px;display:flex}.msg-action-btn:hover,.msg-copy:hover{background:var(--bg-hover);color:var(--text-primary)}.msg-copy.copied{color:var(--accent-green)}.msg-delete:hover{color:var(--danger)}.msg-delete.confirm{color:var(--danger);background:var(--danger-dim);opacity:1}.msg-body{overflow-wrap:break-word;min-width:0;font-size:15px;line-height:1.65}.msg-assistant .msg-body{font-family:var(--font-sans)}.msg-user .msg-body{font-family:var(--font-sans);color:var(--text-primary);font-size:14.5px}.msg-user .md-content{color:var(--text-primary)}.msg-error{background:color-mix(in srgb, var(--danger) 4%, transparent);border-left:2px solid var(--danger)}[data-theme=dark] .msg-error{background:color-mix(in srgb, var(--danger) 5%, transparent)}.msg-stopped{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);align-items:center;gap:6px;margin-top:6px;padding:3px 10px;font-size:12px;display:inline-flex}.msg-stopped.is-unconfirmed{color:var(--accent-yellow)}.error-banner{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--danger) 8%, transparent);color:var(--danger);font-size:13px;font-weight:600;font-family:var(--font-sans);align-items:center;gap:6px;margin-bottom:8px;padding:6px 12px;display:flex}.msg-error .msg-body{color:var(--text-secondary)}.msg-error .msg-body .md-p,.msg-error .msg-body .md-content{font-size:13px}.md-content{color:var(--text-primary)}.md-content>:first-child{margin-top:0}.md-content>:last-child{margin-bottom:0}.md-p{margin-bottom:10px}.md-p:last-child{margin-bottom:0}.md-h2{font-size:18px;font-weight:700;font-family:var(--font-sans);color:var(--text-primary);letter-spacing:-.3px;margin:20px 0 10px}.md-h3{font-size:16px;font-weight:600;font-family:var(--font-sans);color:var(--text-primary);margin:16px 0 8px}.md-h4{font-size:14.5px;font-weight:600;font-family:var(--font-sans);color:var(--text-primary);margin:14px 0 6px}.md-ul,.md-ol{margin:8px 0;padding-left:24px}.md-ul{list-style-type:disc}.md-ol{list-style-type:decimal}.md-li{margin-bottom:4px;padding-left:4px}.md-li>.md-p{margin-bottom:4px}.md-li>.md-ul,.md-li>.md-ol{margin:4px 0}.md-content strong{color:var(--text-primary);font-weight:700}.md-content em{font-style:italic}.inline-code{font-family:var(--font-mono);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-light);padding:2px 7px;font-size:12.5px}.md-link{color:var(--accent);transition:border-color var(--duration) var(--ease);border-bottom:1px solid #0000;text-decoration:none}.md-link:hover{border-bottom-color:var(--accent)}.file-path-link{color:var(--accent);cursor:pointer;border-bottom:1px dashed var(--accent);transition:color var(--duration-fast) var(--ease), background var(--duration-fast) var(--ease);font-family:var(--font-mono);border-radius:0;align-items:center;gap:4px;padding:0 3px;font-size:12px;display:inline-flex}.file-path-link:hover{color:var(--accent);border-bottom-color:var(--accent);background:color-mix(in srgb, var(--accent-green) 5%, transparent)}.file-path-icon{opacity:.7;flex-shrink:0}.file-path-link:hover .file-path-icon{opacity:1}.inline-image-wrap{margin:8px 0;display:block}.inline-image{border-radius:var(--radius-md);border:1px solid var(--border);object-fit:contain;background:var(--bg-secondary);max-width:100%;max-height:400px;display:block}.inline-image-caption{margin-top:4px;font-size:11px;display:block}.md-blockquote{border-left:2px solid var(--accent);background:var(--tint-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-secondary);margin:12px 0;padding:10px 18px}.md-blockquote .md-p{margin-bottom:6px}.md-blockquote .md-p:last-child{margin-bottom:0}.md-hr{border:none;border-top:1px solid var(--border);margin:20px 0}.md-table-wrap{border-radius:var(--radius-lg);border:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--text-muted) transparent;margin:14px 0;overflow-x:auto}.md-table{border-collapse:collapse;width:100%;font-size:13px;font-family:var(--font-sans);line-height:1.6}.md-table th{text-align:left;font-size:10.5px;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:1.5px;color:var(--text-muted);background:var(--bg-tertiary);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 14px}.md-table td{border-bottom:1px solid var(--border-light);color:var(--text-primary);padding:7px 14px}.md-table tr:last-child td{border-bottom:none}.md-table tr:hover td{background:var(--tint-subtle)}.md-table td:last-child,.md-table th:last-child{text-align:right}.md-content details{border:1px solid var(--border);border-radius:var(--radius-md);margin:8px 0;overflow:hidden}.md-content details summary{font-size:13px;font-weight:600;font-family:var(--font-mono);color:var(--accent);cursor:pointer;background:var(--tint-subtle);transition:background var(--duration) var(--ease);-webkit-user-select:none;user-select:none;padding:8px 14px;list-style:none}.md-content details summary::-webkit-details-marker{display:none}.md-content details summary:before{content:"▶";transition:transform var(--duration) var(--ease);margin-right:8px;font-size:10px;display:inline-block}.md-content details[open] summary:before{transform:rotate(90deg)}.md-content details summary:hover{background:var(--tint-hover)}.md-content details>:not(summary){padding:4px 14px}.md-content details[open]{border-color:color-mix(in srgb, var(--accent) 20%, transparent)}.md-content del{color:var(--text-muted);text-decoration:line-through}.md-content .task-list-item{margin-left:-20px;list-style:none}.md-content .task-list-item input[type=checkbox]{margin-right:6px}.code-block{border-radius:var(--radius-lg);background:var(--bg-code);border:1px solid var(--border-code);margin:14px 0;overflow:hidden}.code-header{background:var(--bg-code-raised);border-bottom:1px solid var(--border-code);justify-content:space-between;align-items:center;padding:6px 14px;display:flex}.code-lang{font-size:10px;font-family:var(--font-mono);color:var(--text-code-dim);text-transform:lowercase;letter-spacing:.5px}.code-copy{border-radius:var(--radius-sm);font-size:10px;font-family:var(--font-mono);color:var(--text-code-dim);transition:all var(--duration) var(--ease);align-items:center;gap:4px;padding:3px 10px;display:flex}.code-copy:hover{background:var(--bg-code-raised);color:var(--text-code)}.code-copy.copied{color:var(--code-success);background:color-mix(in srgb, var(--code-success) 10%, var(--bg-code))}.code-block pre{white-space:pre;word-wrap:normal;overflow-wrap:normal;scrollbar-width:thin;scrollbar-color:var(--text-code-dim) transparent;margin:0;padding:16px 18px;overflow-x:auto}.code-block code{font-family:var(--font-mono);color:var(--text-code);white-space:pre;word-wrap:normal;overflow-wrap:normal;background:0 0;padding:0;font-size:13px;line-height:1.65}.md-content>.cursor{display:inline-block}.md-content:has(>.cursor)>:last-of-type:not(.cursor){display:inline}.md-content>pre:empty{display:none}.md-content>pre:has(>code:empty){display:none}.inline-code:empty{display:none}.cursor{background:var(--accent);vertical-align:text-bottom;width:8px;height:16px;image-rendering:pixelated;animation:cursorBlink var(--duration-blink) var(--ease-step) infinite;border-radius:0;margin-left:2px;display:inline-block}@media (width<=768px){.msg{padding:12px 16px}.msg-body{padding-left:0}.md-table-wrap{border-left:none;border-right:none;border-radius:0;margin:8px -8px}}.thinking-indicator{font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;font-size:11px}.thinking-indicator .cursor{width:6px;height:12px}.thinking-indicator-hint{font-family:var(--font-sans);color:var(--text-secondary);white-space:normal;margin-top:4px;font-size:12px;display:block}.msg-stats{border-top:1px solid var(--border);color:var(--text-muted);font-size:10.5px;font-family:var(--font-sans);opacity:0;transition:opacity var(--duration-fast) var(--ease);pointer-events:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;gap:10px;margin-top:6px;padding-top:5px;display:flex}.msg:hover .msg-stats,.msg-stats:focus-within{opacity:1;pointer-events:auto;-webkit-user-select:text;user-select:text}.msg-stats-ts{color:var(--text-muted);opacity:.75}.msg:hover .msg-stats-ts{opacity:1}.msg-stats-summary{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}.msg-stats-summary:hover{color:var(--text-secondary)}.msg-stats>span+span:before{content:"·";opacity:.4;margin-right:6px}.unsupported-banner{border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-card);flex-direction:column;gap:10px;margin:8px 0;padding:14px 16px;font-size:13px;line-height:1.5;display:flex}.unsupported-banner-header{color:var(--text-primary);align-items:center;gap:8px;font-weight:600;display:flex}.unsupported-banner-header svg{color:var(--accent-yellow);flex-shrink:0}.unsupported-banner-body{color:var(--text-secondary);padding-left:26px}.unsupported-banner-body p{margin:0 0 6px}.unsupported-alternatives{margin:8px 0 4px;padding:0;list-style:none}.unsupported-alternatives li{color:var(--text-secondary);margin-bottom:4px;padding-left:16px;position:relative}.unsupported-alternatives li:before{content:"✓";color:var(--accent-green);font-size:12px;font-weight:600;position:absolute;left:0}.unsupported-feature-request{border-radius:var(--radius-md);background:var(--bg-secondary);border:1px dashed var(--border);color:var(--text-secondary);align-items:center;gap:8px;margin-top:4px;padding:10px 14px;font-size:12px;display:flex}.unsupported-feature-request svg{color:var(--danger);flex-shrink:0}.unsupported-feature-request a{color:var(--danger);font-weight:600;text-decoration:none}.unsupported-feature-request a:hover{color:var(--danger);text-decoration:underline}.upload-error-toast{border-radius:var(--radius-md);background:var(--danger-dim2);border:1px solid color-mix(in srgb, var(--danger) 15%, transparent);color:var(--text-primary);animation:toast-slide-in var(--duration) var(--ease);align-items:flex-start;gap:10px;margin:8px 0;padding:12px 14px;font-size:12.5px;line-height:1.5;display:flex}.upload-error-toast svg{color:var(--danger);flex-shrink:0;margin-top:1px}.upload-error-content{flex:1;min-width:0}.upload-error-title{margin-bottom:2px;font-weight:600}.upload-error-detail{color:var(--text-secondary);font-size:12px}.upload-error-detail a{color:var(--danger);font-weight:500;text-decoration:none}.upload-error-detail a:hover{text-decoration:underline}.upload-error-dismiss{color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration) var(--ease);background:0 0;border:none;flex-shrink:0;padding:2px}.upload-error-dismiss:hover{color:var(--text-primary);background:var(--bg-hover)}.fb-entry.unsupported{opacity:.55}.fb-unsupported-badge{color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:var(--radius-sm);white-space:nowrap;margin-left:auto;padding:1px 6px;font-size:10px}@keyframes toast-slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.connector-retry-banner{border-radius:var(--radius-lg);background:color-mix(in srgb, var(--accent-green) 8%, transparent);border:1px solid color-mix(in srgb, var(--accent-green) 30%, transparent);color:var(--text-primary);align-items:center;gap:8px;margin:0 16px 8px;padding:8px 12px;font-size:12px;display:flex}.connector-retry-banner__icon{color:var(--accent-green);flex-shrink:0}.connector-retry-banner__text{flex:1;line-height:1.4}.connector-retry-banner__btn{border-radius:var(--radius-md);border:1px solid var(--accent-green);background:var(--accent-green);color:var(--text-inverse);cursor:pointer;transition:opacity var(--duration-fast) var(--ease);flex-shrink:0;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.connector-retry-banner__btn:hover{opacity:.88}.connector-retry-banner__dismiss{width:20px;height:20px;color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;font-size:16px;line-height:1}.connector-retry-banner__dismiss:hover{color:var(--text-primary);background:var(--bg-hover)}.history-notice{text-align:center;max-width:640px;color:var(--text-secondary);margin:8px auto;font-size:12px}.task-view{background:var(--bg-primary);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden}.task-view.drag-active{outline:2px dashed var(--accent);outline-offset:-4px}.task-header{background:var(--bg-primary);min-height:52px;font-family:var(--font-sans);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px 8px 16px;display:flex}.task-header-left{align-items:center;gap:8px;min-width:0;display:flex}.task-header-right{flex-shrink:0;align-items:center;gap:6px;display:flex}.task-header-right .task-header-private[data-private=true]{background:var(--accent-fill);color:var(--accent-fill-text)}.task-header-right .task-header-private[data-private=true]:hover{background:var(--accent-fill-hover)}.task-title{border-radius:var(--radius-md);min-width:0;max-width:100%;color:var(--text-primary);font-size:var(--fs-body);align-items:center;gap:6px;padding:4px 8px;font-weight:600;display:inline-flex}.task-title span{white-space:nowrap;padding-right:24px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.task-title-edit{color:var(--text-muted);opacity:0;flex-shrink:0}.task-title:hover{background:var(--bg-hover)}.task-title:hover .task-title-edit,.task-title:focus-visible .task-title-edit{opacity:1}.title-edit{font-size:var(--fs-body);font-weight:600;font-family:var(--font-sans);border:1px solid var(--accent-solid);border-radius:var(--radius-md);width:280px;max-width:100%;transition:box-shadow var(--duration) var(--ease);outline:none;padding:4px 10px}.title-edit:focus{box-shadow:0 0 0 3px var(--accent-ring)}.doc-context-bar{border-bottom:1px solid var(--border);font-size:11px;font-family:var(--font-sans);color:var(--text-secondary);background:var(--bg-secondary);transition:all var(--duration) var(--ease);text-align:left;flex-shrink:0;align-items:center;gap:8px;width:100%;padding:6px 24px;display:flex}.doc-context-expanded{flex-wrap:wrap}.doc-context-icon{color:var(--accent-green);flex-shrink:0}.doc-context-label{white-space:nowrap;color:var(--text-secondary);font-weight:600;font-size:var(--fs-label);font-family:var(--font-sans);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--duration) var(--ease);padding:2px 6px}.doc-context-label:hover{background:var(--bg-hover);color:var(--text-primary)}.doc-context-pills{flex:1;align-items:center;gap:6px;min-width:0;display:flex;overflow:hidden}.doc-context-pills-expanded{flex-wrap:wrap;overflow:visible}.doc-pill{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);font-size:var(--fs-caption);font-family:var(--font-sans);color:var(--text-secondary);white-space:nowrap;max-width:180px;transition:border-color var(--duration) var(--ease), color var(--duration) var(--ease);flex-shrink:0;align-items:center;gap:4px;padding:2px 8px;display:inline-flex;position:relative}.doc-pill:hover{border-color:var(--accent);color:var(--text-primary)}.doc-pill-name{text-overflow:ellipsis;overflow:hidden}.doc-pill-icon{color:var(--accent-green);flex-shrink:0}.doc-pill-remove{border-radius:var(--radius-sm);width:14px;height:14px;color:var(--text-muted);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:1px;padding:0;display:none}.doc-pill:hover .doc-pill-remove,.doc-pill:focus-within .doc-pill-remove{display:inline-flex}.doc-pill-remove:hover{background:var(--danger);color:var(--bg-primary)}.doc-pill-more,.doc-pill-collapse{font-size:var(--fs-caption);font-family:var(--font-sans);color:var(--text-muted);white-space:nowrap;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration) var(--ease);background:0 0;border:1px solid #0000;flex-shrink:0;padding:2px 8px}.doc-pill-more:hover,.doc-pill-collapse:hover{color:var(--text-primary);background:var(--bg-tertiary);border-color:var(--border)}.messages-scroll{overflow-anchor:auto;flex:1;padding:8px 0 24px;overflow-y:auto}.messages-column,.input-column{width:100%;max-width:calc(var(--content-w) + 48px);margin:0 auto;padding:0 24px}.input-column{flex-direction:column;gap:8px;display:flex}.skeleton-messages{width:100%;max-width:900px;transition:opacity var(--duration) var(--ease);margin:0 auto;padding:16px 0}.skeleton-msg{flex-direction:column;gap:8px;padding:16px 24px;display:flex}.skeleton-lines{flex-direction:column;gap:6px;padding-left:32px;display:flex}.skeleton-line{border-radius:var(--radius-sm);background:var(--bg-tertiary);height:12px;animation:skeletonPulse var(--duration-pulse) var(--ease-in-out) infinite}.skeleton-line:first-child{width:85%;animation-delay:var(--stagger)}.skeleton-line:nth-child(2){width:65%;animation-delay:calc(var(--stagger) * 2)}.skeleton-line:nth-child(3){width:40%;animation-delay:calc(var(--stagger) * 3)}@keyframes skeletonPulse{0%,to{opacity:.25}50%{opacity:.6}}.skeleton-msg{transition:opacity var(--duration) var(--ease)}.drag-overlay{z-index:10;background:var(--accent-dim2);border:2px dashed var(--accent);border-radius:var(--radius-lg);color:var(--accent);font-size:15px;font-weight:600;font-family:var(--font-sans);letter-spacing:.3px;pointer-events:none;animation:fadeIn var(--duration-fast) var(--ease);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);flex-direction:column;justify-content:center;align-items:center;gap:12px;margin:8px;display:flex;position:absolute;inset:0}.streaming-bubble{transition:opacity var(--duration-slow) var(--ease), transform var(--duration-slow) var(--ease), filter var(--duration-slow) var(--ease)}.streaming-bubble.stream-active{animation:streamBubbleIn var(--duration-slow) var(--ease)}.streaming-bubble.stream-ending{pointer-events:none}@keyframes streamBubbleIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.msg-deleting{animation:msgDelete var(--duration) var(--ease) forwards;pointer-events:none}@keyframes msgDelete{0%{opacity:1;max-height:500px;transform:scale(1)}to{opacity:0;max-height:0;margin:0;padding:0;overflow:hidden;transform:scale(.97)}}.input-area{background:var(--bg-primary);flex-shrink:0;padding:0 0 16px}@media (width<=768px){.task-header{padding-left:var(--sidebar-toggle-clearance)}.messages-column,.input-column{padding:0 12px}}.scroll-bottom-btn{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border);width:34px;height:34px;color:var(--text-secondary);box-shadow:var(--shadow-md);transition:opacity var(--duration) var(--ease), transform var(--duration) var(--ease), background var(--duration) var(--ease), color var(--duration) var(--ease), border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);z-index:5;animation:scrollBtnSlideIn var(--duration) var(--ease);justify-content:center;align-items:center;display:flex;position:absolute;bottom:100px;left:50%;transform:translate(-50%)}@keyframes scrollBtnSlideIn{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.scroll-bottom-btn:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--accent);box-shadow:0 4px 16px color-mix(in srgb, var(--accent) 15%, transparent);transform:translate(-50%)translateY(-3px)}.policy-alert-toast{border-color:color-mix(in srgb, var(--accent-yellow) 35%, transparent);pointer-events:all;animation:toastIn var(--duration) var(--ease), toastOut var(--duration) var(--ease) calc(var(--toast-hold) * 2) forwards;align-items:center;gap:12px;display:flex}.policy-alert-toast-link{color:var(--accent-yellow);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;font-weight:700;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.policy-alert-toast-missing{color:var(--accent-yellow);font-family:var(--font-mono);font-size:11px}@media (width<=768px){.input-area{padding:0 0 max(10px, env(safe-area-inset-bottom))}.title-edit{width:180px}.skeleton-msg{padding:12px 16px}.skeleton-lines{padding-left:0}}.composer{background:var(--bg-input);border-radius:var(--radius-xl);width:100%;box-shadow:var(--shadow-sm);flex-direction:column;gap:8px;padding:12px 12px 10px 16px;display:flex}.composer:focus-within{box-shadow:var(--shadow-sm), inset 0 0 0 1px color-mix(in srgb, var(--text-muted) 80%, var(--bg-input))}.composer-disabled{opacity:.75}.composer-input{resize:none;width:100%;min-height:24px;max-height:240px;color:var(--text-primary);font-family:var(--font-sans);font-size:var(--fs-prose);background:0 0;border:none;outline:none;padding:4px 0;line-height:1.5}.composer-input::placeholder{color:var(--text-muted)}.composer-input:focus-visible{outline:none}.composer-limit-error{color:var(--danger);margin:4px 0 0;font-size:12px}.composer-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.composer-row-left,.composer-row-right{align-items:center;gap:4px;min-width:0;display:flex}.composer-row-right{flex:1;justify-content:flex-end}.composer-row .composer-chip-wrap{min-width:0}.composer-icon-btn{border-radius:var(--radius-md);width:30px;height:30px;color:var(--text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.composer-icon-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.composer-icon-btn:disabled{opacity:.5;cursor:default}.composer-send{border-radius:var(--radius-full);background:var(--accent-fill);width:32px;height:32px;color:var(--accent-fill-text);transition:background var(--duration-fast) var(--ease), transform var(--duration) var(--ease-spring);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.composer-send:hover:not(:disabled){background:var(--accent-fill-hover);transform:translateY(-1px)}.composer-send:active:not(:disabled){transition-duration:var(--duration-press);transform:scale(.94)}.composer-send:disabled{background:var(--bg-tertiary);color:var(--text-muted);cursor:default}.composer-send.is-stop{background:var(--bg-tertiary);color:var(--text-primary)}.composer-send.is-stop:hover:not(:disabled){background:var(--bg-active)}.composer-attachments{flex-wrap:wrap;gap:6px;list-style:none;display:flex}.composer-attachment{border-radius:var(--radius-md);background:var(--bg-tertiary);max-width:260px;color:var(--text-secondary);font-size:var(--fs-label);align-items:center;gap:6px;padding:3px 4px 3px 8px;display:inline-flex}.composer-attachment.has-error{background:var(--danger-dim);flex-wrap:wrap;align-content:flex-start}.composer-attachment-thumb{object-fit:cover;border-radius:var(--radius-xs);width:20px;height:20px}.composer-attachment-name{text-overflow:ellipsis;white-space:nowrap;color:var(--text-primary);overflow:hidden}.composer-attachment-state{color:var(--text-muted);white-space:nowrap}.composer-attachment.has-error .composer-attachment-state{-webkit-line-clamp:2;white-space:normal;color:var(--danger);-webkit-box-orient:vertical;flex-basis:100%;order:1;padding:0 4px 2px 0;display:-webkit-box;overflow:hidden}.composer-attachment.has-error .composer-attachment-name{flex:1}.composer-attachment .composer-icon-btn{width:22px;height:22px}.composer-chip{border-radius:var(--radius-md);max-width:100%;height:28px;color:var(--text-secondary);font-size:var(--fs-label);white-space:nowrap;align-items:center;gap:5px;padding:0 8px;font-weight:500;display:inline-flex}.composer-chip:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.composer-chip-label{text-overflow:ellipsis;overflow:hidden}.composer-chip.is-warning{color:var(--accent-yellow)}.composer-chip.is-danger{color:var(--danger)}.composer-chip.is-on{background:var(--accent-dim);color:var(--accent)}.composer-chip.is-unavailable{opacity:.5;cursor:default}.info-bubble-icon{border-radius:var(--radius-sm);width:24px;height:24px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.info-bubble-icon:hover,.info-bubble-icon:focus-visible{background:var(--bg-hover);color:var(--text-primary)}.info-bubble-icon.is-warning{color:var(--accent-yellow)}.info-bubble{z-index:1000;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-md);max-width:min(280px,100vw - 16px);box-shadow:var(--shadow-md);color:var(--text-primary);font-size:var(--fs-label);pointer-events:none;padding:8px 10px;line-height:1.45;position:fixed}.info-bubble-title{font-weight:600}.info-bubble-lines{color:var(--text-secondary);flex-direction:column;gap:2px;margin:4px 0 0;padding:0;list-style:none;display:flex}.info-bubble-lines .is-warning{color:var(--accent-yellow)}.info-bubble-id{color:var(--text-muted);font-family:var(--font-mono);word-break:break-all;margin-top:6px;font-size:11px}.task-view,.sp-picker{--sp-top:48px;--sp-fs-title:12px;--sp-fs:12.5px;--sp-fs-sm:11.5px;--sp-space-1:4px;--sp-space-2:8px;--sp-space-3:12px;--sp-space-4:16px;--sp-handle:8px;--sp-overlay-w:min(360px, calc(100% - 32px));--sp-dialog-w:min(520px, calc(100vw - 32px));--sp-picker-h:260px;--sp-switch-w:28px;--sp-switch-h:16px}:is(.task-view:has(>.session-panel.is-docked)>.messages-scroll,.task-view:has(>.session-panel.is-docked)>.input-area,.task-view:has(>.session-panel.is-docked)>.doc-context-bar){margin-right:var(--session-panel-w)}.session-panel{top:var(--sp-top);background:var(--bg-primary);border-left:1px solid var(--border-light);font-family:var(--font-sans);font-size:var(--sp-fs);color:var(--text-primary);z-index:5;flex-direction:column;display:flex;position:absolute;bottom:0;right:0}.session-panel.is-overlay{width:var(--sp-overlay-w);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg) 0 0 var(--radius-lg);box-shadow:var(--shadow-lg);z-index:20;border-right:none}.sp-backdrop{inset:var(--sp-top) 0 0 0;background:var(--bg-modal-overlay);z-index:19;position:absolute}.sp-resize{top:0;bottom:0;left:calc(var(--sp-handle) / -2);width:var(--sp-handle);cursor:col-resize;touch-action:none;position:absolute}.sp-resize:after{content:"";top:0;bottom:0;left:calc(var(--sp-handle) / 2 - 1px);background:var(--accent);opacity:0;width:2px;transition:opacity var(--duration) var(--ease);position:absolute}.sp-resize:hover:after,.sp-resize:focus-visible:after,.sp-resize.is-dragging:after{opacity:.6}.sp-header{padding:var(--sp-space-2) var(--sp-space-2) var(--sp-space-1) var(--sp-space-4);justify-content:space-between;align-items:center;display:flex}.sp-title{font-size:var(--sp-fs-title);color:var(--text-secondary);margin:0;font-weight:600}.sp-body{padding:0 var(--sp-space-3) var(--sp-space-4);scrollbar-width:thin;flex:1;overflow-y:auto}.sp-section+.sp-section{border-top:1px solid var(--border-light)}.sp-section-heading{margin:0}.sp-section-head{align-items:center;gap:var(--sp-space-2);width:100%;padding:var(--sp-space-3) var(--sp-space-1) var(--sp-space-2);font:inherit;color:var(--text-primary);text-align:left;border-radius:var(--radius-sm);font-weight:600;display:flex}.sp-section-head:hover{background:var(--bg-hover)}.sp-section-summary{font-weight:400;font-size:var(--sp-fs-sm);color:var(--text-muted);margin-left:auto}.sp-chevron{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease);flex-shrink:0}.sp-chevron.is-open{transform:rotate(90deg)}.sp-section-body{gap:var(--sp-space-3);padding:0 var(--sp-space-1) var(--sp-space-3);flex-direction:column;display:flex}.sp-context .cp-error{margin-top:0}.sp-env-row{gap:var(--sp-space-1);flex-direction:column;display:flex}.sp-env-label{font-size:var(--sp-fs-sm);color:var(--text-muted)}.sp-env-value{align-items:flex-start;gap:var(--sp-space-1);flex-direction:column;min-width:0;display:flex}.sp-place{align-items:center;gap:var(--sp-space-1);font-weight:500;display:inline-flex}.sp-place.is-remote{color:var(--accent-yellow)}.sp-meta{font-size:var(--sp-fs-sm);color:var(--text-muted);overflow-wrap:anywhere}.sp-error,.sp-ok{font-size:var(--sp-fs-sm);margin:0}.sp-error{color:var(--danger)}.sp-ok{color:var(--accent-green)}.sp-warn-text{align-items:center;gap:var(--sp-space-1);font-size:var(--sp-fs-sm);color:var(--accent-yellow);margin:0;display:inline-flex}.sp-list{gap:var(--sp-space-2);flex-direction:column;width:100%;margin:0;padding:0;list-style:none;display:flex}.sp-scope-item,.sp-output,.sp-change{align-items:flex-start;gap:var(--sp-space-2);min-width:0;display:flex}.sp-item-icon{color:var(--text-muted);flex-shrink:0;margin-top:2px}.sp-item-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.sp-item-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sp-item-remove{flex-shrink:0}.sp-output.is-inactive .sp-item-name{color:var(--text-muted);text-decoration:line-through}.sp-item-actions,.sp-actions-row{gap:var(--sp-space-1);flex-wrap:wrap;display:flex}.sp-action{align-items:center;gap:var(--sp-space-1);padding:2px var(--sp-space-2);font:inherit;font-size:var(--sp-fs-sm);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-secondary);display:inline-flex}.sp-action:hover:not(:disabled){color:var(--text-primary);background:var(--bg-hover)}.sp-action:disabled{opacity:.5;cursor:not-allowed}.sp-action.is-danger{color:var(--danger);border-color:var(--danger)}.sp-action.is-warning{color:var(--accent-yellow);border-color:var(--accent-yellow)}.sp-more{font-size:var(--sp-fs-sm);align-self:flex-start}.sp-confirm{gap:var(--sp-space-2);padding:var(--sp-space-2) var(--sp-space-3);font-size:var(--sp-fs-sm);background:var(--accent-yellow-dim);border-radius:var(--radius-md);flex-direction:column;display:flex}.sp-add{color:var(--accent-green)}.sp-del{color:var(--text-secondary)}.sp-changes{gap:var(--sp-space-2);flex-direction:column;display:flex}.sp-changes-total{margin:0}.sp-git{gap:var(--sp-space-2);padding-top:var(--sp-space-2);border-top:1px dashed var(--border-light);flex-direction:column;display:flex}.sp-git-repo{gap:var(--sp-space-1);flex-direction:column;display:flex}.sp-switch-wrap{align-items:center;gap:var(--sp-space-2);display:inline-flex}.sp-switch{width:var(--sp-switch-w);height:var(--sp-switch-h);border-radius:var(--radius-full);background:var(--border);transition:background var(--duration-fast) var(--ease);flex-shrink:0;position:relative}.sp-switch.is-on{background:var(--accent)}.sp-switch:disabled{opacity:.5}.sp-switch-knob{width:calc(var(--sp-switch-h) - 4px);height:calc(var(--sp-switch-h) - 4px);background:var(--switch-knob);transition:transform var(--duration-fast) var(--ease);border-radius:50%;position:absolute;top:2px;left:2px}.sp-switch.is-on .sp-switch-knob{transform:translateX(calc(var(--sp-switch-w) - var(--sp-switch-h)))}.sp-state-text{font-size:var(--sp-fs-sm);color:var(--text-secondary)}.sp-segmented{border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-secondary);gap:2px;padding:2px;display:inline-flex}.sp-segmented button{align-items:center;gap:var(--sp-space-1);padding:2px var(--sp-space-2);font:inherit;font-size:var(--sp-fs-sm);color:var(--text-secondary);border-radius:var(--radius-full);display:inline-flex}.sp-segmented button.is-selected{color:var(--text-primary);background:var(--bg-hover);font-weight:500}.sp-toggle.is-warn{color:var(--accent-yellow)}.sp-picker,.sp-git-dialog{width:var(--sp-dialog-w)}.sp-picker-body,.sp-git-body{gap:var(--sp-space-2);flex-direction:column;display:flex}.sp-picker-path{gap:var(--sp-space-2);display:flex}.sp-picker-path input,.sp-field input,.sp-field textarea{min-width:0;padding:var(--sp-space-1) var(--sp-space-2);font:inherit;font-size:var(--sp-fs);color:var(--text-primary);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);flex:1}.sp-field textarea{resize:vertical;font-family:var(--font-mono)}.sp-field{gap:var(--sp-space-1);font-size:var(--sp-fs-sm);color:var(--text-secondary);flex-direction:column;display:flex}.sp-picker-quick{align-items:center;gap:var(--sp-space-1);flex-wrap:wrap;display:flex}.sp-picker-hidden{align-items:center;gap:var(--sp-space-1);font-size:var(--sp-fs-sm);color:var(--text-secondary);cursor:pointer;margin-left:auto;display:flex}.sp-picker-list{max-height:var(--sp-picker-h);border:1px solid var(--border-light);border-radius:var(--radius-sm);margin:0;padding:0;list-style:none;overflow-y:auto}.sp-picker-list li>button{align-items:center;gap:var(--sp-space-2);width:100%;padding:var(--sp-space-1) var(--sp-space-2);font:inherit;font-size:var(--sp-fs);color:var(--text-primary);text-align:left;display:flex}.sp-picker-list li>button:hover{background:var(--bg-hover)}.sp-picker-list li.sp-meta{padding:var(--sp-space-1) var(--sp-space-2)}.sp-picker-actions{justify-content:flex-end;gap:var(--sp-space-2);padding:var(--sp-space-3) var(--sp-space-4);border-top:1px solid var(--border-light);display:flex}.offline-notice{align-items:center;gap:var(--sp-space-2);margin-bottom:var(--sp-space-2);padding:var(--sp-space-2) var(--sp-space-3);font-size:var(--sp-fs-sm);color:var(--text-primary);background:var(--accent-yellow-dim);border-radius:var(--radius-md);display:flex}.offline-notice svg{color:var(--accent-yellow);flex-shrink:0}.offline-notice span{flex:1}.offline-notice-error{color:var(--danger)}.msg-jump-target{border-radius:var(--radius-md);box-shadow:0 0 0 2px var(--accent);transition:box-shadow var(--duration) var(--ease)}@media (prefers-reduced-motion:reduce){.sp-chevron,.sp-switch,.sp-switch-knob,.msg-jump-target{transition:none}}.folder-chip{flex-shrink:1;min-width:0;max-width:180px}.queued-messages{flex-direction:column;gap:4px;margin:0 0 6px;padding:0;list-style:none;display:flex}.queued-message{background:var(--bg-card);border:1px dashed var(--border);border-radius:var(--radius-md);min-width:0;color:var(--text-secondary);align-items:center;gap:8px;padding:6px 8px 6px 10px;font-size:13px;display:flex}.queued-message.is-delivered,.queued-message.is-sending{border-style:solid;border-color:var(--accent-light)}.queued-message.is-failed{border-style:solid;border-color:var(--danger)}.queued-message.is-failed .queued-message-state{min-width:0;color:var(--danger);flex-shrink:1}.queued-message-text{min-width:0;color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.queued-message-state{color:var(--text-muted);flex-shrink:0;font-size:12px}.queued-message-steer{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);flex-shrink:0;align-items:center;gap:4px;padding:2px 8px;font-size:12px;display:inline-flex}.queued-message-steer:hover{background:var(--bg-hover);color:var(--text-primary)}.queued-message-remove{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.queued-message-remove:hover{background:var(--bg-hover);color:var(--text-primary)}@media (width<=560px){.queued-message{flex-wrap:wrap}.queued-message-state{flex-basis:100%;order:3}}.cp-overlay{z-index:100;background:var(--bg-modal-overlay);animation:fadeIn var(--duration-fast) var(--ease);justify-content:flex-end;display:flex;position:fixed;inset:0}.cp-sheet{background:var(--bg-card);border-left:1px solid var(--border);width:420px;max-width:100%;height:100%;box-shadow:var(--shadow-lg);color:var(--text-primary);flex-direction:column;display:flex}.cp-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.cp-header h2{margin:0;font-size:15px;font-weight:600}.cp-icon{border-radius:var(--radius-md);color:var(--text-secondary);padding:6px;display:inline-flex}.cp-icon:hover{background:var(--bg-hover);color:var(--text-primary)}.cp-body{scrollbar-width:thin;flex:1;padding:4px 16px 24px;font-size:13px;overflow-y:auto}.cp-body section{border-bottom:1px solid var(--border);padding:14px 0}.cp-body section:last-child{border-bottom:none}.cp-body h3{letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);margin:0 0 10px;font-size:12px;font-weight:600}.cp-section-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.cp-section-head h3{margin:0}.cp-lead{color:var(--text-secondary);overflow-wrap:anywhere;margin:0 0 8px;line-height:1.5}.cp-lead strong{color:var(--text-primary)}.cp-model{font-family:var(--font-mono);font-size:12px}.cp-chip{border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-muted);cursor:help;margin-left:6px;padding:0 6px;font-size:11px;display:inline-block}.cp-stack{background:var(--bg-tertiary);border-radius:var(--radius-full);height:8px;margin:4px 0 10px;display:flex;overflow:hidden}.cp-rows{flex-direction:column;gap:5px;margin:0 0 8px;display:flex}.cp-row{font-variant-numeric:tabular-nums;justify-content:space-between;gap:12px;display:flex}.cp-row dt{min-width:0;color:var(--text-secondary);align-items:center;gap:6px;display:inline-flex}.cp-row dd{text-align:right;color:var(--text-primary);margin:0}.cp-row.is-quiet dt,.cp-row.is-quiet dd{color:var(--text-muted)}.cp-indent{padding-left:14px}.cp-pct{min-width:3.2em;color:var(--text-muted);display:inline-block}.cp-unknown{color:var(--text-muted);font-style:italic}.cp-note{color:var(--text-muted);margin:6px 0;font-size:12px;line-height:1.45}.cp-error,.cp-warning{border:1px solid var(--border);border-radius:var(--radius-md);margin:8px 0;padding:8px 10px;line-height:1.4}.cp-error{color:var(--text-primary);background:var(--danger-dim)}.cp-warning{color:var(--text-secondary);background:var(--accent-yellow-dim)}.cp-details summary{cursor:pointer;color:var(--text-secondary)}.cp-tools{flex-wrap:wrap;gap:4px;margin:4px 0 0;padding:0;list-style:none;display:flex}.cp-tools li{border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);color:var(--text-secondary);padding:1px 6px;font-size:11px}.cp-full{margin-top:10px}.cp-summarized{color:var(--text-secondary)}.cp-toggle{border:1px solid var(--border);border-radius:var(--radius-md);display:inline-flex;overflow:hidden}.cp-toggle button{color:var(--text-secondary);padding:3px 10px;font-size:12px}.cp-toggle button[aria-pressed=true]{background:var(--bg-tertiary);color:var(--text-primary)}.cp-cat-system{background:var(--text-muted)}.cp-cat-tools{background:var(--accent-purple)}.cp-cat-skills{background:var(--accent-yellow)}.cp-cat-memory{background:var(--accent)}.cp-cat-documents{background:var(--accent-blue)}.cp-cat-messages{background:var(--accent-green)}.cp-cat-query{background:var(--text-secondary)}.cp-cat-free{background:var(--bg-tertiary);border:1px solid var(--border)}.cp-time-model{background:var(--accent-blue)}.cp-time-tools{background:var(--accent-purple)}.cp-time-waiting{background:var(--accent-yellow)}.cp-time-gaia{background:var(--accent)}@media (width<=480px){.cp-sheet{border-left:none;width:100%}}.context-meter{border-radius:var(--radius-md);height:28px;color:var(--text-secondary);font-variant-numeric:tabular-nums;flex-shrink:0;align-items:center;gap:6px;padding:0 8px;font-size:12px;display:inline-flex}button.context-meter:hover{background:var(--bg-hover);color:var(--text-primary)}.context-meter.is-empty{color:var(--text-muted);cursor:default}.context-meter-bar{background:var(--bg-tertiary);border-radius:var(--radius-full);width:40px;height:5px;position:relative;overflow:hidden}.context-meter-bar>span{background:var(--text-secondary);border-radius:inherit;transition:width var(--duration-fast) var(--ease);position:absolute;inset:0 auto 0 0}.context-meter.is-warning{color:var(--accent-yellow)}.context-meter.is-warning .context-meter-bar>span{background:var(--accent-yellow)}.context-meter-panel{width:260px;max-width:calc(100vw - 32px);padding:12px;font-size:13px}.context-meter-head{color:var(--text-secondary);margin-bottom:8px}.context-meter-head strong{color:var(--text-primary)}.context-meter-stack{background:var(--bg-tertiary);border-radius:var(--radius-full);height:8px;margin-bottom:10px;display:flex;overflow:hidden}.part-system{background:var(--text-muted)}.part-tools{background:var(--accent-purple)}.part-documents{background:var(--accent-blue)}.part-history{background:var(--accent-green)}.part-query{background:var(--accent)}.context-meter-rows{flex-direction:column;gap:4px;margin:0;display:flex}.context-meter-row{font-variant-numeric:tabular-nums;justify-content:space-between;gap:12px;display:flex}.context-meter-row dt{color:var(--text-secondary);align-items:center;gap:6px;display:inline-flex}.context-meter-row dd{color:var(--text-primary);margin:0}.context-meter-row.is-quiet dt,.context-meter-row.is-quiet dd{color:var(--text-muted)}.swatch{border-radius:2px;width:8px;height:8px;display:inline-block}.context-meter-note{color:var(--text-muted);margin:10px 0 0;font-size:12px;line-height:1.4}.context-warning{background:var(--accent-yellow-dim);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-secondary);align-items:flex-start;gap:8px;margin:0 0 6px;padding:8px 10px;font-size:13px;line-height:1.4;display:flex}.context-warning svg{color:var(--accent-yellow);flex-shrink:0;margin-top:2px}.composer-row .context-meter-wrap{flex-shrink:0;min-width:auto}@media (width<=480px){.context-meter .context-meter-bar{display:none}}.context-meter-details{color:var(--accent);margin-top:10px;padding:0;font-size:12px}.context-meter-details:hover{text-decoration:underline}.answer-compare{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);margin:4px 0 16px;padding:10px 12px 12px}.answer-compare-head{color:var(--text-secondary);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;display:flex}.answer-compare-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.compare-col{background:var(--bg-primary);border:1px solid var(--border-light);border-radius:var(--radius-md);flex-direction:column;gap:6px;min-width:0;padding:10px;display:flex}.compare-col h4{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.compare-meta{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px}.compare-body{flex:1;max-height:420px;font-size:14px;overflow:auto}.compare-wait{color:var(--text-secondary);align-items:flex-start;gap:8px;font-size:13px;display:flex}.compare-error{color:var(--danger);font-size:13px}.compare-keep{background:var(--accent-fill);border-radius:var(--radius-md);color:var(--accent-fill-text);align-self:flex-start;padding:5px 10px;font-size:13px}.compare-keep:hover:not(:disabled){background:var(--accent-fill-hover)}.compare-keep:disabled{opacity:.5;cursor:default}.retry-menu{flex-direction:column;min-width:200px;max-width:calc(100vw - 32px);max-height:320px;padding:6px;font-size:13px;display:flex;overflow-y:auto}.retry-menu-head{color:var(--text-muted);padding:4px 8px 6px;font-size:12px}.retry-menu-item{border-radius:var(--radius-sm);color:var(--text-primary);text-align:left;padding:6px 8px}.retry-menu-item:hover,.retry-menu-item:focus-visible{background:var(--bg-hover)}.retry-menu-empty,.retry-menu-error{color:var(--text-muted);align-items:center;gap:6px;padding:6px 8px;display:flex}.retry-menu-error{color:var(--danger)}@media (width<=640px){.answer-compare-cols{grid-template-columns:minmax(0,1fr)}}.side-rail-body{padding:0 0 4px}.side-rail-section+.side-rail-section{border-top:1px solid var(--border-light)}.side-rail-section-head{width:100%;color:var(--text-primary);text-align:left;align-items:center;gap:6px;padding:10px 4px 6px;font-size:12.5px;font-weight:600;display:flex}.side-rail-chevron{color:var(--text-muted);transition:transform var(--duration-fast) var(--ease)}.side-rail-chevron.open{transform:rotate(90deg)}.side-rail-section-body{padding:0 4px 10px}.side-rail-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.side-rail-item{gap:8px;min-width:0;display:flex}.side-rail-item-icon{color:var(--text-muted);flex-shrink:0;margin-top:2px}.side-rail-item-text{flex-direction:column;gap:2px;min-width:0;display:flex}.side-rail-link,.side-rail-name{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;overflow:hidden}.side-rail-link{align-items:center;gap:4px;max-width:100%;text-decoration:none;display:inline-flex}.side-rail-link-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.side-rail-link-icon{flex-shrink:0}.side-rail-link:hover{color:var(--accent);text-decoration:underline}.side-rail-meta{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.side-rail-actions{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.side-rail-action{color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-full);background:var(--bg-secondary);align-items:center;gap:4px;padding:2px 8px;font-size:11.5px;display:inline-flex}.side-rail-action:hover{color:var(--text-primary);background:var(--bg-hover)}.side-rail-item-gone .side-rail-name{color:var(--text-muted);text-decoration:line-through}.side-rail-pending{color:var(--text-secondary);margin:4px 4px 0;font-size:12.5px}.side-rail-error{color:var(--danger);margin:8px 0 0;font-size:11.5px}.side-rail-facts{grid-template-columns:auto 1fr;gap:6px 12px;margin:0;font-size:12.5px;display:grid}.side-rail-facts dt{color:var(--text-muted)}.side-rail-facts dd{min-width:0;color:var(--text-primary);flex-direction:column;gap:2px;margin:0;display:flex}.side-rail-where{align-items:center;gap:5px;font-weight:500;display:inline-flex}.side-rail-where.remote{color:var(--accent-yellow)}.side-rail-warn{color:var(--text-primary);background:var(--accent-yellow-dim);border-radius:var(--radius-md);gap:8px;margin:4px 0 8px;padding:8px 10px;font-size:12px;display:flex}.side-rail-warn svg{color:var(--accent-yellow);flex-shrink:0;margin-top:1px}.side-rail-warn div{flex-direction:column;gap:2px;display:flex}.side-rail-warn span{color:var(--text-secondary)}.export-error-bar{font-size:12px;font-family:var(--font-sans);color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, transparent);border:1px solid color-mix(in srgb, var(--danger) 20%, transparent);border-radius:var(--radius-md);align-items:center;gap:8px;margin-bottom:8px;padding:8px 12px;display:flex}.export-error-bar span{flex:1}.export-error-bar button{flex-shrink:0}.npu-backdrop{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.new-chat{flex:1;justify-content:center;align-items:center;min-height:0;padding:24px 16px 18vh;display:flex;position:relative}.new-chat.is-docked{align-items:flex-end;padding-bottom:16px}.new-chat.is-docked .new-chat-greeting{opacity:0;visibility:hidden}.new-chat-inner{width:100%;max-width:var(--content-w);position:relative}.new-chat-error{color:var(--danger);margin-top:10px;font-size:13px}.new-chat-setup-failed{border-left:2px solid var(--danger);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--danger) 6%, transparent);color:var(--text-secondary);text-align:left;margin-bottom:14px;padding:10px 14px;font-size:13px}.new-chat-setup-failed p+p{margin-top:6px}.new-chat-setup-failed-title{color:var(--danger);font-weight:600}.new-chat-setup-failed-error{overflow-wrap:anywhere}.new-chat-warmup{color:var(--text-muted);margin-top:10px;font-size:13px}.new-chat-greeting{transition:opacity var(--duration-slow) var(--ease), visibility var(--duration-slow);color:var(--text-primary);font-family:var(--font-greeting);font-optical-sizing:auto;text-align:center;text-wrap:balance;margin-bottom:14px;font-size:30px;font-weight:300;line-height:1.2}.new-chat-meta{align-items:center;gap:4px;min-height:28px;margin-top:8px;display:flex}.new-chat-folder{min-width:0;max-width:100%;color:var(--text-muted);align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.new-chat-folder.is-button{border:1px solid var(--border-light);border-radius:var(--radius-full);color:var(--text-secondary);padding:3px 9px}.new-chat-folder.is-button:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.new-chat-folder.is-on{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}.new-chat-folder-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.new-chat-folder-error{color:var(--danger);font-size:12px}.new-chat-note{color:var(--text-muted);margin-top:10px;font-size:12.5px}.new-chat-details{color:var(--text-muted);align-items:center;gap:4px;margin-top:4px;font-size:12px;display:inline-flex}.new-chat-details svg.is-open{transform:rotate(90deg)}.new-chat-details-text{background:var(--bg-code);max-height:200px;color:var(--text-code);border-radius:var(--radius-md);font-family:var(--font-mono);white-space:pre-wrap;margin-top:6px;padding:8px 10px;font-size:11.5px;overflow:auto}.new-chat-docs{margin-top:8px}.new-chat-doc-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.new-chat-doc{border:1px solid var(--border-light);border-radius:var(--radius-full);max-width:100%;color:var(--text-secondary);align-items:center;gap:5px;padding:3px 4px 3px 9px;font-size:12.5px;display:inline-flex}.new-chat-doc span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.new-chat-doc-remove{border-radius:var(--radius-full);color:var(--text-muted);padding:2px;display:inline-flex}.new-chat-doc-remove:hover{color:var(--text-primary)}.cloud-prices{flex-direction:column;gap:4px;display:flex}.cloud-prices-list{flex-direction:column;gap:2px;margin:0;padding:0;font-size:12.5px;list-style:none;display:flex}.cloud-prices-list li{flex-wrap:wrap;justify-content:space-between;gap:2px 12px;display:flex}.cloud-prices-name{color:var(--text-primary)}.cloud-prices-note,.cloud-prices-price{color:var(--text-secondary)}.model-row-meta.is-unknown-price{color:var(--accent-yellow)}.spending-total{margin:0}.spending-warning{color:var(--accent-yellow);flex-direction:column;align-items:flex-start;gap:6px;margin:0;display:flex}.spending-warning p{margin:0}.spending-limit-label{color:var(--text-secondary);white-space:nowrap;align-self:center;font-size:12.5px}.start-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px;list-style:none;display:grid}.start-card{border:1px solid var(--border-light);border-radius:var(--radius-lg);width:100%;height:100%;color:var(--text-primary);text-align:left;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.start-card:hover:not(:disabled){background:var(--bg-hover)}.start-card:disabled{opacity:.6}.start-card-title{align-items:center;gap:4px;font-size:13.5px;font-weight:600;display:inline-flex}.start-card-title svg{color:var(--text-muted)}.start-card-note{color:var(--text-secondary);font-size:12.5px}@media (width<=480px){.start-cards{grid-template-columns:1fr}}.setup{background:var(--bg-primary);flex:1;padding:48px 16px;overflow-y:auto}.setup-inner{max-width:620px;margin:0 auto}.setup-title{color:var(--text-primary);font-size:22px;font-weight:600}.setup-lede{color:var(--text-secondary);margin:6px 0 24px;font-size:14px}.setup-steps{flex-direction:column;gap:4px;list-style:none;display:flex}.setup-step{border-bottom:1px solid var(--border);padding:10px 0}.setup-step-head{align-items:center;gap:10px;display:flex}.setup-step-num{border:1px solid var(--border-light);border-radius:var(--radius-full);width:24px;height:24px;color:var(--text-muted);flex-shrink:0;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.setup-step-label{color:var(--text-secondary);font-size:14px}.setup-step-detail{color:var(--text-muted)}.setup-step.is-current .setup-step-label,.setup-step.is-active .setup-step-label{color:var(--text-primary);font-weight:600}.setup-step.is-done .setup-step-num{border-color:var(--accent-green);color:var(--accent-green)}.setup-step.is-active .setup-step-num{border-color:var(--accent-light);color:var(--accent)}.setup-step.is-failed .setup-step-num,.setup-step.is-cancelled .setup-step-num{border-color:var(--danger);color:var(--danger)}.setup-step-body{flex-direction:column;gap:10px;margin:10px 0 4px 34px;display:flex}.setup-choices{flex-direction:column;gap:6px;display:flex}.setup-choice{border:1px solid var(--border-light);border-radius:var(--radius-lg);color:var(--text-primary);text-align:left;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.setup-choice svg{color:var(--text-secondary);flex-shrink:0;margin-top:2px}.setup-choice:hover{background:var(--bg-hover)}.setup-choice.is-active{border-color:var(--accent-light);background:var(--accent-dim)}.setup-choice.is-disabled{opacity:.5;cursor:not-allowed}.setup-choice-title{font-size:14px;font-weight:600;display:block}.setup-choice-note{color:var(--text-secondary);font-size:13px;display:block}.setup-start{align-self:flex-start}.setup-lemonade{border:1px solid var(--accent-light);border-radius:var(--radius-lg);background:var(--accent-dim);flex-direction:column;gap:8px;padding:10px 12px;display:flex}.setup-hint{color:var(--text-secondary);font-size:13px}.setup-hint code{font-family:var(--font-mono);font-size:12.5px}.setup-error{color:var(--danger);overflow-wrap:anywhere;font-size:13px}.setup-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.setup-row .settings-input{flex:1;min-width:200px}.setup-progress{width:100%;height:6px;accent-color:var(--accent-solid)}.setup-log{margin-top:16px}.setup-log-toggle{color:var(--text-secondary);align-items:center;gap:4px;font-size:13px;display:inline-flex}.setup-log-toggle svg{transition:transform var(--duration-fast) var(--ease)}.setup-log-toggle svg.is-open{transform:rotate(90deg)}.setup-log-pre{background:var(--bg-code);max-height:260px;color:var(--text-code);border-radius:var(--radius-md);font-family:var(--font-mono);white-space:pre-wrap;margin-top:8px;padding:10px 12px;font-size:12px;overflow:auto}.setup-done{border:1px solid var(--accent-green);border-radius:var(--radius-lg);color:var(--text-primary);flex-direction:column;gap:10px;margin-top:24px;padding:14px 16px;display:flex}.setup-check{flex-direction:column;gap:4px;list-style:none;display:flex}.setup-check-row{grid-template-columns:16px 64px 1fr;align-items:center;gap:6px;font-size:13px;display:grid}.setup-check-row svg{color:var(--text-muted)}.setup-check-row.is-ok svg{color:var(--accent-green)}.setup-check-label{color:var(--text-muted)}.setup-check-value{color:var(--text-primary);overflow-wrap:anywhere}.setup-step-action{flex-direction:column;gap:8px;padding:14px 0 4px;list-style:none;display:flex}.setup-done-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.setup-hint .spin{vertical-align:-2px}.version-picker-overlay{background:var(--bg-modal-overlay);z-index:9000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.version-picker-dialog{background:var(--bg-primary);border:1px solid var(--border);border-radius:10px;flex-direction:column;width:min(520px,94vw);max-height:80vh;display:flex;box-shadow:0 8px 32px #00000080}.version-picker-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.version-picker-header h3{color:var(--text-primary);margin:0;font-size:15px;font-weight:600}.version-picker-close{cursor:pointer;color:var(--text-secondary);transition:color var(--duration-fast) var(--ease), background var(--duration-fast) var(--ease);background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:20px;line-height:1}.version-picker-close:hover{color:var(--text-primary);background:var(--bg-hover)}.version-picker-body{flex:1;padding:8px 0;overflow-y:auto}.version-picker-loading{color:var(--text-secondary);justify-content:center;align-items:center;gap:10px;padding:32px 20px;font-size:14px;display:flex}.version-picker-spinner{border:2px solid var(--border);border-top-color:var(--accent);width:18px;height:18px;animation:vp-spin var(--duration-spin) var(--ease-linear) infinite;border-radius:50%;flex-shrink:0}@keyframes vp-spin{to{transform:rotate(360deg)}}.version-picker-error{color:var(--text-secondary);padding:20px;font-size:13px;line-height:1.5}.version-picker-error a{color:var(--accent);text-decoration:underline}.version-picker-list{margin:0;padding:0;list-style:none}.version-picker-row{cursor:pointer;text-align:left;width:100%;color:var(--text-primary);transition:background var(--duration-fast) var(--ease);border:none;border-bottom:1px solid var(--border);background:0 0;align-items:center;gap:10px;padding:10px 20px;display:flex}.version-picker-row:last-child{border-bottom:none}.version-picker-row:hover:not([aria-disabled=true]){background:var(--bg-hover)}.version-picker-row[aria-disabled=true]{cursor:default;opacity:.65}.vp-version{min-width:70px;font-size:14px;font-weight:600;font-family:var(--font-mono)}.vp-date{color:var(--text-secondary);flex:1;font-size:12px}.vp-badge{white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:500}.vp-badge-current{background:var(--accent-green-dim);color:var(--accent-green);border:1px solid var(--accent-green)}.vp-badge-pinned{background:var(--accent-dim);color:var(--accent);border:1px solid var(--accent)}.vp-arrow{color:var(--text-secondary);font-size:14px}.version-picker-more{color:var(--text-secondary);border-top:1px solid var(--border);margin:0;padding:10px 20px 14px;font-size:12px}.version-picker-more a{color:var(--accent);text-decoration:underline}.version-picker-confirm{flex-direction:column;gap:16px;padding:20px;display:flex}.version-picker-confirm p{color:var(--text-primary);margin:0;font-size:14px;line-height:1.5}.version-picker-confirm p strong{color:var(--accent)}.vp-confirm-note{font-size:12px;color:var(--text-secondary)!important}.vp-confirm-actions{justify-content:flex-end;gap:10px;display:flex}.vp-btn-cancel{border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:border-color var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease);background:0 0;border-radius:6px;padding:7px 16px;font-size:13px}.vp-btn-cancel:hover{border-color:var(--text-secondary);color:var(--text-primary)}.vp-btn-confirm{background:var(--accent-fill);color:var(--accent-fill-text);cursor:pointer;transition:opacity var(--duration-fast) var(--ease);border:none;border-radius:6px;padding:7px 18px;font-size:13px;font-weight:600}.vp-btn-confirm:hover:not(:disabled){opacity:.85}.vp-btn-confirm:disabled{opacity:.5;cursor:not-allowed}.settings-section{background:var(--bg-primary);border:1px solid var(--border-light);border-radius:10px;margin-bottom:10px;padding:18px 20px}.settings-section:last-child{margin-bottom:0}.settings-section h4{font-size:var(--fs-label);font-weight:600;font-family:var(--font-sans);color:var(--text-secondary);margin-bottom:14px}.status-grid{flex-direction:column;gap:8px;display:flex}.status-row{border-radius:var(--radius-md);background:var(--bg-secondary);border:1px solid var(--border-light);transition:border-color var(--duration) var(--ease);justify-content:space-between;align-items:center;gap:8px;padding:10px 14px;display:flex}.status-row:hover{border-color:var(--border)}.status-row--has-hint{align-items:flex-start}.status-label{font-size:13px;font-family:var(--font-sans);flex-shrink:0;padding-top:1px}.status-value-wrap{flex-direction:column;align-items:flex-end;gap:3px;min-width:0;display:flex}.status-value{font-size:13px;font-weight:600;font-family:var(--font-sans);font-variant-numeric:tabular-nums}.status-value.ok{color:var(--accent-green)}.status-value.warn{color:var(--accent-yellow)}.model-server-value{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-primary);overflow:hidden}.model-server-backend{margin-top:12px}.status-hint{color:var(--text-muted);font-size:11px;font-weight:400}.status-hint code{font-family:var(--font-mono);background:var(--tint-hover);color:var(--text-secondary);white-space:nowrap;border-radius:2px;padding:1px 5px;font-size:10.5px}[data-theme=dark] .status-hint code{background:color-mix(in srgb, var(--text-primary) 7%, transparent)}.status-error{text-align:center;color:var(--text-muted);font-family:var(--font-sans);padding:20px}.status-error code{background:var(--bg-tertiary);border-radius:var(--radius-md);font-family:var(--font-mono);border:1px solid var(--border);margin-top:10px;padding:5px 14px;font-size:13px;display:inline-block}.setting-row{font-size:14px;font-family:var(--font-sans);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.setting-row-path{gap:16px}.setting-row-path>:first-child{flex-shrink:0}.setting-row-path>:last-child{text-align:right;overflow-wrap:anywhere;min-width:0}.setting-path{font-family:var(--font-mono);color:var(--text-secondary);background:var(--bg-tertiary);border-radius:var(--radius-sm);border:1px solid var(--border-light);padding:3px 10px;font-size:12px}.model-override-desc{color:var(--text-secondary);font-size:13px;line-height:1.5;font-family:var(--font-sans);margin-bottom:12px}.model-input-row{align-items:stretch;gap:8px;display:flex}.model-input{font-size:13px;font-family:var(--font-mono);background:var(--bg-secondary);border:1px solid var(--border-light);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--duration) var(--ease);outline:none;flex:1;padding:8px 12px}.model-input:focus{border-color:var(--accent)}.model-input::placeholder{color:var(--text-muted);font-size:12px}.model-input.has-override{border-color:var(--accent-green)}.model-input:disabled{opacity:.6}.model-btn-group{flex-shrink:0;gap:6px;display:flex}.btn-model-save{font-size:13px;font-weight:500;font-family:var(--font-sans);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;transition:all var(--duration) var(--ease);padding:8px 16px}.btn-model-save:hover:not(:disabled){background:var(--accent-fill-hover);color:var(--accent-fill-text);border-color:var(--accent-light)}.btn-model-save:disabled{opacity:.4;cursor:not-allowed}.btn-model-save.saved{color:var(--accent-green);border-color:var(--accent-green)}.model-warning{border-radius:var(--radius-md);background:color-mix(in srgb, var(--accent-yellow) 8%, transparent);border:1px solid color-mix(in srgb, var(--accent-yellow) 25%, transparent);color:var(--accent-yellow);gap:10px;margin-top:12px;padding:12px 14px;display:flex}.model-warning svg{flex-shrink:0;margin-top:1px}.model-warning-content{flex:1}.model-warning-content strong{font-size:13px;font-weight:600;font-family:var(--font-sans);margin-bottom:4px;display:block}.model-warning-content p{color:var(--text-secondary);font-size:12px;line-height:1.5;font-family:var(--font-sans);margin-bottom:10px}.model-status-hint{color:var(--text-muted);font-size:12px;line-height:1.5;font-family:var(--font-sans);margin-top:8px}.model-status-hint code{font-family:var(--font-mono);border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border-light);color:var(--text-secondary);white-space:nowrap;padding:1px 6px;font-size:11px}.ctx-preset-row{flex-wrap:wrap;gap:6px;margin:8px 0 10px;display:flex}.btn-ctx-preset{font-size:var(--fs-label);font-family:var(--font-sans);background:var(--bg-tertiary);border:1px solid var(--border-light);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:border-color var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease), background var(--duration-fast) var(--ease);font-variant-numeric:tabular-nums;padding:4px 10px}.btn-ctx-preset:hover:not(:disabled){border-color:var(--border);color:var(--text-primary)}.btn-ctx-preset.active{background:var(--accent-dim);border-color:var(--accent);color:var(--text-primary)}.btn-ctx-preset:disabled{opacity:.5;cursor:not-allowed}.danger-divider{background:var(--border);height:1px;margin:16px 0}.danger-warning{color:var(--text-muted);font-size:12px;line-height:1.5;font-family:var(--font-sans);margin-bottom:12px}.setting-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.loading-text{color:var(--text-muted);text-align:center;font-size:13px;font-family:var(--font-sans);padding:16px}.about-info p{font-size:14px;font-weight:500;font-family:var(--font-sans)}.about-sub{color:var(--text-secondary);font-size:13px;font-weight:400;line-height:1.6;font-family:var(--font-sans);margin-top:6px}.model-action-row{border-radius:var(--radius-md);border:1px solid var(--border-light);background:var(--bg-secondary);justify-content:space-between;align-items:center;gap:12px;margin-top:10px;padding:12px 14px;display:flex}.model-action-row--download{border-color:color-mix(in srgb, var(--accent-blue) 25%, transparent);background:color-mix(in srgb, var(--accent-blue) 5%, transparent)}.model-action-row--load{border-color:color-mix(in srgb, var(--accent-yellow) 25%, transparent);background:color-mix(in srgb, var(--accent-yellow) 5%, transparent)}.model-action-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.model-action-label{font-size:13px;font-weight:600;font-family:var(--font-sans);color:var(--text-primary)}.model-action-desc{color:var(--text-secondary);font-size:12px;font-family:var(--font-sans)}.btn-model-action{font-size:13px;font-weight:500;font-family:var(--font-sans);border-radius:var(--radius-md);border:1px solid var(--border);background:var(--bg-tertiary);color:var(--text-primary);cursor:pointer;white-space:nowrap;transition:all var(--duration) var(--ease);flex-shrink:0;align-items:center;gap:5px;padding:6px 14px;display:inline-flex}.btn-model-action:disabled{opacity:.5;cursor:not-allowed}.btn-model-action--download:hover:not(:disabled){background:color-mix(in srgb, var(--accent-blue) 15%, transparent);border-color:var(--accent-blue);color:var(--accent-blue)}.btn-model-action--load:hover:not(:disabled){background:color-mix(in srgb, var(--accent-yellow) 15%, transparent);border-color:var(--accent-yellow);color:var(--accent-yellow)}.force-redownload-row{border-radius:var(--radius-md);background:var(--bg-secondary);border:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:8px 14px;display:flex}.force-redownload-label{color:var(--text-muted);font-size:12px;font-family:var(--font-sans)}.btn-force-redownload{font-size:12px;font-weight:500;font-family:var(--font-sans);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:all var(--duration) var(--ease);flex-shrink:0;align-items:center;gap:5px;padding:4px 12px;display:inline-flex}.btn-force-redownload:disabled{opacity:.5;cursor:not-allowed}.btn-force-redownload:hover:not(:disabled){border-color:var(--accent-yellow);color:var(--accent-yellow)}.btn-spinner{animation:spin var(--duration-spin) var(--ease-linear) infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.mcp-dot--running{background:var(--accent-green);opacity:1}.btn-mcp-toggle--start{background:color-mix(in srgb, var(--accent-green) 10%, transparent);border-color:color-mix(in srgb, var(--accent-green) 35%, transparent);color:var(--accent-green)}.btn-mcp-toggle--start:hover:not(:disabled){background:color-mix(in srgb, var(--accent-green) 20%, transparent);border-color:var(--accent-green)}.btn-mcp-toggle--stop{background:color-mix(in srgb, var(--danger) 8%, transparent);border-color:color-mix(in srgb, var(--danger) 30%, transparent);color:var(--danger)}.btn-mcp-toggle--stop:hover:not(:disabled){background:color-mix(in srgb, var(--danger) 15%, transparent);border-color:var(--danger)}.toggle-switch{flex-shrink:0;width:30px;height:17px;display:inline-block;position:relative}.toggle-switch input{opacity:0;width:0;height:0;position:absolute}.toggle-track{background:var(--border);transition:background var(--duration) var(--ease);cursor:pointer;border-radius:999px;position:absolute;inset:0}.toggle-track:before{content:"";background:var(--switch-knob);width:13px;height:13px;transition:transform var(--duration) var(--ease);border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.toggle-switch input:checked+.toggle-track{background:var(--accent-solid)}.toggle-switch input:checked+.toggle-track:before{transform:translate(13px)}.toggle-switch input:focus-visible+.toggle-track{outline:2px solid var(--accent);outline-offset:2px}.toggle-switch input:disabled+.toggle-track{opacity:.5;cursor:not-allowed}.settings-overlay{z-index:200;background:var(--bg-modal-overlay);animation:fadeIn var(--duration-fast) var(--ease);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.settings-dialog{background:var(--bg-primary);border:1px solid var(--border-light);border-radius:var(--radius-xl);width:min(920px,100%);height:min(680px,100%);box-shadow:var(--shadow-lg);display:flex;overflow:hidden}.settings-nav{background:var(--bg-sidebar);border-right:1px solid var(--border-light);flex-direction:column;flex-shrink:0;gap:2px;width:200px;padding:16px 10px;display:flex;overflow-y:auto}.settings-nav-title{color:var(--text-primary);padding:4px 10px 12px;font-size:16px;font-weight:600}.settings-nav-item{border-radius:var(--radius-md);min-height:34px;color:var(--text-secondary);text-align:left;padding:6px 10px;font-size:13.5px}.settings-nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-nav-item.is-active{background:var(--bg-active);color:var(--text-primary);font-weight:600}.settings-body{flex:1;min-width:0;padding:24px 28px 32px;position:relative;overflow-y:auto}.settings-close{border-radius:var(--radius-md);width:32px;height:32px;color:var(--text-secondary);justify-content:center;align-items:center;display:inline-flex;position:absolute;top:14px;right:14px}.settings-close:hover{background:var(--bg-hover);color:var(--text-primary)}.settings-pane{flex-direction:column;gap:14px;max-width:640px;display:flex}.settings-pane>button{align-self:flex-start}.settings-pane-title{color:var(--text-primary);font-size:18px;font-weight:600}.settings-pane-lede{color:var(--text-secondary);font-size:13.5px;line-height:1.55}.settings-pane code,.settings-hint code{font-family:var(--font-mono);font-size:12.5px}.settings-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-lg);flex-direction:column;gap:12px;padding:14px;display:flex}.settings-field{flex-direction:column;gap:6px;display:flex}.settings-label{color:var(--text-primary);font-size:13.5px;font-weight:600}.settings-hint,.settings-note{color:var(--text-secondary);font-size:13px}.settings-ok{color:var(--accent-green);font-size:13px}.settings-error{color:var(--danger);overflow-wrap:anywhere;font-size:13px}.settings-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.settings-row-between{justify-content:space-between}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px;display:grid}.settings-input{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-primary);min-width:0;min-height:34px;color:var(--text-primary);flex:1;padding:6px 10px;font-size:13.5px}.settings-input:focus{border-color:var(--accent-light);outline:none}.settings-progress{color:var(--text-secondary);flex-direction:column;gap:4px;font-size:13px;display:flex}.settings-progress progress{width:100%;height:6px;accent-color:var(--accent-solid)}.segmented{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-card);align-self:flex-start;padding:2px;display:inline-flex}.segmented button{border-radius:var(--radius-sm);min-height:30px;color:var(--text-secondary);padding:4px 12px;font-size:13px}.segmented button.is-active{background:var(--bg-primary);color:var(--text-primary);box-shadow:var(--shadow-sm)}.palette-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.palette-tile{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-card);min-height:40px;color:var(--text-primary);text-align:left;transition:border-color var(--duration) var(--ease);align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.palette-tile:hover{border-color:var(--text-muted)}.palette-tile.is-active{border-color:var(--accent-solid);box-shadow:0 0 0 1px var(--accent-solid)}.palette-swatch{border-radius:var(--radius-xs);border:1px solid var(--border-light);flex:none;display:inline-flex;overflow:hidden}.palette-swatch i{width:12px;height:20px}.palette-custom{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:10px;display:flex}.palette-color{color:var(--text-primary);cursor:pointer;align-items:center;gap:10px;font-size:13px;display:flex}.palette-color span{flex-direction:column;display:flex}.palette-color small{color:var(--text-muted);font-size:var(--fs-label)}.palette-color input[type=color]{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--bg-card);cursor:pointer;width:36px;height:36px;padding:2px}.palette-custom .settings-hint{flex-basis:100%;margin:0}.provider-tabs{flex-wrap:wrap;gap:6px;display:flex}.provider-tab{border:1px solid var(--border-light);border-radius:var(--radius-full);min-height:34px;color:var(--text-secondary);align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:inline-flex}.provider-tab:hover{background:var(--bg-hover)}.provider-tab.is-active{border-color:var(--accent-light);color:var(--text-primary);background:var(--accent-dim)}.provider-tab.is-disabled{opacity:.5;cursor:not-allowed}.provider-tab-dot{border-radius:var(--radius-full);background:var(--accent-green);width:7px;height:7px}.model-list,.skill-list,.grant-list{flex-direction:column;list-style:none;display:flex}.model-row,.skill-row{border-bottom:1px solid var(--border-light);justify-content:space-between;align-items:center;gap:12px;padding:9px 0;display:flex}.model-row:last-child,.skill-row:last-child{border-bottom:none}.model-row-text,.skill-row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.model-row-name,.skill-row-name{color:var(--text-primary);overflow-wrap:anywhere;font-size:13.5px}.model-row-rank{color:var(--accent);margin-left:8px;font-size:12px}.model-row-meta,.skill-row-meta,.skill-row-desc{color:var(--text-secondary);font-size:12.5px}.skill-row-desc{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.model-row>button,.skill-row>button{white-space:nowrap;flex-shrink:0}.model-row-current{color:var(--accent-green);white-space:nowrap;align-items:center;gap:4px;font-size:12.5px;display:inline-flex}.grant-row{color:var(--text-primary);justify-content:space-between;align-items:center;gap:12px;padding:6px 0;font-size:13px;display:flex}.shortcut-list{flex-direction:column;gap:4px;display:flex}.shortcut-row{color:var(--text-secondary);gap:12px;font-size:13px;display:flex}.shortcut-row dt{min-width:120px}.shortcut-row kbd{border:1px solid var(--border-light);border-radius:var(--radius-xs);background:var(--bg-card);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--fs-caption);padding:1px 6px}@media (width<=768px){.settings-overlay{padding:0}.settings-dialog{border-radius:0;flex-direction:column;width:100%;height:100%}.settings-nav{border-right:none;border-bottom:1px solid var(--border-light);flex-flow:wrap;width:100%;padding:10px 52px 10px 10px;overflow-y:visible}.settings-nav-title{display:none}.settings-nav-item{white-space:nowrap}.settings-close{top:10px;right:10px}.settings-body{padding:18px 16px 28px}}.skill-group{margin-top:18px}.skill-group-title{color:var(--text-primary);margin:0;font-size:14px;font-weight:600}.connection-banner{font-size:12px;font-weight:500;font-family:var(--font-sans);animation:slideDown var(--duration) var(--ease);z-index:40;flex-shrink:0;align-items:center;gap:10px;padding:10px 24px;line-height:1.5;display:flex}.connection-banner--error{background:color-mix(in srgb, var(--danger) 8%, var(--bg-primary));color:var(--danger);border-bottom:1px solid color-mix(in srgb, var(--danger) 28%, var(--bg-primary))}.connection-banner--warning{background:color-mix(in srgb, var(--accent-yellow) 8%, var(--bg-primary));color:var(--accent-yellow);border-bottom:1px solid color-mix(in srgb, var(--accent-yellow) 28%, var(--bg-primary))}.connection-banner--init{background:color-mix(in srgb, var(--accent-blue) 8%, var(--bg-primary));color:var(--accent-blue);border-bottom:1px solid color-mix(in srgb, var(--accent-blue) 28%, var(--bg-primary))}.connection-banner__icon{flex-shrink:0;align-items:center;display:flex}.connection-banner__text{flex:1;min-width:0}.connection-banner__hint{opacity:.8;font-size:11px;font-weight:400}.connection-banner__hint code{font-family:var(--font-mono);border-radius:var(--radius-sm);background:var(--tint-hover);padding:2px 7px;font-size:11px}.connection-banner__dismiss{border-radius:var(--radius-sm);opacity:.5;width:26px;height:26px;transition:opacity var(--duration-fast) var(--ease);flex-shrink:0;justify-content:center;align-items:center;display:flex}.connection-banner__dismiss:hover{opacity:1}.connection-banner__retry{border-radius:var(--radius-md);font-size:var(--fs-label);font-weight:600;font-family:var(--font-sans);transition:all var(--duration) var(--ease);flex-shrink:0;padding:5px 14px}.connection-banner--error .connection-banner__retry{background:var(--danger);color:var(--text-inverse)}.connection-banner--error .connection-banner__retry:hover{background:color-mix(in srgb, var(--danger) 82%, var(--text-primary))}.connection-banner--warning .connection-banner__retry{background:var(--accent-yellow);color:var(--text-inverse)}.connection-banner--warning .connection-banner__retry:hover{background:color-mix(in srgb, var(--accent-yellow) 82%, var(--text-primary))}.connection-banner__loading{font-size:var(--fs-label);font-weight:600;font-family:var(--font-sans);opacity:.7;flex-shrink:0;align-items:center;gap:5px;display:flex}.connection-banner__spinner{animation:spin var(--duration-spin) var(--ease-linear) infinite}.connection-banner__progress{opacity:1;gap:8px}.connection-banner__progress-bar{background-color:color-mix(in srgb, var(--text-primary) 15%, transparent);border-radius:3px;flex-shrink:0;width:100px;height:6px;display:inline-block;overflow:hidden}.connection-banner__progress-fill{height:100%;transition:width var(--duration) var(--ease);background-color:currentColor;max-width:100%;display:block}.connection-banner__progress-label{font-variant-numeric:tabular-nums;white-space:nowrap}@keyframes slideDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(12px)}}@media (width<=768px){.connection-banner{padding:8px 16px;padding-left:var(--sidebar-toggle-clearance);font-size:11px}}.update-chip{z-index:1200;white-space:nowrap;background:color-mix(in srgb, var(--bg-card) 92%, transparent);max-width:360px;color:var(--text-primary);border:1px solid color-mix(in srgb, var(--text-primary) 8%, transparent);-webkit-backdrop-filter:blur(6px);animation:update-chip-fade-in var(--duration) var(--ease);border-radius:999px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;font-weight:500;line-height:1.3;display:inline-flex;position:fixed;bottom:16px;right:16px;box-shadow:0 4px 14px #0000003d}@keyframes update-chip-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.update-chip__icon{opacity:.85;flex-shrink:0}.update-chip__label{text-overflow:ellipsis;overflow:hidden}.update-chip__action{color:inherit;font:inherit;cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.update-chip__action:hover,.update-chip__action:focus-visible{color:var(--accent)}.update-chip__dismiss{color:inherit;opacity:.55;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;margin-left:2px;padding:2px;display:inline-flex}.update-chip__dismiss:hover,.update-chip__dismiss:focus-visible{opacity:1;background:color-mix(in srgb, var(--text-primary) 8%, transparent)}.update-chip--available,.update-chip--downloading{border-color:color-mix(in srgb, var(--accent-blue) 40%, transparent)}.update-chip--ready{background:color-mix(in srgb, var(--accent-green) 92%, transparent);border-color:color-mix(in srgb, var(--accent-green) 55%, transparent);color:var(--text-inverse)}.update-chip--error{background:color-mix(in srgb, var(--danger) 92%, transparent);border-color:color-mix(in srgb, var(--danger) 55%, transparent);color:var(--text-inverse)}.notification-center{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-lg);width:400px;max-height:600px;box-shadow:var(--shadow-lg);animation:notifSlideIn var(--duration) var(--ease);flex-direction:column;display:flex;overflow:hidden}[data-theme=dark] .notification-center{background:color-mix(in srgb, var(--bg-primary) 92%, transparent);-webkit-backdrop-filter:blur(20px)saturate(1.2)}@keyframes notifSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.notification-center-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px 16px 12px;display:flex}.notification-center-title-row{align-items:center;gap:8px;display:flex}.notification-center-title{color:var(--text-primary);margin:0;font-size:15px;font-weight:700}.notification-center-badge{border-radius:var(--radius-full);background:var(--text-primary);min-width:20px;height:20px;color:var(--bg-primary);justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:700;display:flex}.notification-center-close{color:var(--text-muted);transition:color var(--duration-fast) var(--ease)}.notification-center-close:hover{color:var(--text-primary)}.notification-filter-bar{border-bottom:1px solid var(--border-light);scrollbar-width:none;gap:2px;padding:8px 12px;display:flex;overflow-x:auto}.notification-filter-bar::-webkit-scrollbar{display:none}.notification-filter-tab{border-radius:var(--radius-full);color:var(--text-secondary);white-space:nowrap;transition:all var(--duration-fast) var(--ease);padding:4px 10px;font-size:12px;font-weight:500}.notification-filter-tab:hover{background:var(--bg-hover);color:var(--text-primary)}.notification-filter-tab.active{background:var(--bg-active);color:var(--text-primary);font-weight:600}.notification-list{scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:1;min-height:100px;overflow-y:auto}.notification-list::-webkit-scrollbar{width:5px}.notification-list::-webkit-scrollbar-track{background:0 0}.notification-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.notification-list::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.notification-empty{color:var(--text-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 24px;font-size:14px;display:flex}.notification-item{border-bottom:1px solid var(--border-light);cursor:pointer;transition:background var(--duration-fast) var(--ease);animation:notifItemIn var(--duration) var(--ease);border-left:3px solid #0000;align-items:flex-start;gap:10px;padding:12px 16px;display:flex;position:relative}@keyframes notifItemIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.notification-item:hover{background:var(--bg-hover)}.notification-item:last-child{border-bottom:none}.notification-item.unread{background:var(--bg-secondary)}.notification-item.unread .notification-message{font-weight:500}.notification-unread-dot{border-radius:var(--radius-full);background:var(--accent);width:6px;height:6px;position:absolute;top:16px;left:6px}.notification-item.notif-type-permission{border-left-color:var(--accent)}.notification-item.notif-type-security,.notification-item.notif-type-policy{border-left-color:var(--accent-yellow)}.notification-item.notif-type-status{border-left-color:var(--accent-green)}.notification-item.notif-type-info{border-left-color:var(--accent-blue)}.notification-item.notif-type-error{border-left-color:var(--danger)}.notif-type-permission .notification-icon{color:var(--accent)}.notif-type-security .notification-icon,.notif-type-policy .notification-icon{color:var(--accent-yellow)}.notif-type-status .notification-icon{color:var(--accent-green)}.notif-type-info .notification-icon{color:var(--accent-blue)}.notif-type-error .notification-icon{color:var(--danger)}.notification-icon{flex-shrink:0;margin-top:2px}.notification-content{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.notification-content-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.notification-agent{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:600;overflow:hidden}.notification-time{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:11px}.notification-title{color:var(--text-primary);font-size:13px;font-weight:600;line-height:1.3}.notification-message{color:var(--text-secondary);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.notification-tool{color:var(--text-muted);margin-top:2px;font-size:11px}.notification-tool code{font-family:var(--font-mono);border-radius:var(--radius-xs);background:var(--bg-tertiary);color:var(--text-primary);padding:1px 4px;font-size:11px}.notification-tool em{color:var(--accent-yellow);font-style:normal}.notification-policy-reason{border-left:2px solid color-mix(in srgb, var(--accent-yellow) 45%, transparent);color:var(--text-secondary);padding-left:8px;line-height:1.45;display:block}.notification-policy-details{flex-direction:column;gap:2px;margin-top:2px;display:flex}.notification-actions{gap:8px;margin-top:6px;display:flex}.notification-action-btn{border-radius:var(--radius-sm);transition:all var(--duration-fast) var(--ease);align-items:center;gap:4px;padding:4px 12px;font-size:12px;font-weight:600;display:flex}.notification-action-allow{background:color-mix(in srgb, var(--accent-green) 12%, transparent);color:var(--accent-green);border:1px solid color-mix(in srgb, var(--accent-green) 30%, transparent)}.notification-action-allow:hover{background:color-mix(in srgb, var(--accent-green) 20%, transparent)}.notification-action-deny{background:var(--danger-dim);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 30%, transparent)}.notification-action-deny:hover{background:color-mix(in srgb, var(--danger) 20%, transparent)}.notification-response-badge{border-radius:var(--radius-full);align-items:center;width:fit-content;margin-top:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.notification-response-badge.response-allow{background:color-mix(in srgb, var(--accent-green) 12%, transparent);color:var(--accent-green)}.notification-response-badge.response-deny{background:var(--danger-dim);color:var(--danger)}.notification-dismiss{border-radius:var(--radius-sm);color:var(--text-muted);opacity:0;transition:all var(--duration-fast) var(--ease);flex-shrink:0;padding:4px}.notification-item:hover .notification-dismiss,.notification-item:focus-within .notification-dismiss{opacity:1}.notification-dismiss:hover{color:var(--text-primary);background:var(--bg-hover)}.notification-center-footer{border-top:1px solid var(--border-light);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.notification-footer-btn{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--duration-fast) var(--ease);align-items:center;gap:4px;padding:4px 10px;font-size:12px;display:flex}.notification-footer-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.notification-footer-btn:disabled{opacity:.4;cursor:default}.notification-footer-btn:disabled:hover{color:var(--text-secondary);background:0 0}.notification-footer-clear:hover{color:var(--danger)}@media (hover:none){.notification-dismiss{opacity:1}}@media (width<=480px){.notification-center{border:none;border-radius:0;width:100vw;max-height:100vh}}@font-face{font-family:Inter;src:url(./inter-latin-C2S99t-D.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;src:url(./inter-latin-ext-CFHvXkgd.woff2)format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+100-2AF,U+304,U+308,U+329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;src:url(./fraunces-latin-BwwriW9Y.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;src:url(./jetbrains-mono-latin-6fWv1k7M.woff2)format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--accent:#7a5a22;--accent-light:#9c7a43;--accent-dim:#b08d5729;--accent-dim2:#b08d5714;--accent-selection:#b08d5747;--accent-solid:#b08d57;--accent-ring:#b08d5766;--accent-fill:#eee8dd;--accent-fill-text:#7a5a22;--accent-fill-hover:#e6dccb;--accent-green:#296d32;--accent-green-dim:#296d3214;--accent-yellow:#845600;--accent-yellow-dim:#84560014;--accent-blue:#1a5dba;--accent-blue-dim:#1a5dba14;--accent-cyan:#0d677e;--accent-purple:#6b3fbf;--danger:#b4292e;--danger-dim:#b4292e14;--danger-dim2:#b4292e0a;--bg-code:#161513;--bg-code-raised:#211f1c;--border-code:#45413b;--text-code:#e2ded8;--text-code-dim:#9f9890;--code-accent:#d4b47e;--code-success:#5cc96e;--code-warning:#e5b567;--code-danger:#f2787c;--bg-primary:#faf9f7;--bg-secondary:#f6f4f1;--bg-tertiary:#eeece8;--bg-sidebar:#f3f1ed;--bg-input:#fff;--bg-card:#fff;--bg-hover:#efede9;--bg-active:#e7e4df;--bg-user-msg:#fff;--bg-modal-overlay:#1f1d1a52;--bg-recessed:#f0eeea;--switch-knob:#fff;--tint-subtle:#1f1d1a08;--tint-hover:#1f1d1a0d;--text-primary:#1f1d1a;--text-secondary:#5c5650;--text-muted:#6e6862;--text-inverse:#fff;--border:#c4beb6;--border-light:#c4beb6;--border-recessed:#bdb7af;--shadow-sm:inset 0 1px 0 #ffffffe6, 0 0 0 1px #34281812, 0 1px 2px #3428180d, 0 3px 8px #3428180a;--shadow-md:inset 0 1px 0 #ffffffe6, 0 0 0 1px #34281812, 0 2px 4px #3428180f, 0 10px 24px #34281817;--shadow-lg:inset 0 1px 0 #ffffffe6, 0 0 0 1px #34281812, 0 4px 10px #34281812, 0 28px 64px #3428182e;--shadow-press:0 0 0 1px #34281812, 0 1px 1px #3428180a;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:10px;--radius-xl:12px;--radius-full:9999px;--sidebar-toggle-clearance:58px;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Roboto, Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", "SF Mono", "Fira Code", "Consolas", "Monaco", monospace;--font-display:var(--font-sans);--font-greeting:"Fraunces", Georgia, "Times New Roman", serif;--fs-caption:11px;--fs-label:12px;--fs-ui:13px;--fs-body:14px;--fs-prose:15px;--fs-title:18px;--sidebar-w:260px;--content-w:760px;--titlebar-h:48px;--ease:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.45, 0, .55, 1);--ease-linear:linear;--ease-step:steps(2, start);--ease-spring:cubic-bezier(.34, 1.36, .64, 1);--duration-fast:.12s;--duration:.2s;--duration-slow:.32s;--duration-spring:.44s;--duration-press:80ms;--duration-spin:.9s;--duration-blink:1s;--duration-pulse:1.6s;--duration-shimmer:2.4s;--stagger:80ms;--toast-hold:2.5s}[data-theme=dark]{--accent:#d4b47e;--accent-light:#e0c596;--accent-dim:#d4b47e29;--accent-dim2:#d4b47e14;--accent-selection:#d4b47e42;--accent-solid:#d4b47e;--accent-ring:#d4b47e5c;--accent-fill:#383227;--accent-fill-text:#d4b47e;--accent-fill-hover:#443b2c;--accent-green:#5cc96e;--accent-green-dim:#5cc96e24;--accent-yellow:#e5b567;--accent-yellow-dim:#e5b56724;--accent-blue:#6fb4ff;--accent-blue-dim:#6fb4ff24;--accent-cyan:#45c8de;--accent-purple:#b39af0;--danger:#f2787c;--danger-dim:#f2787c24;--danger-dim2:#f2787c12;--bg-primary:#1a1917;--bg-secondary:#1c1b19;--bg-tertiary:#2c2b27;--bg-sidebar:#161513;--bg-input:#24231f;--bg-card:#24231f;--bg-hover:#2a2925;--bg-active:#33312c;--bg-user-msg:#24231f;--bg-modal-overlay:#0808079e;--bg-recessed:#141311;--switch-knob:#efece6;--text-primary:#efece6;--text-secondary:#b3ada5;--text-muted:#958f87;--text-inverse:#1a1917;--border:#4a4740;--border-light:#4a4740;--border-recessed:#45423c;--shadow-sm:inset 0 1px 0 #ffffff0f, 0 0 0 1px #ffffff0a, 0 1px 2px #00000059, 0 4px 10px #00000040;--shadow-md:inset 0 1px 0 #ffffff0f, 0 0 0 1px #ffffff0d, 0 2px 6px #0006, 0 14px 30px #0006;--shadow-lg:inset 0 1px 0 #ffffff0f, 0 0 0 1px #ffffff0f, 0 6px 14px #00000073, 0 32px 72px #0009;--shadow-press:0 0 0 1px #ffffff0a;--tint-subtle:#efece608;--tint-hover:#efece60f}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body,#root{height:100%;font-family:var(--font-sans);font-size:var(--fs-body);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.55;overflow:hidden}[data-theme=dark] #root:after{content:"";pointer-events:none;z-index:1;opacity:.4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='0.025'/%3E%3C/svg%3E");position:fixed;inset:0}button{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none}input,textarea{font:inherit;color:var(--text-primary);background:var(--bg-input)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent-selection);color:inherit}::selection{background:var(--accent-selection);color:inherit}.app{height:100dvh;display:flex;position:relative}.main-content{flex-direction:column;flex:1;min-width:0;display:flex;position:relative;overflow:hidden}.notification-center-popover{z-index:120;position:fixed;top:52px;right:16px}:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.btn-primary,.btn-secondary,.btn-danger{border-radius:var(--radius-md);height:32px;font-family:var(--font-sans);font-size:var(--fs-ui);white-space:nowrap;transition:background var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease), box-shadow var(--duration) var(--ease), transform var(--duration) var(--ease-spring);justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:600;display:inline-flex}.btn-primary{background:var(--accent-fill);color:var(--accent-fill-text)}.btn-primary:hover{background:var(--accent-fill-hover)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary)}.btn-secondary:hover{background:var(--bg-active)}.btn-danger{background:var(--danger-dim);color:var(--danger)}.btn-primary:hover,.btn-secondary:hover,.btn-danger:hover{box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn-primary:active,.btn-secondary:active,.btn-danger:active{box-shadow:var(--shadow-press);transition-duration:var(--duration-press);transform:translateY(0)scale(.97)}.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled{opacity:.45;cursor:not-allowed;box-shadow:none;transform:none}.btn-icon,.btn-icon-sm{border-radius:var(--radius-md);color:var(--text-secondary);transition:background var(--duration-fast) var(--ease), color var(--duration-fast) var(--ease), transform var(--duration-fast) var(--ease);justify-content:center;align-items:center;display:flex}.btn-icon{width:32px;height:32px}.btn-icon-sm{width:28px;height:28px}.btn-icon:hover,.btn-icon-sm:hover{background:var(--bg-hover);color:var(--text-primary)}.btn-icon:active,.btn-icon-sm:active{transition-duration:var(--duration-press);transform:scale(.94)}.beta-badge{height:20px;font-family:var(--font-sans);font-size:var(--fs-caption);border-radius:var(--radius-xs);background:var(--bg-tertiary);color:var(--text-secondary);vertical-align:middle;align-items:center;padding:0 7px;font-weight:600;display:inline-flex}.modal-overlay{z-index:100;background:var(--bg-modal-overlay);-webkit-backdrop-filter:blur(16px)saturate(1.2);animation:fadeIn var(--duration-fast) var(--ease);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-panel{background:var(--bg-card);border-radius:var(--radius-xl);width:560px;max-width:92%;max-height:85vh;box-shadow:var(--shadow-lg);animation:slideUp var(--duration) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.modal-header{flex-shrink:0;justify-content:space-between;align-items:center;padding:20px 18px 8px 24px;display:flex}.modal-header h3{font-size:var(--fs-title);font-weight:600;font-family:var(--font-sans);letter-spacing:-.015em;color:var(--text-primary)}.modal-body{scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:1;padding:12px 24px 24px;overflow-y:auto}.modal-body::-webkit-scrollbar{width:5px}.modal-body::-webkit-scrollbar-track{background:0 0}.modal-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}.modal-body::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}@keyframes modalOverlayOut{0%{opacity:1}to{opacity:0}}@keyframes modalPanelOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(12px)}}.sidebar-overlay{z-index:50;background:var(--bg-modal-overlay);-webkit-backdrop-filter:blur(8px);animation:fadeIn var(--duration-fast) var(--ease);display:none;position:fixed;inset:0}.sidebar-toggle{z-index:51;border-radius:var(--radius-md);background:var(--bg-secondary);border:1px solid var(--border);width:38px;height:38px;color:var(--text-primary);box-shadow:var(--shadow-sm);transition:all var(--duration) var(--ease);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:center;align-items:center;display:none;position:fixed;top:10px;left:10px}.sidebar-toggle:hover{background:var(--bg-hover)}.loading-spinner{flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.loading-spinner:after{content:"";border:2px solid var(--border);border-top-color:var(--accent);width:24px;height:24px;animation:spin var(--duration-spin) var(--ease-linear) infinite;border-radius:50%}.toast{z-index:200;background:var(--bg-card);color:var(--text-primary);border-radius:var(--radius-lg);font-size:var(--fs-ui);font-weight:500;font-family:var(--font-sans);box-shadow:var(--shadow-md);animation:toastIn var(--duration-spring) var(--ease-spring), toastOut var(--duration) var(--ease) var(--toast-hold) forwards;pointer-events:none;padding:12px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(8px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}.thinking-dots span{animation:loadingDotGlow var(--duration-shimmer) var(--ease-in-out) infinite;opacity:.15;color:var(--accent)}.thinking-dots span:first-child{animation-delay:0s}.thinking-dots span:nth-child(2){animation-delay:calc(var(--duration-shimmer) * .2)}.thinking-dots span:nth-child(3){animation-delay:calc(var(--duration-shimmer) * .4)}@keyframes loadingDotGlow{0%,15%{opacity:.15}25%{opacity:1}40%,to{opacity:.15}}@keyframes revealUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}[data-theme=dark] #root:after{display:none}}.spin{animation:spin var(--duration-spin) var(--ease-linear) infinite}.link-btn{color:var(--accent);text-underline-offset:2px;text-decoration:underline}.composer-chip-wrap{position:relative}.app-notice{border-radius:var(--radius-md);background:var(--bg-tertiary);color:var(--text-primary);font-size:var(--fs-ui);align-items:center;gap:10px;margin:8px 12px 0;padding:8px 12px;display:flex}.app-notice.is-warning{background:var(--accent-yellow-dim)}.app-notice.is-warning:before{content:"";background:var(--accent-yellow);flex:none;width:16px;height:16px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.5v.01'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.5v.01'/%3E%3C/svg%3E") 50%/contain no-repeat}.app-notice>span{flex:1;min-width:0}.app-notice-close{border-radius:var(--radius-sm);color:var(--text-muted);padding:4px;display:inline-flex}.app-notice-close:hover{background:var(--bg-hover);color:var(--text-primary)}@media (width<=768px){.sidebar-toggle{display:flex}.sidebar-overlay.visible{display:block}.app-notice{padding-left:var(--sidebar-toggle-clearance);border-radius:0;margin:0}.modal-panel{max-width:96%;max-height:90vh}.btn-icon{width:44px;height:44px}.btn-icon-sm{width:36px;height:36px}input,textarea,select{font-size:16px!important}}@media (width<=480px){.modal-panel{border-radius:0;max-width:100%;max-height:100vh}}:root[data-titlebar] body:before{content:"";height:var(--titlebar-h);-webkit-app-region:drag;pointer-events:none;z-index:0;position:fixed;inset:0 0 auto}:root[data-titlebar] .sb-top,:root[data-titlebar] .task-header{-webkit-app-region:drag}:root[data-titlebar] :is(button,a,input,textarea,select,label,summary,[role=button],[role=tab],[role=menu],[role=dialog],[contenteditable=true],.settings-overlay){-webkit-app-region:no-drag}:root[data-titlebar=overlay] .task-header{min-height:var(--titlebar-h);padding-right:calc(100vw - env(titlebar-area-x,0px) - env(titlebar-area-width,100vw) + 12px)}:root[data-titlebar=mac] .sb-top{padding-left:84px}.startup{background:var(--bg-primary);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.startup-text{color:var(--text-secondary);font-size:14px}.startup .loading-spinner{flex:none;padding:0}:root[data-palette=stone]{--bg-primary:#fafaf9;--bg-secondary:#f6f6f4;--bg-tertiary:#eaeae9;--bg-sidebar:#f2f2f0;--bg-input:#fff;--bg-card:#fff;--bg-hover:#ededec;--bg-active:#e4e4e3;--bg-user-msg:#fff;--bg-recessed:#f4f4f2;--text-primary:#1c1c1a;--text-secondary:#5f5f5b;--text-muted:#5f5f5b;--border:#c0c0bf;--border-light:#c0c0bf;--border-recessed:#c0c0bf;--accent:#2b2b29;--accent-light:#515150;--accent-solid:#2b2b29;--accent-dim:#2b2b2929;--accent-dim2:#2b2b2914;--accent-selection:#2b2b2942;--accent-ring:#2b2b2961;--accent-fill:#e1e1e1;--accent-fill-text:#2b2b29;--accent-fill-hover:#d0d0d0;--tint-subtle:#1c1c1a08;--tint-hover:#1c1c1a0d}:root[data-palette=stone][data-theme=dark]{--bg-primary:#161615;--bg-secondary:#141413;--bg-tertiary:#2e2e2c;--bg-sidebar:#121211;--bg-input:#232322;--bg-card:#232322;--bg-hover:#292928;--bg-active:#343433;--bg-user-msg:#232322;--bg-recessed:#131312;--text-primary:#ecece9;--text-secondary:#a3a39e;--text-muted:#a3a39e;--border:#494948;--border-light:#494948;--border-recessed:#494948;--accent:#ecece9;--accent-light:#e9e9e6;--accent-solid:#e4e4e0;--accent-dim:#e4e4e029;--accent-dim2:#e4e4e014;--accent-selection:#e4e4e042;--accent-ring:#e4e4e061;--accent-fill:#4d4d4c;--accent-fill-text:#ecece9;--accent-fill-hover:#5d5d5b;--tint-subtle:#ecece908;--tint-hover:#ecece90f;--text-inverse:#161615;--switch-knob:#ecece9}:root[data-palette=marble]{--bg-primary:#f8fafc;--bg-secondary:#f4f6fa;--bg-tertiary:#e8ebed;--bg-sidebar:#eff3f7;--bg-input:#fff;--bg-card:#fff;--bg-hover:#eaedf0;--bg-active:#e1e4e7;--bg-user-msg:#fff;--bg-recessed:#f1f4f8;--text-primary:#16202c;--text-secondary:#556270;--text-muted:#556270;--border:#bdc1c6;--border-light:#bdc1c6;--border-recessed:#bdc1c6;--accent:#1a5294;--accent-light:#477cb8;--accent-solid:#1f5fa8;--accent-dim:#1f5fa829;--accent-dim2:#1f5fa814;--accent-selection:#1f5fa842;--accent-ring:#1f5fa861;--accent-fill:#e0e9f3;--accent-fill-text:#1a5294;--accent-fill-hover:#cedcec;--tint-subtle:#16202c08;--tint-hover:#16202c0d}:root[data-palette=marble][data-theme=dark]{--bg-primary:#0f151c;--bg-secondary:#0d131a;--bg-tertiary:#272d34;--bg-sidebar:#0b1117;--bg-input:#1c2229;--bg-card:#1c2229;--bg-hover:#22282f;--bg-active:#2d333a;--bg-user-msg:#1c2229;--bg-recessed:#0d1218;--text-primary:#e7edf3;--text-secondary:#9aa8b7;--text-muted:#9aa8b7;--border:#434950;--border-light:#434950;--border-recessed:#434950;--accent:#8ebcf0;--accent-light:#79adea;--accent-solid:#5b9be6;--accent-dim:#5b9be629;--accent-dim2:#5b9be614;--accent-selection:#5b9be642;--accent-ring:#5b9be661;--accent-fill:#2a3d53;--accent-fill-text:#8ebcf0;--accent-fill-hover:#2f4662;--tint-subtle:#e7edf308;--tint-hover:#e7edf30f;--text-inverse:#0f151c;--switch-knob:#e7edf3}:root[data-palette=glacier]{--bg-primary:#f7fafa;--bg-secondary:#f2f6f7;--bg-tertiary:#e7ebeb;--bg-sidebar:#edf3f4;--bg-input:#fff;--bg-card:#fff;--bg-hover:#e9eded;--bg-active:#e0e4e4;--bg-user-msg:#fff;--bg-recessed:#eff4f5;--text-primary:#15211f;--text-secondary:#536464;--text-muted:#536464;--border:#bcc2c1;--border-light:#bcc2c1;--border-recessed:#bcc2c1;--accent:#225a62;--accent-light:#528890;--accent-solid:#2c6e78;--accent-dim:#2c6e7829;--accent-dim2:#2c6e7814;--accent-selection:#2c6e7842;--accent-ring:#2c6e7861;--accent-fill:#e1ebec;--accent-fill-text:#225a62;--accent-fill-hover:#d1dfe1;--tint-subtle:#15211f08;--tint-hover:#15211f0d}:root[data-palette=glacier][data-theme=dark]{--bg-primary:#0f1617;--bg-secondary:#0d1414;--bg-tertiary:#272e2f;--bg-sidebar:#0b1112;--bg-input:#1c2324;--bg-card:#1c2324;--bg-hover:#22292a;--bg-active:#2d3435;--bg-user-msg:#1c2324;--bg-recessed:#0d1314;--text-primary:#e5eeee;--text-secondary:#98aaab;--text-muted:#98aaab;--border:#424a4b;--border-light:#424a4b;--border-recessed:#424a4b;--accent:#8acdd5;--accent-light:#7cc2cb;--accent-solid:#5fb4bf;--accent-dim:#5fb4bf29;--accent-dim2:#5fb4bf14;--accent-selection:#5fb4bf42;--accent-ring:#5fb4bf61;--accent-fill:#2b4346;--accent-fill-text:#8acdd5;--accent-fill-hover:#304e52;--tint-subtle:#e5eeee08;--tint-hover:#e5eeee0f;--text-inverse:#0f1617;--switch-knob:#e5eeee}:root[data-palette=forest]{--bg-primary:#f8f9f7;--bg-secondary:#f4f6f2;--bg-tertiary:#e8eae8;--bg-sidebar:#eff2ee;--bg-input:#fff;--bg-card:#fff;--bg-hover:#ebecea;--bg-active:#e2e3e1;--bg-user-msg:#fff;--bg-recessed:#f1f3f0;--text-primary:#18201a;--text-secondary:#56625a;--text-muted:#56625a;--border:#bec1be;--border-light:#bec1be;--border-recessed:#bec1be;--accent:#2f5a3c;--accent-light:#5d8669;--accent-solid:#3a6b48;--accent-dim:#3a6b4829;--accent-dim2:#3a6b4814;--accent-selection:#3a6b4842;--accent-ring:#3a6b4861;--accent-fill:#e3eae5;--accent-fill-text:#2f5a3c;--accent-fill-hover:#d4ded7;--tint-subtle:#18201a08;--tint-hover:#18201a0d}:root[data-palette=forest][data-theme=dark]{--bg-primary:#121613;--bg-secondary:#101411;--bg-tertiary:#292e2a;--bg-sidebar:#0e120f;--bg-input:#1f2320;--bg-card:#1f2320;--bg-hover:#252926;--bg-active:#303431;--bg-user-msg:#1f2320;--bg-recessed:#0f1310;--text-primary:#e6ece6;--text-secondary:#9eaa9f;--text-muted:#9eaa9f;--border:#454946;--border-light:#454946;--border-recessed:#454946;--accent:#a2d0ad;--accent-light:#94c6a1;--accent-solid:#7dba8c;--accent-dim:#7dba8c29;--accent-dim2:#7dba8c14;--accent-selection:#7dba8c42;--accent-ring:#7dba8c61;--accent-fill:#344438;--accent-fill-text:#a2d0ad;--accent-fill-hover:#3b5040;--tint-subtle:#e6ece608;--tint-hover:#e6ece60f;--text-inverse:#121613;--switch-knob:#e6ece6}:root[data-palette=sage]{--bg-primary:#f9f9f7;--bg-secondary:#f4f5f2;--bg-tertiary:#eaeae8;--bg-sidebar:#f0f1ee;--bg-input:#fff;--bg-card:#fff;--bg-hover:#ececea;--bg-active:#e3e3e1;--bg-user-msg:#fff;--bg-recessed:#f2f3f0;--text-primary:#1d201b;--text-secondary:#5c6058;--text-muted:#5c6058;--border:#bcbdba;--border-light:#bcbdba;--border-recessed:#bcbdba;--accent:#4b6450;--accent-light:#7b927f;--accent-solid:#5e7a63;--accent-dim:#5e7a6329;--accent-dim2:#5e7a6314;--accent-selection:#5e7a6342;--accent-ring:#5e7a6361;--accent-fill:#e8ece9;--accent-fill-text:#4b6450;--accent-fill-hover:#dce2dd;--tint-subtle:#1d201b08;--tint-hover:#1d201b0d}:root[data-palette=sage][data-theme=dark]{--bg-primary:#141513;--bg-secondary:#121312;--bg-tertiary:#2b2c2a;--bg-sidebar:#101110;--bg-input:#212220;--bg-card:#212220;--bg-hover:#272826;--bg-active:#323330;--bg-user-msg:#212220;--bg-recessed:#111210;--text-primary:#e8eae5;--text-secondary:#a2a69d;--text-muted:#a2a69d;--border:#474845;--border-light:#474845;--border-recessed:#474845;--accent:#b8cdbc;--accent-light:#adc2b1;--accent-solid:#9bb5a0;--accent-dim:#9bb5a029;--accent-dim2:#9bb5a014;--accent-selection:#9bb5a042;--accent-ring:#9bb5a061;--accent-fill:#3c423c;--accent-fill-text:#b8cdbc;--accent-fill-hover:#464e46;--tint-subtle:#e8eae508;--tint-hover:#e8eae50f;--text-inverse:#141513;--switch-knob:#e8eae5}:root[data-palette=basalt]{--bg-primary:#f8f8f6;--bg-secondary:#f4f4f1;--bg-tertiary:#e9e9e7;--bg-sidebar:#efefec;--bg-input:#fff;--bg-card:#fff;--bg-hover:#ebebe9;--bg-active:#e2e2e0;--bg-user-msg:#fff;--bg-recessed:#f1f1ee;--text-primary:#1b1b19;--text-secondary:#5c5c57;--text-muted:#5c5c57;--border:#bbbbb9;--border-light:#bbbbb9;--border-recessed:#bbbbb9;--accent:#566324;--accent-light:#869254;--accent-solid:#6b7a2e;--accent-dim:#6b7a2e29;--accent-dim2:#6b7a2e14;--accent-selection:#6b7a2e42;--accent-ring:#6b7a2e61;--accent-fill:#eaece2;--accent-fill-text:#566324;--accent-fill-hover:#dee2d1;--tint-subtle:#1b1b1908;--tint-hover:#1b1b190d}:root[data-palette=basalt][data-theme=dark]{--bg-primary:#141413;--bg-secondary:#121211;--bg-tertiary:#2c2c2a;--bg-sidebar:#10100f;--bg-input:#212120;--bg-card:#212120;--bg-hover:#272726;--bg-active:#323231;--bg-user-msg:#212120;--bg-recessed:#111110;--text-primary:#ebebe7;--text-secondary:#a3a39c;--text-muted:#a3a39c;--border:#484846;--border-light:#484846;--border-recessed:#484846;--accent:#cad58f;--accent-light:#c2ce85;--accent-solid:#b4c36a;--accent-dim:#b4c36a29;--accent-dim2:#b4c36a14;--accent-selection:#b4c36a42;--accent-ring:#b4c36a61;--accent-fill:#414530;--accent-fill-text:#cad58f;--accent-fill-hover:#4d5236;--tint-subtle:#ebebe708;--tint-hover:#ebebe70f;--text-inverse:#141413;--switch-knob:#ebebe7}:root[data-palette=gold]{--bg-primary:#f7f7f8;--bg-secondary:#f3f3f4;--bg-tertiary:#e7e7e9;--bg-sidebar:#efeff1;--bg-input:#fff;--bg-card:#fff;--bg-hover:#eaeaeb;--bg-active:#e1e1e2;--bg-user-msg:#fff;--bg-recessed:#f1f1f2;--text-primary:#18181b;--text-secondary:#5a5a62;--text-muted:#5a5a62;--border:#bdbdbf;--border-light:#bdbdbf;--border-recessed:#bdbdbf;--accent:#7a5800;--accent-light:#c09c2e;--accent-solid:#b28600;--accent-dim:#b2860029;--accent-dim2:#b2860014;--accent-selection:#b2860042;--accent-ring:#b2860061;--accent-fill:#f4eedb;--accent-fill-text:#7a5800;--accent-fill-hover:#eee4c7;--tint-subtle:#18181b08;--tint-hover:#18181b0d}:root[data-palette=gold][data-theme=dark]{--bg-primary:#141416;--bg-secondary:#121214;--bg-tertiary:#2c2c2e;--bg-sidebar:#101012;--bg-input:#212123;--bg-card:#212123;--bg-hover:#272729;--bg-active:#323234;--bg-user-msg:#212123;--bg-recessed:#111113;--text-primary:#ececee;--text-secondary:#a0a0a8;--text-muted:#a0a0a8;--border:#48484a;--border-light:#48484a;--border-recessed:#48484a;--accent:#f2c230;--accent-light:#f4cd55;--accent-solid:#f2c230;--accent-dim:#f2c23029;--accent-dim2:#f2c23014;--accent-selection:#f2c23042;--accent-ring:#f2c23061;--accent-fill:#4f4426;--accent-fill-text:#f2c230;--accent-fill-hover:#605127;--tint-subtle:#ececee08;--tint-hover:#ececee0f;--text-inverse:#141416;--switch-knob:#ececee}:root[data-palette=dusk]{--bg-primary:#f9f9fb;--bg-secondary:#f4f4f8;--bg-tertiary:#eaeaec;--bg-sidebar:#f0f0f5;--bg-input:#fff;--bg-card:#fff;--bg-hover:#ececee;--bg-active:#e3e3e6;--bg-user-msg:#fff;--bg-recessed:#f2f2f6;--text-primary:#1c1c27;--text-secondary:#5c5c6b;--text-muted:#5c5c6b;--border:#bcbcc0;--border-light:#bcbcc0;--border-recessed:#bcbcc0;--accent:#424c85;--accent-light:#6f78ae;--accent-solid:#4f5a9c;--accent-dim:#4f5a9c29;--accent-dim2:#4f5a9c14;--accent-selection:#4f5a9c42;--accent-ring:#4f5a9c61;--accent-fill:#e6e8f1;--accent-fill-text:#424c85;--accent-fill-hover:#d8dbe9;--tint-subtle:#1c1c2708;--tint-hover:#1c1c270d}:root[data-palette=dusk][data-theme=dark]{--bg-primary:#13131a;--bg-secondary:#111118;--bg-tertiary:#2b2b32;--bg-sidebar:#0f0f15;--bg-input:#202027;--bg-card:#202027;--bg-hover:#26262d;--bg-active:#313138;--bg-user-msg:#202027;--bg-recessed:#101016;--text-primary:#e9e9f0;--text-secondary:#a2a2b2;--text-muted:#a2a2b2;--border:#46464d;--border-light:#46464d;--border-recessed:#46464d;--accent:#b5bceb;--accent-light:#aab2e6;--accent-solid:#97a1e0;--accent-dim:#97a1e029;--accent-dim2:#97a1e014;--accent-selection:#97a1e042;--accent-ring:#97a1e061;--accent-fill:#3a3c50;--accent-fill-text:#b5bceb;--accent-fill-hover:#44475e;--tint-subtle:#e9e9f008;--tint-hover:#e9e9f00f;--text-inverse:#13131a;--switch-knob:#e9e9f0}.thinking-indicator.is-live .thinking-indicator-text{color:var(--text-primary);animation:statusShimmer var(--duration-shimmer) var(--ease-in-out) infinite;-webkit-mask-image:linear-gradient(90deg,#000c 40%,#000 50%,#000c 60%);mask-image:linear-gradient(90deg,#000c 40%,#000 50%,#000c 60%);-webkit-mask-size:250% 100%;mask-size:250% 100%}@keyframes statusShimmer{0%{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}.agent-activity.active .flow-plan-item .plan-icon-done{animation:planTick var(--duration-slow) var(--ease)}.flow-plan-item .flow-plan-text{transition:color var(--duration) var(--ease), opacity var(--duration) var(--ease)}@keyframes planTick{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}.side-rail{animation:railIn var(--duration-slow) var(--ease)}.task-view>.messages-scroll,.task-view>.input-area,.task-view>.doc-context-bar{transition:margin-right var(--duration-slow) var(--ease)}@keyframes railIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.queued-message{animation:queueIn var(--duration) var(--ease);transition:border-color var(--duration) var(--ease), background var(--duration) var(--ease)}.queued-message-state{transition:color var(--duration) var(--ease)}.sb-row-queue{animation:queueIn var(--duration) var(--ease)}.sb-dot{transition:background var(--duration) var(--ease), box-shadow var(--duration) var(--ease)}@keyframes queueIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.thinking-indicator.is-live .thinking-indicator-text{color:inherit;-webkit-mask-image:none;mask-image:none}.thinking-dots span{opacity:.6}}
|