@orion-agents/orion-code 0.3.14 → 0.3.17

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.
Files changed (49) hide show
  1. package/CHANGELOG.md +286 -0
  2. package/README.md +6 -8
  3. package/README.zh-CN.md +4 -5
  4. package/dist/runtime/release-receipts.d.ts +15 -3
  5. package/dist/runtime/release-receipts.js +27 -1
  6. package/dist/services/session-storage.d.ts +9 -0
  7. package/dist/services/session-storage.js +27 -1
  8. package/dist/web/git-compare-service.d.ts +45 -0
  9. package/dist/web/git-compare-service.js +160 -0
  10. package/dist/web/git-diff-document.d.ts +83 -0
  11. package/dist/web/git-diff-document.js +214 -0
  12. package/dist/web/git-file-source.d.ts +25 -0
  13. package/dist/web/git-file-source.js +21 -0
  14. package/dist/web/git-history-service.d.ts +151 -0
  15. package/dist/web/git-history-service.js +610 -0
  16. package/dist/web/git-index-transaction.d.ts +45 -0
  17. package/dist/web/git-index-transaction.js +174 -0
  18. package/dist/web/git-patch-builder.d.ts +30 -0
  19. package/dist/web/git-patch-builder.js +134 -0
  20. package/dist/web/git-read-model-service.d.ts +338 -18
  21. package/dist/web/git-read-model-service.js +1029 -110
  22. package/dist/web/git-version-service.d.ts +71 -0
  23. package/dist/web/git-version-service.js +255 -0
  24. package/dist/web/native-directory-picker.d.ts +63 -0
  25. package/dist/web/native-directory-picker.js +169 -0
  26. package/dist/web/protocol.d.ts +51 -2
  27. package/dist/web/server.js +384 -8
  28. package/dist/web/workbench-controller.d.ts +126 -10
  29. package/dist/web/workbench-controller.js +383 -15
  30. package/dist/web/workspace-open-telemetry.d.ts +55 -0
  31. package/dist/web/workspace-open-telemetry.js +73 -0
  32. package/dist/web-client/assets/FilesPanel-BARQCmne.js +1 -0
  33. package/dist/web-client/assets/GitPanel-DjB9eSiJ.js +4 -0
  34. package/dist/web-client/assets/ReviewPanel-YhEGlp-G.js +5 -0
  35. package/dist/web-client/assets/{TerminalPanel-IkCttxgw.js → TerminalPanel-DnWh3Vp2.js} +1 -1
  36. package/dist/web-client/assets/index--hnGXXjj.css +1 -0
  37. package/dist/web-client/assets/index-Drja0_BT.js +20 -0
  38. package/dist/web-client/assets/useAutoNotice-DfQi4G1X.js +1 -0
  39. package/dist/web-client/favicon.svg +9 -0
  40. package/dist/web-client/index.html +3 -2
  41. package/npm-shrinkwrap.json +2 -2
  42. package/package.json +1 -1
  43. package/dist/web-client/assets/DiffViewer-BrHqudpK.js +0 -5
  44. package/dist/web-client/assets/FilesPanel-BcFY6L1a.js +0 -1
  45. package/dist/web-client/assets/GitPanel-B6E5IEXm.js +0 -1
  46. package/dist/web-client/assets/ResourceSplitLayout-fPYE9JKJ.js +0 -1
  47. package/dist/web-client/assets/ReviewPanel-5ecTVmhT.js +0 -1
  48. package/dist/web-client/assets/index-DgVNIqmE.js +0 -20
  49. package/dist/web-client/assets/index-R6E589Fc.css +0 -1
@@ -0,0 +1,4 @@
1
+ var $e=Object.defineProperty;var Pe=(t,s,n)=>s in t?$e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[s]=n;var ie=(t,s,n)=>Pe(t,typeof s!="symbol"?s+"":s,n);import{r,a as He,j as e,I as W}from"./index-Drja0_BT.js";import{u as Oe,R as Me}from"./useAutoNotice-DfQi4G1X.js";const Ne="orion.web.git-display.v1",ze=Object.freeze(["changes","history","compare"]),me=Object.freeze({message:"",author:"",path:"",sha:"",since:"",until:""}),xe=Object.freeze({view:"changes",group:null,query:"",selectedFileId:null,selectedSource:null,selectedFileIds:Object.freeze([]),selectedLineIds:Object.freeze([]),collapsedHunks:Object.freeze([]),anchorLineId:null,navigatorScrollTop:0,commitDraft:Object.freeze({summary:"",body:""}),historyQuery:me,selectedCommitId:null,selectedCommitParentIndex:0,selectedCommitPath:null,fileHistoryPath:null,notice:""}),pe=Object.freeze({mode:"unified",wrap:!1,showWhitespace:!1,ignoreWhitespace:!1,wordDiff:!1});function _e(t){return t||"__no-workspace__"}function Ae(){const t=new Map;return{read(s){return t.get(s)??xe},update(s,n){const i=Object.freeze({...t.get(s)??xe,...n});return t.set(s,i),i},clear(s){t.delete(s)}}}const Be=Ae();function Ge(){try{const t=globalThis.localStorage?.getItem(Ne);if(!t)return pe;const s=JSON.parse(t);return Te(s)}catch{return pe}}function We(t){try{globalThis.localStorage?.setItem(Ne,JSON.stringify(t))}catch{}}function Te(t){if(typeof t!="object"||t===null)return pe;const s=t;return Object.freeze({mode:s.mode==="side-by-side"?"side-by-side":"unified",wrap:s.wrap===!0,showWhitespace:s.showWhitespace===!0,ignoreWhitespace:s.ignoreWhitespace===!0,wordDiff:s.wordDiff===!0})}function qe(t){if(t.entries.length===0)return{fileId:null,path:null,notice:""};const s=t.entries.find(o=>o.fileId===t.previousFileId);if(s)return{fileId:s.fileId,path:s.path,notice:""};const i=t.entries.find(o=>o.path===t.previousPath)??t.entries[0];return{fileId:i.fileId,path:i.path,notice:t.previousFileId===null?"":`原选中的改动已不在此列表,已跳到 ${i.path}。`}}const Qe=350,je=30;function Ve(t){const{enabled:s,session:n,setSession:i,actions:o,refreshEpoch:f}=t,g=n.historyQuery??me,[x,a]=r.useState(null),[p,y]=r.useState(null),[b,d]=r.useState(null),[I,h]=r.useState(null),[H,D]=r.useState(null),[N,v]=r.useState(null),[T,P]=r.useState(!1),[A,L]=r.useState(!1),[q,R]=r.useState(!1),[j,F]=r.useState(""),$=r.useRef(0),c=r.useRef(0),l=r.useMemo(()=>({...g.message.trim()?{message:g.message.trim()}:{},...g.author.trim()?{author:g.author.trim()}:{},...g.path.trim()?{path:g.path.trim()}:{},...g.sha.trim()?{sha:g.sha.trim()}:{},...g.since.trim()?{since:g.since.trim()}:{},...g.until.trim()?{until:g.until.trim()}:{}}),[g]);r.useEffect(()=>{if(!s)return;const w=$.current+1;$.current=w,P(!0),F("");const z=setTimeout(()=>{(async()=>{try{const[_,G]=await Promise.all([o.gitRefs(),o.gitHistory({...l,pageSize:je})]);if(w!==$.current)return;a(_),y(G)}catch(_){if(w!==$.current)return;F(le(_))}finally{w===$.current&&P(!1)}})()},l.message||l.author||l.path||l.sha?Qe:0);return()=>clearTimeout(z)},[o,s,f,l]),r.useEffect(()=>{const w=n.selectedCommitId;if(!s||!w){d(null),h(null),D(null);return}const z=c.current+1;c.current=z;const _=n.selectedCommitParentIndex;R(!0),F(""),(async()=>{try{const[G,X]=await Promise.all([o.gitCommitDetail(w,_),o.gitCommitFiles(w,_)]);if(z!==c.current)return;d(G),h(X);const Z=X.files.find(K=>!K.sensitive&&!K.binary),te=n.selectedCommitPath&&X.files.some(K=>K.path===n.selectedCommitPath)?n.selectedCommitPath:Z?.path??null;te!==n.selectedCommitPath&&i({selectedCommitPath:te}),te||D(null)}catch(G){if(z!==c.current)return;F(le(G))}finally{z===c.current&&R(!1)}})()},[o,s,n.selectedCommitId,n.selectedCommitParentIndex]),r.useEffect(()=>{const w=n.selectedCommitId,z=n.selectedCommitPath;if(!s||!w||!z){D(null);return}const _=c.current;(async()=>{try{const G=await o.gitCommitDiff({oid:w,path:z,parentIndex:n.selectedCommitParentIndex});if(_!==c.current)return;D(G)}catch(G){if(_!==c.current)return;F(le(G)),D(null)}})()},[o,s,n.selectedCommitId,n.selectedCommitPath,n.selectedCommitParentIndex]),r.useEffect(()=>{const w=n.fileHistoryPath;if(!s||!w){v(null);return}const z=c.current;(async()=>{try{const _=await o.gitFileHistory({path:w});if(z!==c.current)return;v(_)}catch(_){if(z!==c.current)return;F(le(_))}})()},[o,s,n.fileHistoryPath]);const u=r.useCallback(w=>{i({historyQuery:{...g,...w}})},[g,i]),B=r.useCallback(()=>{i({historyQuery:me})},[i]),O=r.useCallback(w=>{i({selectedCommitId:w.id,selectedCommitParentIndex:0,selectedCommitPath:null})},[i]),U=r.useCallback(()=>{i({selectedCommitId:null,selectedCommitPath:null,selectedCommitParentIndex:0})},[i]),V=r.useCallback(w=>{i({selectedCommitParentIndex:w,selectedCommitPath:null})},[i]),Y=r.useCallback(w=>i({selectedCommitPath:w}),[i]),J=r.useCallback(()=>{const w=p?.nextCursor;if(!w||A)return;const z=$.current;L(!0),(async()=>{try{const _=await o.gitHistory({...l,cursor:w,pageSize:je});if(z!==$.current)return;y(G=>G?{..._,items:[...G.items,..._.items]}:_)}catch(_){if(z!==$.current)return;F(le(_))}finally{z===$.current&&L(!1)}})()},[o,A,p,l]),ne=r.useCallback(w=>i({fileHistoryPath:w}),[i]),E=r.useCallback(()=>i({fileHistoryPath:null}),[i]);return{query:g,refs:x,page:p,detail:b,files:I,diff:H,fileHistory:N,loading:T,loadingMore:A,loadingDetail:q,error:j,isEmptyRepository:p!==null&&p.tipOid===null,setQuery:u,resetQuery:B,selectCommit:O,closeDetail:U,setParentIndex:V,selectFile:Y,loadMore:J,openFileHistory:ne,closeFileHistory:E}}function le(t){return t?.code==="git_cursor_invalid"?"历史已变化,已重新载入列表。":t instanceof Error?t.message:"Git 历史读取失败。"}function Ke(t){if(!(t instanceof HTMLElement))return!1;const s=t.tagName.toLowerCase();return s==="input"||s==="textarea"||s==="select"||t.isContentEditable?!0:t.closest('[role="dialog"]')!==null}function Ue(t){const{enabled:s,session:n,setSession:i,fileIds:o,anchorLineIds:f,onOpenSelection:g,onEscapeFallback:x}=t;r.useEffect(()=>{if(!s)return;const a=p=>{if(Ke(p.target))return;if(p.key==="F7"&&f.length>0){p.preventDefault();const b=n.anchorLineId?f.indexOf(n.anchorLineId):-1,d=p.shiftKey?-1:1,I=b<0?d>0?0:f.length-1:Math.min(f.length-1,Math.max(0,b+d));i({anchorLineId:f[I]});return}if(p.key==="Escape"){if(n.query){p.preventDefault(),i({query:"",selectedFileId:null});return}if(n.selectedLineIds.length>0){p.preventDefault(),i({selectedLineIds:[]});return}x();return}if(o.length===0)return;const y=n.selectedFileId?o.indexOf(n.selectedFileId):-1;if(p.key==="ArrowDown"||p.key==="ArrowUp"){p.preventDefault();const b=p.key==="ArrowDown"?1:-1,d=y<0?b>0?0:o.length-1:Math.min(o.length-1,Math.max(0,y+b));i({selectedFileId:o[d],selectedSource:null,anchorLineId:null});return}if(p.key==="Enter"&&y>=0){p.preventDefault(),g();return}if(p.key===" "){if(y<0)return;p.preventDefault();const b=o[y];i({selectedFileIds:n.selectedFileIds.includes(b)?n.selectedFileIds.filter(d=>d!==b):[...n.selectedFileIds,b]})}};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[s,n.query,n.selectedFileId,n.selectedLineIds,n.anchorLineId,n.selectedFileIds,i,o,f,g,x])}class Ye{constructor(s){ie(this,"fetcher");ie(this,"freshnessMs");ie(this,"slots",new Map);this.fetcher=s.fetcher,this.freshnessMs=s.freshnessMs??3e4}getSnapshot(s){const n=this.slotFor(s);n.invalidated&&(n.inFlight=null,n.invalidated=!1);const i=n.snapshot;if(i&&Date.now()-i.fetchedAt<=this.freshnessMs)return Promise.resolve(i);if(n.inFlight)return n.inFlight;n.generation+=1;const o=n.generation,f=this.fetcher(s).then(g=>{const x=this.slots.get(s);if(!x||x.generation!==o||x.invalidated)throw new Je(s);return x.snapshot=Object.freeze({...g,fetchedAt:Date.now()}),x.inFlight=null,x.snapshot}).catch(g=>{const x=this.slots.get(s);throw x&&x.inFlight===f&&(x.inFlight=null),g});return n.inFlight=f,f}invalidate(s){const n=this.slots.get(s);if(!n)return!1;const i=!!(n.snapshot||n.inFlight);return n.invalidated=!0,n.snapshot=null,i}isStale(s,n){const i=this.slots.get(s)?.snapshot;return i?n==null?!1:i.repositoryRevision!==n:!0}cachedSnapshot(s){const n=this.slots.get(s);return!n||n.invalidated||!n.snapshot?null:n.snapshot}clear(){this.slots.clear()}slotFor(s){const n=this.slots.get(s);if(n)return n;const i={workspaceId:s,snapshot:null,inFlight:null,generation:0,invalidated:!1};return this.slots.set(s,i),i}}class Je extends Error{constructor(n){super(`Repository snapshot for ${n} is stale; refetching.`);ie(this,"code","workspace_snapshot_stale")}}const Xe=20*1024*1024,Ze=5*1024*1024;function et(t){let s=0;for(const n of t.hunks){s+=n.header.length;for(const i of n.lines)s+=i.raw.length+48}return s+t.path.length+256}function tt(t){const s=Xe,n=Ze,i=new Map;let o=0,f=0,g=0;const x=(a,p)=>`${a}\0${p}`;return{read(a,p){const y=x(a,p),b=i.get(y);return b?(i.delete(y),i.set(y,b),f+=1,b.document):(g+=1,null)},write(a,p,y){const b=et(y);if(b>n)return;const d=x(a,p),I=i.get(d);for(I&&(i.delete(d),o-=I.bytes),i.set(d,{document:y,bytes:b}),o+=b;o>s&&i.size>0;){const h=i.keys().next();if(h.done)break;const H=i.get(h.value);i.delete(h.value),o-=H?.bytes??0}},clear(){i.clear(),o=0},stats(){return{entries:i.size,bytes:o,hits:f,misses:g}}}}const st=tt(),nt=2e3;function it(t){const{workspaceId:s,refreshEpoch:n,actions:i}=t,o=t.store??Be,f=t.cache??st,g=_e(s),[x,a]=r.useState(()=>o.read(g)),[p,y]=r.useState(()=>Ge()),[b,d]=r.useState(null),[I,h]=r.useState(null),[H,D]=r.useState(null),[N,v]=r.useState(!1),[T,P]=r.useState(!1),[A,L]=r.useState(""),[q,R]=r.useState(!1),j=r.useRef(0),F=r.useRef(0),$=r.useRef(x);$.current=x;const c=r.useRef(b),l=r.useRef(p);l.current=p,c.current=b;const u=r.useCallback(m=>{a(o.update(g,m))},[g,o]),B=r.useCallback(m=>{y(k=>{const S=Object.freeze({...k,...m});return We(S),S})},[]),O=r.useCallback(async(m,k)=>{if(m===j.current){k.quiet?P(!0):v(!0),L("");try{const S=$.current,[C,M]=await Promise.all([i.gitStatus(void 0,{...S.group?{group:S.group}:{},...S.query?{query:S.query}:{}}),i.gitLog()]);if(m!==j.current)return;if(d(C),h(M),!C.isRepository){D(null),R(!1);return}const Q=ue(C);if(!k.keepSelection){D(null),u({selectedFileId:null,selectedSource:null,anchorLineId:null}),R(!1);return}const ae=S.selectedFileId,Re=Q.find(de=>de.fileId===ae)?.path??(H?H.path:null),oe=qe({entries:Q,previousFileId:ae,previousPath:Re});if(oe.fileId&&oe.fileId!==ae){u({selectedFileId:null,selectedSource:null,notice:oe.notice}),D(null),R(!1);return}if(ae){const de=H!==null&&C.repositoryRevision===H.repositoryRevision;R(!de)}else R(!1)}catch(S){if(m!==j.current)return;L(ee(S))}finally{m===j.current&&(v(!1),P(!1))}}},[i,H,u]),U=r.useCallback(()=>{const m=j.current+1;j.current=m,F.current+=1,O(m,{keepSelection:!0,quiet:b!==null})},[O,b]);r.useEffect(()=>{const m=j.current+1;j.current=m,F.current+=1,d(null),h(null),D(null),L(""),R(!1),v(!!s),a(o.read(g)),s?O(m,{keepSelection:!1}):v(!1)},[g,s,o]),r.useEffect(()=>{if(!s||n===0)return;const m=j.current+1;j.current=m,F.current+=1,O(m,{keepSelection:!0,quiet:!0})},[n]),r.useEffect(()=>{if(!s||typeof document>"u")return;let m;const k=()=>{m!==void 0&&clearInterval(m),m=void 0},S=()=>{k(),m=setInterval(()=>{const M=j.current+1;j.current=M,O(M,{keepSelection:!0,quiet:!0})},nt)},C=()=>{if(document.visibilityState==="visible"){const M=j.current+1;j.current=M,O(M,{keepSelection:!0,quiet:!0}),S()}else k()};return document.visibilityState==="visible"&&S(),document.addEventListener("visibilitychange",C),()=>{k(),document.removeEventListener("visibilitychange",C)}},[s,x.group,x.query]);const V=r.useCallback(m=>{const k=j.current,S=F.current+1;F.current=S,u({selectedLineIds:[],selectedFileId:m.fileId,selectedSource:m.source,anchorLineId:null,notice:""}),L("");const C=c.current?.repositoryRevision,M=C?f.read(C,m.fileId):null;if(M){D(M),R(!1),v(!1);return}D(null),v(!0),(async()=>{try{const Q=await i.gitDiffDocument(m.fileId,void 0,l.current.ignoreWhitespace,l.current.wordDiff);if(k!==j.current||S!==F.current)return;f.write(Q.repositoryRevision,m.fileId,Q),D(Q),R(!1)}catch(Q){if(k!==j.current||S!==F.current)return;if(rt(Q)){L("仓库已变化,已重新载入 Git 状态。"),u({selectedFileId:null,selectedSource:null});return}L(ee(Q))}finally{k===j.current&&S===F.current&&v(!1)}})()},[i,f,u]),Y=r.useCallback(()=>{const m=b?.nextCursor;if(!m)return;const k=j.current,S=b?.repositoryRevision;(async()=>{try{const C=await i.gitStatus(m,{...x.group?{group:x.group}:{},...x.query?{query:x.query}:{}});if(k!==j.current)return;if(S!==void 0&&C.repositoryRevision!==S){L("仓库已变化,已重新载入 Git 状态。");return}d(M=>M&&{...C,conflicted:re(M.conflicted,C.conflicted),staged:re(M.staged,C.staged),unstaged:re(M.unstaged,C.unstaged),untracked:re(M.untracked,C.untracked),counts:{...C.counts,loaded:M.counts.loaded+C.counts.loaded}})}catch(C){if(k!==j.current)return;L(ee(C))}})()},[i,x.group,x.query,b]),J=r.useCallback(()=>{const m=I?.nextCursor;if(!m)return;const k=j.current;(async()=>{try{const S=await i.gitLog(m);if(k!==j.current)return;h(C=>C&&{...S,items:at(C.items,S.items)})}catch(S){if(k!==j.current)return;L(ee(S))}})()},[i,I]),ne=r.useCallback(()=>{const m=H?.nextCursor,k=x.selectedFileId;if(!m||!k)return;const S=j.current,C=F.current;(async()=>{try{const M=await i.gitDiffDocument(k,m,l.current.ignoreWhitespace,l.current.wordDiff);if(S!==j.current||C!==F.current)return;D(Q=>Q?{...M,hunks:[...Q.hunks,...M.hunks]}:M)}catch(M){if(S!==j.current||C!==F.current)return;L(ee(M))}})()},[i,H,x.selectedFileId]);r.useEffect(()=>{!b||!x.selectedFileId||ue(b).some(k=>k.fileId===x.selectedFileId)||(D(null),u({selectedFileId:null,selectedSource:null,anchorLineId:null}))},[b,x.selectedFileId,u]);const E=r.useMemo(()=>!b||!x.selectedFileId?null:ue(b).find(m=>m.fileId===x.selectedFileId)??null,[b,x.selectedFileId]),[w,z]=r.useState(!1),[_,G]=r.useState(null),X=r.useRef(null);X.current===null&&(X.current=new Ye({fetcher:async m=>{const k=await i.gitStatus(void 0,{});return Object.freeze({repositoryRevision:k.repositoryRevision,branch:k.branch,counts:Object.freeze({totalChangedFiles:k.counts.total,staged:k.counts.staged,unstaged:k.counts.unstaged,untracked:k.counts.untracked,conflicted:k.counts.conflicted}),fetchedAt:Date.now()})}}));const Z=X.current,te=r.useCallback(async()=>{const m=c.current;if(m?.isRepository)try{if((await Z.getSnapshot(s)).repositoryRevision===m.repositoryRevision)return;Z.invalidate(s),await O(j.current,{keepSelection:!0,quiet:!0})}catch{}},[O,Z,s]);r.useEffect(()=>{if(!s)return;let m=!1;const k=()=>{m||document.hidden||(m=!0,te().finally(()=>{m=!1}))},S=()=>{document.hidden||k()};return window.addEventListener("focus",k),document.addEventListener("visibilitychange",S),()=>{window.removeEventListener("focus",k),document.removeEventListener("visibilitychange",S)}},[te,s]);const K=r.useCallback(async()=>{f.clear(),Z.invalidate(s);const m=j.current+1;j.current=m,F.current+=1,await O(m,{keepSelection:!0,quiet:!0})},[f,O,Z,s]),se=r.useCallback(async(m,k)=>{if(!w){z(!0),L("");try{await m(),await K(),u({notice:k})}catch(S){L(ee(S))}finally{z(!1)}}},[w,K,u]),Ce=r.useCallback(async m=>{const k=c.current?.repositoryRevision;k&&(await se(()=>i.gitStage(m,k),m.length>1?`已暂存 ${m.length} 个文件。`:"已暂存。"),u({selectedFileIds:[]}))},[i,se,u]),we=r.useCallback(async m=>{const k=c.current?.repositoryRevision;k&&(await se(()=>i.gitUnstage(m,k),m.length>1?`已取消暂存 ${m.length} 个文件。`:"已取消暂存。"),u({selectedFileIds:[]}))},[i,se,u]),Fe=r.useCallback(async m=>{const k=c.current?.repositoryRevision;k&&await se(()=>i.gitApplyPatch({...m,expectedRepositoryRevision:k}),"已应用所选改动到索引。")},[i,se]),Le=r.useCallback(async m=>{const k=c.current?.repositoryRevision;if(!k)throw new Error("Git repository is unavailable.");z(!0),L("");const S=He();try{const C=await i.gitCommit({summary:m.summary,...m.body?{body:m.body}:{},expectedRepositoryRevision:k,requestId:S});return await K(),u({commitDraft:{summary:"",body:""},notice:C.warning?`已提交 ${C.commitSha.slice(0,8)},但:${C.warning}`:`已提交 ${C.commitSha.slice(0,8)}。`}),C.commitSha}catch(C){throw L(ee(C)),C}finally{z(!1)}},[i,K,u]),Ee=r.useCallback(m=>{const k=$.current.selectedFileIds;u({selectedFileIds:k.includes(m)?k.filter(S=>S!==m):[...k,m]})},[u]),De=r.useCallback(()=>u({selectedFileIds:[]}),[u]);return r.useEffect(()=>{if(!b?.isRepository){G(null);return}let m=!1;return(async()=>{try{const k=await i.gitCommitPreview();m||G(k)}catch{m||G(null)}})(),()=>{m=!0}},[i,b?.isRepository,b?.repositoryRevision]),{session:x,display:p,status:b,log:I,diff:H,loading:N,refreshing:T,error:A,stale:q,setSession:u,setDisplay:B,openFile:V,reload:U,loadMoreStatus:Y,loadMoreLog:J,loadMoreDiff:ne,selectedEntry:E,busy:w,commitPreview:_,toggleSelection:Ee,clearSelection:De,stagePaths:Ce,unstagePaths:we,applyPatch:Fe,commit:Le}}function ue(t){return[...t.conflicted,...t.unstaged,...t.staged,...t.untracked]}function lt(t,s){return s==="conflict"?t.conflicted:s==="unstaged"?t.unstaged:s==="staged"?t.staged:t.untracked}function re(t,s){const n=new Map(t.map(i=>[i.fileId,i]));for(const i of s)n.set(i.fileId,i);return[...n.values()]}function at(t,s){const n=new Map(t.map(i=>[i.id,i]));for(const i of s)n.set(i.id,i);return[...n.values()]}function ee(t){return t instanceof Error?t.message:"Git 请求失败。"}function rt(t){return typeof t=="object"&&t!==null&&t.code==="git_revision_conflict"}function ct(t){const s=[];let n=0;const i=t.lines;for(;n<i.length;){const o=i[n];if(o.kind==="deletion"){const f=[];for(;n<i.length&&i[n].kind==="deletion";)f.push(i[n]),n+=1;const g=[];for(;n<i.length&&i[n].kind==="addition";)g.push(i[n]),n+=1;const x=Math.max(f.length,g.length);for(let a=0;a<x;a+=1){const p=f[a]??null,y=g[a]??null;s.push(Object.freeze({key:`${t.hunkId}:${p?.lineId??`-${a}`}:${y?.lineId??`-${a}`}`,left:p,right:y,changed:!0}))}continue}if(o.kind==="addition"){s.push(Object.freeze({key:`${t.hunkId}:${o.lineId}`,left:null,right:o,changed:!0})),n+=1;continue}s.push(Object.freeze({key:`${t.hunkId}:${o.lineId}`,left:o,right:o,changed:!1})),n+=1}return s}function ot(t,s,n){const i=new Set(s),o=[];for(const f of t){if(o.push(Object.freeze({kind:"hunk-header",hunk:f})),i.has(f.hunkId)){o.push(Object.freeze({kind:"folded",hunk:f}));continue}if(n==="side-by-side"){for(const g of ct(f))o.push(Object.freeze({kind:"side-by-side",hunk:f,row:g}));continue}for(const g of f.lines)o.push(Object.freeze({kind:"unified-line",hunk:f,line:g}))}return o}function ve(t){const s=[];for(const n of t){let i=!1;for(const o of n.lines){const f=o.kind==="addition"||o.kind==="deletion";f&&!i&&s.push(Object.freeze({lineId:o.lineId,hunkId:n.hunkId,oldLineNumber:o.oldLineNumber,newLineNumber:o.newLineNumber})),i=f}}return s}function dt(t,s,n=500){const i=s.trim().toLowerCase();if(!i)return[];const o=[];for(const f of t)for(const g of f.lines){if(o.length>=n)return o;g.text.toLowerCase().includes(i)&&o.push(Object.freeze({lineId:g.lineId,hunkId:f.hunkId,side:g.oldLineNumber!==null&&g.newLineNumber!==null?"both":g.oldLineNumber!==null?"old":"new"}))}return o}function ut(t){let s=0,n=0;for(const i of t)for(const o of i.lines)o.kind==="addition"?s+=1:o.kind==="deletion"&&(n+=1);return Object.freeze({additions:s,deletions:n,hunks:t.length})}function ce(t,s){return s?t.replace(/\t/gu,"→ ").replace(/ +$/gu,n=>"·".repeat(n.length)):t}function ge(t){return t==="addition"?"+":t==="deletion"?"-":t==="meta"?"\\":" "}function ht(t,s){const n={schemaVersion:2,type:"review_context",repositoryRevision:t.repositoryRevision,path:t.path,source:t.source,hunk:s.header,hunkId:s.hunkId,complete:s.complete},i=s.lines.map(o=>o.raw).join(`
2
+ `).slice(0,12e3);return[`请审阅 ${t.path} 的这个 diff hunk,并指出正确性、安全性和测试风险:`,"","```review_context",JSON.stringify(n,null,2),"```","","```diff",i,"```"].join(`
3
+ `)}function be({document:t,mode:s,wrap:n,showWhitespace:i,collapsedHunks:o,anchorLineId:f,loading:g=!1,stale:x=!1,onChangeMode:a,onToggleWrap:p,onToggleWhitespace:y,onToggleHunk:b,hunkAction:d=null,selectedLineIds:I=[],onToggleLine:h,ignoreWhitespace:H=!1,onToggleIgnoreWhitespace:D,wordDiff:N=!1,onToggleWordDiff:v,onSetAllFolded:T,onAnchorChange:P,onNotice:A,onLoadMore:L,onSendToComposer:q}){const R=r.useRef(null),[j,F]=r.useState(!1),[$,c]=r.useState(""),[l,u]=r.useState(0),B=r.useMemo(()=>ot(t.hunks,o,s),[t.hunks,o,s]),O=r.useMemo(()=>ve(t.hunks),[t.hunks]),U=r.useMemo(()=>ut(t.hunks),[t.hunks]),V=r.useMemo(()=>j?dt(t.hunks,$):[],[t.hunks,j,$]);r.useEffect(()=>{!f||!R.current||R.current.querySelector(`[data-line-id="${CSS.escape(f)}"]`)?.scrollIntoView({block:"center"})},[f]),r.useEffect(()=>{u(0)},[$]);const Y=r.useMemo(()=>f?O.findIndex(E=>E.lineId===f):-1,[O,f]),J=E=>{if(O.length===0){A("这个文件没有改动。");return}const w=Y<0?E>0?-1:0:Y,z=Math.min(O.length-1,Math.max(0,w+E));P(O[z].lineId)},ne=E=>{if(E.key==="F7"){E.preventDefault(),J(E.shiftKey?-1:1);return}if(E.key==="Escape"){j&&(E.stopPropagation(),F(!1),c(""));return}if(E.key==="Enter"&&j&&V.length>0){E.preventDefault();const w=E.shiftKey?(l-1+V.length)%V.length:(l+1)%V.length;u(w),P(V[w].lineId)}};return t.kind==="binary"||t.kind==="symlink"||t.kind==="submodule"?e.jsxs("div",{className:"diff-viewer",children:[e.jsx(he,{doc:t,stats:U,stale:x}),e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(W,{name:"code"}),e.jsx("strong",{children:xt(t.kind)}),e.jsx("p",{children:"只展示变更事实,不返回可预览内容。"}),e.jsx("ul",{className:"diff-meta-list",children:t.meta.slice(0,8).map(E=>e.jsx("li",{children:e.jsx("code",{children:E})},E))})]})]}):t.kind==="metadata"?e.jsxs("div",{className:"diff-viewer",children:[e.jsx(he,{doc:t,stats:U,stale:x}),e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(W,{name:"code"}),e.jsx("strong",{children:"仅有元数据变化"}),e.jsx("p",{children:"没有文本 Hunk,但文件确实变了。"}),e.jsx("ul",{className:"diff-meta-list",children:t.meta.slice(0,8).map(E=>e.jsx("li",{children:e.jsx("code",{children:E})},E))})]})]}):e.jsxs("div",{className:"diff-viewer",children:[e.jsx(he,{doc:t,stats:U,stale:x}),e.jsxs("div",{className:"diff-toolbar",role:"toolbar","aria-label":"Diff 显示选项",children:[e.jsxs("div",{className:"diff-mode-group",role:"group","aria-label":"Diff 布局",children:[e.jsx("button",{type:"button",className:"text-button","aria-pressed":s==="unified",onClick:()=>a("unified"),children:"统一"}),e.jsx("button",{type:"button",className:"text-button","aria-pressed":s==="side-by-side",onClick:()=>a("side-by-side"),children:"并排"})]}),e.jsx("button",{type:"button",className:"text-button","aria-pressed":n,onClick:p,children:"换行"}),e.jsx("button",{type:"button",className:"text-button","aria-pressed":i,onClick:y,children:"空白字符"}),v?e.jsx("button",{type:"button",className:`text-button ${N?"diff-toggle-on":""}`,"aria-pressed":N,title:"词级差异(重新读取 Diff)",onClick:v,children:"词级"}):null,D?e.jsx("button",{type:"button",className:`text-button ${H?"diff-toggle-on":""}`,"aria-pressed":H,title:"忽略空白差异(重新读取 Diff)",onClick:D,children:"忽略空白"}):null,e.jsx("button",{type:"button",className:"text-button",onClick:()=>T(o.length===0),children:o.length===0?"折叠全部":"展开全部"}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>J(-1),disabled:O.length===0,"aria-label":"上一个改动",children:"↑改动"}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>J(1),disabled:O.length===0,"aria-label":"下一个改动",children:"↓改动"}),e.jsx("span",{className:"diff-anchor-count","aria-live":"polite",children:O.length===0?"无改动":`改动 ${Math.max(1,Y+1)}/${O.length}`}),e.jsx("button",{type:"button",className:"text-button","aria-pressed":j,onClick:()=>F(E=>!E),children:"查找"})]}),j?e.jsxs("div",{className:"diff-find",children:[e.jsx("input",{type:"search",value:$,autoFocus:!0,"aria-label":"在已加载的 Diff 中查找",placeholder:"在已加载内容中查找",onChange:E=>c(E.target.value)}),e.jsxs("span",{"aria-live":"polite",children:[$.trim()?V.length===0?"无命中":`${l+1}/${V.length}`:"输入以查找",t.completeness!=="complete"?" · 仅已加载内容":""]})]}):null,t.completeness==="paged"?e.jsx("p",{className:"resource-notice",role:"status",children:"当前为分页预览,未加载的 Hunk 不能执行任何写入。"}):null,e.jsx("div",{className:`diff-body diff-body-${s} ${n?"diff-wrap":""}`,ref:R,tabIndex:0,role:"region","aria-label":`Diff ${t.path}`,onKeyDown:ne,children:B.length===0?e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(W,{name:"check"}),e.jsx("strong",{children:"没有文本改动"})]}):B.map(E=>e.jsx(ft,{row:E,mode:s,showWhitespace:i,folded:o.includes(bt(E).hunkId),activeAnchor:f,onToggleHunk:b,hunkAction:d,selectedLineIds:I,onToggleLine:h,wordDiff:N},gt(E)))}),e.jsxs("footer",{className:"diff-footer",children:[q?e.jsx("button",{type:"button",className:"secondary-button",disabled:t.hunks.length===0,onClick:()=>q(ht({path:t.path,source:t.source,repositoryRevision:t.repositoryRevision},t.hunks[Math.max(0,O.findIndex(E=>E.lineId===f))]??t.hunks[0])),children:"发送当前 Hunk 到对话"}):null,t.nextCursor&&L?e.jsx("button",{type:"button",className:"text-button",onClick:L,disabled:g,children:g?"加载中…":"加载更多 Diff"}):null,e.jsxs("span",{className:"diff-footer-hint",children:[t.capabilities.stageFile?"可暂存此文件":t.capabilities.unstageFile?"可取消暂存此文件":"只读",t.capabilities.reason?` · ${t.capabilities.reason}`:""]})]})]})}function he({doc:t,stats:s,stale:n}){return e.jsxs("header",{children:[e.jsx("strong",{title:t.path,children:t.path}),e.jsx("span",{className:"diff-source",children:jt(t.source)}),e.jsxs("span",{className:"diff-stat-add",children:["+",s.additions]}),e.jsxs("span",{className:"diff-stat-del",children:["-",s.deletions]}),e.jsxs("span",{children:[s.hunks," 个 Hunk"]}),n?e.jsx("span",{className:"diff-stale",role:"status",children:"已变化"}):null]})}function ft({row:t,mode:s,showWhitespace:n,folded:i,activeAnchor:o,onToggleHunk:f,hunkAction:g=null,selectedLineIds:x=[],onToggleLine:a,wordDiff:p=!1}){if(t.kind==="hunk-header")return e.jsxs("div",{className:"diff-hunk-header",children:[e.jsx("button",{type:"button",className:"diff-fold","aria-expanded":!i,"aria-label":i?"展开 Hunk":"折叠 Hunk",onClick:()=>f(t.hunk.hunkId),children:i?"▸":"▾"}),e.jsx("code",{children:t.hunk.header}),t.hunk.complete?null:e.jsx("em",{className:"diff-incomplete",children:"未完整加载"}),g&&t.hunk.complete?e.jsx("button",{type:"button",className:"text-button diff-hunk-action","aria-label":g.label,onClick:()=>g.run(t.hunk.hunkId),children:g.label}):null]});if(t.kind==="folded")return e.jsxs("button",{type:"button",className:"diff-folded-row",onClick:()=>f(t.hunk.hunkId),children:["已折叠 ",t.hunk.lines.length," 行 · 点击展开"]});if(t.kind==="side-by-side")return e.jsx(pt,{row:t.row,showWhitespace:n});const y=t.line;return e.jsxs("div",{className:`diff-line diff-line-${y.kind} ${o===y.lineId?"diff-line-anchor":""}`,"data-line-id":y.lineId,"data-side":y.oldLineNumber!==null&&y.newLineNumber!==null?"both":y.oldLineNumber!==null?"old":"new",children:[e.jsx("span",{className:"diff-gutter",children:y.oldLineNumber??""}),e.jsx("span",{className:"diff-gutter",children:y.newLineNumber??""}),a&&(y.kind==="addition"||y.kind==="deletion")?e.jsx("input",{type:"checkbox",className:"diff-line-select","aria-label":`选择第 ${y.newLineNumber??y.oldLineNumber??""} 行`,checked:x.includes(y.lineId),onChange:()=>a(y.lineId)}):null,e.jsx("span",{className:"diff-marker","aria-hidden":"true",children:ge(y.kind)}),e.jsx("span",{className:"diff-code",children:p?mt(ce(y.text,n)):ce(y.text,n)||" "}),null]})}function mt(t){if(!t)return" ";const s=[],n=/\[-([\s\S]*?)-\]|\{\+([\s\S]*?)\+\}/gu;let i=0,o,f=0;for(;(o=n.exec(t))!==null;)o.index>i&&s.push(t.slice(i,o.index)),o[1]!==void 0?s.push(e.jsx("em",{className:"diff-word-del",children:o[1]},f++)):s.push(e.jsx("em",{className:"diff-word-add",children:o[2]},f++)),i=o.index+o[0].length;return i<t.length&&s.push(t.slice(i)),s.length>0?s:" "}function pt({row:t,showWhitespace:s}){return e.jsxs("div",{className:`diff-sbs-row ${t.changed?"diff-sbs-changed":""}`,children:[e.jsxs("div",{className:`diff-sbs-side ${t.left?.kind==="deletion"?"diff-line-deletion":""}`,"data-line-id":t.left?.lineId??void 0,children:[e.jsx("span",{className:"diff-gutter",children:t.left?.oldLineNumber??""}),e.jsx("span",{className:"diff-marker","aria-hidden":"true",children:t.left?ge(t.left.kind):" "}),e.jsx("span",{className:"diff-code",children:t.left?ce(t.left.text,s)||" ":""})]}),e.jsxs("div",{className:`diff-sbs-side ${t.right?.kind==="addition"?"diff-line-addition":""}`,"data-line-id":t.right?.lineId??void 0,children:[e.jsx("span",{className:"diff-gutter",children:t.right?.newLineNumber??""}),e.jsx("span",{className:"diff-marker","aria-hidden":"true",children:t.right?ge(t.right.kind):" "}),e.jsx("span",{className:"diff-code",children:t.right?ce(t.right.text,s)||" ":""})]})]})}function gt(t){return t.kind==="hunk-header"?`h:${t.hunk.hunkId}`:t.kind==="folded"?`f:${t.hunk.hunkId}`:t.kind==="side-by-side"?t.row.key:t.line.lineId}function bt(t){return t.hunk}function xt(t){return t==="binary"?"二进制差异":t==="symlink"?"符号链接变化":t==="submodule"?"Submodule 指针变化":"元数据变化"}function jt(t){return t==="staged"?"HEAD → 索引":t==="unstaged"?"索引 → 工作区":t==="untracked"?"空 → 未跟踪文件":"冲突版本"}const ye=Object.freeze({snapshot:"两端快照 A → B","merge-base":"共同祖先 → B"});function yt({refs:t,actions:s,display:n,collapsedHunks:i,anchorLineId:o,onDisplayChange:f,onToggleHunk:g,onSetAllFolded:x,onAnchorChange:a,onNotice:p,onSendToComposer:y}){const b=r.useMemo(()=>kt(t),[t]),d=b.find(u=>u.isBranch)?.value??b[0]?.value??"",I=t?.refs.find(u=>u.isHead)?.shortName??d,[h,H]=r.useState(d),[D,N]=r.useState(I),[v,T]=r.useState("snapshot"),[P,A]=r.useState(null),[L,q]=r.useState(null),[R,j]=r.useState(!1),[F,$]=r.useState(""),c=()=>{!h||!D||R||(j(!0),$(""),(async()=>{try{const u=await s.gitCompare({baseRef:h,headRef:D,mode:v});A(u),q(null)}catch(u){$(ke(u))}finally{j(!1)}})())},l=u=>{!P||u.sensitive||R||(j(!0),$(""),(async()=>{try{const B=await s.gitCompareFileDiff({baseOid:P.baseOid,headOid:P.headOid,path:u.path});q(B)}catch(B){$(ke(B))}finally{j(!1)}})())};return b.length===0?e.jsxs("div",{className:"resource-empty",children:[e.jsx(W,{name:"branch",size:16}),e.jsx("strong",{children:"没有可比较的 ref"}),e.jsx("p",{children:"这个仓库还没有分支或标签。"})]}):e.jsxs("div",{className:"git-compare","aria-label":"分支与版本比较",children:[e.jsxs("div",{className:"git-compare-form",children:[e.jsxs("label",{children:[e.jsx("span",{children:"基准 A"}),e.jsx("select",{value:h,"aria-label":"选择基准 A",onChange:u=>H(u.target.value),children:b.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))})]}),e.jsxs("label",{children:[e.jsx("span",{children:"目标 B"}),e.jsx("select",{value:D,"aria-label":"选择目标 B",onChange:u=>N(u.target.value),children:b.map(u=>e.jsx("option",{value:u.value,children:u.label},u.value))})]}),e.jsxs("label",{children:[e.jsx("span",{children:"模式"}),e.jsx("select",{value:v,"aria-label":"选择比较模式",onChange:u=>T(u.target.value),children:Object.keys(ye).map(u=>e.jsx("option",{value:u,children:ye[u]},u))})]}),e.jsx("button",{type:"button",className:"primary-button",disabled:R||h===D,"aria-busy":R,onClick:c,children:R?"比较中…":"比较"})]}),e.jsx("p",{className:"git-compare-hint",children:"修改选择不会立即发起查询;点「比较」或按 Enter 才执行。交换 A/B 后会取消旧的请求。"}),F?e.jsx("p",{className:"resource-error",role:"alert",children:F}):null,P?e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"git-compare-range",children:[P.baseLabel," ",e.jsx("code",{children:P.baseOid.slice(0,10)})," → ",P.headLabel," ",e.jsx("code",{children:P.headOid.slice(0,10)}),P.truncated?" · 文件列表已截断":""]}),e.jsxs("p",{className:"git-compare-range",children:[P.files.length," 个文件 ·",e.jsxs("em",{className:"diff-stat-add",children:[" +",P.additions]}),e.jsxs("em",{className:"diff-stat-del",children:[" -",P.deletions]}),e.jsx("button",{type:"button",className:"text-button",onClick:c,disabled:R,children:"重新比较"})]}),e.jsx("ul",{className:"git-compare-files",children:P.files.map(u=>e.jsx("li",{children:e.jsxs("button",{type:"button",className:L?.path===u.path?"selected":"","aria-current":L?.path===u.path?"true":void 0,disabled:u.sensitive,onClick:()=>l(u),children:[e.jsx("span",{className:"git-commit-file-stats",children:u.binary?"bin":`+${u.additions} -${u.deletions}`}),e.jsx("span",{title:u.path,children:u.renamedFrom?`${u.renamedFrom} → ${u.path}`:u.path}),u.sensitive?e.jsx("em",{className:"git-sensitive-badge",children:"受保护"}):null]})},`${u.renamedFrom??""}:${u.path}`))}),L?e.jsx(be,{document:L,mode:n.mode,wrap:n.wrap,showWhitespace:n.showWhitespace,collapsedHunks:i,anchorLineId:o,loading:R,onChangeMode:u=>f({mode:u}),onToggleWrap:()=>f({wrap:!n.wrap}),onToggleWhitespace:()=>f({showWhitespace:!n.showWhitespace}),onToggleHunk:g,onSetAllFolded:x,onAnchorChange:a,onNotice:p,onSendToComposer:y}):e.jsx("p",{className:"git-compare-hint",children:"点一个文件查看该比较下的 Diff。"})]}):null]})}function kt(t){return t?t.refs.map(s=>Object.freeze({value:s.shortName,label:s.kind==="branch"?s.shortName:`${s.shortName}(${s.kind==="tag"?"tag":s.kind==="remote"?"远程":"其他"})`,isBranch:s.kind==="branch"})):[]}function ke(t){const s=t?.code;return s==="git_merge_base_multiple"?"这两个 ref 有多个共同祖先,没有唯一分叉点;请改用「两端快照」模式。":s==="git_merge_base_missing"?"两个 ref 没有共同祖先,无法用「共同祖先」模式;请改用「两端快照」模式。":s==="git_shallow_history"?"仓库缺少完成该比较所需的对象(浅克隆?)。":s==="git_ref_not_found"?"所选 ref 无法解析为提交。":t instanceof Error?t.message:"比较失败。"}const Nt=Object.freeze({"both-modified":"双方都修改","both-added":"双方都新增","added-by-us":"我们新增 · 对方删除","added-by-them":"对方新增 · 我们删除","deleted-by-us":"我们删除 · 对方修改","deleted-by-them":"对方删除 · 我们修改","both-deleted":"双方都删除",other:"其他冲突形态"}),vt=Object.freeze({base:"base(共同祖先)",ours:"ours(当前分支)",theirs:"theirs(合入分支)",worktree:"工作区文件",revision:"该版本"});function It({path:t,actions:s}){const[n,i]=r.useState(null),[o,f]=r.useState(""),[g,x]=r.useState(!0);if(r.useEffect(()=>{let p=!1;return x(!0),f(""),(async()=>{try{const y=await s.gitConflictVersions(t);p||i(y)}catch(y){p||(i(null),f(y instanceof Error?y.message:"冲突详情读取失败。"))}finally{p||x(!1)}})(),()=>{p=!0}},[s,t]),g)return e.jsx("p",{className:"resource-loading",children:"正在读取冲突版本…"});if(o)return e.jsx("p",{className:"resource-error",role:"alert",children:o});if(!n)return null;const a=[n.base,n.ours,n.theirs,n.worktree];return e.jsxs("section",{className:"git-conflict","aria-label":"冲突版本",children:[e.jsxs("header",{className:"git-conflict-header",children:[e.jsx(W,{name:"warning",size:14}),e.jsx("strong",{children:n.path}),e.jsx("em",{className:"git-merge-badge",children:Nt[n.shape]})]}),e.jsx("p",{className:"git-compare-hint",children:"直接读 index 的 stage 1/2/3,不用普通暂存 Diff 代替完整冲突视图。缺失的版本是这种冲突形态的正常结果。"}),e.jsx("div",{className:"git-conflict-grid",children:a.map(p=>e.jsxs("article",{className:"git-conflict-version",children:[e.jsxs("header",{children:[e.jsx("span",{children:vt[p.label]}),p.exists?e.jsx("code",{children:p.oid?.slice(0,10)}):e.jsx("em",{className:"git-conflict-absent",children:"此形态下不存在"})]}),p.exists?p.lfs?e.jsxs("p",{className:"git-conflict-note",children:["LFS 指针 · oid ",p.lfs.oid.slice(0,16),"…",p.lfs.size!==null?` · ${p.lfs.size} 字节(不下载对象)`:""]}):p.binary?e.jsxs("p",{className:"git-conflict-note",children:["二进制内容(",p.byteSize," 字节),不在此处渲染。"]}):p.truncated?e.jsxs("p",{className:"git-conflict-note",children:["超过上限(",p.byteSize," 字节),未读取内容。"]}):e.jsx("pre",{className:"git-conflict-content",children:p.content??""}):e.jsx("p",{className:"git-conflict-note",children:"没有这个版本。"})]},p.label))})]})}function St({history:t,actions:s,display:n,collapsedHunks:i,anchorLineId:o,onDisplayChange:f,onToggleHunk:g,onSetAllFolded:x,onAnchorChange:a,onNotice:p,onSendToComposer:y}){const{page:b,detail:d,files:I,diff:h,fileHistory:H,error:D}=t,[N,v]=r.useState(null),[T,P]=r.useState(!1),[A,L]=r.useState(null),[q,R]=r.useState(!1),[j,F]=r.useState(null),$=r.useMemo(()=>(b?.items??[]).filter(c=>c.isMerge).length,[b]);return t.isEmptyRepository?e.jsxs("div",{className:"resource-empty",children:[e.jsx(W,{name:"branch",size:16}),e.jsx("strong",{children:"尚无提交"}),e.jsx("p",{children:"这个仓库还没有提交。新文件仍可暂存并完成首次提交。"})]}):e.jsxs("div",{className:"git-history","aria-label":"Git 历史",children:[e.jsxs("div",{className:"git-history-search",children:[e.jsx("input",{type:"search","aria-label":"搜索提交消息",placeholder:"搜索提交消息…",value:t.query.message,onChange:c=>t.setQuery({message:c.target.value})}),e.jsx("input",{type:"search","aria-label":"按作者筛选",placeholder:"作者",value:t.query.author,onChange:c=>t.setQuery({author:c.target.value})}),e.jsx("input",{type:"search","aria-label":"按文件路径筛选",placeholder:"文件路径",value:t.query.path,onChange:c=>t.setQuery({path:c.target.value})}),e.jsx("input",{type:"search","aria-label":"按提交哈希查找",placeholder:"提交哈希",value:t.query.sha,onChange:c=>t.setQuery({sha:c.target.value})}),e.jsxs("div",{className:"git-history-dates",children:[e.jsx("input",{type:"search","aria-label":"起始日期",placeholder:"自 (2026-01-01)",value:t.query.since,onChange:c=>t.setQuery({since:c.target.value})}),e.jsx("input",{type:"search","aria-label":"结束日期",placeholder:"至",value:t.query.until,onChange:c=>t.setQuery({until:c.target.value})})]}),e.jsxs("div",{className:"git-history-search-actions",children:[e.jsxs("span",{role:"status",children:[b?`已载 ${b.items.length}${b.truncated?"+":""} 个提交${$>0?` · 含 ${$} 个合并`:""}`:"读取中…",t.refs?.detached?" · detached HEAD":""]}),e.jsx("button",{type:"button",className:`text-button ${A?"diff-toggle-on":""}`,"aria-pressed":A!==null,onClick:()=>{if(A){L(null);return}R(!0),s.gitGraph().then(L).finally(()=>R(!1))},children:"拓扑"}),e.jsx("button",{type:"button",className:"text-button",onClick:t.resetQuery,children:"清除筛选"})]})]}),D?e.jsx("p",{className:"resource-error",role:"alert",children:D}):null,H?e.jsxs("section",{className:"git-file-history","aria-label":"文件历史",children:[e.jsxs("header",{children:[e.jsxs("strong",{children:["文件历史 · ",H.path]}),e.jsx("button",{type:"button",className:"text-button",onClick:t.closeFileHistory,children:"返回提交列表"})]}),e.jsx("p",{className:"git-file-history-note",children:"跟随重命名;复制与复杂合并场景的追踪可能不完整。"}),e.jsx("ul",{children:H.items.map(c=>e.jsx("li",{children:e.jsxs("button",{type:"button",onClick:()=>{t.closeFileHistory(),t.selectCommit(c)},children:[e.jsx("code",{children:c.shortId}),e.jsx("span",{children:c.subject}),e.jsx("time",{dateTime:c.authoredAt,children:fe(c.authoredAt)})]})},c.id))}),H.truncated?e.jsx("p",{className:"git-file-history-note",children:"结果已截断,仅显示最近的提交。"}):null]}):null,d?e.jsxs("section",{className:"git-commit-detail","aria-label":"提交详情",children:[e.jsxs("header",{children:[e.jsxs("div",{children:[e.jsx("code",{children:d.shortId}),d.isMerge?e.jsxs("span",{className:"git-merge-badge",children:["合并提交 · ",d.parents.length," 个父提交"]}):d.parents.length===0?e.jsx("span",{className:"git-root-badge",children:"根提交"}):null]}),e.jsx("button",{type:"button",className:"text-button",onClick:t.closeDetail,children:"关闭详情"})]}),e.jsx("p",{className:"git-commit-subject",children:d.subject}),d.message.trim()!==d.subject.trim()?e.jsx("pre",{className:"git-commit-message",children:d.message.trim()}):null,e.jsxs("p",{className:"git-commit-meta",children:[d.authorName," <",d.authorEmail,"> · ",fe(d.authoredAt),d.committerName&&d.committerName!==d.authorName?` · 提交者 ${d.committerName}`:""]}),e.jsxs("p",{className:"git-commit-base",children:["比较基准:",d.baseLabel," ",e.jsx("code",{children:d.baseOid.slice(0,10)})]}),d.isMerge?e.jsx("div",{className:"git-parent-picker",role:"group","aria-label":"选择父提交",children:d.parents.map((c,l)=>e.jsxs("button",{type:"button","aria-pressed":d.parentIndex===l,className:d.parentIndex===l?"selected":"",onClick:()=>t.setParentIndex(l),children:["父 ",l+1," ",e.jsx("code",{children:c.slice(0,8)})]},c))}):null,I?e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"git-commit-stats-line",children:[I.files.length," 个文件 ·",e.jsxs("em",{className:"diff-stat-add",children:[" +",I.additions]}),e.jsxs("em",{className:"diff-stat-del",children:[" -",I.deletions]}),I.truncated?" · 已截断":""]}),e.jsx("ul",{className:"git-commit-file-list",children:I.files.map(c=>e.jsxs("li",{children:[e.jsxs("button",{type:"button",className:d&&t.diff?.path===c.path?"selected":"","aria-current":t.diff?.path===c.path?"true":void 0,onClick:()=>t.selectFile(c.path),children:[e.jsx("span",{className:"git-commit-file-stats",children:c.binary?"bin":`+${c.additions} -${c.deletions}`}),e.jsx("span",{title:c.path,children:c.renamedFrom?`${c.renamedFrom} → ${c.path}`:c.path}),c.sensitive?e.jsx("em",{className:"git-sensitive-badge",children:"受保护"}):null]}),e.jsx("button",{type:"button",className:"text-button","aria-label":`查看 ${c.path} 的文件历史`,onClick:()=>t.openFileHistory(c.path),children:"历史"}),e.jsx("button",{type:"button",className:"text-button","aria-label":`查看 ${c.path} 在该提交的版本`,onClick:()=>{d&&s.gitBlob({path:c.path,rev:d.id}).then(l=>F({path:l.path,rev:l.rev,lines:l.content,binary:l.binary,truncated:l.truncated,byteSize:l.byteSize,dataUrl:l.dataUrl})).catch(()=>F(null))},children:"该版本"}),e.jsx("button",{type:"button",className:"text-button","aria-label":`查看 ${c.path} 的 Blame`,onClick:()=>{d&&(P(!0),s.gitBlame({path:c.path,rev:d.id}).then(l=>v({...l,rev:d.id})).catch(()=>v(null)).finally(()=>P(!1)))},children:"Blame"})]},c.path))})]}):e.jsx("p",{className:"resource-loading",children:"正在读取该提交的改动…"})]}):null,h?e.jsx(be,{document:h,mode:n.mode,wrap:n.wrap,showWhitespace:n.showWhitespace,collapsedHunks:i,anchorLineId:o,loading:t.loadingDetail,onChangeMode:c=>f({mode:c}),onToggleWrap:()=>f({wrap:!n.wrap}),onToggleWhitespace:()=>f({showWhitespace:!n.showWhitespace}),onToggleHunk:g,onSetAllFolded:x,onAnchorChange:a,onNotice:p,onSendToComposer:y}):null,q?e.jsx("p",{className:"git-file-history-note",children:"正在读取拓扑…"}):null,A?e.jsxs("section",{className:"git-graph","aria-label":"提交拓扑",children:[e.jsxs("header",{children:[e.jsxs("strong",{children:["拓扑(",A.rows.length,A.truncated?"+":""," 行)"]}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>L(null),children:"关闭"})]}),e.jsx("p",{className:"git-file-history-note",children:"图形列由 git 直接绘制,不由前端重算。"}),e.jsx("div",{className:"git-graph-body",children:A.rows.map((c,l)=>e.jsxs("button",{type:"button",className:c.id&&d?.id===c.id?"selected":"",disabled:!c.id,onClick:()=>{c.id&&(L(null),t.selectCommit({id:c.id}))},children:[e.jsx("code",{children:c.graph}),e.jsx("span",{children:c.id?c.subject:""})]},`${c.id??"graph"}:${l}`))})]}):null,j?e.jsxs("section",{className:"git-blob","aria-label":"该版本内容",children:[e.jsxs("header",{children:[e.jsxs("strong",{children:[j.path," @ ",j.rev.slice(0,10)]}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>F(null),children:"关闭"})]}),j.truncated?e.jsxs("p",{className:"git-file-history-note",children:["文件超过上限(",j.byteSize," 字节),未读取内容。"]}):j.dataUrl?e.jsx("img",{src:j.dataUrl,alt:`${j.path} 在该提交的图像版本`,className:"git-blob-image"}):j.binary?e.jsxs("p",{className:"git-file-history-note",children:["二进制内容(",j.byteSize," 字节),不在此处渲染。"]}):e.jsx("pre",{className:"git-blob-content",children:j.lines.join(`
4
+ `)})]}):null,N?e.jsxs("section",{className:"git-blame","aria-label":"Blame",children:[e.jsxs("header",{children:[e.jsxs("strong",{children:["Blame · ",N.path]}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>v(null),children:"关闭"})]}),T?e.jsx("p",{className:"git-file-history-note",children:"读取中…"}):null,e.jsx("div",{className:"git-blame-table",children:N.lines.map(c=>e.jsxs("div",{className:"git-blame-row",children:[e.jsx("code",{children:c.commitShort}),e.jsx("span",{className:"git-blame-author",title:c.summary,children:c.author}),e.jsx("time",{children:c.authoredAt.slice(0,10)}),e.jsx("span",{className:"git-blame-summary",title:c.summary,children:c.summary})]},c.lineNumber))}),N.truncated?e.jsx("p",{className:"git-file-history-note",children:"结果已截断。"}):null]}):null,e.jsx("ul",{className:"git-history-list",children:(b?.items??[]).map(c=>e.jsx("li",{children:e.jsxs("button",{type:"button",className:d?.id===c.id?"selected":"","aria-current":d?.id===c.id?"true":void 0,onClick:()=>t.selectCommit(c),children:[e.jsx("code",{children:c.shortId}),e.jsx("span",{title:c.subject,children:c.subject}),c.isMerge?e.jsx("em",{className:"git-merge-badge-inline",children:"合并"}):null,c.decoration.length>0?e.jsx("em",{className:"git-ref-badge",title:c.decoration.join(", "),children:c.decoration[0]}):null,e.jsx("time",{dateTime:c.authoredAt,children:fe(c.authoredAt)})]})},c.id))}),b&&b.items.length===0&&!t.loading?e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(W,{name:"search",size:16}),e.jsx("strong",{children:"没有匹配的提交"}),e.jsx("p",{children:"筛选在 Host 上对整个可达历史执行,不只是当前页。"})]}):null,b?.nextCursor?e.jsx("button",{type:"button",className:"text-button resource-load-more",onClick:t.loadMore,disabled:t.loadingMore,children:t.loadingMore?"加载中…":"加载更多提交"}):null]})}function fe(t){const s=new Date(t);return Number.isNaN(s.getTime())?t:s.toLocaleDateString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"})}const Ct={changes:"变更",history:"历史",compare:"比较"},Ie={conflict:"冲突",unstaged:"未暂存",staged:"已暂存",untracked:"未跟踪"},Se=["conflict","unstaged","staged","untracked"];function wt(t,s){return s==="conflict"?t.conflicted:t[s]}function Pt({workspaceId:t,refreshEpoch:s,actions:n,onSendToComposer:i,onRevealInFiles:o,navigatorWidthPx:f,onNavigatorWidthCommit:g,store:x}){const a=it({workspaceId:t,refreshEpoch:s,actions:n,store:x}),{notice:p,showNotice:y,clearNotice:b}=Oe(),{status:d,diff:I,session:h}=a,H=()=>{if(!h.selectedFileId||h.selectedLineIds.length===0)return;const l=h.selectedFileId,u=h.selectedLineIds;a.applyPatch({fileId:l,lineIds:u}),a.setSession({selectedLineIds:[]})},D=r.useRef(null),[N,v]=r.useState(0);r.useEffect(()=>{const l=D.current;if(!l)return;const u=new ResizeObserver(B=>{for(const O of B)v(O.contentRect.width)});return u.observe(l),v(l.getBoundingClientRect().width),()=>u.disconnect()},[]);const T=N>0&&N<=620,P=N>0&&N<=959,A=N>0&&N<=640?"unified":a.display.mode,L=r.useMemo(()=>{const l=a.selectedEntry;if(!o||!l||h.view!=="changes")return null;const u=l.fileId;return()=>{n.gitFilesTarget(u).then(B=>o({path:B.path,filesToken:B.filesToken})).catch(()=>y("该文件无法在 Files 中打开。"))}},[n,a.selectedEntry,o,h.view,y]),q=r.useMemo(()=>{if(h.view!=="changes"||!h.selectedFileId||!I)return null;const l=h.selectedFileId;return I.source!=="staged"&&I.source!=="unstaged"&&I.source!=="untracked"?null:{label:I.source==="staged"?"取消暂存此 Hunk":"暂存此 Hunk",run:B=>{a.applyPatch({fileId:l,hunkIds:[B]})}}},[I,a,h.selectedFileId,h.view]),R=Ve({enabled:(h.view==="history"||h.view==="compare")&&!!t,session:h,setSession:a.setSession,actions:n,refreshEpoch:s}),j=r.useMemo(()=>d?Se.map(l=>({source:l,label:Ie[l],count:wt(d.counts,l),items:lt(d,l)})):[],[d]),F=r.useMemo(()=>h.group?j.filter(l=>l.source===h.group):j,[j,h.group]),$=r.useMemo(()=>F.flatMap(l=>l.items.map(u=>u.fileId)),[F]),c=r.useMemo(()=>I?ve(I.hunks).map(l=>l.lineId):[],[I]);return Ue({enabled:h.view==="changes",session:h,setSession:a.setSession,fileIds:$,anchorLineIds:c,onOpenSelection:()=>{const l=a.selectedEntry;l&&a.openFile(l)},onEscapeFallback:()=>{}}),a.error&&!d?e.jsxs("div",{className:"resource-empty",role:"alert",children:[e.jsx(W,{name:"warning"}),e.jsx("strong",{children:"Git 状态读取失败"}),e.jsx("p",{children:a.error}),e.jsx("button",{type:"button",className:"secondary-button",onClick:a.reload,children:"重试"})]}):a.loading&&!d?e.jsx("p",{className:"resource-loading",children:"正在读取 Git 状态…"}):d&&!d.isRepository?e.jsxs("div",{className:"resource-empty",children:[e.jsx(W,{name:"branch",size:16}),e.jsx("strong",{children:"当前项目不是 Git 仓库"}),e.jsx("p",{children:"文件和 Agent 不受影响。"})]}):e.jsxs("div",{ref:D,"data-width":T?"narrow":P?"compact":"wide","data-narrow-view":T&&h.selectedFileId?"detail":"list",className:"work-resource-panel git-panel",children:[e.jsxs("div",{className:"git-summary",children:[e.jsxs("div",{children:[e.jsx(W,{name:"branch",size:16}),e.jsx("strong",{children:d?.detached?`detached ${d.head??""}`:d?.branch||"HEAD"})]}),e.jsxs("span",{children:[d?.upstream||"无 upstream",d&&(d.ahead||d.behind)?` · ↑${d.ahead} ↓${d.behind}`:""]}),e.jsx("button",{type:"button",className:"icon-button","aria-label":"刷新 Git 状态","aria-busy":a.refreshing,onClick:()=>{b(),a.reload()},disabled:a.refreshing,children:e.jsx(W,{name:"refresh",size:16})})]}),e.jsxs("div",{className:"git-views",role:"tablist","aria-label":"Git 视图",children:[ze.map(l=>e.jsxs("button",{type:"button",role:"tab","aria-selected":h.view===l,className:h.view===l?"selected":"",onClick:()=>a.setSession({view:l}),children:[Ct[l],l==="changes"&&d&&d.counts.total>0?e.jsx("span",{className:"git-view-count",children:d.counts.total}):null]},l)),a.refreshing?e.jsx("span",{className:"git-refreshing",children:"更新中…"}):null]}),p?e.jsx("p",{className:"resource-notice",role:"status",children:p.text}):null,h.notice?e.jsx("p",{className:"resource-notice",role:"status",children:h.notice}):null,a.error?e.jsx("p",{className:"resource-error",role:"alert",children:a.error}):null,e.jsxs(Me,{panelId:"git",navigatorWidthPx:f,onNavigatorWidthCommit:g,contentLabel:"Git 内容",navigatorLabel:"Git 导航",handleLabel:"调整 Git 导航宽度",contentClassName:"git-content",navigatorClassName:"git-changes",children:[e.jsxs(e.Fragment,{children:[T&&h.selectedFileId?e.jsx("button",{type:"button",className:"git-back-to-list",onClick:()=>a.setSession({selectedFileId:null}),children:"← 返回文件列表"}):null,h.view==="changes"?e.jsx(Lt,{groups:F,activeGroup:h.group,query:h.query,total:d?.counts.total??0,clean:d?.clean??!1,busy:a.busy,selectedFileIds:h.selectedFileIds,onQueryChange:l=>a.setSession({query:l,selectedFileId:null}),onGroupChange:l=>a.setSession({group:l,selectedFileId:null}),selectedFileId:h.selectedFileId,onSelect:l=>{a.setSession({selectedLineIds:[]}),a.openFile(l)},onToggleSelection:a.toggleSelection,onClearSelection:a.clearSelection,onStage:l=>{a.stagePaths(l)},onUnstage:l=>{a.unstagePaths(l)}}):null,h.view==="history"?e.jsx("div",{className:"git-history-nav",children:e.jsx("p",{className:"git-history-nav-note",children:"提交列表与详情显示在右侧。"})}):null,h.view==="compare"?e.jsx(yt,{refs:R.refs,actions:n,display:a.display,collapsedHunks:h.collapsedHunks,anchorLineId:h.anchorLineId,onDisplayChange:l=>a.setDisplay(l),onToggleHunk:l=>a.setSession({collapsedHunks:h.collapsedHunks.includes(l)?h.collapsedHunks.filter(u=>u!==l):[...h.collapsedHunks,l]}),onSetAllFolded:l=>a.setSession({collapsedHunks:l?h.collapsedHunks:[]}),onAnchorChange:l=>a.setSession({anchorLineId:l}),onNotice:y,onSendToComposer:i}):null]}),e.jsxs(e.Fragment,{children:[h.view==="changes"?a.selectedEntry?.source==="conflict"?e.jsx(It,{path:a.selectedEntry.path,actions:n}):I?e.jsxs("div",{children:[L?e.jsx("div",{className:"git-reveal-row",children:e.jsx("button",{type:"button",className:"text-button",onClick:L,children:"在 Files 打开"})}):null,h.selectedLineIds.length>0?e.jsxs("div",{className:"git-line-actions",role:"group","aria-label":"选中的行",children:[e.jsxs("span",{children:["已选 ",h.selectedLineIds.length," 行"]}),e.jsx("button",{type:"button",className:"secondary-button",disabled:a.busy,onClick:H,children:"暂存选中行"}),e.jsx("button",{type:"button",className:"text-button",onClick:()=>a.setSession({selectedLineIds:[]}),children:"清除"})]}):null,e.jsx(be,{hunkAction:q,ignoreWhitespace:a.display.ignoreWhitespace,onToggleIgnoreWhitespace:()=>a.setDisplay({ignoreWhitespace:!a.display.ignoreWhitespace}),wordDiff:a.display.wordDiff,onToggleWordDiff:()=>a.setDisplay({wordDiff:!a.display.wordDiff}),selectedLineIds:h.selectedLineIds,onToggleLine:l=>a.setSession({selectedLineIds:h.selectedLineIds.includes(l)?h.selectedLineIds.filter(u=>u!==l):[...h.selectedLineIds,l]}),document:I,mode:A,wrap:a.display.wrap,showWhitespace:a.display.showWhitespace,collapsedHunks:h.collapsedHunks,anchorLineId:h.anchorLineId,loading:a.loading,stale:a.stale,onChangeMode:l=>a.setDisplay({mode:l}),onToggleWrap:()=>a.setDisplay({wrap:!a.display.wrap}),onToggleWhitespace:()=>a.setDisplay({showWhitespace:!a.display.showWhitespace}),onToggleHunk:l=>a.setSession({collapsedHunks:h.collapsedHunks.includes(l)?h.collapsedHunks.filter(u=>u!==l):[...h.collapsedHunks,l]}),onSetAllFolded:l=>a.setSession({collapsedHunks:l?I.hunks.map(u=>u.hunkId):[]}),onAnchorChange:l=>a.setSession({anchorLineId:l}),onNotice:y,onLoadMore:I.nextCursor?a.loadMoreDiff:void 0,onSendToComposer:i})]}):e.jsxs("div",{className:"resource-empty",children:[e.jsx(W,{name:"code",size:16}),e.jsx("strong",{children:"选择变更查看 Diff"}),e.jsx("p",{children:"同一文件的「未暂存」和「已暂存」是两个不同的比较目标。"})]}):null,h.view==="changes"?e.jsx(Ft,{preview:a.commitPreview,draft:h.commitDraft,busy:a.busy,onDraftChange:l=>a.setSession({commitDraft:l}),onCommit:l=>a.commit(l)}):null,h.view==="history"?e.jsx(St,{history:R,actions:n,display:a.display,collapsedHunks:h.collapsedHunks,anchorLineId:h.anchorLineId,onDisplayChange:l=>a.setDisplay(l),onToggleHunk:l=>a.setSession({collapsedHunks:h.collapsedHunks.includes(l)?h.collapsedHunks.filter(u=>u!==l):[...h.collapsedHunks,l]}),onSetAllFolded:l=>a.setSession({collapsedHunks:l?h.collapsedHunks:[]}),onAnchorChange:l=>a.setSession({anchorLineId:l}),onNotice:y,onSendToComposer:i}):null,h.view==="compare"?e.jsx(Et,{title:"比较结果",stage:"S5"}):null]})]})]})}function Ft({preview:t,draft:s,busy:n,onDraftChange:i,onCommit:o}){const[f,g]=r.useState(!1),[x,a]=r.useState(""),p=t?.blockedReason??"正在读取暂存区…",y=!!t?.canCommit&&s.summary.trim().length>0&&!n,b=()=>{a(""),o({summary:s.summary,...s.body.trim()?{body:s.body}:{}}).catch(d=>a(d instanceof Error?d.message:"提交失败。"))};return e.jsxs("section",{className:"git-commit","aria-label":"提交",children:[e.jsxs("button",{type:"button",className:"git-commit-toggle","aria-expanded":f,onClick:()=>g(d=>!d),children:[f?"▾":"▸"," 提交 ",t?`${t.filesChanged} 个文件`:"",t&&(t.additions>0||t.deletions>0)?e.jsxs("span",{className:"git-commit-stats",children:[e.jsxs("em",{className:"diff-stat-add",children:["+",t.additions]})," ",e.jsxs("em",{className:"diff-stat-del",children:["-",t.deletions]})]}):null]}),f?e.jsxs("div",{className:"git-commit-body",children:[t?e.jsxs(e.Fragment,{children:[e.jsxs("p",{className:"git-commit-meta",children:[t.detached?"detached HEAD":t.branch||"HEAD"," ·"," ",t.identity.name??"未配置 user.name"," <",t.identity.email??"未配置 user.email",">",t.identity.signingEnabled?" · 已启用签名":" · 未启用签名",` · hooks ${t.identity.hooksPresent?"存在":"不存在"}`]}),e.jsxs("ul",{className:"git-commit-files",children:[t.entries.slice(0,40).map(d=>e.jsxs("li",{children:[e.jsx("code",{children:d.status}),e.jsx("span",{children:d.path})]},`${d.source}:${d.path}`)),t.entries.length>40?e.jsxs("li",{className:"git-commit-more",children:["…还有 ",t.entries.length-40," 个文件"]}):null]})]}):null,e.jsxs("label",{children:[e.jsx("span",{children:"摘要"}),e.jsx("input",{type:"text",value:s.summary,maxLength:2e3,disabled:n,placeholder:"本次提交做了什么",onChange:d=>i({...s,summary:d.target.value})})]}),e.jsxs("label",{children:[e.jsx("span",{children:"正文(可选)"}),e.jsx("textarea",{value:s.body,rows:3,disabled:n,placeholder:"为什么这样做",onChange:d=>i({...s,body:d.target.value})})]}),x?e.jsx("p",{className:"resource-error",role:"alert",children:x}):null,e.jsxs("div",{className:"git-commit-actions",children:[e.jsx("button",{type:"button",className:"primary-button",disabled:!y,"aria-busy":n,onClick:b,children:n?"提交中…":"提交到本地索引"}),t?.canCommit?null:e.jsx("span",{className:"git-commit-blocked",children:p})]}),e.jsx("p",{className:"git-commit-note",children:"只提交本地 index:不自动暂存、不 amend、不 push。"})]}):null]})}function Lt({groups:t,activeGroup:s,query:n,total:i,clean:o,busy:f,selectedFileIds:g,onQueryChange:x,onGroupChange:a,selectedFileId:p,onSelect:y,onToggleSelection:b,onClearSelection:d,onStage:I,onUnstage:h}){const H=new Set(g),D=g.length>0;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"git-filter",children:[e.jsx("input",{type:"search",value:n,"aria-label":"搜索文件路径",placeholder:"搜索文件…",onChange:N=>x(N.target.value)}),e.jsxs("div",{className:"git-filter-groups",role:"group","aria-label":"按分组筛选",children:[e.jsx("button",{type:"button","aria-pressed":s===null,onClick:()=>a(null),children:"全部"}),Se.map(N=>e.jsx("button",{type:"button","aria-pressed":s===N,onClick:()=>a(s===N?null:N),children:Ie[N]},N))]}),e.jsx("p",{className:"git-filter-summary",role:"status",children:i===0?n?"没有匹配的改动":"没有改动":`匹配 ${i} 个改动`}),D?e.jsxs("div",{className:"git-bulk",role:"group","aria-label":"对选中文件操作",children:[e.jsxs("span",{children:["已选 ",g.length," 个文件"]}),e.jsx("button",{type:"button",className:"secondary-button",disabled:f,onClick:()=>I(g),children:"暂存选中"}),e.jsx("button",{type:"button",className:"secondary-button",disabled:f,onClick:()=>h(g),children:"取消暂存选中"}),e.jsx("button",{type:"button",className:"text-button",onClick:d,children:"清除"})]}):null]}),o?e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(W,{name:"check"}),e.jsx("strong",{children:"工作区干净"})]}):t.map(N=>N.count?e.jsxs("div",{className:"git-group",children:[e.jsxs("h3",{children:[N.label," ",e.jsx("span",{children:N.count}),N.items.length<N.count?e.jsxs("small",{className:"git-group-loaded",children:["已载 ",N.items.length]}):null,N.source==="unstaged"||N.source==="untracked"?e.jsx("button",{type:"button",className:"text-button git-group-action",disabled:f,onClick:()=>I(N.items.map(v=>v.fileId)),children:"暂存该组已载"}):null,N.source==="staged"?e.jsx("button",{type:"button",className:"text-button git-group-action",disabled:f,onClick:()=>h(N.items.map(v=>v.fileId)),children:"取消暂存该组已载"}):null]}),N.items.map(v=>e.jsxs("div",{className:`git-row ${p===v.fileId?"selected":""}`,children:[e.jsx("input",{type:"checkbox","aria-label":`选择 ${v.path}`,checked:H.has(v.fileId),onChange:()=>b(v.fileId)}),e.jsxs("button",{type:"button",className:p===v.fileId?"selected":"","aria-current":p===v.fileId?"true":void 0,onClick:()=>y(v),children:[e.jsx("span",{className:`git-status-code ${N.source}`,children:v.indexStatus.trim()||v.worktreeStatus.trim()||"?"}),e.jsx("span",{title:v.path,children:v.renamedFrom?`${v.renamedFrom} → ${v.path}`:v.path})]}),N.source==="unstaged"||N.source==="untracked"?e.jsx("button",{type:"button",className:"text-button",disabled:f,"aria-label":`暂存 ${v.path}`,onClick:()=>I([v.fileId]),children:"暂存"}):null,N.source==="staged"?e.jsx("button",{type:"button",className:"text-button",disabled:f,"aria-label":`取消暂存 ${v.path}`,onClick:()=>h([v.fileId]),children:"取消"}):null,N.source==="conflict"?e.jsx("span",{className:"git-conflict-hint",children:"需在 Files 处理"}):null]},v.fileId))]},N.source):null)]})}function Et({title:t,stage:s}){return e.jsxs("div",{className:"resource-empty",children:[e.jsx(W,{name:"info",size:16}),e.jsx("strong",{children:t}),e.jsxs("p",{children:["计划阶段 ",s," 交付,当前版本尚未实现。"]})]})}export{Pt as GitPanel};
@@ -0,0 +1,5 @@
1
+ import{r as o,j as e,I as w,W as F}from"./index-Drja0_BT.js";import{u as W,R as z}from"./useAutoNotice-DfQi4G1X.js";function _(t){const r=[];let i;for(const u of t)u.startsWith("@@")?(i&&r.push(i),i={title:u,lines:[u]}):i&&i.lines.push(u);return i&&r.push(i),r}function M(t,r){const i={schemaVersion:1,type:"review_context",repositoryRevision:t.repositoryRevision,path:t.path,hunk:r.title},u=r.lines.join(`
2
+ `).slice(0,12e3);return[`请审阅 ${t.path} 的这个 diff hunk,并指出正确性、安全性和测试风险:`,"","```review_context",JSON.stringify(i,null,2),"```","","```diff",u,"```"].join(`
3
+ `)}function O({page:t,loading:r=!1,onLoadMore:i,onSendToComposer:u}){const h=o.useMemo(()=>_(t.lines),[t.lines]),[R,a]=o.useState(0),[g,b]=o.useState(!1),[y,C]=o.useState(!1),[v,S]=o.useState(""),j=Math.min(R,Math.max(0,h.length-1)),d=h[j];o.useEffect(()=>{a(0),b(!1),S("")},[t.fileId,t.repositoryRevision]);const k=(s,c)=>{let f=c;if(s.key==="ArrowRight"||s.key==="ArrowDown")f=(c+1)%h.length;else if(s.key==="ArrowLeft"||s.key==="ArrowUp")f=(c-1+h.length)%h.length;else if(s.key==="Home")f=0;else if(s.key==="End")f=h.length-1;else return;s.preventDefault(),a(f);const l=s.currentTarget.parentElement;window.requestAnimationFrame(()=>l?.querySelector(`[data-hunk-index="${f}"]`)?.focus())};return t.binary?e.jsxs("div",{className:"resource-empty compact",children:[e.jsx(w,{name:"code"}),e.jsx("strong",{children:"二进制差异"}),e.jsx("p",{children:"只展示变更事实,不返回 binary patch。"})]}):e.jsxs("div",{className:"diff-viewer",children:[e.jsxs("header",{children:[e.jsx("strong",{title:t.path,children:t.path}),e.jsx("span",{className:"diff-source",children:J(t.source)}),e.jsx("span",{children:t.truncated?"受限预览":`${t.lines.length} 行`})]}),h.length>1?e.jsx("div",{className:"diff-hunk-nav",role:"tablist","aria-label":"Diff hunks",children:h.map((s,c)=>e.jsx("button",{type:"button",role:"tab","data-hunk-index":c,"aria-selected":j===c,tabIndex:j===c?0:-1,onClick:()=>a(c),onKeyDown:f=>k(f,c),children:s.title||`Hunk ${c+1}`},`${s.title}-${c}`))}):null,e.jsxs("div",{className:"diff-actions","aria-label":"Diff 显示选项",children:[d?e.jsx("button",{type:"button",className:"text-button","aria-expanded":!g,onClick:()=>b(s=>!s),children:g?"展开 Hunk":"折叠 Hunk"}):null,e.jsx("button",{type:"button",className:"text-button","aria-pressed":y,onClick:()=>C(s=>!s),children:"显示空白字符"}),d?e.jsx("button",{type:"button",className:"text-button",onClick:()=>{K(d.lines.join(`
4
+ `),S)},children:"复制 Hunk"}):null]}),g?null:e.jsx("pre",{className:"diff-lines",tabIndex:0,"aria-label":`Diff ${t.path}`,children:(d?.lines??t.lines).map((s,c)=>e.jsxs("span",{className:s.startsWith("+")?"addition":s.startsWith("-")?"deletion":"",children:[V(s,y)||" ",`
5
+ `]},`${c}:${s}`))}),v?e.jsx("p",{className:"resource-notice",role:"status",children:v}):null,e.jsxs("footer",{children:[u&&d?e.jsx("button",{type:"button",className:"secondary-button",onClick:()=>u(M(t,d)),children:"发送此 Hunk 到对话"}):null,t.nextCursor&&i?e.jsx("button",{type:"button",className:"text-button",onClick:i,disabled:r,children:r?"加载中…":"加载更多 Diff"}):null]})]})}function V(t,r){return r?t.replace(/\t/gu,"→ ").replace(/ +$/gu,i=>"·".repeat(i.length)):t}function J(t){return t==="staged"?"HEAD → 索引":t==="unstaged"?"索引 → 工作区":t==="untracked"?"空 → 未跟踪文件":t==="conflict"?"冲突版本":"改动"}async function K(t,r){try{await navigator.clipboard.writeText(t),r("已复制当前 Hunk。")}catch{r("浏览器未允许复制,请手动选择 Diff。")}}function q({workspaceId:t,refreshEpoch:r,actions:i,onSendToComposer:u,navigatorWidthPx:h,onNavigatorWidthCommit:R}){const[a,g]=o.useState(null),[b,y]=o.useState(null),[C,v]=o.useState(null),[S,j]=o.useState(!1),[d,k]=o.useState(""),{notice:s,showNotice:c,clearNotice:f}=W(),l=o.useRef(0),N=o.useRef(0),I=async(n=l.current,$)=>{if(n===l.current){j(!0),k("");try{const x=await i.review();if(n!==l.current)return;g(x);const p=$?x.changedFiles.find(m=>m.fileId===$)??null:null;y(p),v(null),p&&D(p,void 0,n)}catch(x){if(n!==l.current)return;k(L(x))}finally{n===l.current&&j(!1)}}},E=()=>{const n=l.current+1;l.current=n,N.current+=1,f(),I(n,b?.fileId)};o.useEffect(()=>{const n=l.current+1;l.current=n,N.current+=1,g(null),y(null),v(null),k(""),f(),t&&I(n)},[r,t]);const D=async(n,$,x=l.current,p=N.current+1)=>{if(x===l.current){N.current=p,$||(y(n),v(null)),j(!0),k("");try{const m=await i.gitDiff(n.fileId,$);if(x!==l.current||p!==N.current||m.fileId!==n.fileId)return;y(n),v(H=>$&&H&&H.fileId===m.fileId?{...m,lines:[...H.lines,...m.lines]}:m)}catch(m){if(x!==l.current||p!==N.current)return;if(P(m)){c("仓库已变化,已重新建立审阅快照。"),await I(x,n.fileId);return}k(L(m))}finally{x===l.current&&p===N.current&&j(!1)}}};return!a&&!d?e.jsx("p",{className:"resource-loading",children:"正在建立审阅快照…"}):a?e.jsxs("div",{className:"work-resource-panel review-panel",children:[e.jsxs("div",{className:"review-summary",children:[e.jsxs("div",{children:[e.jsx("span",{className:`review-score ${a.clean?"clean":"changed"}`,children:a.clean?e.jsx(w,{name:"check",size:16}):e.jsx(w,{name:"edit",size:16})}),e.jsxs("div",{children:[e.jsx("strong",{children:A(a).headline}),e.jsx("span",{children:A(a).counters})]})]}),e.jsx("button",{type:"button",className:"icon-button","aria-label":"刷新审阅快照","aria-busy":S,disabled:S,onClick:E,children:e.jsx(w,{name:"refresh",size:16})})]}),a.truncated?e.jsxs("p",{className:"resource-notice",role:"status",children:["当前显示 ",a.changedFiles.length," / ",a.totalChangedFiles," ","个变更文件;分类计数仅覆盖当前显示范围。"]}):null,s?e.jsx("p",{className:"resource-notice",role:"status",children:s.text}):null,d?e.jsx("p",{className:"resource-error",role:"alert",children:d}):null,e.jsxs(z,{panelId:"review",navigatorWidthPx:h,onNavigatorWidthCommit:R,contentLabel:"审阅 Diff",navigatorLabel:"待审阅文件",handleLabel:"调整待审阅文件列表宽度",contentClassName:"review-diff",navigatorClassName:"review-files",children:[e.jsx(e.Fragment,{children:a.changedFiles.map(n=>e.jsxs("button",{type:"button",className:b?.fileId===n.fileId?"selected":"",onClick:()=>{D(n)},children:[e.jsx(w,{name:"code",size:14}),e.jsx("span",{title:n.path,children:n.path}),e.jsx("small",{children:`${n.indexStatus}${n.worktreeStatus}`.trim()||"?"})]},n.fileId))}),e.jsx(e.Fragment,{children:C?e.jsx(O,{page:C,loading:S,onLoadMore:C.nextCursor&&b?()=>{D(b,C.nextCursor??void 0)}:void 0,onSendToComposer:u}):e.jsxs("div",{className:"resource-empty",children:[e.jsx(w,{name:"edit",size:16}),e.jsx("strong",{children:"选择文件开始审阅"}),e.jsx("p",{title:"你可以把某个 Hunk 作为草稿送回对话,提交前仍由你确认。",children:"选中 Hunk 可送回对话。"})]})})]})]}):e.jsxs("div",{className:"resource-empty",role:"alert",children:[e.jsx(w,{name:"warning"}),e.jsx("strong",{children:"无法读取审阅快照"}),e.jsx("p",{children:d}),e.jsx("button",{type:"button",className:"secondary-button",onClick:E,children:"重试"})]})}function A(t){const r=[`${t.stagedCount} 已暂存`,`${t.unstagedCount} 未暂存`,`${t.untrackedCount} 未跟踪`,`${t.conflictCount} 冲突`].join(" · ");return Object.freeze({headline:t.clean?"没有待审阅变更":`${t.totalChangedFiles} 个变更文件`,counters:`${t.truncated?"当前显示 · ":""}${r}`})}function L(t){return t instanceof Error?t.message:"审阅请求失败。"}function P(t){return t instanceof F&&t.code==="git_revision_conflict"}export{q as ReviewPanel,A as reviewSummary};
@@ -1,4 +1,4 @@
1
- var An=Object.defineProperty;var On=(e,t,i)=>t in e?An(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;var _e=(e,t,i)=>On(e,typeof t!="symbol"?t+"":t,i);import{r as I,j as w,I as xt}from"./index-DgVNIqmE.js";var Nn=2,In=1,Hn=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,i=window.getComputedStyle(this._terminal.element.parentElement),s=parseInt(i.getPropertyValue("height")),r=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),o={top:parseInt(n.getPropertyValue("padding-top")),bottom:parseInt(n.getPropertyValue("padding-bottom")),right:parseInt(n.getPropertyValue("padding-right")),left:parseInt(n.getPropertyValue("padding-left"))},a=o.top+o.bottom,h=o.right+o.left,l=s-a,c=r-h-t;return{cols:Math.max(Nn,Math.floor(c/e.css.cell.width)),rows:Math.max(In,Math.floor(l/e.css.cell.height))}}};var Or=Object.defineProperty,Fn=Object.getOwnPropertyDescriptor,Wn=(e,t)=>{for(var i in t)Or(e,i,{get:t[i],enumerable:!0})},Q=(e,t,i,s)=>{for(var r=s>1?void 0:s?Fn(t,i):t,n=e.length-1,o;n>=0;n--)(o=e[n])&&(r=(s?o(t,i,r):o(r))||r);return s&&r&&Or(t,i,r),r},x=(e,t)=>(i,s)=>t(i,s,e),Ts="Terminal input",Li={get:()=>Ts,set:e=>Ts=e},Ps="Too much output to announce, navigate to rows manually to read",Ti={get:()=>Ps,set:e=>Ps=e};function zn(e){return e.replace(/\r?\n/g,"\r")}function $n(e,t){return t?"\x1B[200~"+e+"\x1B[201~":e}function Kn(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()}function Un(e,t,i,s){if(e.stopPropagation(),e.clipboardData){let r=e.clipboardData.getData("text/plain");Nr(r,t,i,s)}}function Nr(e,t,i,s){e=zn(e),e=$n(e,i.decPrivateModes.bracketedPasteMode&&s.rawOptions.ignoreBracketedPasteMode!==!0),i.triggerDataEvent(e,!0),t.value=""}function Ir(e,t,i){let s=i.getBoundingClientRect(),r=e.clientX-s.left-10,n=e.clientY-s.top-10;t.style.width="20px",t.style.height="20px",t.style.left=`${r}px`,t.style.top=`${n}px`,t.style.zIndex="1000",t.focus()}function As(e,t,i,s,r){Ir(e,t,i),r&&s.rightClickSelect(e),t.value=s.selectionText,t.select()}function st(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function _i(e,t=0,i=e.length){let s="";for(let r=t;r<i;++r){let n=e[r];n>65535?(n-=65536,s+=String.fromCharCode((n>>10)+55296)+String.fromCharCode(n%1024+56320)):s+=String.fromCharCode(n)}return s}var qn=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let i=e.length;if(!i)return 0;let s=0,r=0;if(this._interim){let n=e.charCodeAt(r++);56320<=n&&n<=57343?t[s++]=(this._interim-55296)*1024+n-56320+65536:(t[s++]=this._interim,t[s++]=n),this._interim=0}for(let n=r;n<i;++n){let o=e.charCodeAt(n);if(55296<=o&&o<=56319){if(++n>=i)return this._interim=o,s;let a=e.charCodeAt(n);56320<=a&&a<=57343?t[s++]=(o-55296)*1024+a-56320+65536:(t[s++]=o,t[s++]=a);continue}o!==65279&&(t[s++]=o)}return s}},Vn=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let i=e.length;if(!i)return 0;let s=0,r,n,o,a,h=0,l=0;if(this.interim[0]){let _=!1,f=this.interim[0];f&=(f&224)===192?31:(f&240)===224?15:7;let u=0,g;for(;(g=this.interim[++u]&63)&&u<4;)f<<=6,f|=g;let b=(this.interim[0]&224)===192?2:(this.interim[0]&240)===224?3:4,D=b-u;for(;l<D;){if(l>=i)return 0;if(g=e[l++],(g&192)!==128){l--,_=!0;break}else this.interim[u++]=g,f<<=6,f|=g&63}_||(b===2?f<128?l--:t[s++]=f:b===3?f<2048||f>=55296&&f<=57343||f===65279||(t[s++]=f):f<65536||f>1114111||(t[s++]=f)),this.interim.fill(0)}let c=i-4,d=l;for(;d<i;){for(;d<c&&!((r=e[d])&128)&&!((n=e[d+1])&128)&&!((o=e[d+2])&128)&&!((a=e[d+3])&128);)t[s++]=r,t[s++]=n,t[s++]=o,t[s++]=a,d+=4;if(r=e[d++],r<128)t[s++]=r;else if((r&224)===192){if(d>=i)return this.interim[0]=r,s;if(n=e[d++],(n&192)!==128){d--;continue}if(h=(r&31)<<6|n&63,h<128){d--;continue}t[s++]=h}else if((r&240)===224){if(d>=i)return this.interim[0]=r,s;if(n=e[d++],(n&192)!==128){d--;continue}if(d>=i)return this.interim[0]=r,this.interim[1]=n,s;if(o=e[d++],(o&192)!==128){d--;continue}if(h=(r&15)<<12|(n&63)<<6|o&63,h<2048||h>=55296&&h<=57343||h===65279)continue;t[s++]=h}else if((r&248)===240){if(d>=i)return this.interim[0]=r,s;if(n=e[d++],(n&192)!==128){d--;continue}if(d>=i)return this.interim[0]=r,this.interim[1]=n,s;if(o=e[d++],(o&192)!==128){d--;continue}if(d>=i)return this.interim[0]=r,this.interim[1]=n,this.interim[2]=o,s;if(a=e[d++],(a&192)!==128){d--;continue}if(h=(r&7)<<18|(n&63)<<12|(o&63)<<6|a&63,h<65536||h>1114111)continue;t[s++]=h}}return s}},Hr="",rt=" ",Kt=class Fr{constructor(){this.fg=0,this.bg=0,this.extended=new ai}static toColorRGB(t){return[t>>>16&255,t>>>8&255,t&255]}static fromColorRGB(t){return(t[0]&255)<<16|(t[1]&255)<<8|t[2]&255}clone(){let t=new Fr;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)===50331648}isBgRGB(){return(this.bg&50331648)===50331648}isFgPalette(){return(this.fg&50331648)===16777216||(this.fg&50331648)===33554432}isBgPalette(){return(this.bg&50331648)===16777216||(this.bg&50331648)===33554432}isFgDefault(){return(this.fg&50331648)===0}isBgDefault(){return(this.bg&50331648)===0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===16777216||(this.extended.underlineColor&50331648)===33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},ai=class Wr{constructor(t=0,i=0){this._ext=0,this._urlId=0,this._ext=t,this._urlId=i}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(t){this._ext=t}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(t){this._ext&=-469762049,this._ext|=t<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(t){this._ext&=-67108864,this._ext|=t&67108863}get urlId(){return this._urlId}set urlId(t){this._urlId=t}get underlineVariantOffset(){let t=(this._ext&3758096384)>>29;return t<0?t^4294967288:t}set underlineVariantOffset(t){this._ext&=536870911,this._ext|=t<<29&3758096384}clone(){return new Wr(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},Oe=class zr extends Kt{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new ai,this.combinedData=""}static fromCharData(t){let i=new zr;return i.setFromCharData(t),i}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?st(this.content&2097151):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(t){this.fg=t[0],this.bg=0;let i=!1;if(t[1].length>2)i=!0;else if(t[1].length===2){let s=t[1].charCodeAt(0);if(55296<=s&&s<=56319){let r=t[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(s-55296)*1024+r-56320+65536|t[2]<<22:i=!0}else i=!0}else this.content=t[1].charCodeAt(0)|t[2]<<22;i&&(this.combinedData=t[1],this.content=2097152|t[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},Os="di$target",Pi="di$dependencies",mi=new Map;function jn(e){return e[Pi]||[]}function ue(e){if(mi.has(e))return mi.get(e);let t=function(i,s,r){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");Yn(t,i,r)};return t._id=e,mi.set(e,t),t}function Yn(e,t,i){t[Os]===t?t[Pi].push({id:e,index:i}):(t[Pi]=[{id:e,index:i}],t[Os]=t)}var we=ue("BufferService"),$r=ue("CoreMouseService"),gt=ue("CoreService"),Xn=ue("CharsetService"),vs=ue("InstantiationService"),Kr=ue("LogService"),ye=ue("OptionsService"),Ur=ue("OscLinkService"),Gn=ue("UnicodeService"),Ut=ue("DecorationService"),Ai=class{constructor(e,t,i){this._bufferService=e,this._optionsService=t,this._oscLinkService=i}provideLinks(e,t){let i=this._bufferService.buffer.lines.get(e-1);if(!i){t(void 0);return}let s=[],r=this._optionsService.rawOptions.linkHandler,n=new Oe,o=i.getTrimmedLength(),a=-1,h=-1,l=!1;for(let c=0;c<o;c++)if(!(h===-1&&!i.hasContent(c))){if(i.loadCell(c,n),n.hasExtendedAttrs()&&n.extended.urlId)if(h===-1){h=c,a=n.extended.urlId;continue}else l=n.extended.urlId!==a;else h!==-1&&(l=!0);if(l||h!==-1&&c===o-1){let d=this._oscLinkService.getLinkData(a)?.uri;if(d){let _={start:{x:h+1,y:e},end:{x:c+(!l&&c===o-1?1:0),y:e}},f=!1;if(!r?.allowNonHttpProtocols)try{let u=new URL(d);["http:","https:"].includes(u.protocol)||(f=!0)}catch{f=!0}f||s.push({text:d,range:_,activate:(u,g)=>r?r.activate(u,g,_):Jn(u,g),hover:(u,g)=>r?.hover?.(u,g,_),leave:(u,g)=>r?.leave?.(u,g,_)})}l=!1,n.hasExtendedAttrs()&&n.extended.urlId?(h=c,a=n.extended.urlId):(h=-1,a=-1)}}t(s)}};Ai=Q([x(0,we),x(1,ye),x(2,Ur)],Ai);function Jn(e,t){if(confirm(`Do you want to navigate to ${t}?
1
+ var An=Object.defineProperty;var On=(e,t,i)=>t in e?An(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;var _e=(e,t,i)=>On(e,typeof t!="symbol"?t+"":t,i);import{r as I,j as w,I as xt}from"./index-Drja0_BT.js";var Nn=2,In=1,Hn=class{activate(e){this._terminal=e}dispose(){}fit(){let e=this.proposeDimensions();if(!e||!this._terminal||isNaN(e.cols)||isNaN(e.rows))return;let t=this._terminal._core;(this._terminal.rows!==e.rows||this._terminal.cols!==e.cols)&&(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let e=this._terminal._core._renderService.dimensions;if(e.css.cell.width===0||e.css.cell.height===0)return;let t=this._terminal.options.scrollback===0?0:this._terminal.options.overviewRuler?.width||14,i=window.getComputedStyle(this._terminal.element.parentElement),s=parseInt(i.getPropertyValue("height")),r=Math.max(0,parseInt(i.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),o={top:parseInt(n.getPropertyValue("padding-top")),bottom:parseInt(n.getPropertyValue("padding-bottom")),right:parseInt(n.getPropertyValue("padding-right")),left:parseInt(n.getPropertyValue("padding-left"))},a=o.top+o.bottom,h=o.right+o.left,l=s-a,c=r-h-t;return{cols:Math.max(Nn,Math.floor(c/e.css.cell.width)),rows:Math.max(In,Math.floor(l/e.css.cell.height))}}};var Or=Object.defineProperty,Fn=Object.getOwnPropertyDescriptor,Wn=(e,t)=>{for(var i in t)Or(e,i,{get:t[i],enumerable:!0})},Q=(e,t,i,s)=>{for(var r=s>1?void 0:s?Fn(t,i):t,n=e.length-1,o;n>=0;n--)(o=e[n])&&(r=(s?o(t,i,r):o(r))||r);return s&&r&&Or(t,i,r),r},x=(e,t)=>(i,s)=>t(i,s,e),Ts="Terminal input",Li={get:()=>Ts,set:e=>Ts=e},Ps="Too much output to announce, navigate to rows manually to read",Ti={get:()=>Ps,set:e=>Ps=e};function zn(e){return e.replace(/\r?\n/g,"\r")}function $n(e,t){return t?"\x1B[200~"+e+"\x1B[201~":e}function Kn(e,t){e.clipboardData&&e.clipboardData.setData("text/plain",t.selectionText),e.preventDefault()}function Un(e,t,i,s){if(e.stopPropagation(),e.clipboardData){let r=e.clipboardData.getData("text/plain");Nr(r,t,i,s)}}function Nr(e,t,i,s){e=zn(e),e=$n(e,i.decPrivateModes.bracketedPasteMode&&s.rawOptions.ignoreBracketedPasteMode!==!0),i.triggerDataEvent(e,!0),t.value=""}function Ir(e,t,i){let s=i.getBoundingClientRect(),r=e.clientX-s.left-10,n=e.clientY-s.top-10;t.style.width="20px",t.style.height="20px",t.style.left=`${r}px`,t.style.top=`${n}px`,t.style.zIndex="1000",t.focus()}function As(e,t,i,s,r){Ir(e,t,i),r&&s.rightClickSelect(e),t.value=s.selectionText,t.select()}function st(e){return e>65535?(e-=65536,String.fromCharCode((e>>10)+55296)+String.fromCharCode(e%1024+56320)):String.fromCharCode(e)}function _i(e,t=0,i=e.length){let s="";for(let r=t;r<i;++r){let n=e[r];n>65535?(n-=65536,s+=String.fromCharCode((n>>10)+55296)+String.fromCharCode(n%1024+56320)):s+=String.fromCharCode(n)}return s}var qn=class{constructor(){this._interim=0}clear(){this._interim=0}decode(e,t){let i=e.length;if(!i)return 0;let s=0,r=0;if(this._interim){let n=e.charCodeAt(r++);56320<=n&&n<=57343?t[s++]=(this._interim-55296)*1024+n-56320+65536:(t[s++]=this._interim,t[s++]=n),this._interim=0}for(let n=r;n<i;++n){let o=e.charCodeAt(n);if(55296<=o&&o<=56319){if(++n>=i)return this._interim=o,s;let a=e.charCodeAt(n);56320<=a&&a<=57343?t[s++]=(o-55296)*1024+a-56320+65536:(t[s++]=o,t[s++]=a);continue}o!==65279&&(t[s++]=o)}return s}},Vn=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(e,t){let i=e.length;if(!i)return 0;let s=0,r,n,o,a,h=0,l=0;if(this.interim[0]){let _=!1,f=this.interim[0];f&=(f&224)===192?31:(f&240)===224?15:7;let u=0,g;for(;(g=this.interim[++u]&63)&&u<4;)f<<=6,f|=g;let b=(this.interim[0]&224)===192?2:(this.interim[0]&240)===224?3:4,D=b-u;for(;l<D;){if(l>=i)return 0;if(g=e[l++],(g&192)!==128){l--,_=!0;break}else this.interim[u++]=g,f<<=6,f|=g&63}_||(b===2?f<128?l--:t[s++]=f:b===3?f<2048||f>=55296&&f<=57343||f===65279||(t[s++]=f):f<65536||f>1114111||(t[s++]=f)),this.interim.fill(0)}let c=i-4,d=l;for(;d<i;){for(;d<c&&!((r=e[d])&128)&&!((n=e[d+1])&128)&&!((o=e[d+2])&128)&&!((a=e[d+3])&128);)t[s++]=r,t[s++]=n,t[s++]=o,t[s++]=a,d+=4;if(r=e[d++],r<128)t[s++]=r;else if((r&224)===192){if(d>=i)return this.interim[0]=r,s;if(n=e[d++],(n&192)!==128){d--;continue}if(h=(r&31)<<6|n&63,h<128){d--;continue}t[s++]=h}else if((r&240)===224){if(d>=i)return this.interim[0]=r,s;if(n=e[d++],(n&192)!==128){d--;continue}if(d>=i)return this.interim[0]=r,this.interim[1]=n,s;if(o=e[d++],(o&192)!==128){d--;continue}if(h=(r&15)<<12|(n&63)<<6|o&63,h<2048||h>=55296&&h<=57343||h===65279)continue;t[s++]=h}else if((r&248)===240){if(d>=i)return this.interim[0]=r,s;if(n=e[d++],(n&192)!==128){d--;continue}if(d>=i)return this.interim[0]=r,this.interim[1]=n,s;if(o=e[d++],(o&192)!==128){d--;continue}if(d>=i)return this.interim[0]=r,this.interim[1]=n,this.interim[2]=o,s;if(a=e[d++],(a&192)!==128){d--;continue}if(h=(r&7)<<18|(n&63)<<12|(o&63)<<6|a&63,h<65536||h>1114111)continue;t[s++]=h}}return s}},Hr="",rt=" ",Kt=class Fr{constructor(){this.fg=0,this.bg=0,this.extended=new ai}static toColorRGB(t){return[t>>>16&255,t>>>8&255,t&255]}static fromColorRGB(t){return(t[0]&255)<<16|(t[1]&255)<<8|t[2]&255}clone(){let t=new Fr;return t.fg=this.fg,t.bg=this.bg,t.extended=this.extended.clone(),t}isInverse(){return this.fg&67108864}isBold(){return this.fg&134217728}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:this.fg&268435456}isBlink(){return this.fg&536870912}isInvisible(){return this.fg&1073741824}isItalic(){return this.bg&67108864}isDim(){return this.bg&134217728}isStrikethrough(){return this.fg&2147483648}isProtected(){return this.bg&536870912}isOverline(){return this.bg&1073741824}getFgColorMode(){return this.fg&50331648}getBgColorMode(){return this.bg&50331648}isFgRGB(){return(this.fg&50331648)===50331648}isBgRGB(){return(this.bg&50331648)===50331648}isFgPalette(){return(this.fg&50331648)===16777216||(this.fg&50331648)===33554432}isBgPalette(){return(this.bg&50331648)===16777216||(this.bg&50331648)===33554432}isFgDefault(){return(this.fg&50331648)===0}isBgDefault(){return(this.bg&50331648)===0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(this.fg&50331648){case 16777216:case 33554432:return this.fg&255;case 50331648:return this.fg&16777215;default:return-1}}getBgColor(){switch(this.bg&50331648){case 16777216:case 33554432:return this.bg&255;case 50331648:return this.bg&16777215;default:return-1}}hasExtendedAttrs(){return this.bg&268435456}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(this.bg&268435456&&~this.extended.underlineColor)switch(this.extended.underlineColor&50331648){case 16777216:case 33554432:return this.extended.underlineColor&255;case 50331648:return this.extended.underlineColor&16777215;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return this.bg&268435456&&~this.extended.underlineColor?this.extended.underlineColor&50331648:this.getFgColorMode()}isUnderlineColorRGB(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===50331648:this.isFgRGB()}isUnderlineColorPalette(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===16777216||(this.extended.underlineColor&50331648)===33554432:this.isFgPalette()}isUnderlineColorDefault(){return this.bg&268435456&&~this.extended.underlineColor?(this.extended.underlineColor&50331648)===0:this.isFgDefault()}getUnderlineStyle(){return this.fg&268435456?this.bg&268435456?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}},ai=class Wr{constructor(t=0,i=0){this._ext=0,this._urlId=0,this._ext=t,this._urlId=i}get ext(){return this._urlId?this._ext&-469762049|this.underlineStyle<<26:this._ext}set ext(t){this._ext=t}get underlineStyle(){return this._urlId?5:(this._ext&469762048)>>26}set underlineStyle(t){this._ext&=-469762049,this._ext|=t<<26&469762048}get underlineColor(){return this._ext&67108863}set underlineColor(t){this._ext&=-67108864,this._ext|=t&67108863}get urlId(){return this._urlId}set urlId(t){this._urlId=t}get underlineVariantOffset(){let t=(this._ext&3758096384)>>29;return t<0?t^4294967288:t}set underlineVariantOffset(t){this._ext&=536870911,this._ext|=t<<29&3758096384}clone(){return new Wr(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}},Oe=class zr extends Kt{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new ai,this.combinedData=""}static fromCharData(t){let i=new zr;return i.setFromCharData(t),i}isCombined(){return this.content&2097152}getWidth(){return this.content>>22}getChars(){return this.content&2097152?this.combinedData:this.content&2097151?st(this.content&2097151):""}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):this.content&2097151}setFromCharData(t){this.fg=t[0],this.bg=0;let i=!1;if(t[1].length>2)i=!0;else if(t[1].length===2){let s=t[1].charCodeAt(0);if(55296<=s&&s<=56319){let r=t[1].charCodeAt(1);56320<=r&&r<=57343?this.content=(s-55296)*1024+r-56320+65536|t[2]<<22:i=!0}else i=!0}else this.content=t[1].charCodeAt(0)|t[2]<<22;i&&(this.combinedData=t[1],this.content=2097152|t[2]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}},Os="di$target",Pi="di$dependencies",mi=new Map;function jn(e){return e[Pi]||[]}function ue(e){if(mi.has(e))return mi.get(e);let t=function(i,s,r){if(arguments.length!==3)throw new Error("@IServiceName-decorator can only be used to decorate a parameter");Yn(t,i,r)};return t._id=e,mi.set(e,t),t}function Yn(e,t,i){t[Os]===t?t[Pi].push({id:e,index:i}):(t[Pi]=[{id:e,index:i}],t[Os]=t)}var we=ue("BufferService"),$r=ue("CoreMouseService"),gt=ue("CoreService"),Xn=ue("CharsetService"),vs=ue("InstantiationService"),Kr=ue("LogService"),ye=ue("OptionsService"),Ur=ue("OscLinkService"),Gn=ue("UnicodeService"),Ut=ue("DecorationService"),Ai=class{constructor(e,t,i){this._bufferService=e,this._optionsService=t,this._oscLinkService=i}provideLinks(e,t){let i=this._bufferService.buffer.lines.get(e-1);if(!i){t(void 0);return}let s=[],r=this._optionsService.rawOptions.linkHandler,n=new Oe,o=i.getTrimmedLength(),a=-1,h=-1,l=!1;for(let c=0;c<o;c++)if(!(h===-1&&!i.hasContent(c))){if(i.loadCell(c,n),n.hasExtendedAttrs()&&n.extended.urlId)if(h===-1){h=c,a=n.extended.urlId;continue}else l=n.extended.urlId!==a;else h!==-1&&(l=!0);if(l||h!==-1&&c===o-1){let d=this._oscLinkService.getLinkData(a)?.uri;if(d){let _={start:{x:h+1,y:e},end:{x:c+(!l&&c===o-1?1:0),y:e}},f=!1;if(!r?.allowNonHttpProtocols)try{let u=new URL(d);["http:","https:"].includes(u.protocol)||(f=!0)}catch{f=!0}f||s.push({text:d,range:_,activate:(u,g)=>r?r.activate(u,g,_):Jn(u,g),hover:(u,g)=>r?.hover?.(u,g,_),leave:(u,g)=>r?.leave?.(u,g,_)})}l=!1,n.hasExtendedAttrs()&&n.extended.urlId?(h=c,a=n.extended.urlId):(h=-1,a=-1)}}t(s)}};Ai=Q([x(0,we),x(1,ye),x(2,Ur)],Ai);function Jn(e,t){if(confirm(`Do you want to navigate to ${t}?
2
2
 
3
3
  WARNING: This link could potentially be dangerous`)){let i=window.open();if(i){try{i.opener=null}catch{}i.location.href=t}else console.warn("Opening link blocked as opener could not be cleared")}}var fi=ue("CharSizeService"),Ge=ue("CoreBrowserService"),Ss=ue("MouseService"),Je=ue("RenderService"),Zn=ue("SelectionService"),qr=ue("CharacterJoinerService"),yt=ue("ThemeService"),Vr=ue("LinkProviderService"),Qn=class{constructor(){this.listeners=[],this.unexpectedErrorHandler=function(e){setTimeout(()=>{throw e.stack?Ns.isErrorNoTelemetry(e)?new Ns(e.message+`
4
4
 
@@ -0,0 +1 @@
1
+ :root{color-scheme:dark;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--bg: #090b10;--surface: #0e1118;--surface-2: #131722;--surface-3: #181d29;--surface-raised: #1b202d;--overlay: rgb(4 6 10 / 72%);--text: #edf0f6;--text-2: #b1b8c8;--muted: #7f899b;--faint: #7f899b;--border: #242b3a;--border-strong: #343e52;--accent: #8a7dff;--accent-fill: #6c5de0;--accent-2: #5ee1c4;--accent-soft: rgb(138 125 255 / 13%);--success: #5ee1a2;--warning: #f4c86b;--danger: #ff7c91;--info: #72b7ff;--shadow: 0 22px 70px rgb(0 0 0 / 42%);--radius-xs: 6px;--radius-sm: 9px;--radius-md: 13px;--radius-lg: 18px;--project-navigation-width: 280px;--project-navigation-preferred-width: 280px;--work-panel-width: 420px;--work-panel-preferred-width: 420px;--work-panel-rail-width: 48px;--header-height: 66px;--font-title: 15px;--font-section: 13px;--font-body: 12px;--font-meta: 11px;--font-code: 12px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--terminal-background: #12131a;--terminal-foreground: #e8e9f0;--terminal-cursor: #9d8cff;--terminal-selection: #3b3566;--terminal-black: #1a1c22;--terminal-red: #d35f70;--terminal-green: #57b786;--terminal-yellow: #d6ad55;--terminal-blue: #6798df;--terminal-magenta: #a982d6;--terminal-cyan: #4ebcb4;--terminal-white: #d8dbe5;--terminal-bright-black: #747b8c;--terminal-bright-red: #ff8292;--terminal-bright-green: #72d9a5;--terminal-bright-yellow: #f4cf75;--terminal-bright-blue: #86b4ff;--terminal-bright-magenta: #c59aef;--terminal-bright-cyan: #70ddd2;--terminal-bright-white: #f5f6fa}:root[data-theme=light]{color-scheme:light;--bg: #f4f5f8;--surface: #fbfbfd;--surface-2: #f0f1f5;--surface-3: #e8eaf0;--surface-raised: #fff;--overlay: rgb(34 38 52 / 42%);--text: #171a22;--text-2: #454b5a;--muted: #5e6779;--faint: #5e6779;--border: #dfe2e9;--border-strong: #c9ced9;--accent: #6255d9;--accent-fill: #6255d9;--accent-2: #06735f;--accent-soft: rgb(98 85 217 / 9%);--success: #06734f;--warning: #8b5700;--danger: #b9344e;--info: #1765a8;--shadow: 0 22px 60px rgb(42 48 66 / 18%);--terminal-background: #fbfbfd;--terminal-foreground: #20212a;--terminal-cursor: #6d5ce8;--terminal-selection: #dcd7ff;--terminal-black: #20212a;--terminal-red: #a9334c;--terminal-green: #08734f;--terminal-yellow: #8b5700;--terminal-blue: #1765a8;--terminal-magenta: #7443a2;--terminal-cyan: #06735f;--terminal-white: #e8eaf0;--terminal-bright-black: #5e6779;--terminal-bright-red: #c94b62;--terminal-bright-green: #168b64;--terminal-bright-yellow: #a86d0d;--terminal-bright-blue: #2d7abd;--terminal-bright-magenta: #8e5db8;--terminal-bright-cyan: #168d78;--terminal-bright-white: #fff}@media(prefers-color-scheme:light){:root[data-theme=system]{color-scheme:light;--bg: #f4f5f8;--surface: #fbfbfd;--surface-2: #f0f1f5;--surface-3: #e8eaf0;--surface-raised: #fff;--overlay: rgb(34 38 52 / 42%);--text: #171a22;--text-2: #454b5a;--muted: #5e6779;--faint: #5e6779;--border: #dfe2e9;--border-strong: #c9ced9;--accent: #6255d9;--accent-fill: #6255d9;--accent-2: #06735f;--accent-soft: rgb(98 85 217 / 9%);--success: #06734f;--warning: #8b5700;--danger: #b9344e;--info: #1765a8;--shadow: 0 22px 60px rgb(42 48 66 / 18%);--terminal-background: #fbfbfd;--terminal-foreground: #20212a;--terminal-cursor: #6d5ce8;--terminal-selection: #dcd7ff;--terminal-black: #20212a;--terminal-red: #a9334c;--terminal-green: #08734f;--terminal-yellow: #8b5700;--terminal-blue: #1765a8;--terminal-magenta: #7443a2;--terminal-cyan: #06735f;--terminal-white: #e8eaf0;--terminal-bright-black: #5e6779;--terminal-bright-red: #c94b62;--terminal-bright-green: #168b64;--terminal-bright-yellow: #a86d0d;--terminal-bright-blue: #2d7abd;--terminal-bright-magenta: #8e5db8;--terminal-bright-cyan: #168d78;--terminal-bright-white: #fff}}.appearance-preview{--preview-bg: #090b10;--preview-surface: #131722;--preview-raised: #1b202d;--preview-border: #343e52;--preview-accent: #8a7dff;display:grid;gap:var(--space-2);margin:0;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.appearance-preview[data-preview-style=orion-blocksmith]{--preview-bg: #15191b;--preview-surface: #202629;--preview-raised: #292d2a;--preview-border: #a99a82;--preview-accent: #7ea4ed}.appearance-preview[data-preview-theme=light]{--preview-bg: #f4f5f8;--preview-surface: #f0f1f5;--preview-raised: #fff;--preview-border: #c9ced9;--preview-accent: #6255d9}.appearance-preview[data-preview-style=orion-blocksmith][data-preview-theme=light]{--preview-bg: #d7d0c1;--preview-surface: #e2dacb;--preview-raised: #fffaf0;--preview-border: #5e584d;--preview-accent: #315fae}@media(prefers-color-scheme:light){.appearance-preview[data-preview-theme=system]{--preview-bg: #f4f5f8;--preview-surface: #f0f1f5;--preview-raised: #fff;--preview-border: #c9ced9;--preview-accent: #6255d9}.appearance-preview[data-preview-style=orion-blocksmith][data-preview-theme=system]{--preview-bg: #d7d0c1;--preview-surface: #e2dacb;--preview-raised: #fffaf0;--preview-border: #5e584d;--preview-accent: #315fae}}.appearance-preview-frame{display:grid;grid-template-columns:20% minmax(0,1fr) 26%;min-height:88px;overflow:hidden;border:2px solid var(--preview-border);border-radius:inherit;background:var(--preview-bg)}.appearance-preview[data-preview-style=orion-blocksmith] .appearance-preview-frame{border-radius:2px;box-shadow:3px 3px color-mix(in srgb,var(--preview-border) 45%,transparent)}.appearance-preview-rail,.appearance-preview-panel{background:var(--preview-surface)}.appearance-preview-rail{border-right:1px solid var(--preview-border)}.appearance-preview-panel{border-left:1px solid var(--preview-border)}.appearance-preview-main{display:grid;align-content:end;gap:6px;padding:10px}.appearance-preview-main i{display:block;height:14px;border:1px solid var(--preview-border);border-radius:3px;background:var(--preview-raised)}.appearance-preview-main i:last-child{height:22px;border-color:var(--preview-accent)}.appearance-preview[data-preview-style=orion-blocksmith] .appearance-preview-main i{border-radius:1px}.appearance-preview figcaption{color:var(--muted);font-size:var(--font-meta)}*,*:before,*:after{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;height:100%;margin:0;overflow:hidden}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}button,input,textarea,select{color:inherit;font:inherit}button,select{min-height:32px}button{border:0;cursor:pointer}button:disabled,input:disabled,textarea:disabled,select:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:#8a7dff59}code,pre{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}h1,h2,h3,p{margin-top:0}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.skip-link{position:fixed;z-index:1000;top:10px;left:10px;padding:9px 13px;border-radius:var(--radius-sm);background:var(--accent);color:#fff;text-decoration:none;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.workbench-shell{--rail-column-width: var(--project-navigation-width);--work-panel-column-width: var(--work-panel-width);--inspector-column-width: var(--work-panel-column-width);display:grid;grid-template-areas:"project conversation work-panel";grid-template-columns:var(--rail-column-width) minmax(320px,1fr) var(--work-panel-column-width);grid-template-rows:minmax(0,1fr);width:100%;height:100dvh;background:radial-gradient(circle at 50% -20%,rgb(138 125 255 / 7%),transparent 40%),var(--bg);transition:grid-template-columns .18s ease}.workbench-shell.project-navigation-drawer{--rail-column-width: 0px}.workbench-shell.project-navigation-drawer .mobile-nav-toggle{display:inline-flex}.workspace-rail[hidden]{display:none}.workbench-shell.work-panel-mode-rail,.workbench-shell.work-panel-mode-drawer{--work-panel-column-width: var(--work-panel-width);--inspector-column-width: var(--work-panel-column-width)}.workspace-rail,.inspector,.work-panel,.conversation-column{min-width:0;min-height:0}.workspace-rail{position:relative;z-index:20;grid-area:project;display:flex;flex-direction:column;overflow:hidden;border-right:1px solid var(--border);background:color-mix(in srgb,var(--surface) 96%,transparent)}.brand-row{display:flex;align-items:center;min-height:var(--header-height);padding:0 16px;border-bottom:1px solid var(--border);gap:10px}.orion-brand-mark{display:inline-flex;flex:none;align-items:center;justify-content:center}.orion-brand-mark svg{display:block;overflow:visible}.orion-mark-stop-primary{stop-color:var(--accent)}.orion-mark-stop-secondary{stop-color:var(--accent-2)}@media(forced-colors:active){.orion-brand-mark .orion-mark-bar{fill:CanvasText}}.brand-copy{display:flex;flex:1;flex-direction:column;line-height:1.15;letter-spacing:.16em}.brand-copy strong{font-size:13px}.brand-copy span{margin-top:4px;color:var(--muted);font-size:11px}.icon-button,.icon-text-button,.text-button,.primary-button,.secondary-button,.danger-ghost-button,.send-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;gap:7px}.icon-button{width:34px;height:34px;min-height:34px;padding:0;color:var(--muted)}.icon-button:hover:not(:disabled),.icon-text-button:hover:not(:disabled),.text-button:hover:not(:disabled){background:var(--surface-3);color:var(--text)}.icon-button.subtle{width:29px;height:29px;min-height:29px}.icon-button[aria-busy=true] svg{animation:icon-rotate .9s linear infinite}@keyframes icon-rotate{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.icon-button[aria-busy=true] svg{animation:none}}.icon-text-button{padding:5px 9px;color:var(--text-2);font-size:12px}.text-button{padding:4px 8px;color:var(--accent-2);font-size:12px}.primary-button,.secondary-button,.danger-ghost-button,.send-button{min-height:36px;padding:7px 13px;font-weight:650}.primary-button,.send-button{background:var(--accent-fill);color:#fff}.primary-button:hover:not(:disabled),.send-button:hover:not(:disabled){filter:brightness(.92)}.secondary-button{border-color:var(--border-strong);background:var(--surface-2);color:var(--text-2)}.secondary-button:hover:not(:disabled){border-color:var(--accent);color:var(--text)}.danger-ghost-button{color:var(--danger)}.danger-ghost-button:hover:not(:disabled){background:#ff7c911a}.drawer-close,.mobile-nav-toggle,.inspector-toggle{display:none}.workspace-switcher,.session-section{padding:17px 13px 0}.section-label-row{display:flex;align-items:center;justify-content:space-between;min-height:30px;margin-bottom:7px;padding:0 5px}.section-label-row h2{margin:0;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.workspace-current{display:flex;align-items:center;width:100%;min-height:54px;padding:8px 9px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);text-align:left;gap:9px}.workspace-current:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-3)}.workspace-icon,.edit-icon,.approval-icon,.empty-mini-icon,.capability-icon,.notice-icon{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.workspace-icon{width:31px;height:31px}.workspace-copy{display:flex;flex:1;min-width:0;flex-direction:column}.workspace-copy strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.workspace-copy span{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.session-section{display:flex;flex:1;min-height:0;flex-direction:column;padding-bottom:10px}.new-session{color:var(--accent)}.search-box{display:flex;align-items:center;min-height:36px;margin:0 3px 9px;padding:0 9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--muted);gap:7px}.search-box:focus-within{border-color:var(--accent)}.search-box input{width:100%;min-width:0;border:0;outline:0;background:transparent}.search-box button{display:inline-flex;width:25px;height:25px;min-height:25px;align-items:center;justify-content:center;padding:0;background:transparent;color:var(--muted)}.session-list{flex:1;min-height:0;overflow:auto;scrollbar-width:thin}.session-row{display:flex;align-items:center;margin:2px 0;border-radius:var(--radius-sm)}.session-row:hover,.session-row.active{background:var(--surface-2)}.session-row.active{box-shadow:inset 2px 0 var(--accent)}.session-main{display:flex;flex:1;min-width:0;min-height:50px;align-items:center;padding:7px 6px 7px 9px;background:transparent;text-align:left;gap:9px}.session-main:disabled{opacity:1}.session-state,.state-dot,.connection-dot{display:inline-block;flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--faint)}.session-state.ready,.state-dot.ready,.state-dot.state-success,.state-dot.state-completed,.state-dot.state-connected,.connection-dot.live{background:var(--success);box-shadow:0 0 0 3px #5ee1a21a}.session-state.running,.state-dot.running,.state-dot.state-running,.state-dot.state-activating,.connection-dot.connecting,.connection-dot.reconnecting{background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.session-state.approval{background:var(--warning);box-shadow:0 0 0 3px #f4c86b1f}.session-state.queued{background:var(--accent-2, var(--accent));box-shadow:0 0 0 3px var(--accent-soft)}.session-state.failed{background:var(--danger);box-shadow:0 0 0 3px #ff64781f}.state-dot.state-error,.state-dot.state-failed,.connection-dot.offline,.connection-dot.closed{background:var(--danger)}.state-dot.state-partial,.state-dot.state-skipped,.state-dot.state-draining,.connection-dot.replay-required{background:var(--warning)}.state-dot[data-tone=idle],.rail-status-dot[data-tone=idle]{border-radius:1px}.state-dot[data-tone=success],.rail-status-dot[data-tone=success]{border-radius:50%}.state-dot[data-tone=running],.rail-status-dot[data-tone=running]{background:transparent;border:2px solid var(--accent);animation:state-dot-pulse 1.5s ease-in-out infinite}.state-dot[data-tone=warning],.rail-status-dot[data-tone=warning]{background:transparent;border:2px solid var(--warning);box-shadow:none}.state-dot[data-tone=danger],.rail-status-dot[data-tone=danger]{border-radius:1px;clip-path:polygon(50% 0%,100% 100%,0% 100%);box-shadow:none}@keyframes state-dot-pulse{0%,to{opacity:1}50%{opacity:.3}}.session-copy{display:flex;min-width:0;flex:1;flex-direction:column}.session-copy strong,.session-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-copy strong{font-size:12.5px;font-weight:600}.session-copy span{color:var(--muted);font-size:11px}.empty-rail,.empty-small{display:flex;align-items:center;justify-content:center;color:var(--muted);text-align:center}.empty-rail{flex-direction:column;min-height:140px;gap:4px}.empty-rail p{margin:4px 0;font-size:12px}.rail-footer{display:flex;align-items:center;min-height:42px;padding:0 16px;border-top:1px solid var(--border);color:var(--muted);font-size:11px;gap:8px}.rail-footer .version{font-family:monospace}.rail-footer .rail-settings{width:28px;height:28px;min-height:28px;margin-left:auto}.conversation-column{position:relative;display:grid;grid-area:conversation;container-type:inline-size;grid-template-areas:"header" "banner" "transcript" "composer";grid-template-rows:auto auto minmax(0,1fr) minmax(0,auto);grid-template-columns:minmax(0,1fr);width:100%;overflow:hidden;background:color-mix(in srgb,var(--bg) 93%,transparent)}.conversation-header{grid-area:header;z-index:5;display:flex;align-items:center;min-height:var(--header-height);padding:8px 20px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);gap:10px}.conversation-identity{min-width:0;flex:1}.title-line{display:flex;align-items:center;gap:9px}.conversation-identity h1{overflow:hidden;margin:0;font-size:15px;font-weight:680;text-overflow:ellipsis;white-space:nowrap}.conversation-identity p{overflow:hidden;margin:2px 0 0;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.running-pulse{padding:2px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:11px;letter-spacing:.04em}.header-actions{display:flex;align-items:center;gap:6px}.status-chip{display:inline-flex;min-height:25px;align-items:center;padding:3px 8px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-family:monospace;font-size:11px}.status-chip.active{border-color:#8a7dff59;background:var(--accent-soft);color:var(--accent)}.configuration-banner{grid-area:banner;display:flex;align-items:center;margin:12px 18px 0;padding:10px 12px;border:1px solid rgb(244 200 107 / 28%);border-radius:var(--radius-md);background:#f4c86b12;color:var(--warning);gap:10px}.configuration-banner div{display:flex;flex:1;flex-direction:column}.configuration-banner strong{font-size:12px}.configuration-banner span{color:var(--text-2);font-size:11px}.transcript-stage{grid-area:transcript;position:relative;display:flex;min-width:0;min-height:0;overflow:hidden}.transcript-viewport{position:relative;flex:1 1 auto;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.transcript-content{width:min(820px,calc(100% - 34px));min-height:100%;margin:0 auto;padding:26px 0 34px}.timeline{display:flex;flex-direction:column;margin:0;padding:0;list-style:none;gap:15px}.history-rail{position:absolute;z-index:4;top:0;bottom:0;left:4px;width:14px;pointer-events:none}.history-rail-inner{position:relative;height:100%;pointer-events:auto}.history-slider{position:relative;height:100%;cursor:pointer;touch-action:none}.history-ticks{position:absolute;inset:6px 0}.history-tick{position:absolute;left:0;height:2px;border-radius:1px;background:color-mix(in srgb,var(--text-2) 32%,transparent);transform:translateY(-50%);transition:background-color .15s ease}.history-tick-s{width:6px}.history-tick-m{width:9px}.history-tick-l{width:12px}.history-tick.is-viewport{background:color-mix(in srgb,var(--text) 78%,transparent)}.history-tick.is-error{background:color-mix(in srgb,var(--danger) 55%,transparent)}.history-tick.is-scrubbing{background:color-mix(in srgb,var(--text) 60%,transparent)}.history-live-bar{position:absolute;bottom:2px;left:0;width:10px;height:2px;border-radius:1px;background:var(--text);animation:history-live-breathe 1.2s ease-in-out infinite}@keyframes history-live-breathe{0%,to{opacity:1}50%{opacity:.25}}html[data-history-scrubbing] .history-slider{cursor:ns-resize}html[data-history-scrubbing],html[data-history-scrubbing] *{user-select:none!important}.history-slider:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:2px}.history-preview-card{position:absolute;z-index:5;left:24px;width:300px;padding:12px 14px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface-raised);box-shadow:var(--shadow);pointer-events:none}.history-preview-card strong{display:block;overflow:hidden;margin:0 0 6px;color:var(--text);font-size:13px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.history-preview-card p{display:-webkit-box;margin:0;overflow:hidden;color:var(--text-2);font-size:12px;line-height:1.55;-webkit-box-orient:vertical;-webkit-line-clamp:4;white-space:pre-wrap;overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){.history-live-bar{animation:none}.history-tick{transition:none}}@container (min-width: 761px){.history-rail{width:14px}.transcript-content{width:min(820px,calc(100% - 64px))}}@container (min-width: 641px) and (max-width: 760px){.history-rail{width:12px}.history-preview-card{display:none}.transcript-content{width:min(820px,calc(100% - 46px))}}@container (max-width: 640px){.history-rail{display:none}.transcript-content{width:min(820px,calc(100% - 34px))}}.load-history{display:block;min-height:34px;margin:0 auto 22px;padding:5px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:11px}.load-history:hover{border-color:var(--border-strong);color:var(--text)}.message-card,.tool-card,.edit-card,.reasoning-card,.activity-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.message-card{overflow:hidden}.message-card>header{display:flex;align-items:center;min-height:38px;padding:7px 13px;border-bottom:1px solid var(--border);color:var(--text-2);font-size:11px;font-weight:650;gap:8px}.message-avatar{display:inline-flex;width:21px;height:21px;align-items:center;justify-content:center;border-radius:7px;background:var(--surface-3);color:var(--muted);font-family:monospace;font-size:11px}.role-user{width:min(86%,680px);margin-left:auto;border-color:#8a7dff40;background:linear-gradient(135deg,var(--accent-soft),var(--surface))}.role-user .message-avatar{background:var(--accent);color:#fff}.role-assistant .message-avatar{background:#5ee1c41f;color:var(--accent-2)}.role-error{border-color:#ff7c9159}.message-body{padding:14px 16px;overflow-wrap:anywhere}.literal-message{margin:0;white-space:pre-wrap}.streaming-label,.command-state{margin-left:auto;padding:2px 6px;border-radius:999px;color:var(--accent);font-size:11px}.streaming-label{background:var(--accent-soft)}.command-state.success{color:var(--success)}.command-state.error{color:var(--danger)}.budget-stop{display:flex;align-items:center;margin:0 14px 14px;padding:8px 10px;border-radius:var(--radius-sm);background:#f4c86b14;color:var(--warning);font-size:11px;gap:7px}.markdown{color:var(--text-2);line-height:1.68;overflow-wrap:anywhere}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown p{margin:0 0 .8em}.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{margin:1.25em 0 .5em;color:var(--text);line-height:1.3}.markdown h2{font-size:16px}.markdown h3{font-size:14px}.markdown ul,.markdown ol{margin:.5em 0 .9em;padding-left:1.6em}.markdown li+li{margin-top:.3em}.markdown blockquote{margin:.8em 0;padding:3px 12px;border-left:2px solid var(--accent);color:var(--muted)}.markdown code:not(pre code),.path-chip{padding:2px 5px;border:1px solid var(--border);border-radius:5px;background:var(--surface-2);color:var(--accent-2);font-size:.88em}.markdown a{color:var(--info);text-underline-offset:3px}.markdown table{width:100%;border-collapse:collapse;margin:.6em 0 .9em;font-size:.92em;table-layout:auto}.markdown th,.markdown td{border:1px solid var(--border);padding:.4em .7em;vertical-align:top;word-break:break-word}.markdown th{background:var(--surface-2);font-weight:600}.markdown tbody tr:nth-child(2n){background:#7f7f7f0a}.markdown td code,.markdown th code{white-space:nowrap}.code-block{margin:12px 0;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-sm);background:#070910}:root[data-theme=light] .code-block{background:#f5f6f9}.code-block figcaption{display:flex;align-items:center;justify-content:space-between;min-height:34px;padding:0 7px 0 12px;border-bottom:1px solid var(--border);color:var(--muted);font-family:monospace;font-size:11px}.code-block pre,.tool-card pre,.edit-card pre,.approval-card pre,.json-section pre,.detail-output pre{max-width:100%;margin:0;overflow:auto;color:#cbd3e6;font-size:11px;line-height:1.55;white-space:pre;tab-size:2}:root[data-theme=light] .code-block pre,:root[data-theme=light] .tool-card pre,:root[data-theme=light] .edit-card pre,:root[data-theme=light] .approval-card pre,:root[data-theme=light] .json-section pre,:root[data-theme=light] .detail-output pre{color:#252b38}.code-block pre{padding:13px 15px}.reasoning-card{padding:0;border-style:dashed;background:transparent}.reasoning-card summary,.activity-card summary,.tool-details summary,.edit-card summary,.approval-args summary,.remaining-audit summary,.json-section summary{cursor:pointer;user-select:none}.reasoning-card summary{display:flex;align-items:center;min-height:42px;padding:8px 13px;color:var(--text-2);gap:9px}.reasoning-card[open] summary{border-bottom:1px solid var(--border)}.reasoning-card>.markdown{padding:13px 16px}.reasoning-hint{margin-left:auto;color:var(--muted);font-size:11px}.tool-card{overflow:hidden}.tool-card.tool-error{border-color:#ff7c914d}.tool-card-header{display:flex;align-items:center;min-height:49px;padding:9px 13px;gap:10px}.tool-state-icon{display:inline-flex;width:27px;height:27px;flex:0 0 auto;align-items:center;justify-content:center;border-radius:8px;background:var(--surface-3);color:var(--muted)}.tool-state-icon.success{color:var(--success)}.tool-state-icon.error{color:var(--danger)}.tool-state-icon.running{color:var(--accent)}.tool-title{display:flex;min-width:0;flex:1;flex-direction:column}.tool-title strong{font-size:12px}.tool-title span{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.byte-pill,.current-pill,.readiness-pill,.mode-badge{padding:2px 7px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-family:monospace;font-size:11px}.tool-summary,.tool-error-copy{margin:0;padding:0 13px 11px 50px;color:var(--text-2);font-size:11px}.tool-error-copy{color:var(--danger)}.tool-details{border-top:1px solid var(--border)}.tool-details>summary{padding:8px 13px;color:var(--muted);font-size:11px}.tool-details[open]>summary{border-bottom:1px solid var(--border)}.tool-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:10px 13px;gap:8px}.tool-meta-grid div{min-width:0}.tool-meta-grid dt,.micro-label{color:var(--muted);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.tool-meta-grid dd{overflow:hidden;margin:2px 0 0;color:var(--text-2);font-size:11px;text-overflow:ellipsis}.tool-detail-section{padding:0 13px 12px}.tool-detail-section pre{max-height:280px;margin-top:6px;padding:10px;border-radius:var(--radius-sm);background:#070910}:root[data-theme=light] .tool-detail-section pre{background:#f5f6f9}.truncation-note{margin:6px 0 0;color:var(--muted);font-size:11px}.tool-output-section{padding-top:8px}.tool-output-fold{margin-top:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#070910}:root[data-theme=light] .tool-output-fold{background:#f5f6f9}.tool-output-fold summary{display:flex;min-height:34px;align-items:center;justify-content:space-between;padding:0 10px;color:var(--muted);font-size:11px;cursor:pointer;gap:8px;list-style:none}.tool-output-fold summary::-webkit-details-marker{display:none}.tool-output-fold summary .text-button{flex:none}.tool-output-text{max-height:420px;margin:0;padding:10px 12px;overflow:auto;border-top:1px solid var(--border);color:var(--text-2);font:var(--font-code) / 1.55 "SFMono-Regular",Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.tool-output-preview-open .tool-output-text{margin-top:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#070910}:root[data-theme=light] .tool-output-preview-open .tool-output-text{background:#f5f6f9}.tool-output-preview-open .truncation-note{margin:6px 2px 0}.edit-card{padding:12px 14px}.edit-card>header{display:flex;align-items:center;margin-bottom:9px;gap:9px}.edit-icon{width:29px;height:29px}.edit-card header div{display:flex;flex-direction:column}.edit-card header strong{font-size:12px}.edit-card header span{color:var(--muted);font-size:11px}.path-chip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.edit-card details{margin-top:9px}.edit-card summary{color:var(--muted);font-size:11px}.edit-card pre{max-height:260px;margin-top:8px;padding:10px;background:var(--surface-2)}.activity-card>summary{display:flex;align-items:center;min-height:48px;padding:9px 13px;gap:10px}.activity-card>summary>span{display:flex;flex:1;flex-direction:column}.activity-card summary strong{font-size:12px}.activity-card summary small,.activity-card summary time{color:var(--muted);font-size:11px}.activity-card>p,.activity-card>.markdown,.activity-card>.source-list{margin:0;padding:0 14px 13px 42px}.source-list{list-style:none}.source-list li{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;padding:5px 0;gap:7px}.source-list small{grid-column:2;color:var(--muted)}.thinking-indicator{display:flex;align-items:center;min-height:44px;margin-top:13px;color:var(--muted);font-size:11px;gap:5px}.thinking-indicator>span:not(:last-child){width:4px;height:4px;border-radius:50%;background:var(--accent);animation:thinking 1.25s ease-in-out infinite}.thinking-indicator>span:nth-child(2){animation-delay:.14s}.thinking-indicator>span:nth-child(3){margin-right:5px;animation-delay:.28s}@keyframes thinking{0%,70%,to{opacity:.3;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}.spinner,.boot-loader{display:inline-block;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .75s linear infinite}.spinner{width:14px;height:14px}.boot-loader{width:23px;height:23px;margin-top:8px}@keyframes spin{to{transform:rotate(360deg)}}.empty-conversation{display:flex;min-height:min(520px,70vh);align-items:center;justify-content:center;flex-direction:column;padding:40px 24px;color:var(--muted);text-align:center}.empty-orbit{display:inline-flex;width:58px;height:58px;align-items:center;justify-content:center;margin-bottom:18px;border:1px solid var(--border-strong);border-radius:50%;background:radial-gradient(circle,var(--accent-soft),transparent);color:var(--accent);box-shadow:0 0 0 10px #8a7dff08}.empty-conversation h2{margin-bottom:7px;color:var(--text);font-size:17px}.empty-conversation p{max-width:430px;margin-bottom:17px}.jump-latest{position:absolute;z-index:8;right:24px;bottom:145px;display:flex;min-height:34px;align-items:center;padding:5px 10px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-raised);box-shadow:var(--shadow);color:var(--text-2);font-size:11px;gap:6px}.input-dock{grid-area:composer;z-index:6;display:grid;min-height:0;max-height:calc(100dvh - var(--header-height) - 16px);width:min(850px,calc(100% - 30px));margin:0 auto;padding:0 0 14px;overflow:visible;grid-template-rows:minmax(0,1fr) auto}.input-transients{min-height:0;padding-top:1px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.composer{grid-row:2;overflow:hidden;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:0 14px 45px #0003}.composer-control-center{position:relative;grid-row:2;min-width:0}.composer-v032{overflow:visible}.composer-v032>textarea{border-radius:var(--radius-lg) var(--radius-lg) 0 0}.composer-control-toolbar{position:relative;padding:6px 8px;border-top:1px solid color-mix(in srgb,var(--border) 72%,transparent)}.composer-control-row,.composer-control-actions,.model-control-cluster{display:flex;min-width:0;align-items:center;gap:5px}.composer-control-actions{margin-left:auto}.control-menu,.context-meter-wrap{position:relative}.composer-control-trigger,.context-add-button,.context-meter-button{display:inline-flex;height:32px;min-height:32px;align-items:center;justify-content:center;padding:0 9px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text-2);font-size:11px;font-weight:650;gap:6px;white-space:nowrap}.composer-control-trigger:hover:not(:disabled),.context-add-button:hover:not(:disabled),.context-meter-button:hover:not(:disabled),.composer-control-trigger[aria-expanded=true],.context-add-button[aria-expanded=true],.context-meter-button[aria-expanded=true]{border-color:var(--border);background:var(--surface-3);color:var(--text)}.composer-control-trigger:disabled,.context-add-button:disabled,.context-meter-button:disabled{color:var(--muted);opacity:1}.context-add-button{width:32px;padding:0;border-color:var(--border)}.composer-control-trigger svg{transform:rotate(90deg)}.control-menu-popover,.context-popover{position:absolute;z-index:75;bottom:calc(100% + 8px);left:0;width:min(310px,calc(100vw - 28px));max-height:min(420px,58dvh);padding:6px;overflow:auto;border:1px solid var(--border-strong);border-radius:13px;background:color-mix(in srgb,var(--surface-raised) 97%,transparent);box-shadow:0 18px 56px #0000004d;backdrop-filter:blur(18px);scrollbar-width:thin}.model-control-cluster .control-menu-popover,.context-popover{right:0;left:auto}.control-menu-popover>button,.model-catalog-popover section>button{display:flex;width:100%;min-height:48px;align-items:center;justify-content:space-between;padding:7px 9px;border-radius:9px;color:var(--text-2);text-align:left;gap:12px}.control-menu-popover>button:hover,.control-menu-popover>button:focus-visible,.control-menu-popover>button[aria-checked=true],.model-catalog-popover section>button:hover,.model-catalog-popover section>button:focus-visible,.model-catalog-popover section>button[aria-checked=true]{background:var(--surface-3);color:var(--text)}.control-menu-popover>button>span,.model-catalog-popover section>button>span{display:grid;min-width:0;gap:2px}.control-menu-popover strong{font-size:12px;font-weight:700}.control-menu-popover small,.control-menu-popover>p{color:var(--muted);font-size:10px;line-height:1.35}.model-catalog-popover{width:min(360px,calc(100vw - 28px))}.model-catalog-popover section{display:grid;gap:2px}.model-provider-heading{padding:8px 9px 4px;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.model-provider-heading.state-error{color:var(--danger)}.model-catalog-popover section>p{margin:2px 9px 5px;color:var(--muted);font-size:10px}.model-catalog-search{display:block;position:sticky;z-index:1;top:-6px;padding:4px 2px 7px;background:var(--surface-raised)}.model-catalog-search input{width:100%;min-height:38px;padding:0 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text)}.context-launcher-menu{width:min(340px,calc(100vw - 28px))}.context-tray{display:flex;max-height:92px;margin-bottom:7px;padding:7px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 92%,transparent);flex-wrap:wrap;gap:6px;scrollbar-width:thin}.context-chip{display:inline-flex;max-width:min(320px,100%);min-height:28px;align-items:center;padding:3px 5px 3px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface-raised);color:var(--text-2);font-size:11px;gap:5px}.context-chip small{color:var(--accent-2);font-size:8px;font-weight:800;letter-spacing:.08em}.context-chip>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.context-chip button{display:inline-flex;width:22px;height:22px;flex:0 0 22px;align-items:center;justify-content:center;border-radius:50%;color:var(--muted)}.context-chip button:hover{background:var(--surface-3);color:var(--text)}.context-chip.state-stale{border-color:color-mix(in srgb,var(--warning) 72%,var(--border))}.context-chip-state{color:var(--warning);font-size:9px}.context-meter-button{padding-inline:8px}.context-meter-ring{position:relative;width:17px;height:17px;border-radius:50%;background:conic-gradient(var(--accent) var(--context-percent),var(--surface-3) 0)}.context-meter-ring:after{position:absolute;border-radius:50%;background:var(--surface-raised);content:"";inset:3px}.context-popover{width:min(300px,calc(100vw - 28px));padding:13px}.context-popover header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.context-popover dl{display:grid;margin:0 0 11px;gap:1px}.context-popover dl div{display:flex;justify-content:space-between;padding:6px 4px;border-bottom:1px solid var(--border);color:var(--muted);font-size:11px;gap:12px}.context-popover dd{margin:0;color:var(--text-2);text-align:right}.context-popover p{color:var(--muted);font-size:11px}.composer-send-icon{width:36px;min-width:36px;height:36px;min-height:36px;padding:0;border-radius:50%}.composer-footline{display:flex;min-height:18px;align-items:center;justify-content:flex-end;padding:0 12px 4px;color:var(--faint);font-size:9px;gap:10px}.plan-review-card{display:grid;margin-bottom:8px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--accent) 48%,var(--border));border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface-raised) 94%,var(--accent));box-shadow:var(--shadow);gap:10px}.plan-review-card h2{margin:2px 0 4px;font-size:14px}.plan-review-card p,.plan-review-card label{color:var(--muted);font-size:11px}.plan-review-card textarea{display:block;width:100%;margin-top:6px;padding:9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);resize:vertical}.plan-review-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:7px}.modal-backdrop{position:fixed;z-index:240;display:grid;background:#04070f9e;inset:0;place-items:center}.risk-confirmation{width:min(440px,calc(100vw - 28px));padding:20px;border:1px solid var(--border-strong);border-radius:16px;background:var(--surface-raised);box-shadow:0 24px 80px #00000073}.risk-confirmation h2{margin:0 0 8px;font-size:17px}.risk-confirmation p,.risk-confirmation label{color:var(--text-2);font-size:12px;line-height:1.55}.risk-confirmation label{display:flex;align-items:flex-start;margin:14px 0;gap:8px}.risk-confirmation>div{display:flex;justify-content:flex-end;gap:7px}.composer:focus-within{border-color:#8a7dff99;box-shadow:0 0 0 3px var(--accent-soft),0 14px 45px #0003}.composer textarea{display:block;width:100%;min-height:74px;max-height:240px;resize:vertical;padding:13px 15px 7px;border:0;outline:0;background:transparent;color:var(--text);line-height:1.5}.composer textarea::placeholder{color:var(--faint)}.composer-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;min-height:47px;padding:6px 7px 7px 10px;gap:10px}.composer-controls,.composer-actions{display:flex;align-items:center;gap:7px}.composer-hint{color:var(--faint);font-size:11px}.mode-selector{display:inline-flex;margin:0;padding:2px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.mode-selector button{display:inline-flex;min-height:27px;align-items:center;padding:3px 7px;border-radius:6px;background:transparent;color:var(--muted);font-family:monospace;font-size:11px;gap:4px}.mode-selector button.active{background:var(--surface-raised);box-shadow:0 1px 5px #0000002e;color:var(--text)}.mode-dot{width:5px;height:5px;border-radius:50%;background:var(--muted)}.mode-dot.mode-interactive{background:var(--info)}.mode-dot.mode-plan{background:var(--warning)}.mode-dot.mode-auto{background:var(--accent-2)}.send-button{min-width:76px;border-radius:11px}.stop-button{color:var(--danger)}.approval-card{margin-bottom:9px;padding:13px 14px;border:1px solid rgb(244 200 107 / 35%);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface-raised) 94%,var(--warning));box-shadow:var(--shadow)}.approval-heading{display:flex;align-items:center;gap:10px}.approval-icon{width:33px;height:33px;background:#f4c86b1f;color:var(--warning)}.approval-heading h2{margin:1px 0 0;font-size:14px}.eyebrow{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.14em}.approval-card>p{margin:8px 0;color:var(--text-2);font-size:11px}.approval-args summary{color:var(--muted);font-size:11px}.approval-args pre{max-height:180px;margin-top:7px;padding:9px;overflow:auto;border-radius:var(--radius-sm);background:var(--bg);overflow-wrap:anywhere;white-space:pre-wrap}.approval-actions{display:flex;justify-content:flex-end;margin-top:11px;flex-wrap:wrap;gap:6px}.approval-footnote{color:var(--muted)!important;font-size:11px!important}.queue-dock{margin-bottom:8px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}.queue-dock>summary{display:flex;justify-content:space-between;padding:8px 12px;cursor:pointer;color:var(--text-2);font-size:11px}.queue-dock>summary span:last-child{color:var(--muted)}.queue-list{max-height:min(304px,38dvh);padding:0 9px 8px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}.queue-row{display:flex;align-items:center;min-height:38px;border-top:1px solid var(--border);gap:8px}.queue-index{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border-radius:6px;background:var(--surface-3);color:var(--muted);font-size:11px}.queue-row p{overflow:hidden;margin:0;flex:1;color:var(--text-2);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.queue-row textarea{min-width:0;min-height:52px;padding:7px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-raised);color:var(--text);flex:1;resize:vertical}.queue-row-actions{display:flex;align-items:center;gap:1px}.queue-row-actions .icon-button{width:28px;height:28px;min-height:28px}.queue-move-down svg{transform:rotate(180deg)}.queue-clear{margin-left:auto}.inspector{z-index:20;display:flex;flex-direction:column;overflow:hidden;border-left:1px solid var(--border);background:var(--surface)}.inspector-dock.inspector-collapsed{overflow:visible}.inspector-detail{display:flex;min-width:0;min-height:0;flex:1;flex-direction:column;overflow:hidden}.inspector-detail[hidden],.inspector-shortcuts[hidden]{display:none}.inspector-shortcuts{display:flex;min-width:0;min-height:0;flex:1;align-items:center;flex-direction:column;padding:10px 2px;gap:4px}.inspector-shortcut{position:relative;display:inline-flex;width:44px;height:44px;min-height:44px;align-items:center;justify-content:center;border-radius:9px;background:transparent;color:var(--muted)}.inspector-shortcut:before{position:absolute;z-index:2;top:50%;right:calc(100% + 8px);padding:5px 8px;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface-raised);box-shadow:0 8px 24px #0000003d;color:var(--text);content:attr(data-tooltip);font-size:11px;line-height:1.2;opacity:0;pointer-events:none;transform:translate(4px,-50%);transition:opacity .12s ease,transform .12s ease;white-space:nowrap}.inspector-shortcut:hover:before,.inspector-shortcut:focus-visible:before{opacity:1;transform:translateY(-50%)}.inspector-shortcut:hover,.inspector-shortcut[aria-current=page]{background:var(--surface-3);color:var(--text)}.inspector-shortcut[aria-current=page]{box-shadow:inset -2px 0 var(--accent)}.inspector-shortcut-divider{width:25px;height:1px;margin:2px 0 4px;flex:0 0 auto;background:var(--border)}.inspector-shortcut-indicator{position:absolute;top:5px;right:3px;display:inline-flex;min-width:15px;height:15px;align-items:center;justify-content:center;padding:0 3px;border:1px solid var(--surface);border-radius:999px;background:var(--border-strong);color:var(--text);font-size:11px;font-weight:700;line-height:1}.inspector-shortcut-indicator:empty{top:7px;right:6px;width:7px;min-width:7px;height:7px;padding:0}.inspector-shortcut-indicator.indicator-active{background:var(--success)}.inspector-shortcut-indicator.indicator-warning{background:var(--warning)}.inspector-header{display:flex;min-height:var(--header-height);align-items:center;justify-content:space-between;padding:9px 13px 8px 16px;border-bottom:1px solid var(--border)}.inspector-header h2{margin:1px 0 0;font-size:14px}.inspector-header-actions{display:flex;gap:3px}.inspector-tabs{display:grid;grid-template-columns:repeat(4,1fr);padding:7px 8px;border-bottom:1px solid var(--border);gap:3px}.inspector-tabs button{display:flex;min-width:0;min-height:35px;align-items:center;justify-content:center;border-radius:7px;background:transparent;color:var(--muted);font-size:11px;gap:5px}.inspector-tabs button:hover,.inspector-tabs button[aria-selected=true]{background:var(--surface-3);color:var(--text)}.inspector-tabs button[aria-selected=true]{box-shadow:inset 0 -2px var(--accent)}.inspector-body{min-height:0;flex:1;overflow:auto;padding:12px;outline:0;scrollbar-width:thin}.inspector-stack{display:flex;flex-direction:column;gap:11px}.inspector-section,.goal-card,.goal-create,.inspector-empty-card,.capability-card,.security-note{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.inspector-section,.goal-card,.goal-create,.inspector-empty-card,.capability-card{padding:12px}.inspector-section-heading{display:flex;min-height:25px;align-items:center;justify-content:space-between;margin-bottom:8px}.inspector-section-heading h3{margin:0;font-size:11px}.inspector-section-heading>span{color:var(--muted);font-size:11px}.inspector-empty-card{text-align:center}.empty-mini-icon{width:37px;height:37px;margin:4px auto 10px}.inspector-empty-card h3{margin-bottom:5px;font-size:13px}.inspector-empty-card p,.muted-copy{margin:0;color:var(--muted);font-size:11px}.goal-card>header{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-family:monospace;font-size:11px}.goal-card h3{margin:10px 0 13px;font-size:13px;line-height:1.45}.goal-status{padding:2px 7px;border-radius:999px;background:var(--accent-soft);color:var(--accent);text-transform:uppercase}.goal-status.status-complete,.goal-status.status-completed{background:#5ee1a21a;color:var(--success)}.goal-status.status-blocked,.goal-status.status-failed{background:#ff7c911a;color:var(--danger)}.goal-progress>div{display:flex;justify-content:space-between;color:var(--text-2);font-size:11px}.goal-progress progress{width:100%;height:5px;margin:7px 0 4px;border:0;border-radius:99px;overflow:hidden;background:var(--surface-3)}.goal-progress progress::-webkit-progress-bar{background:var(--surface-3)}.goal-progress progress::-webkit-progress-value{background:linear-gradient(90deg,var(--accent),var(--accent-2))}.goal-progress progress::-moz-progress-bar{background:linear-gradient(90deg,var(--accent),var(--accent-2))}.goal-breakdown span:last-child{color:var(--muted)}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:13px 0 0;gap:7px}.metric-grid div{padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.metric-grid dt{color:var(--muted);font-size:11px;text-transform:uppercase}.metric-grid dd{margin:2px 0 0;font-family:monospace;font-size:11px}.next-action{margin-top:9px;padding:9px;border-left:2px solid var(--accent);border-radius:3px 8px 8px 3px;background:var(--accent-soft)}.next-action span{color:var(--accent);font-size:11px;text-transform:uppercase}.next-action p{margin:3px 0 0;color:var(--text-2);font-size:11px}.remaining-audit{margin-top:9px;color:var(--muted);font-size:11px}.remaining-audit ul{margin:7px 0 0;padding-left:18px}.goal-actions{display:flex;justify-content:flex-end;margin-top:11px;gap:6px}.goal-create label{display:block;margin-bottom:7px;font-size:11px;font-weight:650}.goal-create textarea{width:100%;resize:vertical;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);outline:0;background:var(--surface);font-size:11px}.goal-create textarea:focus{border-color:var(--accent)}.goal-create button{width:100%;margin-top:8px}.mode-badge.mode-plan{color:var(--warning)}.plan-section .markdown{max-height:360px;overflow:auto;font-size:11px}.evidence-list,.activity-list,.change-list,.server-list,.skill-list,.compact-timeline{margin:0;padding:0;list-style:none}.evidence-list li,.activity-list li,.change-list li{display:flex;align-items:center;min-height:40px;border-top:1px solid var(--border);gap:8px}.evidence-list li:first-child,.activity-list li:first-child,.change-list li:first-child{border-top:0}.evidence-list li>div,.activity-list li>div,.change-list li>div{display:flex;min-width:0;flex:1;flex-direction:column}.evidence-list strong,.activity-list strong,.change-list strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.evidence-list span,.activity-list span,.change-list span,.activity-list small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.evidence-state{display:inline-flex;width:21px;height:21px;align-items:center;justify-content:center;border-radius:6px;background:var(--surface-3);color:var(--muted)}.evidence-state.passed{color:var(--success)}.evidence-state.failed{color:var(--danger)}.compact-timeline li{position:relative;display:flex;padding:3px 0 12px 18px}.compact-timeline li:before{position:absolute;top:10px;bottom:-5px;left:4px;width:1px;background:var(--border);content:""}.compact-timeline li:last-child:before{display:none}.timeline-pin{position:absolute;top:7px;left:1px;width:7px;height:7px;border-radius:50%;background:var(--accent)}.compact-timeline strong{font-size:11px}.compact-timeline p{margin:2px 0;color:var(--text-2);font-size:11px}.compact-timeline time{color:var(--muted);font-size:11px}.detail-selector{display:flex;max-height:230px;overflow:auto;flex-direction:column;gap:3px}.detail-selector button{display:flex;min-height:39px;align-items:center;padding:5px 7px;border-radius:7px;background:var(--surface);text-align:left;gap:7px}.detail-selector button:hover:not(:disabled),.detail-selector button.active{background:var(--surface-3)}.detail-selector button>span{display:flex;min-width:0;flex:1;flex-direction:column}.detail-selector strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.detail-selector small{color:var(--muted);font-size:11px}.detail-output{margin-top:8px}.detail-output>div{display:flex;justify-content:space-between;margin-bottom:6px;color:var(--muted);font-size:11px;gap:8px}.detail-output code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-output pre{max-height:300px;padding:9px;border-radius:var(--radius-sm);background:var(--bg);white-space:pre-wrap;word-break:break-word}.detail-output button{width:100%;margin-top:7px}.capability-card>header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px}.capability-icon{width:32px;height:32px}.capability-icon.mcp{color:var(--accent-2)}.capability-card header h3{margin:0;font-size:11px}.capability-card header p{margin:1px 0 0;color:var(--muted);font-size:11px}.readiness-pill.ready{border-color:#5ee1a240;color:var(--success)}.skill-list,.server-list{max-height:390px;margin-top:10px;overflow:auto}.skill-list li{padding:9px 0;border-top:1px solid var(--border)}.skill-list li>div{display:flex;align-items:baseline;justify-content:space-between;gap:7px}.skill-list strong{font-size:11px}.skill-list span,.skill-list small{color:var(--muted);font-size:11px}.skill-list p{margin:3px 0;color:var(--text-2);font-size:11px}.server-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;min-height:42px;border-top:1px solid var(--border);gap:8px}.server-list li>div{display:flex;min-width:0;flex-direction:column}.server-list code{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.server-list small,.server-list li>span:last-child{color:var(--muted);font-size:11px}.security-note{display:flex;padding:10px 11px;color:var(--info);gap:8px}.security-note p{margin:0;color:var(--muted);font-size:11px}.security-note strong{color:var(--text-2)}.diagnostics-toolbar{display:flex;min-height:39px;align-items:center;justify-content:space-between;padding:0 4px}.diagnostics-toolbar>div{display:flex;align-items:center;font-size:11px;gap:7px}.diagnostic-list{margin:0}.diagnostic-list>div{display:grid;grid-template-columns:90px minmax(0,1fr);align-items:baseline;padding:6px 0;border-top:1px solid var(--border);gap:8px}.diagnostic-list>div:first-child{border-top:0}.diagnostic-list dt{color:var(--muted);font-size:11px}.diagnostic-list dd{overflow:hidden;margin:0;font-family:monospace;font-size:11px;text-align:right;text-overflow:ellipsis;white-space:nowrap}.json-section{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.json-section summary{padding:10px 12px;font-size:11px;font-weight:650}.json-section[open] summary{border-bottom:1px solid var(--border)}.json-section pre{max-height:360px;padding:10px;white-space:pre-wrap;word-break:break-word}.empty-small{min-height:62px;flex-direction:column;font-size:11px}.empty-small p{margin:4px 0 0}.empty-line{width:28px;height:1px;background:var(--border-strong)}.workbench-notice-stack{position:fixed;z-index:90;top:calc(var(--header-height) + 12px);right:calc(var(--inspector-column-width) + 16px);display:flex;flex-direction:column;align-items:stretch;gap:8px;width:min(440px,calc(100vw - 32px));pointer-events:none}.workbench-notice{width:100%;display:grid;grid-template-columns:auto minmax(150px,1fr) auto auto;align-items:center;padding:10px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow);gap:9px;pointer-events:auto;animation:notice-in .18s ease}@keyframes notice-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.notice-icon{width:30px;height:30px}.notice-warning .notice-icon{background:#f4c86b1f;color:var(--warning)}.notice-error .notice-icon{background:#ff7c911f;color:var(--danger)}.notice-success .notice-icon{background:#5ee1a21f;color:var(--success)}.workbench-notice strong{font-size:11px}.workbench-notice p{margin:2px 0 0;color:var(--muted);font-size:11px}.boot-screen{position:fixed;z-index:200;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:30px;background:var(--bg);text-align:center}.boot-screen .boot-mark{margin-bottom:21px}.boot-screen h1{margin-bottom:7px;font-size:20px}.boot-screen p{max-width:430px;margin-bottom:16px;color:var(--muted)}.modal{width:min(610px,calc(100vw - 28px));max-height:min(760px,calc(100dvh - 30px));padding:0;overflow:hidden;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:var(--shadow);color:var(--text)}.modal::backdrop{background:var(--overlay);backdrop-filter:blur(4px)}.modal>form{display:flex;max-height:inherit;flex-direction:column}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:16px 18px 13px;border-bottom:1px solid var(--border)}.modal-header h2{margin:2px 0 0;font-size:16px}.modal-header p{margin:3px 0 0;color:var(--muted);font-size:11px}.settings-body{min-height:0;overflow:auto;padding:14px 18px}.settings-section+.settings-section{margin-top:18px;padding-top:17px;border-top:1px solid var(--border)}.settings-section-title{display:flex;align-items:flex-start;margin-bottom:9px;gap:9px}.settings-section-title>svg{margin-top:2px;color:var(--accent)}.settings-section-title h3{margin:0;font-size:12px}.settings-section-title p{margin:2px 0 0;color:var(--muted);font-size:11px}.field-row{display:flex;min-height:50px;align-items:center;justify-content:space-between;gap:14px}.field-row>span{display:flex;flex-direction:column}.field-row strong{font-size:11px}.field-row small{color:var(--muted);font-size:11px}.field-row select,.rename-body input,.workspace-path-form input{min-width:180px;padding:7px 9px;border:1px solid var(--border);border-radius:var(--radius-sm);outline:0;background:var(--surface-2)}.field-row select:focus,.rename-body input:focus,.workspace-path-form input:focus{border-color:var(--accent)}.credential-note{display:flex;margin-top:8px;padding:9px 10px;border-radius:var(--radius-sm);background:#5ee1a212;color:var(--success);gap:8px}.credential-note strong{font-size:11px}.credential-note p{margin:1px 0 0;color:var(--muted);font-size:11px}.segmented-field{display:grid;grid-template-columns:repeat(3,1fr);margin:6px 0 0;padding:3px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.segmented-field legend{margin-bottom:6px;padding:0;color:var(--muted);font-size:11px}.segmented-field label{position:relative;display:flex;align-items:center;justify-content:center;min-height:33px;cursor:pointer}.segmented-field input{position:absolute;opacity:0}.segmented-field span{display:flex;width:100%;height:100%;align-items:center;justify-content:center;border-radius:6px;color:var(--muted);font-size:11px}.segmented-field input:checked+span{background:var(--surface-raised);box-shadow:0 1px 5px #0000002e;color:var(--text)}.segmented-field input:focus-visible+span{outline:2px solid var(--accent)}.settings-help{margin:7px 0 0;color:var(--muted);font-size:11px}.settings-modal{width:min(900px,calc(100vw - 28px));height:min(720px,calc(100dvh - 30px))}.settings-modal>form{height:100%}.settings-header{flex:none}.settings-layout{display:grid;min-width:0;min-height:0;flex:1;grid-template-columns:196px minmax(0,1fr)}.settings-navigation{display:flex;min-width:0;padding:12px 10px;border-right:1px solid var(--border);background:var(--surface-2);flex-direction:column;gap:3px}.settings-navigation button{display:flex;width:100%;min-height:42px;align-items:center;padding:8px 10px;border-radius:var(--radius-sm);color:var(--muted);text-align:left;gap:9px}.settings-navigation button:hover,.settings-navigation button.active{background:var(--surface-3);color:var(--text)}.settings-navigation button.active{box-shadow:inset 2px 0 var(--accent)}.settings-content{min-width:0;min-height:0;overflow:auto;padding:18px 20px 24px}.settings-section-heading{margin-bottom:17px}.settings-section-heading h3{margin:0;font-size:16px}.settings-section-heading p{max-width:620px;margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.55}.settings-section-fields{display:flex;flex-direction:column;gap:10px}.settings-field-card{display:grid;min-width:0;padding:13px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-1);grid-template-columns:minmax(0,1fr) minmax(180px,230px);gap:16px}.settings-field-card.dirty{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));box-shadow:inset 2px 0 var(--accent)}.settings-field-copy{min-width:0}.settings-field-copy>label,.settings-field-copy>strong{display:inline-block;color:var(--text);font-size:12px;font-weight:700}.settings-field-copy>p{margin:3px 0 8px;color:var(--muted);font-size:11px;line-height:1.45}.settings-field-meta{display:flex;flex-wrap:wrap;gap:4px}.settings-field-meta span,.settings-field-meta strong{padding:2px 6px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:11px;font-weight:600}.settings-field-meta strong{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));color:var(--accent-2)}.settings-blocked-reason{display:block;margin-top:7px;color:var(--warning);font-size:11px}.settings-field-control{display:flex;min-width:0;align-items:flex-end;flex-direction:column;gap:5px}.settings-field-control>select{width:100%;min-height:38px;padding:7px 9px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);outline:0;background:var(--surface-2);color:var(--text)}.settings-field-control>select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}.settings-field-control .segmented-field{width:100%;margin:0}.settings-field-control .text-button{min-height:28px}.settings-inline-message,.settings-availability,.settings-busy,.settings-document-action{display:flex;align-items:center;margin-bottom:11px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text-2);font-size:11px;line-height:1.45;gap:7px}.settings-message-success{border-color:color-mix(in srgb,var(--success) 45%,var(--border));color:var(--success)}.settings-message-rejected,.settings-availability.error,.settings-document-action.error{border-color:color-mix(in srgb,var(--danger) 50%,var(--border));color:var(--danger)}.settings-busy{margin-bottom:0;border-color:color-mix(in srgb,var(--warning) 45%,var(--border));color:var(--warning)}.settings-conflict,.settings-diagnostic,.settings-risk-confirm{display:flex;margin-bottom:13px;padding:12px;border:1px solid color-mix(in srgb,var(--warning) 55%,var(--border));border-radius:var(--radius-md);background:color-mix(in srgb,var(--warning) 8%,var(--surface-1));gap:10px}.settings-conflict>svg,.settings-diagnostic>svg{flex:none;color:var(--warning)}.settings-conflict strong,.settings-diagnostic strong,.settings-risk-confirm strong{font-size:11px}.settings-conflict p,.settings-diagnostic p,.settings-risk-confirm p{margin:3px 0 9px;color:var(--muted);font-size:11px;line-height:1.5;overflow-wrap:anywhere}.settings-conflict>div>div,.settings-risk-confirm>div{display:flex;flex-wrap:wrap;gap:7px}.settings-conflict .settings-conflict-values{display:block;width:100%;margin:0 0 10px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.settings-conflict-values>div{display:grid;min-width:0;padding:6px 8px;border-bottom:1px solid var(--border);grid-template-columns:minmax(100px,.8fr) minmax(100px,1fr) minmax(100px,1fr);gap:8px}.settings-conflict-values>div:last-child{border-bottom:0}.settings-conflict-values span,.settings-conflict-values strong{min-width:0;overflow-wrap:anywhere;font-size:11px}.settings-conflict-values span{color:var(--text-2)}.settings-conflict-values .settings-conflict-value-heading span{color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase}.settings-risk-confirm{display:block;margin:0}.settings-risk-confirm>label{display:flex;min-height:36px;align-items:center;margin-bottom:8px;color:var(--text-2);font-size:11px;gap:8px}.settings-risk-confirm input{width:16px;height:16px}.settings-readonly-card{display:grid;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.settings-readonly-card>div{display:flex;flex-direction:column;gap:2px}.settings-readonly-card span,.settings-readonly-card p,.settings-readonly-card>small{color:var(--muted);font-size:11px}.settings-readonly-card strong{overflow:hidden;font-size:11px;text-overflow:ellipsis}.settings-readonly-card p{grid-column:1 / -1;margin:0}.settings-readonly-card>small{grid-column:1 / -1}.settings-readonly-card>button{grid-column:1 / -1;justify-self:start}.settings-facts{display:grid;margin:0;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.settings-facts>div,.settings-capability-card{min-width:0;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2)}.settings-facts dt,.settings-capability-card>span{color:var(--muted);font-size:11px}.settings-facts dd{margin:4px 0 0;overflow:hidden;color:var(--text-2);font-size:11px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.settings-advanced-actions{display:flex;flex-wrap:wrap;gap:7px}.settings-subsection{margin-top:5px;padding-top:14px;border-top:1px solid var(--border)}.settings-subsection h4{margin:0;font-size:11px}.settings-subsection>p{margin:3px 0 10px;color:var(--muted);font-size:11px;line-height:1.45}.settings-readonly-list{margin:0;padding:0;list-style:none}.settings-readonly-list li{display:grid;min-height:34px;align-items:center;border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto 90px;gap:8px;font-size:11px}.settings-readonly-list small{color:var(--muted);text-align:right}.settings-state-badge{padding:2px 6px;border-radius:999px;background:var(--surface-3);color:var(--muted);font-size:11px;text-transform:uppercase}.settings-state-badge.state-ready{color:var(--success)}.settings-state-badge.state-missing,.settings-state-badge.state-unavailable{color:var(--warning)}.settings-capability-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.settings-capability-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 8px}.settings-capability-card strong{font-size:14px}.settings-capability-card small{grid-column:1 / -1;overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.settings-empty,.settings-empty-line{color:var(--muted);text-align:center}.settings-empty{padding:56px 18px}.settings-empty h3{margin:10px 0 4px;color:var(--text);font-size:13px}.settings-empty p,.settings-empty-line{margin:0;font-size:11px}.settings-footer{align-items:center;flex:none}.settings-dirty-summary{margin-right:auto;color:var(--muted);font-size:11px}.settings-discard-confirm{display:flex;align-items:center;padding:10px 18px;border-top:1px solid color-mix(in srgb,var(--danger) 45%,var(--border));background:color-mix(in srgb,var(--danger) 7%,var(--surface-raised));justify-content:space-between;gap:14px}.settings-discard-confirm strong{font-size:11px}.settings-discard-confirm p{margin:2px 0 0;color:var(--muted);font-size:11px}.settings-discard-confirm>div:last-child{display:flex;flex:none;gap:7px}.modal-footer{display:flex;justify-content:flex-end;padding:11px 18px;border-top:1px solid var(--border);gap:7px}.workspace-modal{width:min(600px,calc(100vw - 28px))}.workspace-options{max-height:350px;overflow:auto;padding:13px 16px}.workspace-toggle-all{justify-content:flex-start;width:100%;padding:6px 9px;color:var(--muted);font-size:11px;text-align:left}.workspace-toggle-all:hover{color:var(--text)}.workspace-option{display:flex;width:100%;min-height:55px;align-items:center;padding:8px 9px;border-radius:var(--radius-sm);background:transparent;text-align:left;gap:9px}.workspace-option:hover:not(:disabled),.workspace-option.active{background:var(--surface-2)}.workspace-option>span:nth-child(2){display:flex;min-width:0;flex:1;flex-direction:column}.workspace-option strong,.workspace-option small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-option strong{font-size:11px}.workspace-option small{color:var(--muted);font-size:11px}.workspace-picker{display:flex;flex-direction:column;padding:12px 16px 4px;gap:8px}.workspace-search{display:flex;height:34px;align-items:center;padding:0 9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--muted);gap:7px}.workspace-search:focus-within{border-color:color-mix(in srgb,var(--accent) 58%,var(--border));box-shadow:0 0 0 2px var(--accent-soft)}.workspace-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--text)}.workspace-pick-folder{display:inline-flex;align-items:center;justify-content:center;gap:8px}.workspace-inspect-pending{margin:0;color:var(--muted);font-size:11px}.workspace-group-heading{margin:10px 0 2px;padding:0 9px;color:var(--muted);font-size:10px;font-weight:650;letter-spacing:.08em;text-transform:uppercase}.workspace-empty{margin:6px 0;padding:0 9px;color:var(--muted);font-size:11px}.workspace-confirm{margin:10px 16px 0;padding:12px 13px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2)}.workspace-confirm-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.workspace-confirm-name{overflow:hidden;font-size:12px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.workspace-confirm-meta{flex:0 0 auto;color:var(--muted);font-size:11px}.workspace-confirm-path,.workspace-confirm-note{margin:6px 0 0;overflow-wrap:anywhere;color:var(--muted);font-size:11px}.workspace-confirm-actions{display:flex;justify-content:flex-end;margin-top:11px;gap:8px}.workspace-confirm-stages{display:flex;margin:10px 0 0;padding:0;list-style:none;gap:8px}.workspace-confirm-stage{padding:3px 8px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:10px}.workspace-confirm-stage[data-state=done]{color:var(--success);border-color:color-mix(in srgb,var(--success) 45%,var(--border))}.workspace-confirm-stage[data-state=current]{color:var(--text);border-color:color-mix(in srgb,var(--accent) 58%,var(--border));background:var(--surface-3)}.workspace-advanced{padding:0 16px 14px}.workspace-advanced>summary{padding:7px 0;color:var(--muted);font-size:11px;cursor:pointer}.workspace-advanced[open]>summary{color:var(--text)}.workspace-advanced .workspace-path-form{padding:10px 0 0;border-top:0}.workspace-path-form{padding:13px 16px 16px;border-top:1px solid var(--border)}.workspace-path-form>label,.rename-body label{display:block;margin-bottom:6px;font-size:11px;font-weight:650}.path-input-row{display:flex;gap:7px}.path-input-row input{min-width:0;flex:1}.field-error{margin:7px 0 0;color:var(--danger);font-size:11px}.rename-modal{width:min(450px,calc(100vw - 28px))}.rename-body{padding:16px 18px}.rename-body input{width:100%}.confirm-modal{width:min(420px,calc(100vw - 28px))}.confirm-body{margin:14px 18px 6px;color:var(--text-2);font-size:12px;line-height:1.7}.project-navigator{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%,var(--accent) 2%),var(--surface))}.project-navigator-collapsed{align-items:center;padding:8px 2px;gap:4px}.project-rail-brand{display:flex;width:44px;height:48px;align-items:center;justify-content:center;padding-bottom:10px}.project-rail-brand .orion-brand-mark{align-self:center}.project-rail-action{width:43px;height:43px;min-height:43px}.project-rail-action:hover:not(:disabled),.project-rail-action:focus-visible,.project-rail-workspace{background:var(--surface-3);color:var(--text)}.project-rail-workspace{box-shadow:inset 2px 0 var(--accent)}.project-rail-spacer{min-height:12px;flex:1}.project-rail-connection{margin:10px 0 8px}.project-navigation-collapse{flex:0 0 auto}.workbench-shell.project-navigation-drawer .project-navigation-collapse{display:none}.project-toolbar{display:flex;min-height:62px;align-items:center;justify-content:space-between;padding:10px 12px 7px 16px}.project-toolbar h2{margin:2px 0 0;font-size:13px;letter-spacing:-.01em}.project-toolbar-brand{display:flex;align-items:center;min-width:0;gap:9px}.pixel-wordmark{flex:0 0 auto;display:block}.project-toolbar-actions{display:flex;align-items:center;gap:2px}.project-search,.resource-search{display:flex;height:34px;align-items:center;margin:0 10px 8px;padding:0 9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--muted);gap:7px}.project-search:focus-within,.resource-search:focus-within{border-color:color-mix(in srgb,var(--accent) 58%,var(--border));box-shadow:0 0 0 2px var(--accent-soft)}.project-search input,.resource-search input{min-width:0;flex:1;border:0;outline:0;background:transparent;color:var(--text);font-size:11px}.project-search button{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;padding:0;background:transparent;color:var(--muted)}.project-tree{min-height:0;flex:1;overflow:auto;padding:0 8px 12px;scrollbar-width:thin}.project-group-heading{margin:10px 7px 5px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.13em}.project-group-heading:first-child{margin-top:3px}.project-node{margin-bottom:3px;border-radius:9px}.project-node.active{background:color-mix(in srgb,var(--accent-soft) 54%,transparent)}.project-node.unavailable{opacity:.58}.project-row{display:grid;grid-template-columns:minmax(0,1fr) 26px 30px;align-items:center}.project-toggle{display:grid;min-width:0;min-height:48px;grid-template-columns:13px 27px minmax(0,1fr) auto;align-items:center;padding:5px 5px 5px 7px;border-radius:8px;background:transparent;color:var(--text);text-align:left;gap:4px}.project-toggle>svg{color:var(--muted);transition:transform .12s ease}.project-toggle[aria-expanded=true]>svg{transform:rotate(90deg)}.project-toggle:hover,.project-add-session:hover{background:var(--surface-3)}.project-copy,.project-copy strong,.project-copy span{min-width:0}.project-copy{display:flex;flex-direction:column;gap:2px}.project-copy strong,.project-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-copy strong{font-size:var(--font-body);font-weight:650}.project-copy span{color:var(--muted);font-size:11px}.project-add-session{opacity:0}.project-remove{color:var(--danger)}.project-pin{color:var(--muted);font-size:11px;opacity:0}.project-pin[aria-pressed=true]{color:var(--accent);opacity:1}.project-row:hover .project-add-session,.project-row:hover .project-remove,.project-row:hover .project-pin,.project-remove:focus-visible,.project-pin:focus-visible,.project-add-session:focus-visible,.project-node.active .project-add-session{opacity:1}.project-sessions{padding:0 3px 5px 31px}.project-session-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 27px;min-height:38px;align-items:center;border-radius:7px}.project-session-row.active{background:var(--surface-3);box-shadow:inset 2px 0 var(--accent)}.project-session-main{display:grid;min-width:0;grid-template-columns:9px minmax(0,1fr);align-items:center;padding:5px 4px 5px 8px;border-radius:7px;background:transparent;color:var(--text-2);text-align:left;gap:5px}.project-session-main:hover{color:var(--text)}.project-session-main>span:last-child{display:flex;min-width:0;flex-direction:column;gap:1px}.project-session-main strong,.project-session-main small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-session-main .project-session-status{color:var(--warning)}.project-session-main strong{font-size:var(--font-body);font-weight:580}.project-session-main small{color:var(--muted);font-size:11px}.project-session-row .session-row-menu{position:relative;flex:0 0 auto}.project-session-row .session-row-menu-trigger{display:flex;width:24px;min-width:24px;height:24px;min-height:24px;align-items:center;justify-content:center;opacity:0}.project-session-row:hover .session-row-menu-trigger,.project-session-row:focus-within .session-row-menu-trigger,.project-session-row .session-row-menu-trigger:focus-visible,.project-session-row .session-row-menu-trigger[aria-expanded=true]{opacity:1}.session-menu{position:absolute;z-index:60;top:calc(100% + 2px);right:0;display:grid;min-width:168px;padding:4px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow)}.session-menu-item{display:grid;gap:2px;padding:6px 8px;border-radius:var(--radius-sm);color:var(--text);font-size:12px;text-align:left}.session-menu-item:hover:not(:disabled),.session-menu-item:focus-visible{background:var(--surface-2)}.session-menu-item.danger:not(:disabled){color:var(--danger)}.session-menu-item:disabled{color:var(--faint);opacity:.6}.session-menu-hint{color:var(--faint);font-size:10px}.project-loading,.project-load-error,.project-empty-session,.project-load-more{margin:3px 0;padding:6px 8px;background:transparent;color:var(--muted);font-size:11px}.project-window-more{width:calc(100% - 12px);margin:6px;justify-content:center}.work-panel{position:relative;z-index:20;display:flex;grid-area:work-panel;min-width:0;min-height:0;flex-direction:column;overflow:visible;border-left:1px solid var(--border);background:var(--surface)}.work-panel-detail{display:flex;min-width:0;min-height:0;flex:1;flex-direction:column;overflow:hidden;container-type:inline-size}.work-panel-detail[hidden],.work-panel-rail[hidden]{display:none}.work-panel-rail{display:flex;min-height:0;flex:1;align-items:center;flex-direction:column;padding:9px 2px;gap:4px}.work-panel-rail-button{position:relative;display:inline-flex;width:43px;height:43px;align-items:center;justify-content:center;border-radius:8px;background:transparent;color:var(--muted)}.work-panel-rail-button:hover,.work-panel-rail-button:focus-visible,.work-panel-rail-button[aria-current=page]{background:var(--surface-3);color:var(--text)}.work-panel-rail-button[aria-current=page]{box-shadow:inset -2px 0 var(--accent)}.work-panel-rail-divider{width:24px;height:1px;margin:2px 0 4px;background:var(--border)}.work-panel-rail-spacer{flex:1 1 auto;align-self:stretch;margin:4px 6px 2px;border-top:1px solid var(--border)}.work-panel-rail .inspector-toggle{display:inline-flex}.rail-status-dot{position:absolute;top:7px;right:7px;width:6px;height:6px;border-radius:50%;background:var(--success);box-shadow:0 0 0 2px var(--surface)}.work-panel-header{display:flex;min-height:var(--header-height);align-items:center;justify-content:space-between;padding:9px 12px 8px 16px;border-bottom:1px solid var(--border)}.work-panel-header h2{margin:1px 0 0;font-size:14px}.work-panel-header-actions{display:flex;gap:3px}.work-panel-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:7px 8px;border-bottom:1px solid var(--border);gap:3px}.work-panel-tabs button{display:flex;min-width:0;min-height:36px;align-items:center;justify-content:center;padding:0 5px;border-radius:7px;background:transparent;color:var(--muted);font-size:11px;gap:4px}.work-panel-tabs button:hover,.work-panel-tabs button[aria-selected=true]{background:var(--surface-3);color:var(--text)}.work-panel-tabs button[aria-selected=true]{box-shadow:inset 0 -2px var(--accent)}.work-panel-content,.work-panel-pane,.agent-panel{display:flex;min-width:0;min-height:0;flex:1;flex-direction:column;overflow:hidden}.agent-panel .inspector-body{flex:1}.work-panel-pane[hidden]{display:none}.panel-resize-handle{position:absolute;z-index:30;width:12px;cursor:col-resize;touch-action:none}.panel-resize-handle-left{inset:0 -6px 0 auto}.panel-resize-handle-right{inset:0 auto 0 -6px}.panel-resize-handle span{position:absolute;inset-block:0;left:5px;width:2px;background:transparent;transition:background .12s ease}.panel-resize-handle:hover span,.panel-resize-handle:active span,.panel-resize-handle:focus-visible span,html[data-panel-resizing] .panel-resize-handle span{background:var(--accent)}html[data-panel-resizing],html[data-panel-resizing] *{cursor:col-resize!important;user-select:none!important}html[data-panel-resizing] .workbench-shell{transition:none}.resource-toolbar{display:flex;align-items:center;padding:8px;border-bottom:1px solid var(--border);gap:4px}.resource-toolbar .resource-search{margin:0;flex:1}.work-resource-panel,.terminal-panel{min-width:0;min-height:0;flex:1;overflow:hidden}.files-panel,.git-panel,.review-panel,.terminal-panel{display:flex;flex-direction:column}.terminal-panel{position:relative}.resource-split-layout{display:grid;min-width:0;min-height:0;flex:1;grid-template-columns:minmax(0,1fr) 12px clamp(160px,var(--resource-navigator-width, 300px),min(420px,48%));grid-template-rows:minmax(0,1fr);grid-template-areas:"content splitter navigator"}.resource-split-content{grid-area:content;display:flex;min-width:0;min-height:0;flex-direction:column;overflow:auto;scrollbar-width:thin}.resource-split-content>pre,.resource-split-content>.diff-viewer{flex:1 1 auto;min-height:0}.resource-split-navigator{grid-area:navigator;min-width:0;min-height:0;overflow:auto;border-left:1px solid var(--border);background:color-mix(in srgb,var(--surface-2) 55%,transparent);scrollbar-width:thin}.resource-split-handle.panel-resize-handle{grid-area:splitter;position:relative;inset:auto;width:auto;z-index:2}.file-node-list{margin:0;padding:5px 0;list-style:none}.file-node-list .file-node{display:flex;width:100%;min-width:0;min-height:32px;align-items:center;padding-right:8px;border-radius:4px;background:transparent;color:var(--text-2);font-size:var(--font-body);text-align:left;gap:6px}.file-node-list .file-node span{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.file-node-list .file-node:hover,.file-node-list .file-node.selected{background:var(--surface-3);color:var(--text)}.file-node-list .file-node.selected{box-shadow:inset 2px 0 var(--accent)}.file-node-list .file-node.blocked{color:var(--muted)}.file-node-list .file-node small{color:var(--warning);font-size:11px}.file-node-list .file-node .file-git-status{max-width:44%;overflow:hidden;color:var(--accent-2);text-overflow:ellipsis;white-space:nowrap}.file-preview>header,.diff-viewer>header{display:flex;min-height:39px;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border);gap:8px}.file-preview>header strong,.diff-viewer>header strong{overflow:hidden;font-size:var(--font-body);text-overflow:ellipsis;white-space:nowrap}.file-preview>header span,.diff-viewer>header span{color:var(--muted);font-size:11px;white-space:nowrap}.diff-viewer>header strong{flex:1;min-width:0}.diff-viewer>header .diff-source{color:var(--text-2);font-variant-numeric:tabular-nums}.diff-toolbar{display:flex;flex-wrap:wrap;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);gap:4px}.diff-mode-group{display:inline-flex;padding:1px;border:1px solid var(--border);border-radius:999px;gap:2px}.diff-mode-group>button{min-height:20px;padding:0 8px;border:0;border-radius:999px;background:transparent}.diff-mode-group>button[aria-pressed=true]{background:var(--surface-3);color:var(--text)}.diff-anchor-count{margin-left:auto;color:var(--muted);font-size:10px;font-variant-numeric:tabular-nums}.diff-find{display:flex;align-items:center;padding:6px 10px;border-bottom:1px solid var(--border);gap:8px}.diff-find input{flex:1;min-height:26px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text);font-size:var(--font-meta)}.diff-find span{color:var(--muted);font-size:10px;white-space:nowrap}.diff-stat-add{color:var(--success)!important}.diff-stat-del{color:var(--danger)!important}.diff-stale{color:var(--warning)!important}.diff-meta-list{margin:6px 0 0;padding-left:16px;color:var(--muted);font-size:var(--font-meta)}.diff-body{overflow:auto;flex:1;font:var(--font-meta) / 1.65 "SFMono-Regular",Menlo,monospace;outline:none}.diff-body:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}.diff-body.diff-wrap .diff-code{white-space:pre-wrap;word-break:break-word}.diff-hunk-header{display:flex;position:sticky;z-index:1;top:0;align-items:center;padding:2px 6px;border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--surface-3);gap:6px}.diff-hunk-header code{overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.diff-fold{width:16px;border:0;background:transparent;color:var(--muted);cursor:pointer}.diff-line-select{flex:none;margin:0 2px 0 4px}.git-reveal-row{display:flex;justify-content:flex-end;padding:2px 10px;border-bottom:1px solid var(--border)}.git-line-actions{display:flex;align-items:center;padding:4px 10px;border-bottom:1px solid var(--border);gap:8px}.git-line-actions>span{color:var(--text-2);font-size:10px}.diff-toggle-on{color:var(--text);text-decoration:underline}.diff-hunk-action{margin-left:auto;flex:none;color:var(--text-2);font-size:10px}.diff-hunk-action:hover{color:var(--text)}.diff-incomplete{margin-left:auto;color:var(--warning);font-size:10px;font-style:normal;white-space:nowrap}.diff-folded-row{width:100%;padding:3px 10px;border:0;border-bottom:1px dashed var(--border);background:transparent;color:var(--muted);font-size:10px;text-align:left;cursor:pointer}.diff-folded-row:hover{background:var(--surface-3)}.diff-line{display:flex;align-items:baseline;padding-right:8px}.diff-line.diff-line-addition{background:color-mix(in srgb,var(--success) 12%,transparent)}.diff-line.diff-line-deletion{background:color-mix(in srgb,var(--danger) 12%,transparent)}.diff-line.diff-line-meta{color:var(--muted)}.diff-line.diff-line-anchor{box-shadow:inset 2px 0 0 var(--accent)}.diff-gutter{width:46px;flex:none;padding-right:6px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right;user-select:none}.diff-marker{width:12px;flex:none;color:var(--muted);user-select:none}.diff-code{flex:1;padding-left:4px;white-space:pre}.diff-body-side-by-side .diff-sbs-row{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid color-mix(in srgb,var(--border) 45%,transparent)}.diff-sbs-side{display:flex;overflow:hidden;min-width:0;align-items:baseline;border-right:1px solid color-mix(in srgb,var(--border) 45%,transparent)}.diff-sbs-side:last-child{border-right:0}.diff-sbs-side.diff-line-addition{background:color-mix(in srgb,var(--success) 12%,transparent)}.diff-sbs-side.diff-line-deletion{background:color-mix(in srgb,var(--danger) 12%,transparent)}.diff-sbs-side .diff-code{overflow-x:auto}.diff-footer{display:flex;flex-wrap:wrap;align-items:center;padding:8px 10px;border-top:1px solid var(--border);gap:8px}.diff-footer-hint{margin-left:auto;color:var(--muted);font-size:10px}.diff-lines{margin:0;padding:12px;overflow:auto;background:color-mix(in srgb,var(--bg) 68%,var(--surface));color:var(--text-2);font:var(--font-code) / 1.55 "SFMono-Regular",Consolas,monospace;tab-size:2;white-space:pre}.resource-hint,.resource-notice{margin:0;padding:7px 10px;border-bottom:1px solid var(--border);color:var(--muted);font-size:11px}.resource-notice{background:color-mix(in srgb,var(--info) 9%,transparent);color:var(--text-2)}.file-preview-actions{display:flex;min-height:38px;align-items:center;padding:5px 9px;border-bottom:1px solid var(--border);gap:5px}.file-preview-actions .primary-button{min-width:78px}.file-preview-actions label{display:contents}.file-preview-actions input{width:68px;min-height:28px;padding:4px 7px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);font-size:11px}.file-preview .file-code-view{min-height:0;padding:9px 14px;white-space:pre}.file-editor{min-height:320px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#070910;color:var(--text-2);font:var(--font-code) / 1.55 "SFMono-Regular",Consolas,monospace;resize:vertical;tab-size:4;white-space:pre}:root[data-theme=light] .file-editor{background:#f5f6f9}.file-editor:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:1px}.file-conflict{color:var(--danger)}.resource-empty{display:flex;min-height:220px;align-items:center;justify-content:center;flex-direction:column;padding:28px;color:var(--muted);text-align:center;gap:8px}.resource-empty.compact{min-height:110px}.resource-empty strong{color:var(--text);font-size:12px}.resource-empty p{max-width:340px;margin:0;font-size:11px;line-height:1.6}.resource-loading,.resource-error,.terminal-error{margin:0;padding:10px 12px;color:var(--muted);font-size:11px}.resource-error,.terminal-error{color:var(--danger)}.git-summary,.review-summary{display:flex;min-height:50px;align-items:center;justify-content:space-between;padding:7px 10px;border-bottom:1px solid var(--border)}.git-summary>div,.review-summary>div,.review-summary>div>div{display:flex;min-width:0;align-items:center;gap:7px}.git-summary>span,.review-summary span{color:var(--muted);font-size:11px}.git-changes,.review-files{padding:7px}.git-group h3,.git-history h3,.git-group>button,.review-files>button{display:flex;width:100%;min-width:0;min-height:32px;align-items:center;padding:0 6px;border-radius:var(--radius-xs);background:transparent;color:var(--text-2);font-size:var(--font-body);text-align:left;gap:6px}.git-group h3,.git-history h3{color:var(--muted);font-size:11px;letter-spacing:.02em}.git-views{display:flex;align-items:center;padding:0 8px;border-bottom:1px solid var(--border);gap:4px}.git-views>button{display:inline-flex;min-height:30px;align-items:center;padding:0 8px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:var(--font-meta);gap:5px}.git-views>button:hover{color:var(--text)}.git-views>button.selected{border-bottom-color:var(--accent);color:var(--text)}.git-view-count{color:var(--muted);font-variant-numeric:tabular-nums}.git-refreshing{margin-left:auto;color:var(--muted);font-size:10px}.git-filter{display:grid;padding:8px;border-bottom:1px solid var(--border);gap:6px}.git-filter input{width:100%;min-height:28px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text);font-size:var(--font-meta)}.git-filter-groups{display:flex;flex-wrap:wrap;gap:4px}.git-filter-groups button{min-height:22px;padding:0 7px;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--muted);font-size:10px}.git-filter-groups button[aria-pressed=true]{border-color:var(--accent);background:var(--surface-3);color:var(--text)}.git-filter-summary{margin:0;color:var(--muted);font-size:10px}.git-history-nav-note{margin:8px;color:var(--muted);font-size:10px}.git-history-search{display:grid;padding:8px;border-bottom:1px solid var(--border);gap:6px}.git-history-search input{width:100%;min-height:26px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text);font-size:var(--font-meta)}.git-history-dates{display:grid;grid-template-columns:1fr 1fr;gap:6px}.git-history-search-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-history-search-actions>span{color:var(--muted);font-size:10px}.git-history-list{overflow-y:auto;margin:0;padding:0;list-style:none}.git-history-list>li>button{display:flex;width:100%;min-height:26px;align-items:baseline;padding:2px 8px;border:0;background:transparent;color:var(--text-2);font-size:var(--font-meta);text-align:left;gap:6px}.git-history-list>li>button:hover,.git-history-list>li>button.selected{background:var(--surface-3);color:var(--text)}.git-history-list code{flex:none;color:var(--muted);font-size:10px}.git-history-list span{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-history-list time{flex:none;color:var(--muted);font-size:10px}.git-merge-badge,.git-root-badge{padding:0 6px;border-radius:999px;background:var(--surface-3);color:var(--muted);font-size:10px}.git-merge-badge-inline{flex:none;color:var(--warning);font-size:10px;font-style:normal}.git-ref-badge{overflow:hidden;flex:none;max-width:90px;color:var(--accent);font-size:10px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.git-commit-detail{padding:8px 10px;border-bottom:1px solid var(--border)}.git-commit-detail>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-commit-detail>header code{color:var(--muted)}.git-commit-subject{margin:6px 0 0;color:var(--text);font-weight:600;overflow-wrap:anywhere}.git-commit-message{overflow-x:auto;margin:4px 0 0;padding:6px 8px;border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text-2);font-size:var(--font-meta);font-family:inherit;white-space:pre-wrap}.git-commit-meta,.git-commit-base,.git-commit-stats-line{margin:4px 0 0;color:var(--muted);font-size:10px;overflow-wrap:anywhere}.git-parent-picker{display:flex;flex-wrap:wrap;margin-top:6px;gap:4px}.git-parent-picker>button{padding:0 8px;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--muted);font-size:10px}.git-parent-picker>button.selected{border-color:var(--accent);color:var(--text)}.git-commit-file-list{margin:6px 0 0;padding:0;list-style:none}.git-commit-file-list>li{display:flex;align-items:center;gap:2px}.git-commit-file-list>li>button:first-child{display:flex;overflow:hidden;min-width:0;flex:1;align-items:center;padding:2px 6px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-2);font-size:var(--font-meta);text-align:left;gap:6px}.git-commit-file-list>li>button:first-child:hover,.git-commit-file-list>li>button:first-child.selected{background:var(--surface-3);color:var(--text)}.git-commit-file-list>li>button:first-child>span:last-of-type{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-commit-file-stats{flex:none;color:var(--muted);font-variant-numeric:tabular-nums}.git-sensitive-badge{flex:none;color:var(--warning);font-size:10px;font-style:normal}.git-graph{padding:8px 10px;border-bottom:1px solid var(--border)}.git-graph>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-graph-body{overflow-x:auto;max-height:300px;margin-top:4px}.git-graph-body>button{display:flex;width:100%;min-width:0;align-items:baseline;padding:0 4px;border:0;background:transparent;color:var(--text-2);font-size:var(--font-meta);font-family:var(--font-mono, monospace);text-align:left;gap:6px}.git-graph-body>button:hover:not(:disabled),.git-graph-body>button.selected{background:var(--surface-3)}.git-graph-body>button>code{flex:none;white-space:pre}.git-graph-body>button>span{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.diff-word-del{background:color-mix(in srgb,var(--danger, #e24b4a) 22%,transparent);color:inherit;font-style:normal}.diff-word-add{background:color-mix(in srgb,var(--success, #639922) 26%,transparent);color:inherit;font-style:normal}.git-conflict{padding:10px;border-bottom:1px solid var(--border)}.git-conflict-header{display:flex;align-items:center;gap:6px}.git-conflict-grid{display:grid;margin-top:8px;gap:8px}.git-conflict-version{border:1px solid var(--border);border-radius:var(--radius-xs)}.git-conflict-version>header{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-bottom:1px solid var(--border);color:var(--text-2);font-size:10px}.git-conflict-version>header code{color:var(--muted)}.git-conflict-absent{color:var(--warning);font-style:normal}.git-conflict-note{margin:0;padding:6px 8px;color:var(--muted);font-size:10px}.git-conflict-content{overflow:auto;max-height:220px;margin:0;padding:6px 8px;color:var(--text-2);font-size:var(--font-meta);font-family:var(--font-mono, monospace);white-space:pre}.git-blob{padding:8px 10px;border-bottom:1px solid var(--border)}.git-blob>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-blob-image{max-width:100%;max-height:320px;margin-top:4px;border:1px solid var(--border);border-radius:var(--radius-xs)}.git-blob-content{overflow:auto;max-height:260px;margin:4px 0 0;padding:6px 8px;border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text-2);font-size:var(--font-meta);font-family:var(--font-mono, monospace);white-space:pre}.git-blame{padding:8px 10px;border-bottom:1px solid var(--border)}.git-blame>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-blame-table{overflow-y:auto;max-height:260px;margin-top:4px}.git-blame-row{display:flex;align-items:baseline;padding:1px 4px;color:var(--text-2);font-size:10px;gap:6px}.git-blame-row>code{flex:none;color:var(--muted)}.git-blame-author{flex:none;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-blame-summary{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-file-history{padding:8px 10px;border-bottom:1px solid var(--border)}.git-file-history>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.git-file-history-note{margin:4px 0 0;color:var(--muted);font-size:10px}.git-file-history ul{margin:4px 0 0;padding:0;list-style:none}.git-file-history li>button{display:flex;width:100%;align-items:baseline;padding:2px 6px;border:0;background:transparent;color:var(--text-2);font-size:var(--font-meta);text-align:left;gap:6px}.git-file-history li>button:hover{background:var(--surface-3)}.git-file-history li span{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-file-history li time{color:var(--muted);font-size:10px}.git-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.git-bulk>span{color:var(--text-2);font-size:10px}.git-row{display:flex;align-items:center;gap:2px}.git-row>input[type=checkbox]{flex:none;margin:0 2px 0 4px}.git-row>button{display:flex;overflow:hidden;min-width:0;min-height:30px;flex:1;align-items:center;padding:0 6px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-2);text-align:left;gap:6px}.git-row>button:hover,.git-row>button.selected,.git-row.selected>button{background:var(--surface-3);color:var(--text)}.git-row>button>span:last-child{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-group-action{margin-left:auto;font-size:10px}.git-conflict-hint{color:var(--warning);font-size:10px;white-space:nowrap}.git-panel[data-width=compact]{--resource-navigator-width: 240px}.git-back-to-list{display:block;width:100%;min-height:32px;padding:0 10px;border:0;border-bottom:1px solid var(--border);background:transparent;color:var(--text-2);font-size:var(--font-meta);text-align:left}.git-back-to-list:hover{background:var(--surface-3);color:var(--text)}.git-panel[data-width=narrow][data-narrow-view=detail] .resource-navigator,.git-panel[data-width=narrow][data-narrow-view=list] .resource-content{display:none}.git-panel[data-width=wide] .diff-body{overflow-x:auto}.git-compare-form{display:grid;padding:8px 10px;border-bottom:1px solid var(--border);gap:6px}.git-compare-form label{display:grid;gap:3px}.git-compare-form label>span{color:var(--muted);font-size:10px}.git-compare-form select{min-height:26px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text);font-size:var(--font-meta)}.git-compare-hint{margin:4px 10px 0;color:var(--muted);font-size:10px}.git-compare-range{margin:6px 10px 0;color:var(--muted);font-size:10px;overflow-wrap:anywhere}.git-compare-files{margin:6px 0 0;padding:0;list-style:none}.git-compare-files li>button{display:flex;width:100%;min-width:0;align-items:center;padding:2px 8px;border:0;background:transparent;color:var(--text-2);font-size:var(--font-meta);text-align:left;gap:6px}.git-compare-files li>button:hover,.git-compare-files li>button.selected{background:var(--surface-3);color:var(--text)}.git-compare-files li>button>span:last-of-type{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-commit{border-top:1px solid var(--border)}.git-commit-toggle{display:flex;width:100%;min-height:34px;align-items:center;padding:0 10px;border:0;background:transparent;color:var(--text-2);font-size:var(--font-meta);text-align:left;gap:6px}.git-commit-toggle:hover{background:var(--surface-3)}.git-commit-stats{margin-left:auto;font-style:normal;font-variant-numeric:tabular-nums}.git-commit-body{display:grid;padding:8px 10px 12px;gap:8px}.git-commit-meta{margin:0;color:var(--muted);font-size:10px;overflow-wrap:anywhere}.git-commit-files{overflow-y:auto;max-height:140px;margin:0;padding:0;list-style:none;border:1px solid var(--border);border-radius:var(--radius-xs)}.git-commit-files li{display:flex;align-items:center;padding:2px 6px;color:var(--text-2);font-size:var(--font-meta);gap:6px}.git-commit-files code{flex:none;color:var(--muted)}.git-commit-more{color:var(--muted)}.git-commit-body label{display:grid;gap:4px}.git-commit-body label>span{color:var(--muted);font-size:10px}.git-commit-body input,.git-commit-body textarea{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text);font-size:var(--font-meta);font-family:inherit;resize:vertical}.git-commit-actions{display:flex;align-items:center;gap:8px}.git-commit-blocked{color:var(--muted);font-size:10px}.git-commit-note{margin:0;color:var(--muted);font-size:10px}.git-group h3 span{color:var(--muted);font-weight:400}.git-group h3 .git-group-loaded{color:var(--muted);font-size:10px;font-weight:400;opacity:.7}.git-group>button:hover,.git-group>button.selected,.review-files>button:hover,.review-files>button.selected{background:var(--surface-3);color:var(--text)}.git-group>button>span:last-child,.review-files>button>span{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}.git-status-code{width:17px;color:var(--warning);font:700 var(--font-meta) "SFMono-Regular",monospace}.git-status-code.staged{color:var(--success)}.git-status-code.conflict{color:var(--danger)}.git-history article,.git-history article code,.git-history article strong,.git-history article span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.git-history article code{grid-row:1 / 3;color:var(--accent-2);font-size:11px}.git-history article strong{font-size:11px}.git-history article span,.diff-viewer{display:flex;min-width:0;min-height:100%;flex-direction:column}.diff-hunk-nav{display:flex;overflow-x:auto;padding:5px;border-bottom:1px solid var(--border);gap:3px}.diff-hunk-nav button{max-width:210px;padding:5px 7px;overflow:hidden;border-radius:5px;background:transparent;color:var(--muted);font:var(--font-meta) "SFMono-Regular",monospace;text-overflow:ellipsis;white-space:nowrap}.diff-hunk-nav button[aria-selected=true]{background:var(--surface-3);color:var(--text)}.diff-lines{min-height:0;flex:1}.diff-lines span{display:inline}.diff-lines .addition{background:#3eb17b26;color:color-mix(in srgb,var(--success) 85%,var(--text))}.diff-lines .deletion{background:#df496524;color:color-mix(in srgb,var(--danger) 85%,var(--text))}.diff-viewer footer{display:flex;justify-content:space-between;padding:7px;border-top:1px solid var(--border);gap:6px}.review-score{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-soft);color:var(--accent)}.review-score.clean{background:#5ee1a21f;color:var(--success)}.review-summary>div>div{align-items:flex-start;flex-direction:column;gap:2px}.review-summary strong{font-size:11px}.terminal-tabs{display:flex;min-height:46px;align-items:center;padding:4px 6px;border-bottom:1px solid var(--border);gap:3px;overflow:hidden}.terminal-tab-list{display:flex;min-width:0;flex:1;align-items:center;overflow-x:auto;gap:3px}.terminal-tab-list>div{display:flex;min-width:0;align-items:center;border-radius:6px;background:var(--surface-2)}.terminal-tab-list>div.active{background:var(--surface-3);box-shadow:inset 0 -2px var(--accent)}.terminal-tabs button{display:inline-flex;min-height:37px;align-items:center;padding:0 7px;background:transparent;color:var(--muted);font-size:11px;gap:5px}.terminal-tab-list>div>button[role=tab]{min-width:0;max-width:168px}.terminal-tab-copy{display:flex;min-width:0;flex-direction:column;align-items:flex-start;line-height:1.2}.terminal-tab-copy>span,.terminal-tab-copy small{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.terminal-tab-copy small{color:var(--muted);font-size:11px}.terminal-tab-list>div>button:last-child{width:25px;padding:0;justify-content:center}.terminal-new{flex:none}.terminal-status{display:flex;min-height:34px;align-items:center;justify-content:space-between;padding:4px 9px;border-bottom:1px solid var(--border);color:var(--muted);font-size:11px;gap:8px}.terminal-context,.terminal-toolbar,.terminal-connection-status,.terminal-context-item,.terminal-font-control{display:flex;min-width:0;align-items:center}.terminal-context,.terminal-toolbar{gap:6px}.terminal-context{overflow-x:auto;white-space:nowrap}.terminal-connection-status{flex:none}.terminal-context-item{flex:none;gap:3px}.terminal-context-item:before{margin-right:2px;color:var(--muted);content:"·"}.terminal-context code{color:var(--text-2);font-size:11px}.terminal-toolbar{flex:none}.terminal-status .text-button{flex:none;min-height:24px;padding:2px 5px;font-size:11px}.terminal-font-control{min-height:24px;gap:4px}.terminal-font-control select{min-height:24px;padding:1px 20px 1px 5px;border:1px solid var(--border);border-radius:5px;background:var(--surface-2);color:var(--text-2);font-size:11px}.terminal-notice{margin:0;padding:6px 9px;border-bottom:1px solid var(--border);color:var(--text-2);font-size:11px}.terminal-host{min-width:0;min-height:0;flex:1;padding:6px;overflow:hidden;background:var(--terminal-background)}.terminal-host .xterm{height:100%}.terminal-paste-backdrop{position:absolute;z-index:50;inset:0;display:grid;place-items:center;padding:18px;background:var(--overlay)}.terminal-paste-dialog{width:min(380px,100%);padding:18px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow)}.terminal-paste-dialog h3{margin:5px 0 8px;font-size:15px}.terminal-paste-dialog p{margin:0 0 16px;color:var(--text-2);font-size:12px;line-height:1.55}.terminal-risk-dialog{width:min(440px,100%)}.terminal-risk-copy p{margin-bottom:7px}.terminal-risk-check{display:flex;align-items:flex-start;margin:15px 0;color:var(--text);font-size:12px;gap:8px}.terminal-risk-check input{flex:none;margin-top:2px}.danger-button{min-height:34px;padding:0 13px;border-radius:7px;background:var(--danger);color:#fff;font-weight:650}@container (max-width: 360px){.work-panel-tabs button span{display:none}.terminal-status{align-items:stretch;flex-direction:column}.terminal-context,.terminal-toolbar{width:100%;overflow-x:auto}.terminal-toolbar{justify-content:flex-start}.terminal-tab-list>div>button[role=tab]{max-width:140px}}.drawer-scrim{display:none}.workbench-shell.work-panel-transient-overlay .work-panel{position:fixed;z-index:100;inset:0 0 0 auto;width:min(var(--work-panel-preferred-width),calc(100vw - 44px));box-shadow:var(--shadow);visibility:visible;transform:translate(0)}.workbench-shell.work-panel-transient-overlay .inspector-toggle{display:inline-flex}.workbench-shell.work-panel-transient-overlay .drawer-scrim{position:fixed;z-index:95;inset:0;display:block;width:100%;height:100%;min-height:0;background:var(--overlay)}@media(max-width:1180px){.workbench-shell{--work-panel-column-width: 0px;--inspector-column-width: 0px;grid-template-areas:"project conversation";grid-template-columns:var(--rail-column-width) minmax(0,1fr)}.work-panel{position:fixed;z-index:100;inset:0 0 0 auto;width:min(var(--work-panel-preferred-width),calc(100vw - 44px));box-shadow:var(--shadow);visibility:hidden;transform:translate(105%);transition:transform .18s ease,visibility 0s linear .18s}.work-panel.drawer-open{visibility:visible;transform:translate(0);transition-delay:0s}.workbench-shell.project-navigation-drawer .workspace-rail{position:fixed;z-index:100;inset:0 auto 0 0;width:min(var(--project-navigation-preferred-width),calc(100vw - 42px));box-shadow:var(--shadow);visibility:hidden;transform:translate(-105%);transition:transform .18s ease,visibility 0s linear .18s}.workbench-shell.project-navigation-drawer .workspace-rail.drawer-open{visibility:visible;transform:translate(0);transition-delay:0s}.workbench-shell.project-navigation-drawer .workspace-rail .drawer-close,.workbench-shell.project-navigation-drawer .mobile-nav-toggle,.inspector-toggle{display:inline-flex}.drawer-scrim{position:fixed;z-index:95;inset:0;display:block;width:100%;height:100%;min-height:0;background:var(--overlay)}.workbench-notice-stack{right:16px}}@media(max-width:760px){:root{--header-height: 60px}.workbench-shell{display:grid;grid-template-areas:"conversation";grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.workspace-rail{position:fixed;z-index:100;inset:0 auto 0 0;width:min(var(--project-navigation-preferred-width),calc(100vw - 42px));box-shadow:var(--shadow);visibility:hidden;transform:translate(-105%);transition:transform .18s ease,visibility 0s linear .18s}.workspace-rail.drawer-open{visibility:visible;transform:translate(0);transition-delay:0s}.workspace-rail .drawer-close,.mobile-nav-toggle{display:inline-flex}.conversation-column{height:100dvh}.conversation-header{padding:7px 10px}.conversation-identity h1{font-size:13px}.header-actions .status-chip:nth-child(2){display:none}.transcript-content{width:calc(100% - 20px);padding-top:18px}.role-user{width:94%}.input-dock{width:calc(100% - 16px);padding-bottom:max(8px,env(safe-area-inset-bottom))}.composer-hint{display:none}.mode-selector button{padding-inline:6px}.mode-selector button .mode-dot{display:none}.composer-actions{margin-left:auto}.composer-control-toolbar{display:grid;grid-template-columns:minmax(0,1fr);gap:4px}.composer-control-row,.composer-control-actions{width:100%;flex-wrap:wrap}.composer-control-actions{justify-content:flex-end}.model-control-cluster{flex:1}.configuration-banner{margin:8px 9px 0}.configuration-banner .secondary-button{display:none}.approval-actions{display:grid;grid-template-columns:repeat(2,1fr)}.approval-actions button{width:100%}.jump-latest{right:12px;bottom:138px}.workbench-notice-stack{right:8px;top:calc(var(--header-height) + 8px);width:calc(100vw - 16px)}.reasoning-hint{display:none}.settings-modal{width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:none}.settings-header{padding-top:max(16px,env(safe-area-inset-top));padding-right:max(18px,env(safe-area-inset-right));padding-left:max(18px,env(safe-area-inset-left))}.settings-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.settings-navigation{overflow-x:auto;padding:7px 8px;border-right:0;border-bottom:1px solid var(--border);flex-direction:row;scrollbar-width:thin;padding-right:max(8px,env(safe-area-inset-right));padding-left:max(8px,env(safe-area-inset-left))}.settings-navigation button{width:auto;min-width:max-content;min-height:40px}.settings-navigation button.active{box-shadow:inset 0 -2px var(--accent)}.settings-content{padding:15px 14px 20px;padding-right:max(14px,env(safe-area-inset-right));padding-left:max(14px,env(safe-area-inset-left))}}@media(max-width:390px){.context-tray{max-height:none;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap}.context-chip{max-width:280px;flex:0 0 auto}.composer-control-actions .model-control-cluster{width:100%;flex:1 0 100%}.model-control-cluster .composer-control-trigger{min-width:32px}}@media(max-width:480px){.header-actions .status-chip{display:none}.conversation-header .icon-button{width:32px;height:32px;min-height:32px}.message-body{padding:12px}.tool-meta-grid{grid-template-columns:1fr}.composer textarea{min-height:64px}.composer-toolbar{align-items:flex-end}.composer-control-trigger{max-width:138px;padding-inline:7px}.composer-control-trigger>span{overflow:hidden;text-overflow:ellipsis}.model-control-cluster{min-width:0}.model-control-cluster .control-menu:first-child{min-width:0;flex:1}.model-control-cluster .control-menu:first-child .composer-control-trigger{width:100%}.composer-send-icon{width:36px;min-width:36px;padding:0}.plan-review-actions{display:grid;grid-template-columns:minmax(0,1fr)}.plan-review-actions button{width:100%}.queue-row{align-items:flex-start;padding-block:6px;flex-wrap:wrap}.queue-row p,.queue-row textarea{width:calc(100% - 30px);flex:none}.queue-row-actions{width:100%;justify-content:flex-end}.mode-selector{display:grid;grid-template-columns:repeat(3,1fr)}.mode-selector button{padding-inline:5px}.send-button{min-width:48px;padding-inline:10px}.send-button span{display:none}.workbench-notice{grid-template-columns:auto minmax(0,1fr) auto}.workbench-notice .secondary-button{grid-column:2;justify-self:start}.field-row{align-items:stretch;flex-direction:column;gap:6px}.field-row select{width:100%;min-width:0}.path-input-row{align-items:stretch;flex-direction:column}.settings-field-card{grid-template-columns:minmax(0,1fr);gap:12px}.settings-conflict-values .settings-conflict-value-heading{display:none}.settings-conflict-values>div{grid-template-columns:minmax(0,1fr);gap:3px}.settings-conflict-values span:before{display:inline-block;min-width:94px;color:var(--muted);content:attr(data-label);font-size:11px}.settings-field-control{align-items:stretch}.settings-field-control .text-button{align-self:flex-end}.settings-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-readonly-list li{grid-template-columns:minmax(0,1fr) auto}.settings-readonly-list small{grid-column:1 / -1;padding-bottom:6px;text-align:left}.settings-discard-confirm{align-items:stretch;flex-direction:column}.settings-discard-confirm>div:last-child{justify-content:flex-end}.settings-footer{flex-wrap:wrap;padding-bottom:max(11px,env(safe-area-inset-bottom))}.settings-dirty-summary{width:100%}}@media(pointer:coarse),(max-width:760px){button,select,input[type=button],input[type=submit],[role=button],[role=tab],[role=treeitem]{min-height:44px}.icon-button,.terminal-tab-list>div>button:last-child{min-width:44px}}@media(prefers-reduced-motion:reduce){:root:not([data-motion]) *,:root:not([data-motion]) *:before,:root:not([data-motion]) *:after,:root[data-motion=system] *,:root[data-motion=system] *:before,:root[data-motion=system] *:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root[data-motion=reduced] *,:root[data-motion=reduced] *:before,:root[data-motion=reduced] *:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}@media(forced-colors:active){.work-panel-tabs button[aria-selected=true],.work-panel-rail-button[aria-current=page],.project-session-row.active,.file-node.selected,.git-group>button.selected,.review-files>button.selected,.inspector-shortcut[aria-current=page],.settings-navigation button.active,.settings-field-card.dirty,.settings-conflict,.settings-diagnostic,.settings-risk-confirm,.settings-inline-message,.settings-availability,.settings-busy{border:2px solid CanvasText}.settings-state-badge,.settings-field-meta span,.settings-field-meta strong{border:1px solid CanvasText}}.shortcut-help{width:min(660px,calc(100vw - 28px))}.shortcut-help-header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--border);gap:var(--space-3)}.shortcut-help-header .eyebrow{display:block;margin-bottom:2px;color:var(--muted);font-size:var(--font-meta);letter-spacing:.14em}.shortcut-help-header h2{margin:0;font-size:var(--font-title)}.shortcut-help-body{max-height:min(520px,calc(100dvh - 220px));padding:var(--space-2) var(--space-4) var(--space-4);overflow-y:auto;overscroll-behavior:contain}.shortcut-help-group+.shortcut-help-group{margin-top:var(--space-4)}.shortcut-help-group h3{margin:0 0 var(--space-2);color:var(--accent);font-size:var(--font-meta);letter-spacing:.1em}.shortcut-help-group dl{margin:0}.shortcut-row{display:flex;align-items:baseline;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--border);gap:var(--space-4)}.shortcut-row:last-child{border-bottom:0}.shortcut-row dt{flex:1 1 auto;color:var(--text-2);font-size:var(--font-body)}.shortcut-row dd{flex:0 0 auto;margin:0}.shortcut-help kbd,.shortcut-help-footer kbd{display:inline-block;min-width:22px;padding:3px 7px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:var(--radius-xs);background:var(--surface-2);color:var(--text);font-family:inherit;font-size:var(--font-meta);line-height:1.4;text-align:center;white-space:nowrap}.shortcut-help-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border);background:var(--surface-2);color:var(--muted)}.shortcut-help-footer p{margin:0;font-size:var(--font-meta)}.project-session-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.session-tag-badge{display:inline-block;padding:0 6px;border-radius:999px;color:var(--accent);background:var(--accent-soft);font-size:9px;line-height:15px}.session-tag-more{color:var(--faint);font-size:9px;line-height:15px}.archived-section{margin:4px 10px 6px;padding-top:6px;border-top:1px dashed var(--border)}.archived-section summary{cursor:pointer;padding:2px 0 6px;color:var(--muted);font-size:11px;user-select:none}.archived-section summary:hover,.archived-section summary:focus-visible{color:var(--text)}.archived-list{display:grid;gap:2px}.archived-row{display:flex;align-items:center;gap:6px;padding:3px 2px}.archived-copy{display:flex;min-width:0;flex:1;flex-direction:column}.archived-copy strong{overflow:hidden;color:var(--text-2);font-size:11px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.archived-copy small{color:var(--faint);font-size:9px}.archived-row .text-button{font-size:10px}.archived-row .archived-delete{color:var(--danger)}.session-tags-body{display:grid;gap:8px;padding:0 18px 6px}.session-tags-body .modal-description{overflow:hidden;margin:0;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.session-tags-chips{display:flex;min-height:28px;align-items:center;flex-wrap:wrap;gap:6px}.session-tags-empty{color:var(--faint);font-size:11px}.session-tag-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 5px 2px 9px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-2);color:var(--text-2);font-size:11px}.session-tag-remove{width:16px;height:16px;min-width:16px;border-radius:50%}.session-tag-remove:hover{background:var(--surface-3);color:var(--danger)}.confirm-delete-body{margin:14px 18px 6px;color:var(--text-2);font-size:12px;line-height:1.7}.confirm-delete-body strong{color:var(--text)}.work-panel-dock-body{display:flex;min-width:0;min-height:0;flex:1;flex-direction:row;overflow:hidden}.work-panel-dock-body .work-panel-detail{flex:1 1 auto;order:1}.work-panel-dock-body .work-panel-rail{flex:0 0 48px;order:2;width:48px;border-left:1px solid var(--border)}.work-panel-rail-overlay{width:100%;flex:0 0 auto;flex-direction:row;justify-content:flex-start;overflow-x:auto;padding:4px 8px;border-bottom:1px solid var(--border)}.work-panel-rail-overlay .work-panel-rail-button{width:36px;height:32px}.work-panel-rail-overlay .rail-status-dot{top:5px;right:5px}@container (max-width: 620px){.resource-split-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(180px,.42fr) minmax(0,1fr);grid-template-areas:"navigator" "content"}.resource-split-navigator{border-left:0;border-bottom:1px solid var(--border)}.resource-split-handle{display:none}}:root[data-ui-style=orion-blocksmith]{--bg: #15191b;--surface: #202629;--surface-2: #262d30;--surface-3: #31383a;--surface-raised: #292d2a;--overlay: rgb(8 10 10 / 76%);--text: #f2ecdf;--text-2: #d1c8b8;--muted: #aaa18f;--faint: #aaa18f;--border: #665f53;--border-strong: #a99a82;--accent: #7ea4ed;--accent-fill: #315fae;--accent-2: #5ab8ad;--accent-soft: rgb(126 164 237 / 15%);--success: #6fc17b;--warning: #e2b865;--danger: #e07482;--info: #7ab4df;--pixel-wood: #7b4d2f;--pixel-wood-dark: #44291a;--pixel-highlight: #d8c9ad;--pixel-shadow: #111516;--mode-build: #7ea4ed;--mode-plan: #e2b865;--mode-auto: #5ab8ad;--model-accent: #d6ad55;--context-accent: #5ab8ad;--shadow: 4px 4px 0 rgb(0 0 0 / 38%);--radius-xs: 0;--radius-sm: 2px;--radius-md: 4px;--radius-lg: 4px;--terminal-background: #15191b;--terminal-foreground: #f2ecdf;--terminal-cursor: #7ea4ed;--terminal-selection: #3b4f69;--terminal-black: #15191b;--terminal-red: #c95f6e;--terminal-green: #62ad70;--terminal-yellow: #c69b46;--terminal-blue: #6b91d2;--terminal-magenta: #ae79bf;--terminal-cyan: #4aa49b;--terminal-white: #d6cfbf;--terminal-bright-black: #7d786e;--terminal-bright-red: #e78692;--terminal-bright-green: #82ca8c;--terminal-bright-yellow: #e3bd6b;--terminal-bright-blue: #8cafea;--terminal-bright-magenta: #c99bd5;--terminal-bright-cyan: #71c6bc;--terminal-bright-white: #fff8e9}:root[data-ui-style=orion-blocksmith][data-theme=light]{color-scheme:light;--bg: #d7d0c1;--surface: #eee8dc;--surface-2: #e2dacb;--surface-3: #d3c8b5;--surface-raised: #fffaf0;--overlay: rgb(43 37 29 / 46%);--text: #24261f;--text-2: #454a40;--muted: #4f5549;--faint: #4f5549;--border: #9a907f;--border-strong: #5e584d;--accent: #315fae;--accent-fill: #315fae;--accent-2: #08766f;--accent-soft: rgb(49 95 174 / 12%);--success: #24773a;--warning: #916014;--danger: #a63245;--info: #245f8b;--pixel-highlight: #fffaf0;--pixel-shadow: #786f61;--mode-build: #315fae;--mode-plan: #916014;--mode-auto: #08766f;--model-accent: #946d12;--context-accent: #08766f;--shadow: 4px 4px 0 rgb(68 52 36 / 24%);--terminal-background: #fffaf0;--terminal-foreground: #24261f;--terminal-cursor: #315fae;--terminal-selection: #c5d4ec;--terminal-black: #24261f;--terminal-red: #a63245;--terminal-green: #24773a;--terminal-yellow: #916014;--terminal-blue: #315fae;--terminal-magenta: #70439a;--terminal-cyan: #08766f;--terminal-white: #e2dacb;--terminal-bright-black: #62685c;--terminal-bright-red: #c8495d;--terminal-bright-green: #358e4b;--terminal-bright-yellow: #b47b22;--terminal-bright-blue: #4d79c8;--terminal-bright-magenta: #8d5db1;--terminal-bright-cyan: #20958b;--terminal-bright-white: #fffaf0}@media(prefers-color-scheme:light){:root[data-ui-style=orion-blocksmith][data-theme=system]{color-scheme:light;--bg: #d7d0c1;--surface: #eee8dc;--surface-2: #e2dacb;--surface-3: #d3c8b5;--surface-raised: #fffaf0;--overlay: rgb(43 37 29 / 46%);--text: #24261f;--text-2: #454a40;--muted: #4f5549;--faint: #4f5549;--border: #9a907f;--border-strong: #5e584d;--accent: #315fae;--accent-fill: #315fae;--accent-2: #08766f;--accent-soft: rgb(49 95 174 / 12%);--success: #24773a;--warning: #916014;--danger: #a63245;--info: #245f8b;--pixel-highlight: #fffaf0;--pixel-shadow: #786f61;--mode-build: #315fae;--mode-plan: #916014;--mode-auto: #08766f;--model-accent: #946d12;--context-accent: #08766f;--shadow: 4px 4px 0 rgb(68 52 36 / 24%);--terminal-background: #fffaf0;--terminal-foreground: #24261f;--terminal-cursor: #315fae;--terminal-selection: #c5d4ec;--terminal-black: #24261f;--terminal-red: #a63245;--terminal-green: #24773a;--terminal-yellow: #916014;--terminal-blue: #315fae;--terminal-magenta: #70439a;--terminal-cyan: #08766f;--terminal-white: #e2dacb;--terminal-bright-black: #62685c;--terminal-bright-red: #c8495d;--terminal-bright-green: #358e4b;--terminal-bright-yellow: #b47b22;--terminal-bright-blue: #4d79c8;--terminal-bright-magenta: #8d5db1;--terminal-bright-cyan: #20958b;--terminal-bright-white: #fffaf0}}:root[data-ui-style=orion-blocksmith] body{background-color:var(--bg);background-image:linear-gradient(90deg,rgb(255 255 255 / 2%) 1px,transparent 1px),linear-gradient(rgb(255 255 255 / 2%) 1px,transparent 1px);background-size:8px 8px}:root[data-ui-style=orion-blocksmith] .workbench-shell{background:linear-gradient(135deg,rgb(255 255 255 / 2%) 25%,transparent 25%) 0 0 / 8px 8px,var(--bg)}:root[data-ui-style=orion-blocksmith] :focus-visible{outline-width:2px;outline-style:solid;outline-offset:2px;box-shadow:0 0 0 2px var(--pixel-shadow)}:root[data-ui-style=orion-blocksmith] .workspace-rail,:root[data-ui-style=orion-blocksmith] .conversation-column,:root[data-ui-style=orion-blocksmith] .work-panel{box-shadow:inset 0 2px #ffffff0d}:root[data-ui-style=orion-blocksmith] .brand-row,:root[data-ui-style=orion-blocksmith] .conversation-header,:root[data-ui-style=orion-blocksmith] .work-panel-header,:root[data-ui-style=orion-blocksmith] .rail-footer{background:linear-gradient(180deg,rgb(255 255 255 / 4%),transparent 55%),var(--surface);border-color:var(--border-strong)}:root[data-ui-style=orion-blocksmith] .brand-mark,:root[data-ui-style=orion-blocksmith] .boot-mark{border:2px solid var(--pixel-wood-dark);border-radius:2px;background:var(--pixel-wood);box-shadow:inset 2px 2px var(--pixel-highlight),inset -2px -2px var(--pixel-wood-dark)}:root[data-ui-style=orion-blocksmith] .workspace-icon{border-radius:2px}:root[data-ui-style=orion-blocksmith] .workspace-icon .orion-brand-mark-pixel{filter:drop-shadow(1px 1px 0 var(--pixel-shadow))}:root[data-ui-style=orion-blocksmith] .project-toolbar-brand .pixel-wordmark{filter:drop-shadow(1px 1px 0 var(--pixel-shadow))}:root[data-ui-style=orion-blocksmith] .project-row,:root[data-ui-style=orion-blocksmith] .project-session-main,:root[data-ui-style=orion-blocksmith] .composer,:root[data-ui-style=orion-blocksmith] .tool-card,:root[data-ui-style=orion-blocksmith] .edit-card,:root[data-ui-style=orion-blocksmith] .approval-card,:root[data-ui-style=orion-blocksmith] .reasoning-card,:root[data-ui-style=orion-blocksmith] .settings-field,:root[data-ui-style=orion-blocksmith] .settings-readonly-card,:root[data-ui-style=orion-blocksmith] .settings-capability-card,:root[data-ui-style=orion-blocksmith] .plan-review-card{border-radius:var(--radius-sm);border-color:var(--border);box-shadow:inset 1px 1px #ffffff0f,inset -1px -1px #0000001f}:root[data-ui-style=orion-blocksmith] .project-row.active,:root[data-ui-style=orion-blocksmith] .project-session-main[aria-current=page],:root[data-ui-style=orion-blocksmith] .work-panel-tabs [aria-selected=true]{box-shadow:inset 3px 0 var(--accent),inset 0 1px var(--pixel-highlight),inset 0 -1px var(--pixel-shadow)}:root[data-ui-style=orion-blocksmith] .composer{border:2px solid var(--pixel-wood-dark);background:var(--surface-raised);box-shadow:0 0 0 2px var(--pixel-wood),4px 4px #00000038}:root[data-ui-style=orion-blocksmith] .primary-button,:root[data-ui-style=orion-blocksmith] .send-button,:root[data-ui-style=orion-blocksmith] .composer-control-trigger,:root[data-ui-style=orion-blocksmith] .context-add-button,:root[data-ui-style=orion-blocksmith] .secondary-button,:root[data-ui-style=orion-blocksmith] .icon-button{border-radius:2px}:root[data-ui-style=orion-blocksmith] .primary-button,:root[data-ui-style=orion-blocksmith] .send-button{border:1px solid color-mix(in srgb,var(--accent-fill) 75%,black);box-shadow:inset 0 2px #ffffff2e,inset 0 -2px #0003}:root[data-ui-style=orion-blocksmith] .eyebrow,:root[data-ui-style=orion-blocksmith] .micro-label,:root[data-ui-style=orion-blocksmith] .mode-badge,:root[data-ui-style=orion-blocksmith] .project-session-status,:root[data-ui-style=orion-blocksmith] .version{letter-spacing:.1em;text-transform:uppercase}:root[data-ui-style=orion-blocksmith] .modal,:root[data-ui-style=orion-blocksmith] .control-menu-popover,:root[data-ui-style=orion-blocksmith] .context-popover,:root[data-ui-style=orion-blocksmith] .risk-confirmation{border:2px solid var(--border-strong);border-radius:2px;box-shadow:0 0 0 2px var(--pixel-shadow),6px 6px #0000004d}:root[data-ui-style=orion-blocksmith] .terminal-host,:root[data-ui-style=orion-blocksmith] pre,:root[data-ui-style=orion-blocksmith] code{text-shadow:none}@media(prefers-reduced-motion:reduce){:root[data-ui-style=orion-blocksmith] *,:root[data-ui-style=orion-blocksmith] *:before,:root[data-ui-style=orion-blocksmith] *:after{scroll-behavior:auto!important}}@media(forced-colors:active){:root[data-ui-style=orion-blocksmith] body,:root[data-ui-style=orion-blocksmith] .workbench-shell{background:Canvas}:root[data-ui-style=orion-blocksmith] .brand-mark,:root[data-ui-style=orion-blocksmith] .boot-mark,:root[data-ui-style=orion-blocksmith] .composer,:root[data-ui-style=orion-blocksmith] .modal{border-color:CanvasText;box-shadow:none}}