orbital-command 1.0.1 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +1 -1
  2. package/bin/commands/launch.js +0 -1
  3. package/bin/lib/helpers.js +1 -31
  4. package/bin/orbital.js +34 -32
  5. package/dist/assets/Landing-B6q9U0Vd.js +11 -0
  6. package/dist/assets/{PrimitivesConfig-DThSipFy.js → PrimitivesConfig-TlFvypvg.js} +9 -14
  7. package/dist/assets/{QualityGates-B4kxM5UU.js → QualityGates-D8uvclW4.js} +1 -1
  8. package/dist/assets/SessionTimeline-QUaJw6Aa.js +1 -0
  9. package/dist/assets/Settings-CAEnAZAk.js +12 -0
  10. package/dist/assets/{SourceControl-BMNIz7Lt.js → SourceControl-DPeSBaMV.js} +7 -12
  11. package/dist/assets/{WorkflowVisualizer-CxuSBOYu.js → WorkflowVisualizer-DHrIjx6W.js} +1 -1
  12. package/dist/assets/{arrow-down-DVPp6_qp.js → arrow-down-DnfKgF33.js} +1 -1
  13. package/dist/assets/{bot-NFaJBDn_.js → bot-DUPnHZfM.js} +1 -1
  14. package/dist/assets/{circle-x-IsFCkBZu.js → circle-x-B4nA79je.js} +1 -1
  15. package/dist/assets/{file-text-J1cebZXF.js → file-text-PnzRO4pO.js} +1 -1
  16. package/dist/assets/{globe-WzeyHsUc.js → globe-CIX_GBr0.js} +1 -1
  17. package/dist/assets/index-B-B-tTjw.css +1 -0
  18. package/dist/assets/index-DQVAzHMu.js +354 -0
  19. package/dist/assets/{key-CKR8JJSj.js → key-DpAZM-3d.js} +1 -1
  20. package/dist/assets/{minus-CHBsJyjp.js → minus-CJlpKNUB.js} +1 -1
  21. package/dist/assets/{radio-xqZaR-Uk.js → radio-DhynLcSx.js} +1 -1
  22. package/dist/assets/{rocket-D_xvvNG6.js → rocket-DnuQh3sF.js} +1 -1
  23. package/dist/assets/{shield-TdB1yv_a.js → shield-DLMQmvFQ.js} +1 -1
  24. package/dist/assets/{ui-BmsSg9jU.js → ui-QhrRH5wk.js} +6 -6
  25. package/dist/assets/{useSocketListener-0L5yiN5i.js → useSocketListener-DPrExNDV.js} +1 -1
  26. package/dist/assets/{useWorkflowEditor-CqeRWVQX.js → useWorkflowEditor-BxN7phfr.js} +2 -2
  27. package/dist/assets/{workflow-constants-Rw-GmgHZ.js → workflow-constants-ZcCN11vm.js} +1 -1
  28. package/dist/assets/{zap-C9wqYMpl.js → zap-eJ3z8HRI.js} +1 -1
  29. package/dist/index.html +3 -3
  30. package/dist/server/server/index.js +9 -10
  31. package/dist/server/server/launch.js +0 -3
  32. package/dist/server/server/routes/sync-routes.js +175 -0
  33. package/dist/server/server/services/telemetry-service.js +143 -0
  34. package/dist/server/server/wizard/detect.js +0 -79
  35. package/dist/server/server/wizard/index.js +43 -113
  36. package/dist/server/server/wizard/phases/setup-wizard.js +4 -34
  37. package/dist/server/server/wizard/types.js +3 -25
  38. package/dist/server/shared/workflow-presets.js +22 -0
  39. package/package.json +1 -1
  40. package/server/index.ts +7 -14
  41. package/server/launch.ts +0 -3
  42. package/server/routes/sync-routes.ts +205 -0
  43. package/server/wizard/detect.ts +1 -81
  44. package/server/wizard/index.ts +45 -146
  45. package/server/wizard/phases/setup-wizard.ts +7 -38
  46. package/server/wizard/types.ts +4 -45
  47. package/shared/workflow-presets.ts +28 -0
  48. package/templates/hooks/block-push.sh +16 -2
  49. package/templates/hooks/git-commit-guard.sh +3 -2
  50. package/dist/assets/Landing-CfQdHR0N.js +0 -11
  51. package/dist/assets/SessionTimeline-Bz1iZnmg.js +0 -1
  52. package/dist/assets/Settings-DLcZwbCT.js +0 -12
  53. package/dist/assets/index-BdJ57EhC.css +0 -1
  54. package/dist/assets/index-o4ScMAuR.js +0 -349
  55. package/dist/server/server/wizard/phases/confirm.js +0 -39
  56. package/dist/server/server/wizard/phases/project-setup.js +0 -90
  57. package/dist/server/server/wizard/phases/welcome.js +0 -32
  58. package/dist/server/server/wizard/phases/workflow-setup.js +0 -22
  59. package/server/wizard/phases/confirm.ts +0 -45
  60. package/server/wizard/phases/project-setup.ts +0 -106
  61. package/server/wizard/phases/welcome.ts +0 -39
  62. package/server/wizard/phases/workflow-setup.ts +0 -28
@@ -1,36 +1,31 @@
1
- import{j as e}from"./ui-BmsSg9jU.js";import{a as i}from"./vendor-Bqt8AJn2.js";import{c as D,e as G,V as Pe,s as W,j as Me,o as k,O as S,G as B,Y as z,Z as Q,_ as T,$ as J,B as f,a0 as _,q as ge,R as I,M as A,N as R,I as xe,g as je,a as w,J as He,a1 as Ee,a2 as Te,h as V,a3 as _e,a4 as $e,a5 as Ie,a6 as Ge,a7 as pe,a8 as ee,i as Oe,C as te,b as ae,X as Ue,U as Fe,T as Ne,a9 as be,F as Le,w as he}from"./index-o4ScMAuR.js";import{u as qe,f as O}from"./useSocketListener-0L5yiN5i.js";import{R as Ve,A as We,a as ze}from"./charts-LGLb8hyU.js";import{A as ye}from"./arrow-down-DVPp6_qp.js";import{G as we}from"./globe-WzeyHsUc.js";import{K as Qe}from"./key-CKR8JJSj.js";import{R as se}from"./rocket-D_xvvNG6.js";import{C as me}from"./circle-x-IsFCkBZu.js";/**
1
+ import{j as e}from"./ui-QhrRH5wk.js";import{a as i}from"./vendor-Bqt8AJn2.js";import{c as $,e as G,Y as Pe,s as W,j as He,o as k,Q as S,G as B,Z as z,_ as Q,$ as E,a0 as J,B as f,a1 as T,a2 as K,q as ge,U as I,N as A,O as R,J as xe,g as je,a as w,K as Me,a3 as Ee,a4 as Te,h as V,a5 as $e,a6 as _e,a7 as Ie,a8 as Ge,a9 as pe,aa as ee,i as Oe,C as te,b as ae,X as Ue,V as Le,T as Ne,ab as be,H as Fe,w as he}from"./index-DQVAzHMu.js";import{u as qe,f as O}from"./useSocketListener-DPrExNDV.js";import{R as Ve,A as We,a as ze}from"./charts-LGLb8hyU.js";import{A as ye}from"./arrow-down-DnfKgF33.js";import{G as we}from"./globe-CIX_GBr0.js";import{K as Qe}from"./key-DpAZM-3d.js";import{R as se}from"./rocket-DnuQh3sF.js";import{C as me}from"./circle-x-B4nA79je.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const Je=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Ke=D("activity",Je);/**
6
+ */const Je=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Ke=$("activity",Je);/**
7
7
  * @license lucide-react v0.577.0 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
- */const Xe=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],ke=D("arrow-up-down",Xe);/**
11
+ */const Xe=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],ke=$("arrow-up-down",Xe);/**
12
12
  * @license lucide-react v0.577.0 - ISC
13
13
  *
14
14
  * This source code is licensed under the ISC license.
15
15
  * See the LICENSE file in the root directory of this source tree.
16
- */const Ze=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],ve=D("arrow-up",Ze);/**
16
+ */const Ze=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],ve=$("arrow-up",Ze);/**
17
17
  * @license lucide-react v0.577.0 - ISC
18
18
  *
19
19
  * This source code is licensed under the ISC license.
20
20
  * See the LICENSE file in the root directory of this source tree.
21
- */const Ye=[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]],re=D("git-pull-request",Ye);/**
21
+ */const Ye=[["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}],["circle",{cx:"6",cy:"6",r:"3",key:"1lh9wr"}],["path",{d:"M13 6h3a2 2 0 0 1 2 2v7",key:"1yeb86"}],["line",{x1:"6",x2:"6",y1:"9",y2:"21",key:"rroup"}]],re=$("git-pull-request",Ye);/**
22
22
  * @license lucide-react v0.577.0 - ISC
23
23
  *
24
24
  * This source code is licensed under the ISC license.
25
25
  * See the LICENSE file in the root directory of this source tree.
26
- */const es=[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]],K=D("github",es);/**
26
+ */const es=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],ss=$("lock",es);/**
27
27
  * @license lucide-react v0.577.0 - ISC
28
28
  *
29
29
  * This source code is licensed under the ISC license.
30
30
  * See the LICENSE file in the root directory of this source tree.
31
- */const ss=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],ts=D("lock",ss);/**
32
- * @license lucide-react v0.577.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */const as=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],rs=D("log-out",as),L=50;function ns(s=!0){const t=G(),[a,r]=i.useState(null),[o,c]=i.useState([]),[h,n]=i.useState([]),[l,x]=i.useState([]),[u,d]=i.useState(null),[m,g]=i.useState(!0),[b,p]=i.useState([]),[v,P]=i.useState(null),[M,H]=i.useState([]),[C,y]=i.useState(!0),[$,X]=i.useState(!0),Z=i.useRef(0),E=i.useCallback(async j=>{if(s)try{const[N,F,ce,ie,oe,le,de]=await Promise.all([fetch(t("/git/overview"),{signal:j}),fetch(t(`/git/commits?limit=${L}&offset=0`),{signal:j}),fetch(t("/git/branches"),{signal:j}),fetch(t("/git/worktrees"),{signal:j}),fetch(t("/git/drift"),{signal:j}),fetch(t("/git/health"),{signal:j}),fetch(t("/git/activity?days=30"),{signal:j})]);if(N.ok&&r(await N.json()),F.ok){const Y=await F.json();c(Y),Z.current=Y.length,X(Y.length>=L)}ce.ok&&n(await ce.json()),ie.ok&&x(await ie.json()),oe.ok&&p(await oe.json()),le.ok&&P(await le.json()),de.ok&&H(await de.json())}catch(N){if(N instanceof DOMException&&N.name==="AbortError")return}finally{j!=null&&j.aborted||y(!1)}},[t,s]),U=i.useCallback(async j=>{if(s){g(!0);try{const N=await fetch(t("/github/status"),{signal:j});N.ok&&d(await N.json())}catch(N){if(N instanceof DOMException&&N.name==="AbortError")return}finally{j!=null&&j.aborted||g(!1)}}},[t,s]),ne=i.useCallback(()=>{E(),U()},[E,U]),De=i.useCallback(async()=>{try{const j=await fetch(t(`/git/commits?limit=${L}&offset=${Z.current}`));if(j.ok){const N=await j.json();c(F=>[...F,...N]),Z.current+=N.length,X(N.length>=L)}}catch{}},[t]);return i.useEffect(()=>{if(!s){y(!1),g(!1);return}const j=new AbortController;return E(j.signal),U(j.signal),()=>j.abort()},[s,E,U]),Pe(ne),i.useEffect(()=>{function j(){E()}return W.on("git:status:changed",j),()=>{W.off("git:status:changed",j)}},[E]),{overview:a,commits:o,branches:h,worktrees:l,github:u,githubChecking:m,drift:b,health:v,activity:M,loading:C,refetch:ne,loadMoreCommits:De,hasMoreCommits:$,buildUrl:t}}function cs(s){const[t,a]=i.useState([]),[r,o]=i.useState([]),[c,h]=i.useState([]),[n,l]=i.useState([]),[x,u]=i.useState(new Map),[d,m]=i.useState(!0),g=i.useCallback(async()=>{if(s)try{const[p,v,P,M,H]=await Promise.all([fetch("/api/orbital/aggregate/git/overview"),fetch("/api/orbital/aggregate/git/commits?limit=50"),fetch("/api/orbital/aggregate/github/prs"),fetch("/api/orbital/aggregate/git/health"),fetch("/api/orbital/aggregate/git/activity?days=30")]);if(p.ok&&a(await p.json()),v.ok&&o(await v.json()),P.ok&&h(await P.json()),M.ok&&l(await M.json()),H.ok){const C=await H.json(),y=new Map;for(const $ of C)y.set($.projectId,$.series);u(y)}}catch{}finally{m(!1)}},[s]),b=i.useCallback(()=>{g()},[g]);return i.useEffect(()=>{s&&(m(!0),g())},[s,g]),i.useEffect(()=>{if(!s)return;function p(){g()}return W.on("git:status:changed",p),()=>{W.off("git:status:changed",p)}},[s,g]),{projectOverviews:t,commits:r,prs:c,branchHealth:n,activitySeries:x,loading:d,refetch:b}}function is(s=!0){const t=G(),[a,r]=i.useState(null),[o,c]=i.useState([]),[h,n]=i.useState([]),l=i.useCallback(async()=>{if(!s)return;const[u,d,m]=await Promise.all([fetch(t("/pipeline/drift")),fetch(t("/deployments/frequency")),fetch(t("/deployments"))]);u.ok&&r(await u.json()),d.ok&&c(await d.json()),m.ok&&n(await m.json())},[t,s]),{loading:x}=Me(l);return qe("deploy:updated",()=>{l()},[l]),{drift:a,frequency:o,deployments:h,loading:x,refetch:l}}function Ce({data:s,color:t="210 80% 55%",height:a=28}){if(s.length===0)return null;const r=`hsl(${t})`;return e.jsx("div",{style:{width:"100%",height:a},children:e.jsx(Ve,{width:"100%",height:"100%",children:e.jsxs(We,{data:s,margin:{top:0,right:0,bottom:0,left:0},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:`sparkFill-${t.replace(/\s/g,"")}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:r,stopOpacity:.25}),e.jsx("stop",{offset:"100%",stopColor:r,stopOpacity:.02})]})}),e.jsx(ze,{type:"monotone",dataKey:"count",stroke:r,strokeWidth:1.5,fill:`url(#sparkFill-${t.replace(/\s/g,"")})`,isAnimationActive:!1})]})})})}function os({overview:s,github:t,githubChecking:a,activity:r}){var o;return e.jsx(k,{className:"mb-6",children:e.jsxs(S,{className:"flex flex-wrap items-center gap-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),e.jsx("code",{className:"font-mono text-sm",children:s.currentBranch}),s.dirty&&e.jsxs(z,{children:[e.jsx(Q,{children:e.jsx(T,{className:"h-2.5 w-2.5 fill-warning-amber text-warning-amber"})}),e.jsx(J,{children:"Uncommitted changes"})]})]}),e.jsx(f,{variant:"outline",className:"text-xs",children:s.branchingMode}),s.mainHead&&e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[e.jsx("span",{children:"HEAD"}),e.jsx("code",{className:"font-mono text-xs",children:s.mainHead.sha.slice(0,7)}),e.jsx("span",{className:"max-w-[200px] truncate",children:s.mainHead.message})]}),s.aheadBehind&&(s.aheadBehind.ahead>0||s.aheadBehind.behind>0)&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx(ke,{className:"h-3 w-3 text-muted-foreground"}),s.aheadBehind.ahead>0&&e.jsxs("span",{className:"text-bid-green",children:[s.aheadBehind.ahead,"↑"]}),s.aheadBehind.behind>0&&e.jsxs("span",{className:"text-ask-red",children:[s.aheadBehind.behind,"↓"]})]}),s.branchingMode==="worktree"&&s.worktreeCount>0&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsx(_,{className:"h-3 w-3"}),e.jsxs("span",{children:[s.worktreeCount," worktree",s.worktreeCount!==1?"s":""]})]}),s.branchingMode==="trunk"&&s.featureBranchCount>0&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsx(B,{className:"h-3 w-3"}),e.jsxs("span",{children:[s.featureBranchCount," feature branch",s.featureBranchCount!==1?"es":""]})]}),r&&r.length>0&&e.jsx("div",{className:"w-20",children:e.jsx(Ce,{data:r,height:22})}),e.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[e.jsx(K,{className:"h-3.5 w-3.5 text-muted-foreground"}),a?e.jsxs(f,{variant:"outline",className:"text-xs text-muted-foreground gap-1.5",children:[e.jsx("span",{className:"h-2 w-2 animate-spin rounded-full border border-muted-foreground border-t-transparent"}),"Checking…"]}):t!=null&&t.connected?e.jsxs(z,{children:[e.jsx(Q,{children:e.jsxs(f,{variant:"secondary",className:"text-xs gap-1",children:[e.jsx(T,{className:"h-1.5 w-1.5 fill-bid-green text-bid-green"}),((o=t.repo)==null?void 0:o.fullName)??"Connected"]})}),e.jsx(J,{children:t.authUser?`Signed in as ${t.authUser}`:"Connected to GitHub"})]}):e.jsx(f,{variant:"outline",className:"text-xs text-muted-foreground",children:"Not connected"})]})]})})}function Se({projectId:s,className:t}){const{hasMultipleProjects:a,getProjectColor:r,getProjectName:o}=ge();if(!a||!s)return null;const c=r(s),h=o(s);return e.jsxs("span",{className:`inline-flex items-center gap-1 rounded px-1.5 py-0 text-[10px] ${t??""}`,style:{borderColor:`hsl(${c} / 0.4)`,color:`hsl(${c})`,borderWidth:"1px",borderStyle:"solid"},children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full shrink-0",style:{backgroundColor:`hsl(${c})`}}),h]})}const ue=new Map,ls=6e4;function Be({commitSha:s,pr:t}){const a=G(),[r,o]=i.useState(null),[c,h]=i.useState(!1),n=i.useRef(!1),l=s??(t==null?void 0:t.branch);if(!l)return null;const x=async()=>{if(n.current||c)return;const m=ue.get(l);if(m&&Date.now()-m.ts<ls){o(m.data),n.current=!0;return}h(!0);try{const g=await fetch(a(`/github/checks/${l}`));if(g.ok){const b=await g.json();ue.set(l,{data:b,ts:Date.now()}),o(b)}}catch{}h(!1),n.current=!0};let u="text-muted-foreground/30",d="CI";if(r&&r.length>0){const m=r.some(p=>p.conclusion==="failure"),g=r.some(p=>p.status==="in_progress"||p.status==="queued"),b=r.every(p=>p.conclusion==="success"||p.conclusion==="neutral");m?(u="text-ask-red",d=`${r.filter(p=>p.conclusion==="failure").length} failing`):g?(u="text-warning-amber",d="Running"):b&&(u="text-bid-green",d="Passed")}return e.jsxs(z,{children:[e.jsx(Q,{className:"shrink-0",onMouseEnter:x,children:c?e.jsx(I,{className:"h-3 w-3 animate-spin text-muted-foreground/50"}):e.jsx(T,{className:`h-2.5 w-2.5 fill-current ${u}`})}),e.jsx(J,{side:"top",className:"max-w-xs",children:r===null?e.jsx("span",{className:"text-xs",children:"Hover to load CI status"}):r.length===0?e.jsx("span",{className:"text-xs",children:"No CI checks"}):e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium",children:d}),r.slice(0,5).map((m,g)=>e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx(T,{className:`h-1.5 w-1.5 fill-current ${m.conclusion==="success"?"text-bid-green":m.conclusion==="failure"?"text-ask-red":"text-warning-amber"}`}),e.jsx("span",{className:"truncate",children:m.name})]},g)),r.length>5&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["+",r.length-5," more"]})]})})]})}function ds({commit:s}){return e.jsxs("div",{className:"flex items-center gap-3 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light",children:[e.jsx(Be,{commitSha:s.sha}),e.jsx("code",{className:"shrink-0 font-mono text-xs text-primary",children:s.shortSha}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-sm",children:s.message}),e.jsx(Se,{projectId:s.project_id}),s.branch&&e.jsx(f,{variant:"outline",className:"shrink-0 text-xs font-normal",children:s.branch}),s.scopeId&&e.jsxs(f,{variant:"secondary",className:"shrink-0 text-xs",children:["#",s.scopeId]}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:s.author}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:O(new Date(s.date),{addSuffix:!0})})]})}function Ae({commits:s,branches:t,hasMore:a,onLoadMore:r}){const[o,c]=i.useState("all"),h=i.useMemo(()=>{const x=new Set(["main","master","dev","develop","staging","production"]);for(const u of t)!u.isRemote&&!u.name.startsWith("feat/")&&!u.name.startsWith("fix/")&&x.add(u.name);return x},[t]),n=i.useMemo(()=>o==="all"?s:o==="main"?s.filter(x=>!x.branch||h.has(x.branch)):s.filter(x=>x.branch&&!h.has(x.branch)),[s,o,h]),l=[{key:"all",label:"All"},{key:"main",label:"Main"},{key:"feature",label:"Feature"}];return e.jsxs(k,{className:"lg:col-span-2",children:[e.jsx(A,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(xe,{className:"h-4 w-4 text-primary"}),"Commits"," ",e.jsx(f,{variant:"secondary",children:n.length})]}),e.jsx("div",{className:"flex gap-1",children:l.map(x=>e.jsx("button",{onClick:()=>c(x.key),className:`rounded-md px-2.5 py-1 text-xs transition-colors ${o===x.key?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"}`,children:x.label},x.key))})]})}),e.jsx(S,{children:n.length===0?e.jsxs("div",{className:"py-8 text-center",children:[e.jsx(xe,{className:"mx-auto mb-3 h-10 w-10 text-muted-foreground/50"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No commits found."})]}):e.jsxs(e.Fragment,{children:[e.jsx(je,{className:"max-h-[600px]",children:e.jsx("div",{className:"space-y-0.5",children:n.map(x=>e.jsx(ds,{commit:x},x.sha))})}),a&&e.jsx("button",{onClick:r,className:"mt-3 w-full rounded border border-border py-2 text-xs text-muted-foreground transition-colors hover:bg-surface-light hover:text-foreground",children:"Load more commits"})]})})]})}function xs({branches:s}){const t=[...s].filter(a=>!a.isRemote).sort((a,r)=>a.isCurrent?-1:r.isCurrent?1:a.isStale!==r.isStale?a.isStale?1:-1:new Date(r.headDate).getTime()-new Date(a.headDate).getTime());return t.length===0?e.jsxs("div",{className:"py-6 text-center",children:[e.jsx(B,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground/50"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"No branches found."})]}):e.jsx("div",{className:"space-y-0.5",children:t.map(a=>e.jsxs("div",{className:w("flex items-center gap-2 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light",a.isStale&&"opacity-50"),children:[e.jsx(B,{className:w("h-3.5 w-3.5 shrink-0",a.isCurrent?"text-primary":"text-muted-foreground")}),e.jsx("span",{className:w("min-w-0 flex-1 truncate font-mono text-xs",a.isCurrent&&"text-foreground font-medium"),children:a.name}),a.scopeId&&e.jsxs(f,{variant:"secondary",className:"shrink-0 text-xs",children:["#",a.scopeId]}),a.aheadBehind&&e.jsxs("div",{className:"flex shrink-0 items-center gap-1 text-xs",children:[a.aheadBehind.ahead>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-bid-green",children:[e.jsx(ve,{className:"h-2.5 w-2.5"}),a.aheadBehind.ahead]}),a.aheadBehind.behind>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-ask-red",children:[e.jsx(ye,{className:"h-2.5 w-2.5"}),a.aheadBehind.behind]})]}),e.jsx("code",{className:"shrink-0 font-mono text-xs text-muted-foreground/60",children:a.headSha}),a.headDate&&e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:O(new Date(a.headDate),{addSuffix:!0})})]},a.name))})}function hs({worktrees:s}){return s.length===0?e.jsxs("div",{className:"py-6 text-center",children:[e.jsx(_,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground/50"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"No active worktrees."})]}):e.jsx("div",{className:"space-y-1",children:s.map(t=>e.jsxs("div",{className:"rounded border border-border/50 px-3 py-2 transition-colors hover:bg-surface-light",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(_,{className:"h-3.5 w-3.5 shrink-0 text-primary"}),e.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",children:t.branch}),t.dirty&&e.jsx(T,{className:"h-2 w-2 shrink-0 fill-warning-amber text-warning-amber"}),e.jsx("code",{className:"shrink-0 font-mono text-xs text-muted-foreground/60",children:t.head})]}),t.scopeId&&e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[e.jsxs(f,{variant:"secondary",className:"text-xs",children:["#",t.scopeId]}),t.scopeTitle&&e.jsx("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:t.scopeTitle}),t.scopeStatus&&e.jsx(f,{variant:"outline",className:w("shrink-0 text-xs capitalize"),children:t.scopeStatus})]}),t.aheadBehind&&(t.aheadBehind.ahead>0||t.aheadBehind.behind>0)&&e.jsxs("div",{className:"mt-1 flex items-center gap-2 text-xs",children:[t.aheadBehind.ahead>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-bid-green",children:[e.jsx(ve,{className:"h-2.5 w-2.5"}),t.aheadBehind.ahead," ahead"]}),t.aheadBehind.behind>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-ask-red",children:[e.jsx(ye,{className:"h-2.5 w-2.5"}),t.aheadBehind.behind," behind"]})]})]},t.path))})}function ms(s){return s===0?"text-bid-green":s<=5?"text-accent-blue":s<=20?"text-warning-amber":"text-ask-red"}function us({branches:s,worktrees:t,drift:a,branchingMode:r}){const o=r==="worktree",[c,h]=i.useState("branches");return e.jsxs(k,{children:[e.jsx(A,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),o?c==="branches"?"Branches":"Worktrees":"Branches",e.jsx(f,{variant:"secondary",children:c==="branches"?s.filter(n=>!n.isRemote).length:t.length})]}),o&&e.jsxs("div",{className:"flex gap-1",children:[e.jsxs("button",{onClick:()=>h("branches"),className:w("rounded-md px-2.5 py-1 text-xs transition-colors",c==="branches"?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"),children:[e.jsx(B,{className:"inline h-3 w-3 mr-1"}),"Branches"]}),e.jsxs("button",{onClick:()=>h("worktrees"),className:w("rounded-md px-2.5 py-1 text-xs transition-colors",c==="worktrees"?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"),children:[e.jsx(_,{className:"inline h-3 w-3 mr-1"}),"Worktrees"]})]})]})}),e.jsxs(S,{children:[e.jsx(je,{className:"max-h-[400px]",children:c==="branches"?e.jsx(xs,{branches:s}):e.jsx(hs,{worktrees:t})}),a.length>0&&e.jsxs("div",{className:"mt-4 border-t border-border pt-3",children:[e.jsx("h4",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"Branch Drift"}),e.jsx("div",{className:"space-y-1.5",children:a.map(n=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("code",{className:"font-mono text-muted-foreground",children:n.from}),e.jsx(He,{className:"h-3 w-3 text-muted-foreground/50"}),e.jsx("code",{className:"font-mono text-muted-foreground",children:n.to}),e.jsx(f,{variant:"outline",className:w("ml-auto text-xs",ms(n.count)),children:n.count===0?"in sync":`${n.count} commit${n.count!==1?"s":""}`})]},`${n.from}-${n.to}`))})]})]})]})}function fs({error:s,onConnected:t}){const a=G(),[r,o]=i.useState(!1),[c,h]=i.useState("oauth"),[n,l]=i.useState("idle"),[x,u]=i.useState(""),[d,m]=i.useState(""),g=i.useRef(),b=i.useRef(),p=s==null?void 0:s.includes("not installed"),v=i.useCallback(()=>{g.current&&(clearInterval(g.current),g.current=void 0)},[]);i.useEffect(()=>()=>{v(),clearTimeout(b.current)},[v]);const P=async()=>{l("connecting"),m("");try{const y=await(await fetch(a("/github/connect"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"oauth"})})).json();y.success?(l("polling"),g.current=setInterval(async()=>{try{(await(await fetch(a("/github/auth-status"))).json()).authenticated&&(v(),clearTimeout(b.current),l("success"),setTimeout(()=>{o(!1),t()},1e3))}catch{}},2e3),b.current=setTimeout(()=>{g.current&&(v(),l("error"),m("Authentication timed out. Please try again."))},12e4)):(l("error"),m(y.error??"Failed to start OAuth flow"))}catch{l("error"),m("Failed to connect to server")}},M=async()=>{if(x.trim()){l("connecting"),m("");try{const y=await(await fetch(a("/github/connect"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"pat",token:x.trim()})})).json();y.success?(l("success"),u(""),setTimeout(()=>{o(!1),t()},1e3)):(l("error"),m(y.error??"Authentication failed"))}catch{l("error"),m("Failed to connect to server")}}},H=C=>{o(C),C||(v(),l("idle"),m(""),u(""))};return e.jsxs(Ee,{open:r,onOpenChange:H,children:[e.jsx(Te,{asChild:!0,children:e.jsxs(V,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(K,{className:"h-4 w-4"}),"Connect GitHub"]})}),e.jsxs(_e,{className:"sm:max-w-md",children:[e.jsxs($e,{children:[e.jsxs(Ie,{className:"flex items-center gap-2",children:[e.jsx(K,{className:"h-5 w-5"}),"Connect to GitHub"]}),e.jsx(Ge,{children:p?"The GitHub CLI (gh) is required. Install it first, then authenticate.":"Authenticate with GitHub to see PRs, CI status, and repo info."})]}),p?e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{className:"rounded border border-border bg-surface-light p-3",children:[e.jsx("p",{className:"text-sm mb-2",children:"Install the GitHub CLI:"}),e.jsx("code",{className:"text-xs font-mono bg-background px-2 py-1 rounded",children:"brew install gh"}),e.jsxs("p",{className:"mt-2 text-xs text-muted-foreground",children:["Or visit"," ",e.jsxs("a",{href:"https://cli.github.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-0.5 text-primary hover:underline",children:["cli.github.com ",e.jsx(pe,{className:"h-2.5 w-2.5"})]})]})]})}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-1 rounded-md bg-surface-light p-1",children:[e.jsxs("button",{onClick:()=>h("oauth"),className:`flex-1 flex items-center justify-center gap-2 rounded px-3 py-2 text-sm transition-colors ${c==="oauth"?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:[e.jsx(we,{className:"h-4 w-4"}),"Browser OAuth"]}),e.jsxs("button",{onClick:()=>h("pat"),className:`flex-1 flex items-center justify-center gap-2 rounded px-3 py-2 text-sm transition-colors ${c==="pat"?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:[e.jsx(Qe,{className:"h-4 w-4"}),"Access Token"]})]}),c==="oauth"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Opens your browser to authenticate with GitHub. This is the recommended method."}),e.jsxs(V,{onClick:P,disabled:n==="connecting"||n==="polling"||n==="success",className:"w-full gap-2",children:[n==="connecting"&&e.jsx(I,{className:"h-4 w-4 animate-spin"}),n==="polling"&&e.jsx(I,{className:"h-4 w-4 animate-spin"}),n==="success"&&e.jsx(ee,{className:"h-4 w-4"}),n==="polling"?"Waiting for browser...":n==="success"?"Connected!":"Connect with GitHub"]})]}),c==="pat"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Paste a GitHub Personal Access Token. Needs ",e.jsx("code",{className:"text-xs",children:"repo"})," and ",e.jsx("code",{className:"text-xs",children:"read:org"})," scopes."]}),e.jsx("input",{type:"password",placeholder:"ghp_xxxxxxxxxxxxxxxxxxxx",value:x,onChange:C=>u(C.target.value),disabled:n==="connecting"||n==="success",className:"flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50"}),e.jsxs(V,{onClick:M,disabled:!x.trim()||n==="connecting"||n==="success",className:"w-full gap-2",children:[n==="connecting"&&e.jsx(I,{className:"h-4 w-4 animate-spin"}),n==="success"&&e.jsx(ee,{className:"h-4 w-4"}),n==="success"?"Connected!":"Authenticate"]})]}),n==="error"&&d&&e.jsxs("div",{className:"flex items-center gap-2 rounded bg-ask-red/10 px-3 py-2 text-xs text-ask-red",children:[e.jsx(Oe,{className:"h-4 w-4 shrink-0"}),d]}),e.jsx("p",{className:"text-[10px] text-muted-foreground/60",children:"GitHub authentication is global — connecting here applies to all projects."})]})]})]})}function gs({github:s,githubChecking:t,onConnectionChange:a}){var l;const r=G(),[o,c]=i.useState(!0),h=i.useCallback(async()=>{try{await fetch(r("/github/disconnect"),{method:"POST"}),a==null||a()}catch{}},[r,a]),n=((l=s==null?void 0:s.repo)==null?void 0:l.visibility)==="public"?we:ts;return e.jsxs(k,{className:"mt-6",children:[e.jsx(A,{className:"cursor-pointer select-none",onClick:()=>c(!o),children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[o?e.jsx(te,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(K,{className:"h-4 w-4 text-primary"}),"GitHub",(s==null?void 0:s.connected)&&s.repo&&e.jsxs(f,{variant:"secondary",className:"ml-1 text-xs gap-1",children:[e.jsx(n,{className:"h-2.5 w-2.5"}),s.repo.fullName]}),s!=null&&s.openPRs?e.jsxs(f,{variant:"outline",className:"text-xs",children:[s.openPRs," open PR",s.openPRs!==1?"s":""]}):null]})}),o&&e.jsx(S,{children:t?e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"h-3 w-3 animate-spin rounded-full border border-muted-foreground border-t-transparent"}),"Checking GitHub connection…"]}):!s||!s.connected?e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Connect to GitHub to see repository info, pull requests, and CI status."}),e.jsx(fs,{error:(s==null?void 0:s.error)??null,onConnected:()=>a==null?void 0:a()})]}):e.jsxs("div",{className:"space-y-4",children:[s.repo&&e.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"Repository"}),e.jsx("a",{href:s.repo.url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:s.repo.fullName}),e.jsx("span",{className:"text-muted-foreground",children:"Default branch"}),e.jsx("code",{className:"font-mono",children:s.repo.defaultBranch}),e.jsx("span",{className:"text-muted-foreground",children:"Visibility"}),e.jsxs("span",{className:"flex items-center gap-1 capitalize",children:[e.jsx(n,{className:"h-3 w-3"}),s.repo.visibility]}),s.authUser&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground",children:"Signed in as"}),e.jsx("span",{children:s.authUser})]})]}),e.jsx("div",{className:"border-t border-border pt-3",children:e.jsxs(V,{variant:"ghost",size:"sm",onClick:x=>{x.stopPropagation(),h()},className:"gap-2 text-xs text-muted-foreground hover:text-ask-red",children:[e.jsx(rs,{className:"h-3 w-3"}),"Disconnect"]})})]})})]})}function js({decision:s}){return s==="APPROVED"?e.jsx(ee,{className:"h-3.5 w-3.5 text-bid-green"}):s==="CHANGES_REQUESTED"?e.jsx(Ue,{className:"h-3.5 w-3.5 text-ask-red"}):e.jsx(Fe,{className:"h-3.5 w-3.5 text-warning-amber"})}function Re(s){const[t,a]=i.useState(!0),[r,o]=i.useState("all"),[c,h]=i.useState([]),n=i.useCallback(async()=>{if(!(s.isAggregate||!s.buildUrl))try{const d=await fetch(s.buildUrl("/github/prs"));d.ok&&h(await d.json())}catch{}},[s.isAggregate,s.buildUrl]);i.useEffect(()=>{s.isAggregate||n()},[s.isAggregate,n]);const l=s.isAggregate?s.prs:c,x=l.filter(d=>r==="all"?!0:r==="pending"?!d.reviewDecision||d.reviewDecision==="REVIEW_REQUIRED":r==="approved"?d.reviewDecision==="APPROVED":r==="changes"?d.reviewDecision==="CHANGES_REQUESTED":!0);if(l.length===0)return null;const u=[{key:"all",label:"All"},{key:"pending",label:"Pending"},{key:"approved",label:"Approved"},{key:"changes",label:"Changes"}];return e.jsxs(k,{className:"mb-6",children:[e.jsx(A,{className:"cursor-pointer select-none pb-2",onClick:()=>a(!t),children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[t?e.jsx(te,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(re,{className:"h-4 w-4 text-primary"}),"Pull Requests",e.jsx(f,{variant:"secondary",children:l.length})]})}),t&&e.jsxs(S,{children:[e.jsx("div",{className:"mb-3 flex gap-1",children:u.map(d=>e.jsx("button",{onClick:m=>{m.stopPropagation(),o(d.key)},className:`rounded-md px-2.5 py-1 text-xs transition-colors ${r===d.key?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"}`,children:d.label},d.key))}),e.jsx("div",{className:"space-y-0.5",children:x.map(d=>e.jsxs("a",{href:d.url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light group",children:[e.jsx(js,{decision:d.reviewDecision}),e.jsxs("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:["#",d.number]}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-sm",children:d.title}),e.jsx(Se,{projectId:d.project_id}),e.jsx(f,{variant:"outline",className:"shrink-0 text-xs font-normal",children:d.branch}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"→"}),e.jsx(f,{variant:"outline",className:"shrink-0 text-xs font-normal",children:d.baseBranch}),d.scopeIds.map(m=>e.jsxs(f,{variant:"secondary",className:"shrink-0 text-xs",children:["#",m]},m)),e.jsx(Be,{pr:d}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:d.author}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:O(new Date(d.lastActivityAt??d.createdAt),{addSuffix:!0})}),e.jsx(pe,{className:"h-3 w-3 shrink-0 text-muted-foreground/40 opacity-0 group-hover:opacity-100 transition-opacity"})]},`${d.project_id??""}-${d.number}`))}),x.length===0&&e.jsx("p",{className:"py-4 text-center text-xs text-muted-foreground",children:"No PRs match this filter."})]})]})}function ps({overviews:s,activitySeries:t}){return s.length===0?null:e.jsx("div",{className:"mb-6 grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",children:s.map(a=>e.jsx(Ns,{project:a,activity:t.get(a.projectId)??[]},a.projectId))})}function Ns({project:s,activity:t}){const{projectName:a,projectColor:r,status:o,overview:c,error:h}=s;return e.jsx(k,{className:"overflow-hidden",children:e.jsxs(S,{className:"py-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"h-2.5 w-2.5 rounded-full shrink-0",style:{backgroundColor:`hsl(${r})`}}),e.jsx("span",{className:"font-medium text-sm",style:{color:`hsl(${r})`},children:a}),o==="error"&&e.jsx(f,{variant:"destructive",className:"text-xs ml-auto",children:"Error"})]}),o==="error"?e.jsx("p",{className:"text-xs text-muted-foreground",children:h}):c?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("code",{className:"font-mono text-xs",children:c.currentBranch}),c.dirty&&e.jsxs(z,{children:[e.jsx(Q,{children:e.jsx(T,{className:"h-2 w-2 fill-warning-amber text-warning-amber"})}),e.jsx(J,{children:"Uncommitted changes"})]})]}),e.jsxs("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[c.aheadBehind&&(c.aheadBehind.ahead>0||c.aheadBehind.behind>0)&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ke,{className:"h-3 w-3"}),c.aheadBehind.ahead>0&&e.jsxs("span",{className:"text-bid-green",children:[c.aheadBehind.ahead,"↑"]}),c.aheadBehind.behind>0&&e.jsxs("span",{className:"text-ask-red",children:[c.aheadBehind.behind,"↓"]})]}),c.featureBranchCount>0&&e.jsxs("span",{children:[c.featureBranchCount," branch",c.featureBranchCount!==1?"es":""]}),e.jsx(f,{variant:"outline",className:"text-[10px] py-0",children:c.branchingMode})]}),c.mainHead&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(re,{className:"h-3 w-3 shrink-0"}),e.jsx("span",{className:"truncate max-w-[180px]",children:c.mainHead.message}),e.jsx("span",{className:"shrink-0 text-muted-foreground/60",children:O(new Date(c.mainHead.date),{addSuffix:!0})})]}),t.length>0&&e.jsx(Ce,{data:t,color:r})]}):null]})})}function bs(s){return s==="clean"?"text-bid-green":s==="low"?"text-accent-blue":s==="moderate"?"text-warning-amber":"text-ask-red"}function ys({health:s}){return s.length===0?e.jsxs(k,{children:[e.jsx(A,{className:"pb-2",children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),"Branch Health"]})}),e.jsx(S,{children:e.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"No branch data available."})})]}):e.jsxs(k,{children:[e.jsx(A,{className:"pb-2",children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),"Branch Health"]})}),e.jsx(S,{children:e.jsx("div",{className:"space-y-2",children:s.map(t=>e.jsxs("div",{className:"flex items-center gap-3 rounded px-2.5 py-2 transition-colors hover:bg-surface-light",children:[e.jsx("span",{className:"h-2 w-2 rounded-full shrink-0",style:{backgroundColor:`hsl(${t.projectColor})`}}),e.jsx("span",{className:"text-sm font-medium min-w-[100px]",style:{color:`hsl(${t.projectColor})`},children:t.projectName}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.branchCount," branch",t.branchCount!==1?"es":""]}),t.staleBranchCount>0&&e.jsxs("span",{className:"flex items-center gap-1 text-xs text-warning-amber",children:[e.jsx(Ne,{className:"h-3 w-3"}),t.staleBranchCount," stale"]}),t.featureBranchCount>0&&e.jsxs(f,{variant:"secondary",className:"text-xs",children:[t.featureBranchCount," feature"]}),e.jsx(f,{variant:"outline",className:w("ml-auto text-xs",bs(t.maxDriftSeverity)),children:t.maxDriftSeverity==="clean"?"in sync":`${t.maxDriftSeverity} drift`})]},t.projectId))})})]})}function ws(s){return s==="A"?"text-bid-green":s==="B"?"text-accent-blue":s==="C"?"text-warning-amber":"text-ask-red"}function ks(s){return s==="A"?"bg-bid-green/10":s==="B"?"bg-accent-blue/10":s==="C"?"bg-warning-amber/10":"bg-ask-red/10"}function vs({health:s}){return e.jsx(k,{className:"mb-6",children:e.jsxs(S,{className:"flex items-center gap-6 py-3",children:[e.jsx("div",{className:w("flex items-center justify-center h-12 w-12 rounded-lg text-2xl font-bold shrink-0",ks(s.grade),ws(s.grade)),children:s.grade}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-1",children:[e.jsx(q,{icon:e.jsx(Ke,{className:"h-3.5 w-3.5"}),label:"Commits/week",value:String(s.commitsPerWeek),warn:s.commitsPerWeek<5}),e.jsx(q,{icon:e.jsx(re,{className:"h-3.5 w-3.5"}),label:"Avg PR age",value:s.avgPrAgeDays>0?`${s.avgPrAgeDays}d`:"--",warn:s.avgPrAgeDays>3}),e.jsx(q,{icon:e.jsx(B,{className:"h-3.5 w-3.5"}),label:"Stale branches",value:String(s.staleBranchCount),warn:s.staleBranchCount>0}),e.jsx(q,{icon:e.jsx(Ne,{className:"h-3.5 w-3.5"}),label:"Drift",value:s.driftSeverity,warn:s.driftSeverity!=="clean"})]})]})})}function q({icon:s,label:t,value:a,warn:r}){return e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx("span",{className:r?"text-warning-amber":"text-muted-foreground",children:s}),e.jsx("span",{className:"text-muted-foreground",children:t}),e.jsx("span",{className:w("font-medium",r?"text-warning-amber":"text-foreground"),children:a})]})}const Cs={deploying:{icon:I,color:"text-accent-blue",label:"Deploying",animate:"animate-spin"},healthy:{icon:Le,color:"text-bid-green",label:"Healthy"},failed:{icon:me,color:"text-ask-red",label:"Failed"},"rolled-back":{icon:me,color:"text-warning-amber",label:"Rolled Back"}},fe=20;function Ss(s){const t=new Map;for(const a of s){const r=a.started_at?be(new Date(a.started_at),"yyyy-MM-dd"):"Unknown",o=t.get(r);o?o.push(a):t.set(r,[a])}return t}function Bs(s){if(!s.started_at||!s.completed_at)return null;const t=new Date(s.completed_at).getTime()-new Date(s.started_at).getTime();return t<1e3?"<1s":t<6e4?`${Math.round(t/1e3)}s`:`${Math.round(t/6e4)}m`}function As({deployments:s}){const[t,a]=i.useState(!1),r=t?s:s.slice(0,fe),o=Ss(r);return e.jsxs(k,{children:[e.jsx(A,{children:e.jsxs(R,{className:"text-base",children:["Deployment History",e.jsx(f,{variant:"secondary",className:"ml-2",children:s.length})]})}),e.jsx(S,{children:s.length===0?e.jsxs("div",{className:"py-8 text-center",children:[e.jsx(se,{className:"mx-auto mb-3 h-10 w-10 text-muted-foreground/50"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No deployments recorded yet."})]}):e.jsxs("div",{className:"space-y-4",children:[[...o.entries()].map(([c,h])=>e.jsxs("div",{children:[e.jsx("div",{className:"sticky top-0 z-10 bg-card pb-1 pt-0.5",children:e.jsx("span",{className:"text-xxs font-medium uppercase tracking-wider text-muted-foreground",children:c==="Unknown"?"Unknown date":be(new Date(c),"EEEE, MMM d")})}),e.jsx("div",{className:"space-y-0.5",children:h.map(n=>{const l=Cs[n.status],x=l.icon,u=Bs(n);return e.jsxs("div",{className:"flex items-center gap-4 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light",children:[e.jsx(x,{className:w("h-4 w-4 shrink-0",l.color,l.animate)}),e.jsx(f,{variant:"outline",className:"capitalize shrink-0",children:n.environment}),e.jsx("span",{className:"text-xs font-normal shrink-0",children:l.label}),n.commit_sha&&e.jsx("code",{className:"font-mono text-xs text-muted-foreground shrink-0",children:n.commit_sha.slice(0,7)}),n.branch&&e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:n.branch}),u&&e.jsx("span",{className:"font-mono text-xs text-muted-foreground/60 shrink-0",children:u}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground/60 shrink-0",children:n.started_at?O(new Date(n.started_at),{addSuffix:!0}):"—"})]},n.id)})})]},c)),!t&&s.length>fe&&e.jsxs("button",{onClick:()=>a(!0),className:"w-full rounded border border-border py-2 text-xs text-muted-foreground transition-colors hover:bg-surface-light hover:text-foreground",children:["Show all ",s.length," deployments"]})]})})]})}function Us(){const{activeProjectId:s,hasMultipleProjects:t}=ge(),a=t&&s===null,r=ns(!a),o=cs(a),{deployments:c}=is(!a),[h,n]=i.useState(!0);return(a?o.loading:r.loading)?e.jsxs("div",{className:"flex flex-1 min-h-0 flex-col",children:[e.jsx(he,{}),e.jsx("div",{className:"flex h-64 items-center justify-center",children:e.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent"})})]}):e.jsxs("div",{className:"flex flex-1 min-h-0 flex-col",children:[e.jsx(he,{}),e.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:a?e.jsx(Ds,{aggregate:o}):e.jsx(Rs,{sourceControl:r,deployments:c,deployExpanded:h,setDeployExpanded:n})})]})}function Rs({sourceControl:s,deployments:t,deployExpanded:a,setDeployExpanded:r}){const{overview:o,commits:c,branches:h,worktrees:n,github:l,githubChecking:x,drift:u,loadMoreCommits:d,hasMoreCommits:m,health:g,activity:b,refetch:p}=s;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-6 flex items-center gap-3",children:[e.jsx(_,{className:"h-4 w-4 text-primary"}),e.jsx("h1",{className:"text-xl font-light",children:"Repo"}),o&&e.jsx(f,{variant:"secondary",children:o.currentBranch})]}),o&&e.jsx(os,{overview:o,github:l,githubChecking:x,activity:b}),g&&e.jsx(vs,{health:g}),(l==null?void 0:l.connected)&&e.jsx(Re,{buildUrl:s.buildUrl}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[e.jsx(Ae,{commits:c,branches:h,hasMore:m,onLoadMore:d}),e.jsx(us,{branches:h,worktrees:n,drift:u,branchingMode:(o==null?void 0:o.branchingMode)??"trunk"})]}),e.jsx(gs,{github:l,githubChecking:x,onConnectionChange:p}),t.length>0&&e.jsx("div",{className:"mt-6",children:a?e.jsxs("div",{children:[e.jsxs("button",{onClick:()=>r(!1),className:"mb-2 flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[e.jsx(te,{className:"h-4 w-4"}),e.jsx(se,{className:"h-4 w-4"}),"Deploy History"]}),e.jsx(As,{deployments:t})]}):e.jsx(k,{className:"cursor-pointer select-none",onClick:()=>r(!0),children:e.jsx(A,{children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(se,{className:"h-4 w-4 text-primary"}),"Deploy History",e.jsx(f,{variant:"secondary",children:t.length})]})})})})]})}function Ds({aggregate:s}){const{projectOverviews:t,commits:a,prs:r,branchHealth:o,activitySeries:c}=s;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-6 flex items-center gap-3",children:[e.jsx(_,{className:"h-4 w-4 text-primary"}),e.jsx("h1",{className:"text-xl font-light",children:"Repo"}),e.jsx(f,{variant:"secondary",children:"All Projects"})]}),e.jsx(ps,{overviews:t,activitySeries:c}),r.length>0&&e.jsx(Re,{prs:r,isAggregate:!0}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[e.jsx(Ae,{commits:a,branches:[],hasMore:!1,onLoadMore:()=>{}}),e.jsx(ys,{health:o})]})]})}export{Us as SourceControl};
31
+ */const ts=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],as=$("log-out",ts),F=50;function rs(s=!0){const t=G(),[a,r]=i.useState(null),[o,c]=i.useState([]),[h,n]=i.useState([]),[l,x]=i.useState([]),[u,d]=i.useState(null),[m,g]=i.useState(!0),[b,p]=i.useState([]),[v,D]=i.useState(null),[P,H]=i.useState([]),[C,y]=i.useState(!0),[_,X]=i.useState(!0),Z=i.useRef(0),M=i.useCallback(async j=>{if(s)try{const[N,L,ce,ie,oe,le,de]=await Promise.all([fetch(t("/git/overview"),{signal:j}),fetch(t(`/git/commits?limit=${F}&offset=0`),{signal:j}),fetch(t("/git/branches"),{signal:j}),fetch(t("/git/worktrees"),{signal:j}),fetch(t("/git/drift"),{signal:j}),fetch(t("/git/health"),{signal:j}),fetch(t("/git/activity?days=30"),{signal:j})]);if(N.ok&&r(await N.json()),L.ok){const Y=await L.json();c(Y),Z.current=Y.length,X(Y.length>=F)}ce.ok&&n(await ce.json()),ie.ok&&x(await ie.json()),oe.ok&&p(await oe.json()),le.ok&&D(await le.json()),de.ok&&H(await de.json())}catch(N){if(N instanceof DOMException&&N.name==="AbortError")return}finally{j!=null&&j.aborted||y(!1)}},[t,s]),U=i.useCallback(async j=>{if(s){g(!0);try{const N=await fetch(t("/github/status"),{signal:j});N.ok&&d(await N.json())}catch(N){if(N instanceof DOMException&&N.name==="AbortError")return}finally{j!=null&&j.aborted||g(!1)}}},[t,s]),ne=i.useCallback(()=>{M(),U()},[M,U]),De=i.useCallback(async()=>{try{const j=await fetch(t(`/git/commits?limit=${F}&offset=${Z.current}`));if(j.ok){const N=await j.json();c(L=>[...L,...N]),Z.current+=N.length,X(N.length>=F)}}catch{}},[t]);return i.useEffect(()=>{if(!s){y(!1),g(!1);return}const j=new AbortController;return M(j.signal),U(j.signal),()=>j.abort()},[s,M,U]),Pe(ne),i.useEffect(()=>{function j(){M()}return W.on("git:status:changed",j),()=>{W.off("git:status:changed",j)}},[M]),{overview:a,commits:o,branches:h,worktrees:l,github:u,githubChecking:m,drift:b,health:v,activity:P,loading:C,refetch:ne,loadMoreCommits:De,hasMoreCommits:_,buildUrl:t}}function ns(s){const[t,a]=i.useState([]),[r,o]=i.useState([]),[c,h]=i.useState([]),[n,l]=i.useState([]),[x,u]=i.useState(new Map),[d,m]=i.useState(!0),g=i.useCallback(async()=>{if(s)try{const[p,v,D,P,H]=await Promise.all([fetch("/api/orbital/aggregate/git/overview"),fetch("/api/orbital/aggregate/git/commits?limit=50"),fetch("/api/orbital/aggregate/github/prs"),fetch("/api/orbital/aggregate/git/health"),fetch("/api/orbital/aggregate/git/activity?days=30")]);if(p.ok&&a(await p.json()),v.ok&&o(await v.json()),D.ok&&h(await D.json()),P.ok&&l(await P.json()),H.ok){const C=await H.json(),y=new Map;for(const _ of C)y.set(_.projectId,_.series);u(y)}}catch{}finally{m(!1)}},[s]),b=i.useCallback(()=>{g()},[g]);return i.useEffect(()=>{s&&(m(!0),g())},[s,g]),i.useEffect(()=>{if(!s)return;function p(){g()}return W.on("git:status:changed",p),()=>{W.off("git:status:changed",p)}},[s,g]),{projectOverviews:t,commits:r,prs:c,branchHealth:n,activitySeries:x,loading:d,refetch:b}}function cs(s=!0){const t=G(),[a,r]=i.useState(null),[o,c]=i.useState([]),[h,n]=i.useState([]),l=i.useCallback(async()=>{if(!s)return;const[u,d,m]=await Promise.all([fetch(t("/pipeline/drift")),fetch(t("/deployments/frequency")),fetch(t("/deployments"))]);u.ok&&r(await u.json()),d.ok&&c(await d.json()),m.ok&&n(await m.json())},[t,s]),{loading:x}=He(l);return qe("deploy:updated",()=>{l()},[l]),{drift:a,frequency:o,deployments:h,loading:x,refetch:l}}function Ce({data:s,color:t="210 80% 55%",height:a=28}){if(s.length===0)return null;const r=`hsl(${t})`;return e.jsx("div",{style:{width:"100%",height:a},children:e.jsx(Ve,{width:"100%",height:"100%",children:e.jsxs(We,{data:s,margin:{top:0,right:0,bottom:0,left:0},children:[e.jsx("defs",{children:e.jsxs("linearGradient",{id:`sparkFill-${t.replace(/\s/g,"")}`,x1:"0",y1:"0",x2:"0",y2:"1",children:[e.jsx("stop",{offset:"0%",stopColor:r,stopOpacity:.25}),e.jsx("stop",{offset:"100%",stopColor:r,stopOpacity:.02})]})}),e.jsx(ze,{type:"monotone",dataKey:"count",stroke:r,strokeWidth:1.5,fill:`url(#sparkFill-${t.replace(/\s/g,"")})`,isAnimationActive:!1})]})})})}function is({overview:s,github:t,githubChecking:a,activity:r}){var o;return e.jsx(k,{className:"mb-6",children:e.jsxs(S,{className:"flex flex-wrap items-center gap-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),e.jsx("code",{className:"font-mono text-sm",children:s.currentBranch}),s.dirty&&e.jsxs(z,{children:[e.jsx(Q,{children:e.jsx(E,{className:"h-2.5 w-2.5 fill-warning-amber text-warning-amber"})}),e.jsx(J,{children:"Uncommitted changes"})]})]}),e.jsx(f,{variant:"outline",className:"text-xs",children:s.branchingMode}),s.mainHead&&e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:[e.jsx("span",{children:"HEAD"}),e.jsx("code",{className:"font-mono text-xs",children:s.mainHead.sha.slice(0,7)}),e.jsx("span",{className:"max-w-[200px] truncate",children:s.mainHead.message})]}),s.aheadBehind&&(s.aheadBehind.ahead>0||s.aheadBehind.behind>0)&&e.jsxs("div",{className:"flex items-center gap-1 text-xs",children:[e.jsx(ke,{className:"h-3 w-3 text-muted-foreground"}),s.aheadBehind.ahead>0&&e.jsxs("span",{className:"text-bid-green",children:[s.aheadBehind.ahead,"↑"]}),s.aheadBehind.behind>0&&e.jsxs("span",{className:"text-ask-red",children:[s.aheadBehind.behind,"↓"]})]}),s.branchingMode==="worktree"&&s.worktreeCount>0&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsx(T,{className:"h-3 w-3"}),e.jsxs("span",{children:[s.worktreeCount," worktree",s.worktreeCount!==1?"s":""]})]}),s.branchingMode==="trunk"&&s.featureBranchCount>0&&e.jsxs("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[e.jsx(B,{className:"h-3 w-3"}),e.jsxs("span",{children:[s.featureBranchCount," feature branch",s.featureBranchCount!==1?"es":""]})]}),r&&r.length>0&&e.jsx("div",{className:"w-20",children:e.jsx(Ce,{data:r,height:22})}),e.jsxs("div",{className:"ml-auto flex items-center gap-1.5",children:[e.jsx(K,{className:"h-3.5 w-3.5 text-muted-foreground"}),a?e.jsxs(f,{variant:"outline",className:"text-xs text-muted-foreground gap-1.5",children:[e.jsx("span",{className:"h-2 w-2 animate-spin rounded-full border border-muted-foreground border-t-transparent"}),"Checking…"]}):t!=null&&t.connected?e.jsxs(z,{children:[e.jsx(Q,{children:e.jsxs(f,{variant:"secondary",className:"text-xs gap-1",children:[e.jsx(E,{className:"h-1.5 w-1.5 fill-bid-green text-bid-green"}),((o=t.repo)==null?void 0:o.fullName)??"Connected"]})}),e.jsx(J,{children:t.authUser?`Signed in as ${t.authUser}`:"Connected to GitHub"})]}):e.jsx(f,{variant:"outline",className:"text-xs text-muted-foreground",children:"Not connected"})]})]})})}function Se({projectId:s,className:t}){const{hasMultipleProjects:a,getProjectColor:r,getProjectName:o}=ge();if(!a||!s)return null;const c=r(s),h=o(s);return e.jsxs("span",{className:`inline-flex items-center gap-1 rounded px-1.5 py-0 text-[10px] ${t??""}`,style:{borderColor:`hsl(${c} / 0.4)`,color:`hsl(${c})`,borderWidth:"1px",borderStyle:"solid"},children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full shrink-0",style:{backgroundColor:`hsl(${c})`}}),h]})}const ue=new Map,os=6e4;function Be({commitSha:s,pr:t}){const a=G(),[r,o]=i.useState(null),[c,h]=i.useState(!1),n=i.useRef(!1),l=s??(t==null?void 0:t.branch);if(!l)return null;const x=async()=>{if(n.current||c)return;const m=ue.get(l);if(m&&Date.now()-m.ts<os){o(m.data),n.current=!0;return}h(!0);try{const g=await fetch(a(`/github/checks/${l}`));if(g.ok){const b=await g.json();ue.set(l,{data:b,ts:Date.now()}),o(b)}}catch{}h(!1),n.current=!0};let u="text-muted-foreground/30",d="CI";if(r&&r.length>0){const m=r.some(p=>p.conclusion==="failure"),g=r.some(p=>p.status==="in_progress"||p.status==="queued"),b=r.every(p=>p.conclusion==="success"||p.conclusion==="neutral");m?(u="text-ask-red",d=`${r.filter(p=>p.conclusion==="failure").length} failing`):g?(u="text-warning-amber",d="Running"):b&&(u="text-bid-green",d="Passed")}return e.jsxs(z,{children:[e.jsx(Q,{className:"shrink-0",onMouseEnter:x,children:c?e.jsx(I,{className:"h-3 w-3 animate-spin text-muted-foreground/50"}):e.jsx(E,{className:`h-2.5 w-2.5 fill-current ${u}`})}),e.jsx(J,{side:"top",className:"max-w-xs",children:r===null?e.jsx("span",{className:"text-xs",children:"Hover to load CI status"}):r.length===0?e.jsx("span",{className:"text-xs",children:"No CI checks"}):e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium",children:d}),r.slice(0,5).map((m,g)=>e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx(E,{className:`h-1.5 w-1.5 fill-current ${m.conclusion==="success"?"text-bid-green":m.conclusion==="failure"?"text-ask-red":"text-warning-amber"}`}),e.jsx("span",{className:"truncate",children:m.name})]},g)),r.length>5&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["+",r.length-5," more"]})]})})]})}function ls({commit:s}){return e.jsxs("div",{className:"flex items-center gap-3 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light",children:[e.jsx(Be,{commitSha:s.sha}),e.jsx("code",{className:"shrink-0 font-mono text-xs text-primary",children:s.shortSha}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-sm",children:s.message}),e.jsx(Se,{projectId:s.project_id}),s.branch&&e.jsx(f,{variant:"outline",className:"shrink-0 text-xs font-normal",children:s.branch}),s.scopeId&&e.jsxs(f,{variant:"secondary",className:"shrink-0 text-xs",children:["#",s.scopeId]}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:s.author}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:O(new Date(s.date),{addSuffix:!0})})]})}function Ae({commits:s,branches:t,hasMore:a,onLoadMore:r}){const[o,c]=i.useState("all"),h=i.useMemo(()=>{const x=new Set(["main","master","dev","develop","staging","production"]);for(const u of t)!u.isRemote&&!u.name.startsWith("feat/")&&!u.name.startsWith("fix/")&&x.add(u.name);return x},[t]),n=i.useMemo(()=>o==="all"?s:o==="main"?s.filter(x=>!x.branch||h.has(x.branch)):s.filter(x=>x.branch&&!h.has(x.branch)),[s,o,h]),l=[{key:"all",label:"All"},{key:"main",label:"Main"},{key:"feature",label:"Feature"}];return e.jsxs(k,{className:"lg:col-span-2",children:[e.jsx(A,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(xe,{className:"h-4 w-4 text-primary"}),"Commits"," ",e.jsx(f,{variant:"secondary",children:n.length})]}),e.jsx("div",{className:"flex gap-1",children:l.map(x=>e.jsx("button",{onClick:()=>c(x.key),className:`rounded-md px-2.5 py-1 text-xs transition-colors ${o===x.key?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"}`,children:x.label},x.key))})]})}),e.jsx(S,{children:n.length===0?e.jsxs("div",{className:"py-8 text-center",children:[e.jsx(xe,{className:"mx-auto mb-3 h-10 w-10 text-muted-foreground/50"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No commits found."})]}):e.jsxs(e.Fragment,{children:[e.jsx(je,{className:"max-h-[600px]",children:e.jsx("div",{className:"space-y-0.5",children:n.map(x=>e.jsx(ls,{commit:x},x.sha))})}),a&&e.jsx("button",{onClick:r,className:"mt-3 w-full rounded border border-border py-2 text-xs text-muted-foreground transition-colors hover:bg-surface-light hover:text-foreground",children:"Load more commits"})]})})]})}function ds({branches:s}){const t=[...s].filter(a=>!a.isRemote).sort((a,r)=>a.isCurrent?-1:r.isCurrent?1:a.isStale!==r.isStale?a.isStale?1:-1:new Date(r.headDate).getTime()-new Date(a.headDate).getTime());return t.length===0?e.jsxs("div",{className:"py-6 text-center",children:[e.jsx(B,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground/50"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"No branches found."})]}):e.jsx("div",{className:"space-y-0.5",children:t.map(a=>e.jsxs("div",{className:w("flex items-center gap-2 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light",a.isStale&&"opacity-50"),children:[e.jsx(B,{className:w("h-3.5 w-3.5 shrink-0",a.isCurrent?"text-primary":"text-muted-foreground")}),e.jsx("span",{className:w("min-w-0 flex-1 truncate font-mono text-xs",a.isCurrent&&"text-foreground font-medium"),children:a.name}),a.scopeId&&e.jsxs(f,{variant:"secondary",className:"shrink-0 text-xs",children:["#",a.scopeId]}),a.aheadBehind&&e.jsxs("div",{className:"flex shrink-0 items-center gap-1 text-xs",children:[a.aheadBehind.ahead>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-bid-green",children:[e.jsx(ve,{className:"h-2.5 w-2.5"}),a.aheadBehind.ahead]}),a.aheadBehind.behind>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-ask-red",children:[e.jsx(ye,{className:"h-2.5 w-2.5"}),a.aheadBehind.behind]})]}),e.jsx("code",{className:"shrink-0 font-mono text-xs text-muted-foreground/60",children:a.headSha}),a.headDate&&e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:O(new Date(a.headDate),{addSuffix:!0})})]},a.name))})}function xs({worktrees:s}){return s.length===0?e.jsxs("div",{className:"py-6 text-center",children:[e.jsx(T,{className:"mx-auto mb-2 h-8 w-8 text-muted-foreground/50"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"No active worktrees."})]}):e.jsx("div",{className:"space-y-1",children:s.map(t=>e.jsxs("div",{className:"rounded border border-border/50 px-3 py-2 transition-colors hover:bg-surface-light",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(T,{className:"h-3.5 w-3.5 shrink-0 text-primary"}),e.jsx("code",{className:"min-w-0 flex-1 truncate font-mono text-xs",children:t.branch}),t.dirty&&e.jsx(E,{className:"h-2 w-2 shrink-0 fill-warning-amber text-warning-amber"}),e.jsx("code",{className:"shrink-0 font-mono text-xs text-muted-foreground/60",children:t.head})]}),t.scopeId&&e.jsxs("div",{className:"mt-1 flex items-center gap-2",children:[e.jsxs(f,{variant:"secondary",className:"text-xs",children:["#",t.scopeId]}),t.scopeTitle&&e.jsx("span",{className:"min-w-0 truncate text-xs text-muted-foreground",children:t.scopeTitle}),t.scopeStatus&&e.jsx(f,{variant:"outline",className:w("shrink-0 text-xs capitalize"),children:t.scopeStatus})]}),t.aheadBehind&&(t.aheadBehind.ahead>0||t.aheadBehind.behind>0)&&e.jsxs("div",{className:"mt-1 flex items-center gap-2 text-xs",children:[t.aheadBehind.ahead>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-bid-green",children:[e.jsx(ve,{className:"h-2.5 w-2.5"}),t.aheadBehind.ahead," ahead"]}),t.aheadBehind.behind>0&&e.jsxs("span",{className:"flex items-center gap-0.5 text-ask-red",children:[e.jsx(ye,{className:"h-2.5 w-2.5"}),t.aheadBehind.behind," behind"]})]})]},t.path))})}function hs(s){return s===0?"text-bid-green":s<=5?"text-accent-blue":s<=20?"text-warning-amber":"text-ask-red"}function ms({branches:s,worktrees:t,drift:a,branchingMode:r}){const o=r==="worktree",[c,h]=i.useState("branches");return e.jsxs(k,{children:[e.jsx(A,{className:"pb-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),o?c==="branches"?"Branches":"Worktrees":"Branches",e.jsx(f,{variant:"secondary",children:c==="branches"?s.filter(n=>!n.isRemote).length:t.length})]}),o&&e.jsxs("div",{className:"flex gap-1",children:[e.jsxs("button",{onClick:()=>h("branches"),className:w("rounded-md px-2.5 py-1 text-xs transition-colors",c==="branches"?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"),children:[e.jsx(B,{className:"inline h-3 w-3 mr-1"}),"Branches"]}),e.jsxs("button",{onClick:()=>h("worktrees"),className:w("rounded-md px-2.5 py-1 text-xs transition-colors",c==="worktrees"?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"),children:[e.jsx(T,{className:"inline h-3 w-3 mr-1"}),"Worktrees"]})]})]})}),e.jsxs(S,{children:[e.jsx(je,{className:"max-h-[400px]",children:c==="branches"?e.jsx(ds,{branches:s}):e.jsx(xs,{worktrees:t})}),a.length>0&&e.jsxs("div",{className:"mt-4 border-t border-border pt-3",children:[e.jsx("h4",{className:"mb-2 text-xs font-medium text-muted-foreground",children:"Branch Drift"}),e.jsx("div",{className:"space-y-1.5",children:a.map(n=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("code",{className:"font-mono text-muted-foreground",children:n.from}),e.jsx(Me,{className:"h-3 w-3 text-muted-foreground/50"}),e.jsx("code",{className:"font-mono text-muted-foreground",children:n.to}),e.jsx(f,{variant:"outline",className:w("ml-auto text-xs",hs(n.count)),children:n.count===0?"in sync":`${n.count} commit${n.count!==1?"s":""}`})]},`${n.from}-${n.to}`))})]})]})]})}function us({error:s,onConnected:t}){const a=G(),[r,o]=i.useState(!1),[c,h]=i.useState("oauth"),[n,l]=i.useState("idle"),[x,u]=i.useState(""),[d,m]=i.useState(""),g=i.useRef(),b=i.useRef(),p=s==null?void 0:s.includes("not installed"),v=i.useCallback(()=>{g.current&&(clearInterval(g.current),g.current=void 0)},[]);i.useEffect(()=>()=>{v(),clearTimeout(b.current)},[v]);const D=async()=>{l("connecting"),m("");try{const y=await(await fetch(a("/github/connect"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"oauth"})})).json();y.success?(l("polling"),g.current=setInterval(async()=>{try{(await(await fetch(a("/github/auth-status"))).json()).authenticated&&(v(),clearTimeout(b.current),l("success"),setTimeout(()=>{o(!1),t()},1e3))}catch{}},2e3),b.current=setTimeout(()=>{g.current&&(v(),l("error"),m("Authentication timed out. Please try again."))},12e4)):(l("error"),m(y.error??"Failed to start OAuth flow"))}catch{l("error"),m("Failed to connect to server")}},P=async()=>{if(x.trim()){l("connecting"),m("");try{const y=await(await fetch(a("/github/connect"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({method:"pat",token:x.trim()})})).json();y.success?(l("success"),u(""),setTimeout(()=>{o(!1),t()},1e3)):(l("error"),m(y.error??"Authentication failed"))}catch{l("error"),m("Failed to connect to server")}}},H=C=>{o(C),C||(v(),l("idle"),m(""),u(""))};return e.jsxs(Ee,{open:r,onOpenChange:H,children:[e.jsx(Te,{asChild:!0,children:e.jsxs(V,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(K,{className:"h-4 w-4"}),"Connect GitHub"]})}),e.jsxs($e,{className:"sm:max-w-md",children:[e.jsxs(_e,{children:[e.jsxs(Ie,{className:"flex items-center gap-2",children:[e.jsx(K,{className:"h-5 w-5"}),"Connect to GitHub"]}),e.jsx(Ge,{children:p?"The GitHub CLI (gh) is required. Install it first, then authenticate.":"Authenticate with GitHub to see PRs, CI status, and repo info."})]}),p?e.jsx("div",{className:"space-y-3",children:e.jsxs("div",{className:"rounded border border-border bg-surface-light p-3",children:[e.jsx("p",{className:"text-sm mb-2",children:"Install the GitHub CLI:"}),e.jsx("code",{className:"text-xs font-mono bg-background px-2 py-1 rounded",children:"brew install gh"}),e.jsxs("p",{className:"mt-2 text-xs text-muted-foreground",children:["Or visit"," ",e.jsxs("a",{href:"https://cli.github.com",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-0.5 text-primary hover:underline",children:["cli.github.com ",e.jsx(pe,{className:"h-2.5 w-2.5"})]})]})]})}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex gap-1 rounded-md bg-surface-light p-1",children:[e.jsxs("button",{onClick:()=>h("oauth"),className:`flex-1 flex items-center justify-center gap-2 rounded px-3 py-2 text-sm transition-colors ${c==="oauth"?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:[e.jsx(we,{className:"h-4 w-4"}),"Browser OAuth"]}),e.jsxs("button",{onClick:()=>h("pat"),className:`flex-1 flex items-center justify-center gap-2 rounded px-3 py-2 text-sm transition-colors ${c==="pat"?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:[e.jsx(Qe,{className:"h-4 w-4"}),"Access Token"]})]}),c==="oauth"&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-xs text-muted-foreground",children:"Opens your browser to authenticate with GitHub. This is the recommended method."}),e.jsxs(V,{onClick:D,disabled:n==="connecting"||n==="polling"||n==="success",className:"w-full gap-2",children:[n==="connecting"&&e.jsx(I,{className:"h-4 w-4 animate-spin"}),n==="polling"&&e.jsx(I,{className:"h-4 w-4 animate-spin"}),n==="success"&&e.jsx(ee,{className:"h-4 w-4"}),n==="polling"?"Waiting for browser...":n==="success"?"Connected!":"Connect with GitHub"]})]}),c==="pat"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Paste a GitHub Personal Access Token. Needs ",e.jsx("code",{className:"text-xs",children:"repo"})," and ",e.jsx("code",{className:"text-xs",children:"read:org"})," scopes."]}),e.jsx("input",{type:"password",placeholder:"ghp_xxxxxxxxxxxxxxxxxxxx",value:x,onChange:C=>u(C.target.value),disabled:n==="connecting"||n==="success",className:"flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50"}),e.jsxs(V,{onClick:P,disabled:!x.trim()||n==="connecting"||n==="success",className:"w-full gap-2",children:[n==="connecting"&&e.jsx(I,{className:"h-4 w-4 animate-spin"}),n==="success"&&e.jsx(ee,{className:"h-4 w-4"}),n==="success"?"Connected!":"Authenticate"]})]}),n==="error"&&d&&e.jsxs("div",{className:"flex items-center gap-2 rounded bg-ask-red/10 px-3 py-2 text-xs text-ask-red",children:[e.jsx(Oe,{className:"h-4 w-4 shrink-0"}),d]}),e.jsx("p",{className:"text-[10px] text-muted-foreground/60",children:"GitHub authentication is global — connecting here applies to all projects."})]})]})]})}function fs({github:s,githubChecking:t,onConnectionChange:a}){var l;const r=G(),[o,c]=i.useState(!0),h=i.useCallback(async()=>{try{await fetch(r("/github/disconnect"),{method:"POST"}),a==null||a()}catch{}},[r,a]),n=((l=s==null?void 0:s.repo)==null?void 0:l.visibility)==="public"?we:ss;return e.jsxs(k,{className:"mt-6",children:[e.jsx(A,{className:"cursor-pointer select-none",onClick:()=>c(!o),children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[o?e.jsx(te,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(K,{className:"h-4 w-4 text-primary"}),"GitHub",(s==null?void 0:s.connected)&&s.repo&&e.jsxs(f,{variant:"secondary",className:"ml-1 text-xs gap-1",children:[e.jsx(n,{className:"h-2.5 w-2.5"}),s.repo.fullName]}),s!=null&&s.openPRs?e.jsxs(f,{variant:"outline",className:"text-xs",children:[s.openPRs," open PR",s.openPRs!==1?"s":""]}):null]})}),o&&e.jsx(S,{children:t?e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx("span",{className:"h-3 w-3 animate-spin rounded-full border border-muted-foreground border-t-transparent"}),"Checking GitHub connection…"]}):!s||!s.connected?e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Connect to GitHub to see repository info, pull requests, and CI status."}),e.jsx(us,{error:(s==null?void 0:s.error)??null,onConnected:()=>a==null?void 0:a()})]}):e.jsxs("div",{className:"space-y-4",children:[s.repo&&e.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1 text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:"Repository"}),e.jsx("a",{href:s.repo.url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:s.repo.fullName}),e.jsx("span",{className:"text-muted-foreground",children:"Default branch"}),e.jsx("code",{className:"font-mono",children:s.repo.defaultBranch}),e.jsx("span",{className:"text-muted-foreground",children:"Visibility"}),e.jsxs("span",{className:"flex items-center gap-1 capitalize",children:[e.jsx(n,{className:"h-3 w-3"}),s.repo.visibility]}),s.authUser&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"text-muted-foreground",children:"Signed in as"}),e.jsx("span",{children:s.authUser})]})]}),e.jsx("div",{className:"border-t border-border pt-3",children:e.jsxs(V,{variant:"ghost",size:"sm",onClick:x=>{x.stopPropagation(),h()},className:"gap-2 text-xs text-muted-foreground hover:text-ask-red",children:[e.jsx(as,{className:"h-3 w-3"}),"Disconnect"]})})]})})]})}function gs({decision:s}){return s==="APPROVED"?e.jsx(ee,{className:"h-3.5 w-3.5 text-bid-green"}):s==="CHANGES_REQUESTED"?e.jsx(Ue,{className:"h-3.5 w-3.5 text-ask-red"}):e.jsx(Le,{className:"h-3.5 w-3.5 text-warning-amber"})}function Re(s){const[t,a]=i.useState(!0),[r,o]=i.useState("all"),[c,h]=i.useState([]),n=i.useCallback(async()=>{if(!(s.isAggregate||!s.buildUrl))try{const d=await fetch(s.buildUrl("/github/prs"));d.ok&&h(await d.json())}catch{}},[s.isAggregate,s.buildUrl]);i.useEffect(()=>{s.isAggregate||n()},[s.isAggregate,n]);const l=s.isAggregate?s.prs:c,x=l.filter(d=>r==="all"?!0:r==="pending"?!d.reviewDecision||d.reviewDecision==="REVIEW_REQUIRED":r==="approved"?d.reviewDecision==="APPROVED":r==="changes"?d.reviewDecision==="CHANGES_REQUESTED":!0);if(l.length===0)return null;const u=[{key:"all",label:"All"},{key:"pending",label:"Pending"},{key:"approved",label:"Approved"},{key:"changes",label:"Changes"}];return e.jsxs(k,{className:"mb-6",children:[e.jsx(A,{className:"cursor-pointer select-none pb-2",onClick:()=>a(!t),children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[t?e.jsx(te,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(re,{className:"h-4 w-4 text-primary"}),"Pull Requests",e.jsx(f,{variant:"secondary",children:l.length})]})}),t&&e.jsxs(S,{children:[e.jsx("div",{className:"mb-3 flex gap-1",children:u.map(d=>e.jsx("button",{onClick:m=>{m.stopPropagation(),o(d.key)},className:`rounded-md px-2.5 py-1 text-xs transition-colors ${r===d.key?"bg-surface-light text-foreground":"text-muted-foreground hover:text-foreground"}`,children:d.label},d.key))}),e.jsx("div",{className:"space-y-0.5",children:x.map(d=>e.jsxs("a",{href:d.url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-3 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light group",children:[e.jsx(gs,{decision:d.reviewDecision}),e.jsxs("span",{className:"shrink-0 font-mono text-xs text-muted-foreground",children:["#",d.number]}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-sm",children:d.title}),e.jsx(Se,{projectId:d.project_id}),e.jsx(f,{variant:"outline",className:"shrink-0 text-xs font-normal",children:d.branch}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"→"}),e.jsx(f,{variant:"outline",className:"shrink-0 text-xs font-normal",children:d.baseBranch}),d.scopeIds.map(m=>e.jsxs(f,{variant:"secondary",className:"shrink-0 text-xs",children:["#",m]},m)),e.jsx(Be,{pr:d}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground",children:d.author}),e.jsx("span",{className:"shrink-0 text-xs text-muted-foreground/60",children:O(new Date(d.lastActivityAt??d.createdAt),{addSuffix:!0})}),e.jsx(pe,{className:"h-3 w-3 shrink-0 text-muted-foreground/40 opacity-0 group-hover:opacity-100 transition-opacity"})]},`${d.project_id??""}-${d.number}`))}),x.length===0&&e.jsx("p",{className:"py-4 text-center text-xs text-muted-foreground",children:"No PRs match this filter."})]})]})}function js({overviews:s,activitySeries:t}){return s.length===0?null:e.jsx("div",{className:"mb-6 grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3",children:s.map(a=>e.jsx(ps,{project:a,activity:t.get(a.projectId)??[]},a.projectId))})}function ps({project:s,activity:t}){const{projectName:a,projectColor:r,status:o,overview:c,error:h}=s;return e.jsx(k,{className:"overflow-hidden",children:e.jsxs(S,{className:"py-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"h-2.5 w-2.5 rounded-full shrink-0",style:{backgroundColor:`hsl(${r})`}}),e.jsx("span",{className:"font-medium text-sm",style:{color:`hsl(${r})`},children:a}),o==="error"&&e.jsx(f,{variant:"destructive",className:"text-xs ml-auto",children:"Error"})]}),o==="error"?e.jsx("p",{className:"text-xs text-muted-foreground",children:h}):c?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(B,{className:"h-3.5 w-3.5 text-muted-foreground"}),e.jsx("code",{className:"font-mono text-xs",children:c.currentBranch}),c.dirty&&e.jsxs(z,{children:[e.jsx(Q,{children:e.jsx(E,{className:"h-2 w-2 fill-warning-amber text-warning-amber"})}),e.jsx(J,{children:"Uncommitted changes"})]})]}),e.jsxs("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[c.aheadBehind&&(c.aheadBehind.ahead>0||c.aheadBehind.behind>0)&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(ke,{className:"h-3 w-3"}),c.aheadBehind.ahead>0&&e.jsxs("span",{className:"text-bid-green",children:[c.aheadBehind.ahead,"↑"]}),c.aheadBehind.behind>0&&e.jsxs("span",{className:"text-ask-red",children:[c.aheadBehind.behind,"↓"]})]}),c.featureBranchCount>0&&e.jsxs("span",{children:[c.featureBranchCount," branch",c.featureBranchCount!==1?"es":""]}),e.jsx(f,{variant:"outline",className:"text-[10px] py-0",children:c.branchingMode})]}),c.mainHead&&e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx(re,{className:"h-3 w-3 shrink-0"}),e.jsx("span",{className:"truncate max-w-[180px]",children:c.mainHead.message}),e.jsx("span",{className:"shrink-0 text-muted-foreground/60",children:O(new Date(c.mainHead.date),{addSuffix:!0})})]}),t.length>0&&e.jsx(Ce,{data:t,color:r})]}):null]})})}function Ns(s){return s==="clean"?"text-bid-green":s==="low"?"text-accent-blue":s==="moderate"?"text-warning-amber":"text-ask-red"}function bs({health:s}){return s.length===0?e.jsxs(k,{children:[e.jsx(A,{className:"pb-2",children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),"Branch Health"]})}),e.jsx(S,{children:e.jsx("p",{className:"text-sm text-muted-foreground py-4 text-center",children:"No branch data available."})})]}):e.jsxs(k,{children:[e.jsx(A,{className:"pb-2",children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(B,{className:"h-4 w-4 text-primary"}),"Branch Health"]})}),e.jsx(S,{children:e.jsx("div",{className:"space-y-2",children:s.map(t=>e.jsxs("div",{className:"flex items-center gap-3 rounded px-2.5 py-2 transition-colors hover:bg-surface-light",children:[e.jsx("span",{className:"h-2 w-2 rounded-full shrink-0",style:{backgroundColor:`hsl(${t.projectColor})`}}),e.jsx("span",{className:"text-sm font-medium min-w-[100px]",style:{color:`hsl(${t.projectColor})`},children:t.projectName}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[t.branchCount," branch",t.branchCount!==1?"es":""]}),t.staleBranchCount>0&&e.jsxs("span",{className:"flex items-center gap-1 text-xs text-warning-amber",children:[e.jsx(Ne,{className:"h-3 w-3"}),t.staleBranchCount," stale"]}),t.featureBranchCount>0&&e.jsxs(f,{variant:"secondary",className:"text-xs",children:[t.featureBranchCount," feature"]}),e.jsx(f,{variant:"outline",className:w("ml-auto text-xs",Ns(t.maxDriftSeverity)),children:t.maxDriftSeverity==="clean"?"in sync":`${t.maxDriftSeverity} drift`})]},t.projectId))})})]})}function ys(s){return s==="A"?"text-bid-green":s==="B"?"text-accent-blue":s==="C"?"text-warning-amber":"text-ask-red"}function ws(s){return s==="A"?"bg-bid-green/10":s==="B"?"bg-accent-blue/10":s==="C"?"bg-warning-amber/10":"bg-ask-red/10"}function ks({health:s}){return e.jsx(k,{className:"mb-6",children:e.jsxs(S,{className:"flex items-center gap-6 py-3",children:[e.jsx("div",{className:w("flex items-center justify-center h-12 w-12 rounded-lg text-2xl font-bold shrink-0",ws(s.grade),ys(s.grade)),children:s.grade}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-1",children:[e.jsx(q,{icon:e.jsx(Ke,{className:"h-3.5 w-3.5"}),label:"Commits/week",value:String(s.commitsPerWeek),warn:s.commitsPerWeek<5}),e.jsx(q,{icon:e.jsx(re,{className:"h-3.5 w-3.5"}),label:"Avg PR age",value:s.avgPrAgeDays>0?`${s.avgPrAgeDays}d`:"--",warn:s.avgPrAgeDays>3}),e.jsx(q,{icon:e.jsx(B,{className:"h-3.5 w-3.5"}),label:"Stale branches",value:String(s.staleBranchCount),warn:s.staleBranchCount>0}),e.jsx(q,{icon:e.jsx(Ne,{className:"h-3.5 w-3.5"}),label:"Drift",value:s.driftSeverity,warn:s.driftSeverity!=="clean"})]})]})})}function q({icon:s,label:t,value:a,warn:r}){return e.jsxs("div",{className:"flex items-center gap-1.5 text-xs",children:[e.jsx("span",{className:r?"text-warning-amber":"text-muted-foreground",children:s}),e.jsx("span",{className:"text-muted-foreground",children:t}),e.jsx("span",{className:w("font-medium",r?"text-warning-amber":"text-foreground"),children:a})]})}const vs={deploying:{icon:I,color:"text-accent-blue",label:"Deploying",animate:"animate-spin"},healthy:{icon:Fe,color:"text-bid-green",label:"Healthy"},failed:{icon:me,color:"text-ask-red",label:"Failed"},"rolled-back":{icon:me,color:"text-warning-amber",label:"Rolled Back"}},fe=20;function Cs(s){const t=new Map;for(const a of s){const r=a.started_at?be(new Date(a.started_at),"yyyy-MM-dd"):"Unknown",o=t.get(r);o?o.push(a):t.set(r,[a])}return t}function Ss(s){if(!s.started_at||!s.completed_at)return null;const t=new Date(s.completed_at).getTime()-new Date(s.started_at).getTime();return t<1e3?"<1s":t<6e4?`${Math.round(t/1e3)}s`:`${Math.round(t/6e4)}m`}function Bs({deployments:s}){const[t,a]=i.useState(!1),r=t?s:s.slice(0,fe),o=Cs(r);return e.jsxs(k,{children:[e.jsx(A,{children:e.jsxs(R,{className:"text-base",children:["Deployment History",e.jsx(f,{variant:"secondary",className:"ml-2",children:s.length})]})}),e.jsx(S,{children:s.length===0?e.jsxs("div",{className:"py-8 text-center",children:[e.jsx(se,{className:"mx-auto mb-3 h-10 w-10 text-muted-foreground/50"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"No deployments recorded yet."})]}):e.jsxs("div",{className:"space-y-4",children:[[...o.entries()].map(([c,h])=>e.jsxs("div",{children:[e.jsx("div",{className:"sticky top-0 z-10 bg-card pb-1 pt-0.5",children:e.jsx("span",{className:"text-xxs font-medium uppercase tracking-wider text-muted-foreground",children:c==="Unknown"?"Unknown date":be(new Date(c),"EEEE, MMM d")})}),e.jsx("div",{className:"space-y-0.5",children:h.map(n=>{const l=vs[n.status],x=l.icon,u=Ss(n);return e.jsxs("div",{className:"flex items-center gap-4 rounded px-2.5 py-1.5 transition-colors hover:bg-surface-light",children:[e.jsx(x,{className:w("h-4 w-4 shrink-0",l.color,l.animate)}),e.jsx(f,{variant:"outline",className:"capitalize shrink-0",children:n.environment}),e.jsx("span",{className:"text-xs font-normal shrink-0",children:l.label}),n.commit_sha&&e.jsx("code",{className:"font-mono text-xs text-muted-foreground shrink-0",children:n.commit_sha.slice(0,7)}),n.branch&&e.jsx("span",{className:"truncate text-xs text-muted-foreground",children:n.branch}),u&&e.jsx("span",{className:"font-mono text-xs text-muted-foreground/60 shrink-0",children:u}),e.jsx("span",{className:"ml-auto text-xs text-muted-foreground/60 shrink-0",children:n.started_at?O(new Date(n.started_at),{addSuffix:!0}):"—"})]},n.id)})})]},c)),!t&&s.length>fe&&e.jsxs("button",{onClick:()=>a(!0),className:"w-full rounded border border-border py-2 text-xs text-muted-foreground transition-colors hover:bg-surface-light hover:text-foreground",children:["Show all ",s.length," deployments"]})]})})]})}function Os(){const{activeProjectId:s,hasMultipleProjects:t}=ge(),a=t&&s===null,r=rs(!a),o=ns(a),{deployments:c}=cs(!a),[h,n]=i.useState(!0);return(a?o.loading:r.loading)?e.jsxs("div",{className:"flex flex-1 min-h-0 flex-col",children:[e.jsx(he,{}),e.jsx("div",{className:"flex h-64 items-center justify-center",children:e.jsx("div",{className:"h-8 w-8 animate-spin rounded-full border-2 border-primary border-t-transparent"})})]}):e.jsxs("div",{className:"flex flex-1 min-h-0 flex-col",children:[e.jsx(he,{}),e.jsx("div",{className:"flex-1 min-h-0 overflow-y-auto",children:a?e.jsx(Rs,{aggregate:o}):e.jsx(As,{sourceControl:r,deployments:c,deployExpanded:h,setDeployExpanded:n})})]})}function As({sourceControl:s,deployments:t,deployExpanded:a,setDeployExpanded:r}){const{overview:o,commits:c,branches:h,worktrees:n,github:l,githubChecking:x,drift:u,loadMoreCommits:d,hasMoreCommits:m,health:g,activity:b,refetch:p}=s;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-6 flex items-center gap-3",children:[e.jsx(T,{className:"h-4 w-4 text-primary"}),e.jsx("h1",{className:"text-xl font-light",children:"Repo"}),o&&e.jsx(f,{variant:"secondary",children:o.currentBranch})]}),o&&e.jsx(is,{overview:o,github:l,githubChecking:x,activity:b}),g&&e.jsx(ks,{health:g}),(l==null?void 0:l.connected)&&e.jsx(Re,{buildUrl:s.buildUrl}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[e.jsx(Ae,{commits:c,branches:h,hasMore:m,onLoadMore:d}),e.jsx(ms,{branches:h,worktrees:n,drift:u,branchingMode:(o==null?void 0:o.branchingMode)??"trunk"})]}),e.jsx(fs,{github:l,githubChecking:x,onConnectionChange:p}),t.length>0&&e.jsx("div",{className:"mt-6",children:a?e.jsxs("div",{children:[e.jsxs("button",{onClick:()=>r(!1),className:"mb-2 flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground transition-colors",children:[e.jsx(te,{className:"h-4 w-4"}),e.jsx(se,{className:"h-4 w-4"}),"Deploy History"]}),e.jsx(Bs,{deployments:t})]}):e.jsx(k,{className:"cursor-pointer select-none",onClick:()=>r(!0),children:e.jsx(A,{children:e.jsxs(R,{className:"flex items-center gap-2 text-base",children:[e.jsx(ae,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(se,{className:"h-4 w-4 text-primary"}),"Deploy History",e.jsx(f,{variant:"secondary",children:t.length})]})})})})]})}function Rs({aggregate:s}){const{projectOverviews:t,commits:a,prs:r,branchHealth:o,activitySeries:c}=s;return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"mb-6 flex items-center gap-3",children:[e.jsx(T,{className:"h-4 w-4 text-primary"}),e.jsx("h1",{className:"text-xl font-light",children:"Repo"}),e.jsx(f,{variant:"secondary",children:"All Projects"})]}),e.jsx(js,{overviews:t,activitySeries:c}),r.length>0&&e.jsx(Re,{prs:r,isAggregate:!0}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-3",children:[e.jsx(Ae,{commits:a,branches:[],hasMore:!1,onLoadMore:()=>{}}),e.jsx(bs,{health:o})]})]})}export{Os as SourceControl};
@@ -1,4 +1,4 @@
1
- import{j as r,x as ts,t as ns,O as ss,v as rs,y as os,w as Ue}from"./ui-BmsSg9jU.js";import{r as Xr,g as ic,d as is,a as N,b as ac}from"./vendor-Bqt8AJn2.js";import{i as cc,e as Hs,f as Os,g as lc,h as dc,j as uc,k as qt,l as En}from"./charts-LGLb8hyU.js";import{c as Ce,e as as,p as Gr,al as qr,q as Ur,X as he,G as Kr,f as be,l as cs,J as De,F as Jt,C as fc,aq as hc,d as ls,T as st,P as Te,a1 as pc,a3 as xc,a4 as mc,a5 as gc,a6 as bc,g as yc,R as Zr,U as Qr,b as Jr,a7 as wc,a8 as eo,aC as to,aD as Ie,aE as vc,aF as Nc,aG as jc,aH as Cc,aI as zc,aJ as kc,aK as no,n as Sc,u as Ec,aL as _c,aM as Mc,aN as ds,aO as Ic,r as Tc,t as Bs,aP as Ac,z as Pc,D as $c,aQ as Dc,aR as Lc,aS as Rc,aB as so,aT as Hc,E as Oc,k as Bc,K as Fc,aU as Vc,w as Yc,aV as Wc}from"./index-o4ScMAuR.js";import{Z as rt}from"./zap-C9wqYMpl.js";import{b as ot,c as us,d as Xc}from"./workflow-constants-Rw-GmgHZ.js";import{K as Gc}from"./key-CKR8JJSj.js";import{G as fs}from"./globe-WzeyHsUc.js";import{R as hs}from"./radio-xqZaR-Uk.js";import{S as ro,u as qc,P as Uc}from"./useWorkflowEditor-CqeRWVQX.js";import{M as oo}from"./minus-CHBsJyjp.js";import{S as hn}from"./shield-TdB1yv_a.js";import{B as en}from"./bot-NFaJBDn_.js";import{C as Kc}from"./circle-x-IsFCkBZu.js";/**
1
+ import{j as r,d as ts,a as ns,O as ss,b as rs,e as os,c as Ue}from"./ui-QhrRH5wk.js";import{r as Xr,g as ic,d as is,a as N,b as ac}from"./vendor-Bqt8AJn2.js";import{i as cc,e as Hs,f as Os,g as lc,h as dc,j as uc,k as qt,l as En}from"./charts-LGLb8hyU.js";import{c as Ce,e as as,p as Gr,an as qr,q as Ur,X as he,G as Kr,f as be,l as cs,K as De,H as Jt,C as fc,as as hc,d as ls,T as st,P as Te,a3 as pc,a5 as xc,a6 as mc,a7 as gc,a8 as bc,g as yc,U as Zr,V as Qr,b as Jr,a9 as wc,aa as eo,aA as to,aB as Ie,aC as vc,aD as Nc,aE as jc,aF as Cc,aG as zc,aH as kc,aI as no,n as Sc,u as Ec,aJ as _c,aK as Mc,aL as ds,aM as Ic,r as Tc,t as Bs,aN as Ac,z as Pc,D as $c,aO as Dc,aP as Lc,aQ as Rc,az as so,aR as Hc,E as Oc,k as Bc,M as Fc,aS as Vc,w as Yc,aT as Wc}from"./index-DQVAzHMu.js";import{Z as rt}from"./zap-eJ3z8HRI.js";import{b as ot,c as us,d as Xc}from"./workflow-constants-ZcCN11vm.js";import{K as Gc}from"./key-DpAZM-3d.js";import{G as fs}from"./globe-CIX_GBr0.js";import{R as hs}from"./radio-DhynLcSx.js";import{S as ro,u as qc,P as Uc}from"./useWorkflowEditor-BxN7phfr.js";import{M as oo}from"./minus-CJlpKNUB.js";import{S as hn}from"./shield-DLMQmvFQ.js";import{B as en}from"./bot-DUPnHZfM.js";import{C as Kc}from"./circle-x-B4nA79je.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as o}from"./index-o4ScMAuR.js";/**
1
+ import{c as o}from"./index-DQVAzHMu.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as t}from"./index-o4ScMAuR.js";/**
1
+ import{c as t}from"./index-DQVAzHMu.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-o4ScMAuR.js";/**
1
+ import{c}from"./index-DQVAzHMu.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-o4ScMAuR.js";/**
1
+ import{c as e}from"./index-DQVAzHMu.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c}from"./index-o4ScMAuR.js";/**
1
+ import{c}from"./index-DQVAzHMu.js";/**
2
2
  * @license lucide-react v0.577.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-family),monospace;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-family),monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 240 25% 3.5%;--foreground: 0 0% 88%;--card: 240 19% 8.6%;--card-foreground: 0 0% 88%;--popover: 240 19% 8.6%;--popover-foreground: 0 0% 88%;--primary: 187 100% 42%;--primary-foreground: 0 0% 0%;--secondary: 240 22% 13%;--secondary-foreground: 0 0% 88%;--muted: 240 22% 13%;--muted-foreground: 0 0% 75%;--accent: 240 22% 13%;--accent-foreground: 0 0% 88%;--destructive: 348 100% 54%;--destructive-foreground: 0 0% 100%;--border: 240 18% 19.5%;--input: 240 18% 19.5%;--ring: 187 100% 42%;--radius: .375rem;--cc-success: 153 100% 39%;--cc-warning: 40 100% 50%;--cc-error: 348 100% 54%;--cc-info: 187 100% 42%;--cc-sidebar: 240 25% 5%;--font-family: "Space Grotesk", sans-serif;--font-scale: 1.1}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:var(--font-family);font-feature-settings:"rlig" 1,"calt" 1}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:2rem;padding-left:2rem}@media(min-width:1400px){.container{max-width:1400px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.-right-1{right:-.25rem}.-right-2\.5{right:-.625rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.bottom-3{bottom:.75rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-24{left:6rem}.left-6{left:1.5rem}.left-\[8px\]{left:8px}.right-0{right:0}.right-4{right:1rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1\/2{top:50%}.top-3{top:.75rem}.top-4{top:1rem}.top-\[29px\]{top:29px}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[60\]{z-index:60}.z-\[61\]{z-index:61}.z-\[70\]{z-index:70}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-my-1{margin-top:-.25rem;margin-bottom:-.25rem}.-my-px{margin-top:-1px;margin-bottom:-1px}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-1\.5{margin-top:.375rem;margin-bottom:.375rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-ml-px{margin-left:-1px}.-mr-2{margin-right:-.5rem}.-mt-4{margin-top:-1rem}.-mt-8{margin-top:-2rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-\[-1\.25rem\]{margin-left:-1.25rem}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.\!h-2\.5{height:.625rem!important}.\!h-8{height:2rem!important}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1px\]{height:1px}.h-\[280px\]{height:280px}.h-\[2px\]{height:2px}.h-\[80vh\]{height:80vh}.h-\[85vh\]{height:85vh}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-0{max-height:0px}.max-h-48{max-height:12rem}.max-h-64{max-height:16rem}.max-h-\[400px\]{max-height:400px}.max-h-\[600px\]{max-height:600px}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-\[200px\]{min-height:200px}.min-h-\[28px\]{min-height:28px}.min-h-\[300px\]{min-height:300px}.min-h-\[32px\]{min-height:32px}.min-h-\[40px\]{min-height:40px}.min-h-\[48px\]{min-height:48px}.\!w-2\.5{width:.625rem!important}.\!w-8{width:2rem!important}.w-0{width:0px}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[1px\]{width:1px}.w-\[20\%\]{width:20%}.w-\[35\%\]{width:35%}.w-\[40\%\]{width:40%}.w-\[45\%\]{width:45%}.w-\[520px\]{width:520px}.w-\[60\%\]{width:60%}.w-\[80px\]{width:80px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[100px\]{min-width:100px}.min-w-\[130px\]{min-width:130px}.min-w-\[140px\]{min-width:140px}.min-w-\[180px\]{min-width:180px}.min-w-\[220px\]{min-width:220px}.min-w-\[280px\]{min-width:280px}.max-w-0{max-width:0px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[400px\]{max-width:400px}.max-w-\[440px\]{max-width:440px}.max-w-\[480px\]{max-width:480px}.max-w-\[60px\]{max-width:60px}.max-w-\[min\(56rem\,calc\(100vw_-_2rem\)\)\]{max-width:min(56rem,calc(100vw - 2rem))}.max-w-\[min\(72rem\,calc\(100vw_-_2rem\)\)\]{max-width:min(72rem,calc(100vw - 2rem))}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-\[35\]{flex:35}.flex-\[65\]{flex:65}.flex-shrink-0,.shrink-0{flex-shrink:0}.basis-2\/5{flex-basis:40%}.table-fixed{table-layout:fixed}.origin-left{transform-origin:left}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[18px\]{--tw-translate-x: 18px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[2px\]{--tw-translate-x: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-1{--tw-rotate: 1deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-2{--tw-rotate: 2deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate: 90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glowPulse{0%,to{box-shadow:0 0 8px #00bcd440}50%{box-shadow:0 0 18px #00bcd480}}.animate-glow-pulse{animation:glowPulse 2s ease-in-out infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.3}}.animate-pulse-dot{animation:pulseDot 2s ease-in-out infinite}@keyframes slideUp{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slideUp .3s ease-out}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize-y{resize:vertical}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.columns-1{-moz-columns:1;columns:1}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[1fr_auto_1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr auto 1fr}.grid-rows-\[auto_auto_1fr_auto_auto\]{grid-template-rows:auto auto 1fr auto auto}.grid-rows-\[auto_auto_auto_1fr_auto_auto\]{grid-template-rows:auto auto auto 1fr auto auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-px{gap:1px}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1px * var(--tw-space-y-reverse))}.divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(0px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(0px * var(--tw-divide-y-reverse))}.self-end{align-self:flex-end}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[3px\]{border-radius:3px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.375rem}.rounded-md{border-radius:.25rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.rounded-b-lg{border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-r,.rounded-r-md{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.375rem;border-top-right-radius:.375rem}.\!border-2{border-width:2px!important}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.\!border-zinc-800{--tw-border-opacity: 1 !important;border-color:rgb(39 39 42 / var(--tw-border-opacity, 1))!important}.border-\[rgba\(0\,188\,212\,0\.3\)\]{border-color:#00bcd44d}.border-\[rgba\(0\,188\,212\,0\.4\)\]{border-color:#00bcd466}.border-\[rgba\(255\,255\,255\,0\.08\)\]{border-color:#ffffff14}.border-\[rgba\(255\,255\,255\,0\.1\)\]{border-color:#ffffff1a}.border-accent-blue{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.border-accent-blue\/30{border-color:#06b6d44d}.border-accent-blue\/40{border-color:#06b6d466}.border-accent-blue\/50{border-color:#06b6d480}.border-amber-500\/20{border-color:#f59e0b33}.border-amber-500\/30{border-color:#f59e0b4d}.border-amber-500\/40{border-color:#f59e0b66}.border-amber-500\/50{border-color:#f59e0b80}.border-ask-red{--tw-border-opacity: 1;border-color:rgb(255 23 68 / var(--tw-border-opacity, 1))}.border-ask-red\/30{border-color:#ff17444d}.border-ask-red\/40{border-color:#ff174466}.border-ask-red\/60{border-color:#ff174499}.border-bid-green\/40{border-color:#00c85366}.border-blue-500\/30{border-color:#3b82f64d}.border-border{border-color:hsl(var(--border))}.border-border\/20{border-color:hsl(var(--border) / .2)}.border-border\/30{border-color:hsl(var(--border) / .3)}.border-border\/40{border-color:hsl(var(--border) / .4)}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-border\/60{border-color:hsl(var(--border) / .6)}.border-category-bugfix{border-color:var(--category-bugfix, #ff1744)}.border-category-docs{border-color:var(--category-docs, #6B7280)}.border-category-feature{border-color:var(--category-feature, #536dfe)}.border-category-infrastructure{border-color:var(--category-infrastructure, #40c4ff)}.border-category-refactor{border-color:var(--category-refactor, #8B5CF6)}.border-cyan-500\/10{border-color:#06b6d41a}.border-cyan-500\/20{border-color:#06b6d433}.border-cyan-500\/30{border-color:#06b6d44d}.border-cyan-500\/40{border-color:#06b6d466}.border-cyan-500\/60{border-color:#06b6d499}.border-destructive\/20{border-color:hsl(var(--destructive) / .2)}.border-destructive\/30{border-color:hsl(var(--destructive) / .3)}.border-emerald-500\/15{border-color:#10b98126}.border-emerald-500\/20{border-color:#10b98133}.border-emerald-500\/25{border-color:#10b98140}.border-emerald-500\/30{border-color:#10b9814d}.border-green-500\/20{border-color:#22c55e33}.border-green-500\/30{border-color:#22c55e4d}.border-green-500\/40{border-color:#22c55e66}.border-indigo-500\/20{border-color:#6366f133}.border-indigo-500\/30{border-color:#6366f14d}.border-inherit{border-color:inherit}.border-muted-foreground{border-color:hsl(var(--muted-foreground))}.border-muted-foreground\/20{border-color:hsl(var(--muted-foreground) / .2)}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/40{border-color:hsl(var(--muted-foreground) / .4)}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-purple-400\/30{border-color:#c084fc4d}.border-purple-500\/20{border-color:#a855f733}.border-purple-500\/30{border-color:#a855f74d}.border-red-500\/20{border-color:#ef444433}.border-red-500\/30{border-color:#ef44444d}.border-red-500\/40{border-color:#ef444466}.border-transparent{border-color:transparent}.border-violet-500\/20{border-color:#8b5cf633}.border-warning-amber{--tw-border-opacity: 1;border-color:rgb(255 171 0 / var(--tw-border-opacity, 1))}.border-warning-amber\/30{border-color:#ffab004d}.border-warning-amber\/40{border-color:#ffab0066}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/20{border-color:#fff3}.border-white\/\[0\.04\]{border-color:#ffffff0a}.border-white\/\[0\.06\]{border-color:#ffffff0f}.border-white\/\[0\.08\]{border-color:#ffffff14}.border-white\/\[0\.12\]{border-color:#ffffff1f}.border-zinc-500\/20{border-color:#71717a33}.border-zinc-500\/30{border-color:#71717a4d}.border-zinc-600{--tw-border-opacity: 1;border-color:rgb(82 82 91 / var(--tw-border-opacity, 1))}.border-zinc-700{--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.border-zinc-800{--tw-border-opacity: 1;border-color:rgb(39 39 42 / var(--tw-border-opacity, 1))}.border-zinc-800\/50{border-color:#27272a80}.border-b-white\/\[0\.08\]{border-bottom-color:#ffffff14}.border-l-primary\/50{border-left-color:hsl(var(--primary) / .5)}.border-l-transparent{border-left-color:transparent}.border-l-warning-amber\/60{border-left-color:#ffab0099}.border-t-transparent{border-top-color:transparent}.\!bg-transparent{background-color:transparent!important}.\!bg-zinc-900{--tw-bg-opacity: 1 !important;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))!important}.bg-\[\#00bcd4\]\/10{background-color:#00bcd41a}.bg-\[\#00bcd4\]\/15{background-color:#00bcd426}.bg-\[\#00c85315\]{background-color:#00c85315}.bg-\[\#00c85322\]{background-color:#00c85322}.bg-\[\#06b6d415\]{background-color:#06b6d415}.bg-\[\#0a0a12\]{--tw-bg-opacity: 1;background-color:rgb(10 10 18 / var(--tw-bg-opacity, 1))}.bg-\[\#0d0d14\]{--tw-bg-opacity: 1;background-color:rgb(13 13 20 / var(--tw-bg-opacity, 1))}.bg-\[\#ff174415\]{background-color:#ff174415}.bg-\[\#ff174422\]{background-color:#ff174422}.bg-\[\#ffab0015\]{background-color:#ffab0015}.bg-\[\#ffab0022\]{background-color:#ffab0022}.bg-\[rgb\(0\,188\,212\)\]{--tw-bg-opacity: 1;background-color:rgb(0 188 212 / var(--tw-bg-opacity, 1))}.bg-\[rgba\(0\,188\,212\,0\.2\)\]{background-color:#00bcd433}.bg-\[rgba\(0\,188\,212\,0\.25\)\]{background-color:#00bcd440}.bg-\[rgba\(255\,255\,255\,0\.02\)\]{background-color:#ffffff05}.bg-\[rgba\(255\,255\,255\,0\.03\)\]{background-color:#ffffff08}.bg-\[rgba\(255\,255\,255\,0\.05\)\]{background-color:#ffffff0d}.bg-\[rgba\(255\,255\,255\,0\.4\)\]{background-color:#fff6}.bg-\[rgba\(var\(--neon-blue\)\,0\.08\)\]{background-color:rgba(var(--neon-blue),.08)}.bg-accent{background-color:hsl(var(--accent))}.bg-accent-blue{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity, 1))}.bg-accent-blue\/10{background-color:#06b6d41a}.bg-accent-blue\/25{background-color:#06b6d440}.bg-accent-blue\/5{background-color:#06b6d40d}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/15{background-color:#f59e0b26}.bg-amber-500\/20{background-color:#f59e0b33}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-ask-red{--tw-bg-opacity: 1;background-color:rgb(255 23 68 / var(--tw-bg-opacity, 1))}.bg-ask-red\/10{background-color:#ff17441a}.bg-ask-red\/5{background-color:#ff17440d}.bg-background{background-color:hsl(var(--background))}.bg-background\/60{background-color:hsl(var(--background) / .6)}.bg-bid-green{--tw-bg-opacity: 1;background-color:rgb(0 200 83 / var(--tw-bg-opacity, 1))}.bg-bid-green\/10{background-color:#00c8531a}.bg-black\/40{background-color:#0006}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/30{background-color:hsl(var(--card) / .3)}.bg-card\/50{background-color:hsl(var(--card) / .5)}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-category-bugfix{background-color:var(--category-bugfix, #ff1744)}.bg-category-docs{background-color:var(--category-docs, #6B7280)}.bg-category-feature{background-color:var(--category-feature, #536dfe)}.bg-category-infrastructure{background-color:var(--category-infrastructure, #40c4ff)}.bg-category-refactor{background-color:var(--category-refactor, #8B5CF6)}.bg-cyan-500\/10{background-color:#06b6d41a}.bg-cyan-500\/15{background-color:#06b6d426}.bg-cyan-500\/20{background-color:#06b6d433}.bg-cyan-500\/5{background-color:#06b6d40d}.bg-cyan-600{--tw-bg-opacity: 1;background-color:rgb(8 145 178 / var(--tw-bg-opacity, 1))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive) / .1)}.bg-destructive\/5{background-color:hsl(var(--destructive) / .05)}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/15{background-color:#10b98126}.bg-emerald-500\/20{background-color:#10b98133}.bg-emerald-500\/5{background-color:#10b9810d}.bg-emerald-500\/70{background-color:#10b981b3}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.bg-gray-950{--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-500\/10{background-color:#22c55e1a}.bg-green-500\/15{background-color:#22c55e26}.bg-green-500\/5{background-color:#22c55e0d}.bg-green-600\/20{background-color:#16a34a33}.bg-indigo-500\/5{background-color:#6366f10d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/20{background-color:hsl(var(--muted-foreground) / .2)}.bg-muted-foreground\/30{background-color:hsl(var(--muted-foreground) / .3)}.bg-muted-foreground\/40{background-color:hsl(var(--muted-foreground) / .4)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/40{background-color:hsl(var(--muted) / .4)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary-foreground{background-color:hsl(var(--primary-foreground))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/15{background-color:hsl(var(--primary) / .15)}.bg-primary\/40{background-color:hsl(var(--primary) / .4)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-500\/15{background-color:#ef444426}.bg-red-500\/20{background-color:#ef444433}.bg-red-500\/5{background-color:#ef44440d}.bg-red-600\/80{background-color:#dc2626cc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(18 18 26 / var(--tw-bg-opacity, 1))}.bg-surface-light{--tw-bg-opacity: 1;background-color:rgb(26 26 40 / var(--tw-bg-opacity, 1))}.bg-surface-light\/20{background-color:#1a1a2833}.bg-surface-light\/40{background-color:#1a1a2866}.bg-surface\/30{background-color:#12121a4d}.bg-surface\/50{background-color:#12121a80}.bg-surface\/95{background-color:#12121af2}.bg-transparent{background-color:transparent}.bg-violet-500\/5{background-color:#8b5cf60d}.bg-warning-amber{--tw-bg-opacity: 1;background-color:rgb(255 171 0 / var(--tw-bg-opacity, 1))}.bg-warning-amber\/10{background-color:#ffab001a}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/\[0\.03\]{background-color:#ffffff08}.bg-white\/\[0\.04\]{background-color:#ffffff0a}.bg-white\/\[0\.06\]{background-color:#ffffff0f}.bg-white\/\[0\.08\]{background-color:#ffffff14}.bg-yellow-500\/10{background-color:#eab3081a}.bg-zinc-500\/10{background-color:#71717a1a}.bg-zinc-500\/20{background-color:#71717a33}.bg-zinc-700{--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity, 1))}.bg-zinc-800{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.bg-zinc-800\/50{background-color:#27272a80}.bg-zinc-800\/60{background-color:#27272a99}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.bg-zinc-900\/30{background-color:#18181b4d}.bg-zinc-900\/50{background-color:#18181b80}.bg-zinc-900\/95{background-color:#18181bf2}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity, 1))}.bg-zinc-950\/30{background-color:#09090b4d}.bg-zinc-950\/50{background-color:#09090b80}.bg-zinc-950\/70{background-color:#09090bb3}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-amber-500\/20{--tw-gradient-from: rgb(245 158 11 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 158 11 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-cyan-500\/20{--tw-gradient-from: rgb(6 182 212 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(6 182 212 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500\/20{--tw-gradient-from: rgb(34 197 94 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-pink-500\/20{--tw-gradient-from: rgb(236 72 153 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(236 72 153 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500\/20{--tw-gradient-from: rgb(168 85 247 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-blue-500\/20{--tw-gradient-to: rgb(59 130 246 / .2) var(--tw-gradient-to-position)}.to-emerald-500\/20{--tw-gradient-to: rgb(16 185 129 / .2) var(--tw-gradient-to-position)}.to-orange-500\/20{--tw-gradient-to: rgb(249 115 22 / .2) var(--tw-gradient-to-position)}.to-pink-500\/20{--tw-gradient-to: rgb(236 72 153 / .2) var(--tw-gradient-to-position)}.to-red-500\/20{--tw-gradient-to: rgb(239 68 68 / .2) var(--tw-gradient-to-position)}.to-teal-500\/20{--tw-gradient-to: rgb(20 184 166 / .2) var(--tw-gradient-to-position)}.fill-bid-green{fill:#00c853}.fill-current{fill:currentColor}.fill-warning-amber{fill:#ffab00}.object-contain{-o-object-fit:contain;object-fit:contain}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-8{padding-left:2rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-7{padding-right:1.75rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono,.font-sans{font-family:var(--font-family),monospace}.text-2xl{font-size:20px;line-height:26px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-base{font-size:14px;line-height:20px}.text-lg{font-size:16px;line-height:22px}.text-sm{font-size:13px;line-height:19px}.text-xl{font-size:18px;line-height:24px}.text-xs{font-size:12px;line-height:17px}.text-xxs{font-size:11px;line-height:15px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-\[1\.6\]{line-height:1.6}.leading-\[1\.7\]{line-height:1.7}.leading-\[16px\]{line-height:16px}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-\[\#00bcd4\]{--tw-text-opacity: 1;color:rgb(0 188 212 / var(--tw-text-opacity, 1))}.text-\[\#00c853\]{--tw-text-opacity: 1;color:rgb(0 200 83 / var(--tw-text-opacity, 1))}.text-\[\#00e676\]{--tw-text-opacity: 1;color:rgb(0 230 118 / var(--tw-text-opacity, 1))}.text-\[\#e91e63\]{--tw-text-opacity: 1;color:rgb(233 30 99 / var(--tw-text-opacity, 1))}.text-\[\#ff1744\]{--tw-text-opacity: 1;color:rgb(255 23 68 / var(--tw-text-opacity, 1))}.text-\[\#ffab00\]{--tw-text-opacity: 1;color:rgb(255 171 0 / var(--tw-text-opacity, 1))}.text-\[rgb\(0\,188\,212\)\]{--tw-text-opacity: 1;color:rgb(0 188 212 / var(--tw-text-opacity, 1))}.text-accent-blue{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-accent-blue\/90{color:#06b6d4e6}.text-agent-architect{color:var(--agent-architect, #536dfe)}.text-agent-attacker{color:var(--agent-attacker, #ff1744)}.text-agent-chaos{color:var(--agent-chaos, #F97316)}.text-agent-frontend{color:var(--agent-frontend, #EC4899)}.text-agent-rules{color:var(--agent-rules, #6B7280)}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.text-amber-400\/25{color:#fbbf2440}.text-amber-400\/60{color:#fbbf2499}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-amber-500\/50{color:#f59e0b80}.text-ask-red{--tw-text-opacity: 1;color:rgb(255 23 68 / var(--tw-text-opacity, 1))}.text-bid-green{--tw-text-opacity: 1;color:rgb(0 200 83 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-400\/25{color:#60a5fa40}.text-border{color:hsl(var(--border))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-category-bugfix{color:var(--category-bugfix, #ff1744)}.text-category-docs{color:var(--category-docs, #6B7280)}.text-category-feature{color:var(--category-feature, #536dfe)}.text-category-infrastructure{color:var(--category-infrastructure, #40c4ff)}.text-category-refactor{color:var(--category-refactor, #8B5CF6)}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-cyan-400\/60{color:#22d3ee99}.text-cyan-400\/70{color:#22d3eeb3}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-emerald-400\/70{color:#34d399b3}.text-emerald-400\/80{color:#34d399cc}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-foreground\/60{color:hsl(var(--foreground) / .6)}.text-foreground\/70{color:hsl(var(--foreground) / .7)}.text-foreground\/80{color:hsl(var(--foreground) / .8)}.text-foreground\/90{color:hsl(var(--foreground) / .9)}.text-green-300{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-green-400\/20{color:#4ade8033}.text-green-400\/40{color:#4ade8066}.text-green-400\/50{color:#4ade8080}.text-green-400\/60{color:#4ade8099}.text-green-400\/70{color:#4ade80b3}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-indigo-400{--tw-text-opacity: 1;color:rgb(129 140 248 / var(--tw-text-opacity, 1))}.text-indigo-500{--tw-text-opacity: 1;color:rgb(99 102 241 / var(--tw-text-opacity, 1))}.text-info-cyan{--tw-text-opacity: 1;color:rgb(64 196 255 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/20{color:hsl(var(--muted-foreground) / .2)}.text-muted-foreground\/25{color:hsl(var(--muted-foreground) / .25)}.text-muted-foreground\/30{color:hsl(var(--muted-foreground) / .3)}.text-muted-foreground\/40{color:hsl(var(--muted-foreground) / .4)}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-muted-foreground\/70{color:hsl(var(--muted-foreground) / .7)}.text-muted-foreground\/80{color:hsl(var(--muted-foreground) / .8)}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-400\/25{color:#fb923c40}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/70{color:hsl(var(--primary) / .7)}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-400\/70{color:#c084fcb3}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-400\/25{color:#f8717140}.text-red-400\/40{color:#f8717166}.text-red-400\/60{color:#f8717199}.text-red-400\/70{color:#f87171b3}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-transparent{color:transparent}.text-violet-400{--tw-text-opacity: 1;color:rgb(167 139 250 / var(--tw-text-opacity, 1))}.text-warning-amber{--tw-text-opacity: 1;color:rgb(255 171 0 / var(--tw-text-opacity, 1))}.text-warning-amber\/70{color:#ffab00b3}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-white\/20{color:#fff3}.text-white\/30{color:#ffffff4d}.text-white\/40{color:#fff6}.text-white\/50{color:#ffffff80}.text-white\/60{color:#fff9}.text-white\/80{color:#fffc}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-zinc-100{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.text-zinc-200{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.text-zinc-300{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.text-zinc-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1))}.text-zinc-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.text-zinc-600{--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1))}.text-zinc-700{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-primary{accent-color:hsl(var(--primary))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_hsl\(var\(--primary\)\/0\.3\)\]{--tw-shadow: 0 0 12px hsl(var(--primary)/.3);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_6px_currentColor\]{--tw-shadow: 0 0 6px currentColor;--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_hsl\(var\(--primary\)\)\]{--tw-shadow: 0 0 8px hsl(var(--primary));--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(0\,188\,212\,0\.15\)\]{--tw-shadow: 0 0 8px rgba(0,188,212,.15);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(0\,188\,212\,0\.5\)\]{--tw-shadow: 0 0 8px rgba(0,188,212,.5);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/40{--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-accent-blue\/40{--tw-ring-color: rgb(6 182 212 / .4)}.ring-border{--tw-ring-color: hsl(var(--border))}.ring-cyan-500\/30{--tw-ring-color: rgb(6 182 212 / .3)}.ring-green-500\/60{--tw-ring-color: rgb(34 197 94 / .6)}.ring-red-500\/50{--tw-ring-color: rgb(239 68 68 / .5)}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.\!transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[colors\,opacity\]{transition-property:colors,opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[grid-template-rows\]{transition-property:grid-template-rows;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.fade-in,.fade-in-0{--tw-enter-opacity: 0}.zoom-in-75{--tw-enter-scale: .75}.zoom-in-95{--tw-enter-scale: .95}.duration-150{animation-duration:.15s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-500{animation-duration:.5s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{animation-timing-function:cubic-bezier(0,0,.2,1)}.running{animation-play-state:running}.\[color\:\#000\]{color:#000}.\[writing-mode\:vertical-lr\]{writing-mode:vertical-lr}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}*{scrollbar-width:thin;scrollbar-color:transparent transparent}*:hover{scrollbar-color:#2a2a3a transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:3px;-webkit-transition:background .3s;transition:background .3s}*:hover::-webkit-scrollbar-thumb{background:#2a2a3a}*:hover::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground))}[data-theme=neon-glass]{--neon-cyan: 0, 188, 212;--neon-pink: 233, 30, 99;--neon-blue: 0, 188, 212;--neon-green: 0, 230, 118;--neon-red: 233, 30, 99;--neon-amber: 255, 171, 0;--neon-purple: 117, 109, 158}[data-theme=neon-glass] body{background:#050510}[data-theme=neon-glass] .neon-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}[data-theme=neon-glass] .neon-bg:before{content:"";position:absolute;width:900px;height:900px;top:-350px;left:10%;background:rgba(var(--neon-cyan),.12);border-radius:50%;filter:blur(120px);animation:orb-drift-1 25s ease-in-out infinite alternate}[data-theme=neon-glass] .neon-bg:after{content:"";position:absolute;width:800px;height:800px;bottom:-300px;right:-50px;background:rgba(var(--neon-pink),.1);border-radius:50%;filter:blur(120px);animation:orb-drift-2 30s ease-in-out infinite alternate}@keyframes orb-drift-1{0%{transform:translateY(0)}to{transform:translateY(30px)}}@keyframes orb-drift-2{0%{transform:translateY(0)}to{transform:translateY(-25px)}}[data-theme=neon-glass] .neon-grid-canvas{position:absolute;top:0;right:0;bottom:0;left:0}[data-radix-scroll-area-viewport]>div{display:block!important}[data-theme=neon-glass] .card-glass{backdrop-filter:blur(4px) saturate(1.2);-webkit-backdrop-filter:blur(4px) saturate(1.2);background:transparent!important;transition:border-color .3s ease,box-shadow .3s ease,backdrop-filter .3s ease;box-shadow:inset 0 1px #ffffff0f,0 8px 32px #0000001a}[data-theme=neon-glass] .card-glass:not(.scope-card){border:1px solid rgba(255,255,255,.08)!important}[data-theme=neon-glass] .card-glass.scope-card{border-top-color:#ffffff14;border-right-color:#ffffff14;border-bottom-color:#ffffff14}[data-theme=neon-glass] .card-glass:hover{backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);box-shadow:inset 0 1px #ffffff14,0 8px 32px #0006,0 8px 8px -4px rgba(var(--neon-cyan),.12),0 12px 50px -8px rgba(var(--neon-pink),.12)}[data-theme=neon-glass] .card-glass:not(.scope-card):not(.settings-panel):hover{border-color:rgba(var(--neon-cyan),.2)!important;box-shadow:0 0 4px rgba(var(--neon-cyan),.2),0 0 8px rgba(var(--neon-cyan),.1)}[data-theme=neon-glass] .card-glass.scope-card:hover{border-top-color:rgba(var(--neon-cyan),.3);border-right-color:rgba(var(--neon-cyan),.3);border-bottom-color:rgba(var(--neon-cyan),.3)}[data-theme=neon-glass] .card-glass-heavy{backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);background:transparent!important;border:1px solid rgba(var(--neon-cyan),.3)!important;box-shadow:inset 0 1px #ffffff14,0 8px 32px #0006,0 8px 8px -4px rgba(var(--neon-cyan),.12),0 12px 50px -8px rgba(var(--neon-pink),.12)}[data-theme=neon-glass] .card-glass.settings-panel{border:1px solid rgba(var(--neon-cyan),.25)!important}[data-theme=neon-glass] .card-glass.settings-panel:hover{border-color:rgba(var(--neon-cyan),.4)!important;box-shadow:inset 0 1px #ffffff14,0 0 20px -4px rgba(var(--neon-cyan),.15),0 0 40px -8px rgba(var(--neon-cyan),.08)}[data-theme=neon-glass] .sidebar-glass{backdrop-filter:blur(32px) saturate(1.6);-webkit-backdrop-filter:blur(32px) saturate(1.6);background:#08081873!important;border-right:1px solid rgba(var(--neon-blue),.12)!important;box-shadow:inset 0 0 40px rgba(var(--neon-cyan),.03),inset -1px 0 #ffffff0f,inset 0 1px #ffffff0a,4px 0 40px #00000080;position:relative;z-index:10}[data-theme=neon-glass] .sidebar-glass:after{content:"";position:absolute;top:0;right:-1px;bottom:0;width:1px;background:linear-gradient(180deg,transparent 0%,rgba(var(--neon-cyan),.7) 20%,rgba(var(--neon-pink),.5) 60%,rgba(var(--neon-cyan),.3) 85%,transparent 100%);box-shadow:0 0 12px rgba(var(--neon-cyan),.4),0 0 4px rgba(var(--neon-pink),.2)}[data-theme=neon-glass] .card-glass.neon-border-blue{backdrop-filter:none;-webkit-backdrop-filter:none}[data-theme=neon-glass] .column-header{backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4)}[data-theme=neon-glass] .neon-border-blue{border:1px solid transparent!important;background-image:linear-gradient(#0a0a1e8c,#0a0a1e8c),linear-gradient(135deg,rgba(var(--neon-cyan),.5),rgba(var(--neon-pink),.35),rgba(var(--neon-cyan),.2));background-origin:border-box;background-clip:padding-box,border-box}[data-theme=neon-glass] .neon-border-status{border:1px solid transparent!important;background-image:linear-gradient(#0a0a1e8c,#0a0a1e8c),linear-gradient(135deg,rgba(var(--neon-green),.4),rgba(var(--neon-cyan),.3));background-origin:border-box;background-clip:padding-box,border-box}[data-theme=neon-glass] .glow-blue{box-shadow:none}[data-theme=neon-glass] .glow-blue:hover{box-shadow:0 6px 20px -4px rgba(var(--neon-blue),.35)}[data-theme=neon-glass] .glow-green{box-shadow:none}[data-theme=neon-glass] .glow-green:hover{box-shadow:0 6px 20px -4px rgba(var(--neon-green),.35)}[data-theme=neon-glass] .glow-red{box-shadow:none}[data-theme=neon-glass] .glow-red:hover{box-shadow:0 6px 20px -4px rgba(var(--neon-red),.35)}[data-theme=neon-glass] .glow-amber{box-shadow:none}[data-theme=neon-glass] .glow-amber:hover{box-shadow:0 6px 20px -4px rgba(var(--neon-amber),.35)}[data-theme=neon-glass] .glow-purple{box-shadow:none}[data-theme=neon-glass] .glow-purple:hover{box-shadow:0 6px 20px -4px rgba(var(--neon-purple),.35)}[data-theme=neon-glass] .glow-blue-sm{box-shadow:none}[data-theme=neon-glass] .glow-blue-sm:hover{box-shadow:0 4px 12px -2px rgba(var(--neon-blue),.2)}[data-theme=neon-glass] .glow-blue-lg{box-shadow:0 8px 30px -4px rgba(var(--neon-blue),.3)}[data-theme=neon-glass] .glow-green-sm{box-shadow:none}[data-theme=neon-glass] .glow-green-sm:hover{box-shadow:0 4px 12px -2px rgba(var(--neon-green),.2)}[data-theme=neon-glass] .glow-green-lg{box-shadow:0 8px 30px -4px rgba(var(--neon-green),.3)}[data-theme=neon-glass] .glow-red-sm{box-shadow:none}[data-theme=neon-glass] .glow-red-sm:hover{box-shadow:0 4px 12px -2px rgba(var(--neon-red),.2)}[data-theme=neon-glass] .glow-red-lg{box-shadow:0 8px 30px -4px rgba(var(--neon-red),.3)}[data-theme=neon-glass] .animate-glow-pulse{animation:neon-glow-pulse 2s ease-in-out infinite}[data-theme=neon-glass] .animate-breathe{animation:neon-breathe 3s ease-in-out infinite}@keyframes neon-glow-pulse{0%,to{box-shadow:0 0 12px rgba(var(--neon-blue),.4);filter:drop-shadow(0 0 6px rgba(var(--neon-blue),.4))}50%{box-shadow:0 0 30px rgba(var(--neon-blue),.7);filter:drop-shadow(0 0 12px rgba(var(--neon-blue),.6))}}@keyframes neon-breathe{0%,to{box-shadow:0 0 20px rgba(var(--neon-green),.3)}50%{box-shadow:0 0 40px rgba(var(--neon-green),.55)}}[data-theme=neon-glass] .scope-card-critical{border-left:2px solid rgba(var(--neon-red),.6)!important;box-shadow:none}[data-theme=neon-glass] .scope-card-critical:hover{box-shadow:-4px 4px 18px -4px rgba(var(--neon-red),.3)}[data-theme=neon-glass] .scope-card-high{border-left:2px solid rgba(var(--neon-amber),.6)!important;box-shadow:none}[data-theme=neon-glass] .scope-card-high:hover{box-shadow:-4px 4px 18px -4px rgba(var(--neon-amber),.3)}[data-theme=neon-glass] .scope-card-medium{border-left:2px solid rgba(var(--neon-blue),.4)!important;box-shadow:none}[data-theme=neon-glass] .scope-card-medium:hover{box-shadow:-4px 4px 18px -4px rgba(var(--neon-blue),.25)}.section-markdown.section-markdown{font-size:11px;line-height:1.6}.section-markdown h1{font-size:13px}.section-markdown h2{font-size:12px}.section-markdown h3,.section-markdown h4,.section-markdown table{font-size:11px}.scope-card[style*=--project-color]{position:relative;overflow:hidden}.scope-card-dispatched[style*=--project-color]{overflow:visible}.scope-card[style*=--project-color]:after{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--project-color)}[data-theme=neon-glass] .scope-card[style*=--project-color]{box-shadow:inset 5px 0 8px -5px var(--project-color)}[data-theme=neon-glass] .scope-card{transition:transform .2s ease,box-shadow .25s ease}[data-theme=neon-glass] .scope-card:hover{transform:translateY(-1px)}[data-theme=neon-glass] .scope-card.card-glass{backdrop-filter:blur(4px) saturate(1.2);-webkit-backdrop-filter:blur(4px) saturate(1.2)}[data-theme=neon-glass] [role=dialog] .card-glass,[data-theme=neon-glass] [role=dialog] .card-glass:hover{backdrop-filter:none;-webkit-backdrop-filter:none}[data-theme=neon-glass] .scope-card-ghost{border:1px dashed rgba(168,85,247,.35)!important;border-left:2px dashed rgba(168,85,247,.5)!important;background:#a855f708!important;position:relative;overflow:hidden}[data-theme=neon-glass] .scope-card-ghost:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,rgba(168,85,247,.05) 0%,transparent 50%,rgba(0,188,212,.03) 100%);pointer-events:none}[data-theme=neon-glass] .scope-card-ghost:hover{border-color:#a855f78c!important;box-shadow:0 4px 20px #a855f726;opacity:1!important}@keyframes ghost-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.ghost-shimmer{background-image:linear-gradient(90deg,transparent 0%,rgba(168,85,247,.06) 50%,transparent 100%);background-size:200% 100%;animation:ghost-shimmer 3s ease-in-out infinite}[data-theme=neon-glass] .scope-cat-feature,[data-theme=neon-glass] .scope-cat-feature:hover{border-left-color:#536dfe!important}[data-theme=neon-glass] .scope-cat-bugfix,[data-theme=neon-glass] .scope-cat-bugfix:hover{border-left-color:#ff1744!important}[data-theme=neon-glass] .scope-cat-refactor,[data-theme=neon-glass] .scope-cat-refactor:hover{border-left-color:#8b5cf6!important}[data-theme=neon-glass] .scope-cat-infrastructure,[data-theme=neon-glass] .scope-cat-infrastructure:hover{border-left-color:#40c4ff!important}[data-theme=neon-glass] .scope-cat-docs,[data-theme=neon-glass] .scope-cat-docs:hover{border-left-color:#6b7280!important}[data-theme=neon-glass] .scope-cat-feature:hover{box-shadow:inset 12px 0 16px -10px #536dfe4d,0 8px 8px -4px rgba(var(--neon-cyan),.12)}[data-theme=neon-glass] .scope-cat-bugfix:hover{box-shadow:inset 12px 0 16px -10px #ff17444d,0 8px 8px -4px rgba(var(--neon-cyan),.12)}[data-theme=neon-glass] .scope-cat-refactor:hover{box-shadow:inset 12px 0 16px -10px #8b5cf64d,0 8px 8px -4px rgba(var(--neon-cyan),.12)}[data-theme=neon-glass] .scope-cat-infrastructure:hover{box-shadow:inset 12px 0 16px -10px #40c4ff4d,0 8px 8px -4px rgba(var(--neon-cyan),.12)}[data-theme=neon-glass] .scope-cat-docs:hover{box-shadow:inset 12px 0 16px -10px #6b72804d,0 8px 8px -4px rgba(var(--neon-cyan),.12)}.scope-card-dispatched{position:relative;overflow:visible}.dispatch-border-overlay{position:absolute;top:-1.5px;right:-1.5px;bottom:-1.5px;left:-1.5px;border-radius:inherit;padding:1.5px;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}.dispatch-pulse{animation:dispatch-pulse 2s ease-in-out infinite}@keyframes dispatch-pulse{0%,to{opacity:1}50%{opacity:.4}}.scope-card-abandoned{border:1.5px dashed rgba(245,158,11,.5)!important}.scope-card-abandoned:hover{border-color:#f59e0bb3!important}[data-theme=neon-glass] .scope-card-abandoned{border:1.5px dashed rgba(var(--neon-amber),.45)!important;box-shadow:0 0 8px rgba(var(--neon-amber),.08)}[data-theme=neon-glass] .scope-card-abandoned:hover{border-color:rgba(var(--neon-amber),.65)!important;box-shadow:0 4px 16px rgba(var(--neon-amber),.12)}.batch-group-dispatched{position:relative;overflow:visible}.batch-group-dispatched:before{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border-radius:inherit;padding:2px;background:conic-gradient(from var(--dispatch-angle, 0deg),transparent 0%,rgba(255,171,0,.7) 10%,rgba(255,171,0,.3) 20%,transparent 30%);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:1}[data-theme=neon-glass] .batch-group-dispatched:before{padding:2px;background:conic-gradient(from var(--dispatch-angle, 0deg),transparent 0%,rgba(var(--neon-amber),.9) 8%,rgba(var(--neon-amber),.5) 16%,rgba(var(--neon-cyan),.15) 24%,transparent 32%)}[data-theme=neon-glass] .effort-ghost{background:transparent!important;border-color:rgba(var(--neon-cyan),.25)!important;color:rgba(var(--neon-cyan),.7)!important;box-shadow:none!important}[data-theme=neon-glass] .glass-pill{background:rgba(var(--neon-blue),.08)!important;border:1px solid rgba(var(--neon-blue),.2)!important}.filter-popover-glass,[data-theme=neon-glass] .filter-popover-glass{backdrop-filter:blur(4px) saturate(1.2);-webkit-backdrop-filter:blur(4px) saturate(1.2);background:transparent!important;border:1px solid rgba(255,255,255,.08)!important;box-shadow:inset 0 1px #ffffff0f,0 8px 32px #0000001a}[data-theme=neon-glass] [role=dialog],[data-theme=neon-glass] [role=dialog]:hover{backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);box-shadow:inset 0 1px #ffffff14,0 8px 32px #0006,0 8px 8px -4px rgba(var(--neon-cyan),.12),0 12px 50px -8px rgba(var(--neon-pink),.12)}[data-theme=neon-glass] .dialog-overlay-glass{backdrop-filter:blur(4px) saturate(1.2);-webkit-backdrop-filter:blur(4px) saturate(1.2);background:#0000004d!important}[data-theme=neon-glass] .project-tab-bar{backdrop-filter:blur(4px) saturate(1.2);-webkit-backdrop-filter:blur(4px) saturate(1.2);background:transparent!important;border:1px solid rgba(255,255,255,.08)!important;transition:border-color .3s ease,box-shadow .3s ease,backdrop-filter .3s ease;box-shadow:inset 0 1px #ffffff0f,0 8px 32px #0000001a}[data-theme=neon-glass] .project-tab-bar:hover{backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border-color:rgba(var(--neon-cyan),.3)!important;box-shadow:inset 0 1px #ffffff14,0 8px 32px #0006,0 8px 8px -4px rgba(var(--neon-cyan),.12),0 12px 50px -8px rgba(var(--neon-pink),.12)}[data-theme=neon-glass] [role=tablist] [data-state=active]{box-shadow:0 2px 15px rgba(var(--neon-blue),.4);background:rgba(var(--neon-blue),.12)!important;border-bottom:1px solid rgba(var(--neon-blue),.5)}[data-theme=neon-glass] .gate-glow-pass{filter:drop-shadow(0 0 8px rgba(var(--neon-green),.7)) drop-shadow(0 0 3px rgba(var(--neon-green),.5))}[data-theme=neon-glass] .gate-glow-fail{filter:drop-shadow(0 0 8px rgba(var(--neon-red),.7)) drop-shadow(0 0 3px rgba(var(--neon-red),.5))}.nav-item-square{border:1px solid transparent;transition:background-color .5s ease,border-color .5s ease,box-shadow .5s ease}[data-theme=neon-glass] .nav-item-square:not(.nav-icon-active-glow):hover{background:rgba(var(--neon-cyan),.06);border-color:rgba(var(--neon-cyan),.15);box-shadow:0 0 14px rgba(var(--neon-cyan),.12)}[data-theme=neon-glass] .nav-icon-active-glow{background:rgba(var(--neon-cyan),.08)!important;border:1px solid rgba(var(--neon-cyan),.35)!important;box-shadow:0 0 20px rgba(var(--neon-cyan),.25),0 0 6px rgba(var(--neon-cyan),.15),inset 0 0 12px rgba(var(--neon-cyan),.06);animation:nav-active-breathe 3s ease-in-out infinite}@keyframes nav-active-breathe{0%,to{box-shadow:0 0 20px rgba(var(--neon-cyan),.25),0 0 6px rgba(var(--neon-cyan),.15),inset 0 0 12px rgba(var(--neon-cyan),.06)}50%{box-shadow:0 0 28px rgba(var(--neon-cyan),.35),0 0 10px rgba(var(--neon-cyan),.25),inset 0 0 16px rgba(var(--neon-cyan),.1)}}.nav-icon-active-glow .nav-item-label{max-height:12px;margin-top:4px;opacity:1}[data-theme=neon-glass] .nav-item-label{text-shadow:0 0 8px rgba(var(--neon-cyan),.5)}[data-theme=neon-glass] .agent-glow-attacker,[data-theme=neon-glass] .agent-glow-chaos,[data-theme=neon-glass] .agent-glow-frontend,[data-theme=neon-glass] .agent-glow-architect,[data-theme=neon-glass] .agent-glow-devops,[data-theme=neon-glass] .agent-glow-rules{box-shadow:none}[data-theme=neon-glass] .agent-glow-attacker:hover{box-shadow:0 0 14px rgba(var(--neon-red),.35)}[data-theme=neon-glass] .agent-glow-chaos:hover{box-shadow:0 0 14px #f9731659}[data-theme=neon-glass] .agent-glow-frontend:hover{box-shadow:0 0 14px rgba(var(--neon-pink),.35)}[data-theme=neon-glass] .agent-glow-architect:hover{box-shadow:0 0 14px rgba(var(--neon-blue),.35)}[data-theme=neon-glass] .agent-glow-devops:hover{box-shadow:0 0 14px rgba(var(--neon-cyan),.35)}[data-theme=neon-glass] .agent-glow-rules:hover{box-shadow:0 0 10px #6b728040}[data-theme=neon-glass] .pipeline-healthy{box-shadow:none;border-color:rgba(var(--neon-green),.25)!important}[data-theme=neon-glass] .pipeline-healthy:hover{box-shadow:0 0 20px rgba(var(--neon-green),.25)}[data-theme=neon-glass] .pipeline-deploying{box-shadow:none;border-color:rgba(var(--neon-blue),.25)!important}[data-theme=neon-glass] .pipeline-deploying:hover{box-shadow:0 0 20px rgba(var(--neon-blue),.25)}[data-theme=neon-glass] .pipeline-failed{box-shadow:none;border-color:rgba(var(--neon-red),.25)!important}[data-theme=neon-glass] .pipeline-failed:hover{box-shadow:0 0 20px rgba(var(--neon-red),.25)}[data-theme=neon-glass] .timeline-dot-glow{box-shadow:0 0 15px rgba(var(--neon-blue),.6),0 0 5px rgba(var(--neon-blue),.4)}[data-theme=neon-glass] .neon-text-blue{color:rgb(var(--neon-blue));text-shadow:0 0 12px rgba(var(--neon-blue),.6),0 0 40px rgba(var(--neon-blue),.25)}[data-theme=neon-glass] .sidebar-glass [role=separator],[data-theme=neon-glass] .sidebar-glass hr{border-color:rgba(var(--neon-blue),.12)!important;box-shadow:0 0 10px rgba(var(--neon-blue),.06)}[data-theme=neon-glass] .logo-neon{background:linear-gradient(135deg,rgb(var(--neon-cyan)),rgb(var(--neon-pink)))!important;box-shadow:0 0 25px rgba(var(--neon-cyan),.6),0 0 10px rgba(var(--neon-pink),.4);border:none!important;transition:box-shadow .3s ease}[data-theme=neon-glass] .logo-neon:hover{box-shadow:0 0 35px rgba(var(--neon-cyan),.8),0 0 15px rgba(var(--neon-pink),.5),0 0 60px rgba(var(--neon-cyan),.2)}.version-pulse-dot{animation:version-pulse 2s ease-in-out infinite}@keyframes version-pulse{0%,to{opacity:1;box-shadow:0 0 4px #34d39966}50%{opacity:.5;box-shadow:0 0 8px #34d399b3}}[data-theme=neon-glass] .version-badge{text-shadow:0 0 6px rgba(var(--neon-cyan),.3)}[data-theme=neon-glass] .version-badge:hover{border-color:rgba(var(--neon-cyan),.2)!important;background:rgba(var(--neon-cyan),.04)}[data-theme=neon-glass] .version-pulse-dot{box-shadow:0 0 6px rgba(var(--neon-green),.6)}[data-theme=neon-glass] .connection-glow{animation:neon-connection-pulse 2s ease-in-out infinite}@keyframes neon-connection-pulse{0%,to{filter:drop-shadow(0 0 5px rgba(var(--neon-green),.6))}50%{filter:drop-shadow(0 0 14px rgba(var(--neon-green),1))}}[data-theme=neon-glass] .toggle-neon-active{text-shadow:0 0 10px rgba(var(--neon-cyan),.7)}[data-theme=neon-glass] .toggle-neon-active svg{filter:drop-shadow(0 0 6px rgba(var(--neon-cyan),.5)) drop-shadow(0 0 12px rgba(var(--neon-pink),.3))}[data-theme=neon-glass] *{scrollbar-color:transparent transparent}[data-theme=neon-glass] *:hover{scrollbar-color:rgba(var(--neon-blue),.25) transparent}[data-theme=neon-glass] ::-webkit-scrollbar-track{background:transparent}[data-theme=neon-glass] ::-webkit-scrollbar-thumb{background:transparent;border-radius:3px}[data-theme=neon-glass] *:hover::-webkit-scrollbar-thumb{background:rgba(var(--neon-blue),.25)}[data-theme=neon-glass] *:hover::-webkit-scrollbar-thumb:hover{background:rgba(var(--neon-blue),.4)}.swim-lane-header{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-bottom:1px solid rgba(255,255,255,.04)}.swim-cell{transition:background-color .15s ease,border-color .15s ease}.swim-cell:hover{background:#ffffff04}[data-theme=neon-glass] .swim-lane-header{backdrop-filter:blur(8px) saturate(1.2);-webkit-backdrop-filter:blur(8px) saturate(1.2);border-bottom-color:rgba(var(--neon-cyan),.08)}[data-theme=neon-glass] .swim-lane-label{text-shadow:0 0 8px rgba(var(--neon-cyan),.3)}[data-theme=neon-glass] .swim-cell{border-color:rgba(var(--neon-cyan),.06)}[data-theme=neon-glass] .swim-cell:hover{background:rgba(var(--neon-cyan),.03);border-color:rgba(var(--neon-cyan),.12)}[data-theme=neon-glass] .ticker-glass{backdrop-filter:blur(4px) saturate(1.2);-webkit-backdrop-filter:blur(4px) saturate(1.2);background:transparent!important;border-top:1px solid rgba(255,255,255,.08)!important;box-shadow:inset 0 1px #ffffff0f,0 -8px 32px #0000001a}[data-reduce-motion=true] *,[data-reduce-motion=true] *:before,[data-reduce-motion=true] *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}[data-compact=true] .card-glass{padding:.5rem}[data-compact=true] .p-4{padding:.625rem}[data-compact=true] .gap-3{gap:.375rem}[data-compact=true] .gap-4{gap:.5rem}[data-compact=true] .py-2{padding-top:.25rem;padding-bottom:.25rem}@keyframes selection-glow-in{0%{box-shadow:0 0 0 transparent}to{box-shadow:0 0 6px var(--glow-color)}}@keyframes selection-glow-pulse{0%,to{box-shadow:0 0 8px var(--glow-color),0 0 16px var(--glow-color-wide, var(--glow-color))}50%{box-shadow:0 0 18px var(--glow-color),0 0 36px var(--glow-color),0 0 52px var(--glow-color-wide, var(--glow-color))}}.glow-selected{animation:selection-glow-in .4s ease-out forwards}.glow-selected-pulse{animation:selection-glow-in .4s ease-out,selection-glow-pulse .8s ease-in-out .4s infinite}.landing-root{min-height:100vh;background:#050510;color:#e0e0e0;font-family:Space Grotesk,sans-serif;overflow-x:hidden;position:relative}.landing-nav-transparent{background:transparent}.landing-nav-scrolled{background:#050510d9;backdrop-filter:blur(24px) saturate(1.4);-webkit-backdrop-filter:blur(24px) saturate(1.4);border-bottom:1px solid rgba(0,188,212,.1);box-shadow:0 4px 30px #0006}.landing-nav-logo{width:36px;height:36px;border-radius:10px;background:#00bcd41a;border:1px solid rgba(0,188,212,.2);display:flex;align-items:center;justify-content:center}.landing-nav-cta{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:8px;font-size:13px;font-weight:500;color:#fff;background:#00bcd41a;border:1px solid rgba(0,188,212,.25);transition:all .3s ease}.landing-nav-cta:hover{background:#00bcd433;border-color:#00bcd480;box-shadow:0 0 20px #00bcd426}.landing-hero{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:120px 24px 80px;overflow:hidden}.landing-hero-orb{position:absolute;border-radius:50%;filter:blur(120px);pointer-events:none}.landing-hero-orb-1{width:800px;height:800px;top:-300px;left:-200px;background:#00bcd41f;animation:landing-orb-float 20s ease-in-out infinite alternate}.landing-hero-orb-2{width:600px;height:600px;bottom:-200px;right:-100px;background:#e91e631a;animation:landing-orb-float 25s ease-in-out infinite alternate-reverse}.landing-hero-orb-3{width:400px;height:400px;top:30%;right:10%;background:#756d9e14;animation:landing-orb-float 30s ease-in-out infinite alternate}@keyframes landing-orb-float{0%{transform:translate(0) scale(1)}50%{transform:translate(30px,-20px) scale(1.05)}to{transform:translate(-20px,30px) scale(.95)}}.landing-hero-content{position:relative;z-index:2;text-align:center;max-width:800px}.landing-hero-visual{position:absolute;z-index:1;width:700px;height:700px;top:50%;left:50%;transform:translate(-50%,-50%);opacity:.4;pointer-events:none}.landing-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 16px;border-radius:100px;font-size:13px;color:#ffffffb3;background:#00bcd414;border:1px solid rgba(0,188,212,.2);margin-bottom:32px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.landing-headline{font-size:clamp(48px,8vw,88px);font-weight:700;line-height:1.05;letter-spacing:-.03em;color:#fff;margin-bottom:24px}.landing-headline-gradient{background:linear-gradient(135deg,#4dd0e1,#f48fb1,#4dd0e1);background-size:200% 200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:landing-gradient-shift 6s ease-in-out infinite;display:inline-block}.landing-gradient-text{background:linear-gradient(135deg,#4dd0e1,#f48fb1);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@keyframes landing-gradient-shift{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}.landing-subtitle{font-size:clamp(16px,2vw,20px);color:#fff9;line-height:1.6;margin-bottom:40px;max-width:600px;margin-left:auto;margin-right:auto}.landing-cta-row{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin-bottom:32px}.landing-cta-primary{display:inline-flex;align-items:center;gap:8px;padding:12px 28px;border-radius:12px;font-size:15px;font-weight:600;color:#fff;background:linear-gradient(135deg,#00bcd433,#e91e6326);border:1px solid rgba(0,188,212,.35);transition:all .4s ease;position:relative;overflow:hidden}.landing-cta-primary:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(135deg,#00bcd44d,#e91e6333);opacity:0;transition:opacity .4s ease}.landing-cta-primary:hover:before{opacity:1}.landing-cta-primary:hover{border-color:#00bcd499;box-shadow:0 0 30px #00bcd433,0 0 60px #e91e631a;transform:translateY(-2px)}.landing-cta-primary>*{position:relative;z-index:1}.landing-cta-secondary{display:inline-flex;align-items:center;gap:6px;padding:12px 24px;border-radius:12px;font-size:15px;font-weight:500;color:#fff9;border:1px solid rgba(255,255,255,.1);transition:all .3s ease}.landing-cta-secondary:hover{color:#fff;border-color:#ffffff40;background:#ffffff0d}.landing-install{display:inline-flex;align-items:center;padding:10px 24px;border-radius:10px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);font-family:JetBrains Mono,monospace;font-size:14px;color:#ffffff80;letter-spacing:-.02em}.landing-scroll-indicator{position:absolute;bottom:32px;left:50%;transform:translate(-50%);z-index:5}.landing-orbital-rings{position:relative;width:100%;height:100%}.landing-ring{position:absolute;border-radius:50%;border:1px solid}.landing-ring-1{width:80%;height:80%;top:10%;left:10%;border-color:#00bcd426}.landing-ring-2{width:60%;height:60%;top:20%;left:20%;border-color:#e91e631f}.landing-ring-3{width:100%;height:100%;top:0;left:0;border-color:#756d9e14}.landing-ring-dot{position:absolute;width:6px;height:6px;border-radius:50%;background:#00bcd4;box-shadow:0 0 10px #00bcd499,0 0 30px #00bcd44d;transform:translate(-50%,-50%)}.landing-ring-dot-pink{background:#e91e63;box-shadow:0 0 10px #e91e6399,0 0 30px #e91e634d}.landing-ring-dot-green{background:#00e676;box-shadow:0 0 10px #00e67699,0 0 30px #00e6764d}.landing-center-glow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(0,188,212,.3) 0%,rgba(233,30,99,.1) 50%,transparent 70%);filter:blur(30px);animation:landing-center-pulse 4s ease-in-out infinite}@keyframes landing-center-pulse{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.6}50%{transform:translate(-50%,-50%) scale(1.3);opacity:1}}.landing-stats{position:relative;z-index:5;border-top:1px solid rgba(255,255,255,.06);border-bottom:1px solid rgba(255,255,255,.06);background:#0a0a1999;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.landing-stats-inner{max-width:900px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:40px;padding:32px 24px}.landing-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.landing-stat-value{font-size:32px;font-weight:700;color:#fff;letter-spacing:-.02em}.landing-stat-label{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:#ffffff59}.landing-stat-divider{width:1px;height:40px;background:linear-gradient(180deg,transparent,rgba(0,188,212,.3),transparent)}.landing-section{padding:80px 24px;position:relative;z-index:5}.landing-section-full{padding:80px 0;position:relative;z-index:5}.landing-section-inner{max-width:1100px;margin:0 auto}.landing-section-tag{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.15em;color:#00bcd4;margin-bottom:16px;text-align:center}.landing-section-title{font-size:clamp(32px,5vw,52px);font-weight:700;line-height:1.1;letter-spacing:-.03em;color:#fff;margin-bottom:20px;text-align:center}.landing-section-desc{font-size:clamp(15px,1.8vw,18px);color:#ffffff8c;line-height:1.7;max-width:600px;margin:0 auto 60px;text-align:center}.landing-features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:24px;margin-top:60px}.landing-feature-card{position:relative;padding:32px;border-radius:16px;background:#0f0f1ecc;border:1px solid rgba(255,255,255,.1);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;transition:border-color .4s ease,box-shadow .4s ease,background .4s ease}.landing-feature-card:hover{border-color:#00bcd44d;background:#0f0f23e6;box-shadow:0 8px 40px #0006,0 0 40px #00bcd414}.landing-feature-icon-wrap{width:48px;height:48px;border-radius:12px;border:1px solid;display:flex;align-items:center;justify-content:center;margin-bottom:20px}.landing-feature-title{font-size:18px;font-weight:600;color:#fff;margin-bottom:8px}.landing-feature-desc{font-size:14px;color:#ffffff8c;line-height:1.6}.landing-feature-glow{position:absolute;bottom:-60px;left:50%;transform:translate(-50%);width:200%;height:120px;opacity:0;transition:opacity .4s ease;pointer-events:none}.landing-feature-card:hover .landing-feature-glow{opacity:1}.landing-showcase-card{flex-shrink:0;width:280px;height:200px;border-radius:16px;border:1px solid rgba(255,255,255,.06);display:flex;flex-direction:column;align-items:center;justify-content:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:default}.landing-steps-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:40px;margin-top:60px}.landing-step{text-align:center;padding:32px 24px}.landing-step-number{font-size:48px;font-weight:800;letter-spacing:-.04em;background:linear-gradient(135deg,#00bcd44d,#e91e6333);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:16px}.landing-step-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:14px;background:#00bcd41a;border:1px solid rgba(0,188,212,.2);color:#00bcd4}.landing-split{display:flex;align-items:center;gap:60px}@media(max-width:768px){.landing-split{flex-direction:column;gap:40px}}.landing-terminal{border-radius:12px;overflow:hidden;background:#0a0a14;border:1px solid rgba(255,255,255,.08);box-shadow:0 20px 60px #00000080,0 0 40px #00bcd40d}.landing-terminal-header{display:flex;align-items:center;gap:8px;padding:12px 16px;background:#ffffff08;border-bottom:1px solid rgba(255,255,255,.06)}.landing-terminal-dot{width:12px;height:12px;border-radius:50%}.landing-terminal-dot-red{background:#ff5f57}.landing-terminal-dot-yellow{background:#ffbd2e}.landing-terminal-dot-green{background:#28c840}.landing-terminal-title{margin-left:8px;font-size:12px;color:#ffffff4d;font-family:JetBrains Mono,monospace}.landing-terminal-body{padding:20px;min-height:300px;font-family:JetBrains Mono,monospace;font-size:13px;line-height:1.7}.landing-terminal-line{color:#fff9;white-space:pre}.landing-terminal-cursor{color:#00bcd4;font-size:16px}.landing-dx-features{display:flex;flex-direction:column;gap:12px;margin-top:32px}.landing-dx-item{display:flex;align-items:center;gap:10px;font-size:14px;color:#fff9}.landing-arch-stack{display:flex;flex-direction:column;gap:16px}.landing-arch-layer{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:12px;background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-left:3px solid;transition:all .3s ease}.landing-arch-layer:hover{background:#ffffff0d}.landing-arch-icon{width:40px;height:40px;border-radius:10px;background:#ffffff0a;display:flex;align-items:center;justify-content:center;flex-shrink:0}.landing-final-cta{position:relative;padding:160px 24px;overflow:hidden}.landing-final-cta-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 30% 50%,rgba(0,188,212,.08) 0%,transparent 60%),radial-gradient(ellipse at 70% 50%,rgba(233,30,99,.06) 0%,transparent 60%);pointer-events:none}.landing-final-headline{font-size:clamp(40px,6vw,72px);font-weight:700;line-height:1.05;letter-spacing:-.03em;color:#fff;margin-bottom:24px}.landing-footer{padding:32px 0;border-top:1px solid rgba(255,255,255,.06);position:relative;z-index:5}@media(max-width:640px){.landing-stats-inner{flex-wrap:wrap;gap:24px}.landing-stat-divider{display:none}.landing-features-grid,.landing-steps-grid{grid-template-columns:1fr}.landing-hero-visual{width:400px;height:400px}}.marker\:text-muted-foreground *::marker{color:hsl(var(--muted-foreground))}.marker\:text-muted-foreground::marker{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground\/40::-moz-placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/40::placeholder{color:hsl(var(--muted-foreground) / .4)}.placeholder\:text-muted-foreground\/50::-moz-placeholder{color:hsl(var(--muted-foreground) / .5)}.placeholder\:text-muted-foreground\/50::placeholder{color:hsl(var(--muted-foreground) / .5)}.placeholder\:text-muted-foreground\/60::-moz-placeholder{color:hsl(var(--muted-foreground) / .6)}.placeholder\:text-muted-foreground\/60::placeholder{color:hsl(var(--muted-foreground) / .6)}.placeholder\:text-zinc-600::-moz-placeholder{--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1))}.placeholder\:text-zinc-600::placeholder{--tw-text-opacity: 1;color:rgb(82 82 91 / var(--tw-text-opacity, 1))}.placeholder\:text-zinc-700::-moz-placeholder{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.placeholder\:text-zinc-700::placeholder{--tw-text-opacity: 1;color:rgb(63 63 70 / var(--tw-text-opacity, 1))}.first\:mt-0:first-child{margin-top:0}.last\:border-0:last-child{border-width:0px}.last\:border-b-0:last-child{border-bottom-width:0px}.even\:bg-surface\/30:nth-child(2n){background-color:#12121a4d}.focus-within\:border-accent-blue\/50:focus-within{border-color:#06b6d480}.focus-within\:border-white\/20:focus-within{border-color:#fff3}.focus-within\:border-zinc-500:focus-within{--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-\[rgba\(0\,188\,212\,0\.3\)\]:hover{border-color:#00bcd44d}.hover\:border-\[rgba\(var\(--neon-cyan\)\,0\.2\)\]:hover{border-color:rgba(var(--neon-cyan),.2)}.hover\:border-cyan-500\/40:hover{border-color:#06b6d466}.hover\:border-muted-foreground\/40:hover{border-color:hsl(var(--muted-foreground) / .4)}.hover\:border-primary\/20:hover{border-color:hsl(var(--primary) / .2)}.hover\:border-primary\/30:hover{border-color:hsl(var(--primary) / .3)}.hover\:border-purple-500\/50:hover{border-color:#a855f780}.hover\:border-white\/40:hover{border-color:#fff6}.hover\:border-zinc-600:hover{--tw-border-opacity: 1;border-color:rgb(82 82 91 / var(--tw-border-opacity, 1))}.hover\:border-zinc-700:hover{--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-amber-500\/20:hover{background-color:#f59e0b33}.hover\:bg-amber-500\/30:hover{background-color:#f59e0b4d}.hover\:bg-ask-red\/20:hover{background-color:#ff174433}.hover\:bg-blue-500\/20:hover{background-color:#3b82f633}.hover\:bg-border:hover{background-color:hsl(var(--border))}.hover\:bg-cyan-500:hover{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity, 1))}.hover\:bg-cyan-500\/10:hover{background-color:#06b6d41a}.hover\:bg-cyan-500\/20:hover{background-color:#06b6d433}.hover\:bg-cyan-700:hover{--tw-bg-opacity: 1;background-color:rgb(14 116 144 / var(--tw-bg-opacity, 1))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive) / .8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-500\/10:hover{background-color:#10b9811a}.hover\:bg-emerald-500\/20:hover{background-color:#10b98133}.hover\:bg-green-600\/30:hover{background-color:#16a34a4d}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/20:hover{background-color:hsl(var(--muted) / .2)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted) / .3)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-muted\/80:hover{background-color:hsl(var(--muted) / .8)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-purple-500\/10:hover{background-color:#a855f71a}.hover\:bg-red-500:hover{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-red-500\/30:hover{background-color:#ef44444d}.hover\:bg-secondary\/60:hover{background-color:hsl(var(--secondary) / .6)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-surface-light:hover{--tw-bg-opacity: 1;background-color:rgb(26 26 40 / var(--tw-bg-opacity, 1))}.hover\:bg-surface-light\/30:hover{background-color:#1a1a284d}.hover\:bg-surface-light\/50:hover{background-color:#1a1a2880}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-white\/\[0\.02\]:hover{background-color:#ffffff05}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}.hover\:bg-white\/\[0\.04\]:hover{background-color:#ffffff0a}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}.hover\:bg-zinc-700:hover{--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity, 1))}.hover\:bg-zinc-800:hover{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.hover\:bg-zinc-900\/50:hover{background-color:#18181b80}.hover\:bg-zinc-900\/70:hover{background-color:#18181bb3}.hover\:text-\[\#FFFFFF\]:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:text-accent-blue:hover{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.hover\:text-accent-blue\/80:hover{color:#06b6d4cc}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-amber-400:hover{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.hover\:text-ask-red:hover{--tw-text-opacity: 1;color:rgb(255 23 68 / var(--tw-text-opacity, 1))}.hover\:text-cyan-400:hover{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-destructive\/80:hover{color:hsl(var(--destructive) / .8)}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-300:hover{--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.hover\:text-muted-foreground:hover{color:hsl(var(--muted-foreground))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-primary\/70:hover{color:hsl(var(--primary) / .7)}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-200:hover{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.hover\:text-red-300:hover{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:text-white\/60:hover{color:#fff9}.hover\:text-zinc-100:hover{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.hover\:text-zinc-200:hover{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.hover\:text-zinc-300:hover{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.hover\:text-zinc-500:hover{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[0_0_8px_currentColor\]:hover{--tw-shadow: 0 0 8px currentColor;--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:brightness-125:hover{--tw-brightness: brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:border-\[rgba\(0\,188\,212\,0\.5\)\]:focus{border-color:#00bcd480}.focus\:border-accent-blue\/50:focus{border-color:#06b6d480}.focus\:border-primary\/50:focus{border-color:hsl(var(--primary) / .5)}.focus\:border-zinc-500:focus{--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1))}.focus\:border-zinc-600:focus{--tw-border-opacity: 1;border-color:rgb(82 82 91 / var(--tw-border-opacity, 1))}.focus\:shadow-\[0_0_8px_rgba\(0\,188\,212\,0\.15\)\]:focus{--tw-shadow: 0 0 8px rgba(0,188,212,.15);--tw-shadow-colored: 0 0 8px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-cyan-500\/50:focus{--tw-ring-color: rgb(6 182 212 / .5)}.focus\:ring-primary\/50:focus{--tw-ring-color: hsl(var(--primary) / .5)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-0:focus{--tw-ring-offset-width: 0px}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:mt-1{margin-top:.25rem}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:max-h-3{max-height:.75rem}.group:hover .group-hover\:translate-x-1{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/scope-card:hover .group-hover\/scope-card\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.data-\[state\=active\]\:bg-surface-light[data-state=active]{--tw-bg-opacity: 1;background-color:rgb(26 26 40 / var(--tw-bg-opacity, 1))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity: initial;--tw-enter-scale: initial;--tw-enter-rotate: initial;--tw-enter-translate-x: initial;--tw-enter-translate-y: initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity: initial;--tw-exit-scale: initial;--tw-exit-rotate: initial;--tw-exit-translate-x: initial;--tw-exit-translate-y: initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity: 0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity: 0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale: .95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale: .95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y: -.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x: .5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x: -.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y: .5rem}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x: -50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y: -48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x: -50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y: -48%}@media(min-width:640px){.sm\:block{display:block}.sm\:w-1\/3{width:33.333333%}.sm\:w-\[130px\]{width:130px}.sm\:w-\[140px\]{width:140px}.sm\:max-w-\[480px\]{max-width:480px}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:self-auto{align-self:auto}.sm\:pr-4{padding-right:1rem}.sm\:text-left{text-align:left}}@media(min-width:768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-56{width:14rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:gap-1{gap:.25rem}}@media(min-width:1024px){.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:columns-2{-moz-columns:2;columns:2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:\[column-span\:all\]{-moz-column-span:all;column-span:all}}.\[\&\>\*\]\:mb-4>*{margin-bottom:1rem}.\[\&\>\*\]\:break-inside-avoid>*{-moz-column-break-inside:avoid;break-inside:avoid}@media(min-width:640px){.sm\:\[\&\>\*\]\:mb-6>*{margin-bottom:1.5rem}}.\[\&\>button\:hover\]\:\!bg-zinc-800>button:hover{--tw-bg-opacity: 1 !important;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))!important}.\[\&\>button\]\:\!border-zinc-800>button{--tw-border-opacity: 1 !important;border-color:rgb(39 39 42 / var(--tw-border-opacity, 1))!important}.\[\&\>button\]\:\!bg-zinc-900>button{--tw-bg-opacity: 1 !important;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))!important}.\[\&\>button\]\:\!fill-zinc-400>button{fill:#a1a1aa!important}.\[\&\>option\]\:bg-background>option{background-color:hsl(var(--background))}.\[\&_td\:first-child\]\:whitespace-nowrap td:first-child{white-space:nowrap}.\[\&_td\:first-child\]\:pr-3 td:first-child{padding-right:.75rem}.\[\&_td\:first-child\]\:text-muted-foreground td:first-child{color:hsl(var(--muted-foreground))}.\[\&_td\:last-child\]\:break-all td:last-child{word-break:break-all}.\[\&_td\]\:border-b td{border-bottom-width:1px}.\[\&_td\]\:border-border\/20 td{border-color:hsl(var(--border) / .2)}.\[\&_td\]\:border-border\/30 td{border-color:hsl(var(--border) / .3)}.\[\&_td\]\:py-1\.5 td{padding-top:.375rem;padding-bottom:.375rem}.\[\&_td\]\:py-2 td{padding-top:.5rem;padding-bottom:.5rem}.\[\&_td\]\:align-top td{vertical-align:top}