@openez-graph/cli 0.9.1 → 0.10.0

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.
@@ -1 +1 @@
1
- import{r as C,g as bt,a as xt,j as rt}from"./index-BU0-O6wh.js";function Yt(t,n){var e,r=1;t==null&&(t=0),n==null&&(n=0);function i(){var o,l=e.length,s,h=0,c=0;for(o=0;o<l;++o)s=e[o],h+=s.x,c+=s.y;for(h=(h/l-t)*r,c=(c/l-n)*r,o=0;o<l;++o)s=e[o],s.x-=h,s.y-=c}return i.initialize=function(o){e=o},i.x=function(o){return arguments.length?(t=+o,i):t},i.y=function(o){return arguments.length?(n=+o,i):n},i.strength=function(o){return arguments.length?(r=+o,i):r},i}function St(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return Tt(this.cover(n,e),n,e,t)}function Tt(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o=t._root,l={data:r},s=t._x0,h=t._y0,c=t._x1,x=t._y1,M,w,a,m,g,f,y,d;if(!o)return t._root=l,t;for(;o.length;)if((g=n>=(M=(s+c)/2))?s=M:c=M,(f=e>=(w=(h+x)/2))?h=w:x=w,i=o,!(o=o[y=f<<1|g]))return i[y]=l,t;if(a=+t._x.call(null,o.data),m=+t._y.call(null,o.data),n===a&&e===m)return l.next=o,i?i[y]=l:t._root=l,t;do i=i?i[y]=new Array(4):t._root=new Array(4),(g=n>=(M=(s+c)/2))?s=M:c=M,(f=e>=(w=(h+x)/2))?h=w:x=w;while((y=f<<1|g)===(d=(m>=w)<<1|a>=M));return i[d]=o,i[y]=l,t}function Xt(t){var n,e,r=t.length,i,o,l=new Array(r),s=new Array(r),h=1/0,c=1/0,x=-1/0,M=-1/0;for(e=0;e<r;++e)isNaN(i=+this._x.call(null,n=t[e]))||isNaN(o=+this._y.call(null,n))||(l[e]=i,s[e]=o,i<h&&(h=i),i>x&&(x=i),o<c&&(c=o),o>M&&(M=o));if(h>x||c>M)return this;for(this.cover(h,c).cover(x,M),e=0;e<r;++e)Tt(this,l[e],s[e],t[e]);return this}function Dt(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var l=i-e||1,s=this._root,h,c;e>t||t>=i||r>n||n>=o;)switch(c=(n<r)<<1|t<e,h=new Array(4),h[c]=s,s=h,l*=2,c){case 0:i=e+l,o=r+l;break;case 1:e=i-l,o=r+l;break;case 2:i=e+l,r=o-l;break;case 3:e=i-l,r=o-l;break}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this}function Bt(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function Ft(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function H(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Wt(t,n,e){var r,i=this._x0,o=this._y0,l,s,h,c,x=this._x1,M=this._y1,w=[],a=this._root,m,g;for(a&&w.push(new H(a,i,o,x,M)),e==null?e=1/0:(i=t-e,o=n-e,x=t+e,M=n+e,e*=e);m=w.pop();)if(!(!(a=m.node)||(l=m.x0)>x||(s=m.y0)>M||(h=m.x1)<i||(c=m.y1)<o))if(a.length){var f=(l+h)/2,y=(s+c)/2;w.push(new H(a[3],f,y,h,c),new H(a[2],l,y,f,c),new H(a[1],f,s,h,y),new H(a[0],l,s,f,y)),(g=(n>=y)<<1|t>=f)&&(m=w[w.length-1],w[w.length-1]=w[w.length-1-g],w[w.length-1-g]=m)}else{var d=t-+this._x.call(null,a.data),N=n-+this._y.call(null,a.data),p=d*d+N*N;if(p<e){var A=Math.sqrt(e=p);i=t-A,o=n-A,x=t+A,M=n+A,r=a.data}}return r}function Ot(t){if(isNaN(x=+this._x.call(null,t))||isNaN(M=+this._y.call(null,t)))return this;var n,e=this._root,r,i,o,l=this._x0,s=this._y0,h=this._x1,c=this._y1,x,M,w,a,m,g,f,y;if(!e)return this;if(e.length)for(;;){if((m=x>=(w=(l+h)/2))?l=w:h=w,(g=M>=(a=(s+c)/2))?s=a:c=a,n=e,!(e=e[f=g<<1|m]))return this;if(!e.length)break;(n[f+1&3]||n[f+2&3]||n[f+3&3])&&(r=n,y=f)}for(;e.data!==t;)if(i=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,i?(o?i.next=o:delete i.next,this):n?(o?n[f]=o:delete n[f],(e=n[0]||n[1]||n[2]||n[3])&&e===(n[3]||n[2]||n[1]||n[0])&&!e.length&&(r?r[y]=e:this._root=e),this):(this._root=o,this)}function Ht(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function $t(){return this._root}function Gt(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function Kt(t){var n=[],e,r=this._root,i,o,l,s,h;for(r&&n.push(new H(r,this._x0,this._y0,this._x1,this._y1));e=n.pop();)if(!t(r=e.node,o=e.x0,l=e.y0,s=e.x1,h=e.y1)&&r.length){var c=(o+s)/2,x=(l+h)/2;(i=r[3])&&n.push(new H(i,c,x,s,h)),(i=r[2])&&n.push(new H(i,o,x,c,h)),(i=r[1])&&n.push(new H(i,c,l,s,x)),(i=r[0])&&n.push(new H(i,o,l,c,x))}return this}function Qt(t){var n=[],e=[],r;for(this._root&&n.push(new H(this._root,this._x0,this._y0,this._x1,this._y1));r=n.pop();){var i=r.node;if(i.length){var o,l=r.x0,s=r.y0,h=r.x1,c=r.y1,x=(l+h)/2,M=(s+c)/2;(o=i[0])&&n.push(new H(o,l,s,x,M)),(o=i[1])&&n.push(new H(o,x,s,h,M)),(o=i[2])&&n.push(new H(o,l,M,x,c)),(o=i[3])&&n.push(new H(o,x,M,h,c))}e.push(r)}for(;r=e.pop();)t(r.node,r.x0,r.y0,r.x1,r.y1);return this}function Zt(t){return t[0]}function Jt(t){return arguments.length?(this._x=t,this):this._x}function Ut(t){return t[1]}function Vt(t){return arguments.length?(this._y=t,this):this._y}function wt(t,n,e){var r=new mt(n??Zt,e??Ut,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function mt(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function kt(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var G=wt.prototype=mt.prototype;G.copy=function(){var t=new mt(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root,e,r;if(!n)return t;if(!n.length)return t._root=kt(n),t;for(e=[{source:n,target:t._root=new Array(4)}];n=e.pop();)for(var i=0;i<4;++i)(r=n.source[i])&&(r.length?e.push({source:r,target:n.target[i]=new Array(4)}):n.target[i]=kt(r));return t};G.add=St;G.addAll=Xt;G.cover=Dt;G.data=Bt;G.extent=Ft;G.find=Wt;G.remove=Ot;G.removeAll=Ht;G.root=$t;G.size=Gt;G.visit=Kt;G.visitAfter=Qt;G.x=Jt;G.y=Vt;function $(t){return function(){return t}}function tt(t){return(t()-.5)*1e-6}function qt(t){return t.x+t.vx}function tn(t){return t.y+t.vy}function nn(t){var n,e,r,i=1,o=1;typeof t!="function"&&(t=$(t==null?1:+t));function l(){for(var c,x=n.length,M,w,a,m,g,f,y=0;y<o;++y)for(M=wt(n,qt,tn).visitAfter(s),c=0;c<x;++c)w=n[c],g=e[w.index],f=g*g,a=w.x+w.vx,m=w.y+w.vy,M.visit(d);function d(N,p,A,F,W){var L=N.data,K=N.r,j=g+K;if(L){if(L.index>w.index){var U=a-L.x-L.vx,V=m-L.y-L.vy,Z=U*U+V*V;Z<j*j&&(U===0&&(U=tt(r),Z+=U*U),V===0&&(V=tt(r),Z+=V*V),Z=(j-(Z=Math.sqrt(Z)))/Z*i,w.vx+=(U*=Z)*(j=(K*=K)/(f+K)),w.vy+=(V*=Z)*j,L.vx-=U*(j=1-j),L.vy-=V*j)}return}return p>a+j||F<a-j||A>m+j||W<m-j}}function s(c){if(c.data)return c.r=e[c.data.index];for(var x=c.r=0;x<4;++x)c[x]&&c[x].r>c.r&&(c.r=c[x].r)}function h(){if(n){var c,x=n.length,M;for(e=new Array(x),c=0;c<x;++c)M=n[c],e[M.index]=+t(M,c,n)}}return l.initialize=function(c,x){n=c,r=x,h()},l.iterations=function(c){return arguments.length?(o=+c,l):o},l.strength=function(c){return arguments.length?(i=+c,l):i},l.radius=function(c){return arguments.length?(t=typeof c=="function"?c:$(+c),h(),l):t},l}function en(t){return t.index}function Mt(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}function rn(t){var n=en,e=M,r,i=$(30),o,l,s,h,c,x=1;t==null&&(t=[]);function M(f){return 1/Math.min(s[f.source.index],s[f.target.index])}function w(f){for(var y=0,d=t.length;y<x;++y)for(var N=0,p,A,F,W,L,K,j;N<d;++N)p=t[N],A=p.source,F=p.target,W=F.x+F.vx-A.x-A.vx||tt(c),L=F.y+F.vy-A.y-A.vy||tt(c),K=Math.sqrt(W*W+L*L),K=(K-o[N])/K*f*r[N],W*=K,L*=K,F.vx-=W*(j=h[N]),F.vy-=L*j,A.vx+=W*(j=1-j),A.vy+=L*j}function a(){if(l){var f,y=l.length,d=t.length,N=new Map(l.map((A,F)=>[n(A,F,l),A])),p;for(f=0,s=new Array(y);f<d;++f)p=t[f],p.index=f,typeof p.source!="object"&&(p.source=Mt(N,p.source)),typeof p.target!="object"&&(p.target=Mt(N,p.target)),s[p.source.index]=(s[p.source.index]||0)+1,s[p.target.index]=(s[p.target.index]||0)+1;for(f=0,h=new Array(d);f<d;++f)p=t[f],h[f]=s[p.source.index]/(s[p.source.index]+s[p.target.index]);r=new Array(d),m(),o=new Array(d),g()}}function m(){if(l)for(var f=0,y=t.length;f<y;++f)r[f]=+e(t[f],f,t)}function g(){if(l)for(var f=0,y=t.length;f<y;++f)o[f]=+i(t[f],f,t)}return w.initialize=function(f,y){l=f,c=y,a()},w.links=function(f){return arguments.length?(t=f,a(),w):t},w.id=function(f){return arguments.length?(n=f,w):n},w.iterations=function(f){return arguments.length?(x=+f,w):x},w.strength=function(f){return arguments.length?(e=typeof f=="function"?f:$(+f),m(),w):e},w.distance=function(f){return arguments.length?(i=typeof f=="function"?f:$(+f),g(),w):i},w}var on={value:()=>{}};function Ct(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new ft(e)}function ft(t){this._=t}function sn(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}ft.prototype=Ct.prototype={constructor:ft,on:function(t,n){var e=this._,r=sn(t+"",e),i,o=-1,l=r.length;if(arguments.length<2){for(;++o<l;)if((i=(t=r[o]).type)&&(i=un(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++o<l;)if(i=(t=r[o]).type)e[i]=Rt(e[i],t.name,n);else if(n==null)for(i in e)e[i]=Rt(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new ft(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,o;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};function un(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function Rt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=on,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var it=0,st=0,ot=0,Pt=1e3,ht,ut,gt=0,et=0,yt=0,ct=typeof performance=="object"&&performance.now?performance:Date,zt=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function It(){return et||(zt(cn),et=ct.now()+yt)}function cn(){et=0}function pt(){this._call=this._time=this._next=null}pt.prototype=Lt.prototype={constructor:pt,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?It():+e)+(n==null?0:+n),!this._next&&ut!==this&&(ut?ut._next=this:ht=this,ut=this),this._call=t,this._time=e,dt()},stop:function(){this._call&&(this._call=null,this._time=1/0,dt())}};function Lt(t,n,e){var r=new pt;return r.restart(t,n,e),r}function ln(){It(),++it;for(var t=ht,n;t;)(n=et-t._time)>=0&&t._call.call(void 0,n),t=t._next;--it}function At(){et=(gt=ct.now())+yt,it=st=0;try{ln()}finally{it=0,fn(),et=0}}function an(){var t=ct.now(),n=t-gt;n>Pt&&(yt-=n,gt=t)}function fn(){for(var t,n=ht,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:ht=e);ut=t,dt(r)}function dt(t){if(!it){st&&(st=clearTimeout(st));var n=t-et;n>24?(t<1/0&&(st=setTimeout(At,t-ct.now()-yt)),ot&&(ot=clearInterval(ot))):(ot||(gt=ct.now(),ot=setInterval(an,Pt)),it=1,zt(At))}}const hn=1664525,gn=1013904223,Nt=4294967296;function yn(){let t=1;return()=>(t=(hn*t+gn)%Nt)/Nt}function xn(t){return t.x}function vn(t){return t.y}var pn=10,dn=Math.PI*(3-Math.sqrt(5));function wn(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,l=.6,s=new Map,h=Lt(M),c=Ct("tick","end"),x=yn();t==null&&(t=[]);function M(){w(),c.call("tick",n),e<r&&(h.stop(),c.call("end",n))}function w(g){var f,y=t.length,d;g===void 0&&(g=1);for(var N=0;N<g;++N)for(e+=(o-e)*i,s.forEach(function(p){p(e)}),f=0;f<y;++f)d=t[f],d.fx==null?d.x+=d.vx*=l:(d.x=d.fx,d.vx=0),d.fy==null?d.y+=d.vy*=l:(d.y=d.fy,d.vy=0);return n}function a(){for(var g=0,f=t.length,y;g<f;++g){if(y=t[g],y.index=g,y.fx!=null&&(y.x=y.fx),y.fy!=null&&(y.y=y.fy),isNaN(y.x)||isNaN(y.y)){var d=pn*Math.sqrt(.5+g),N=g*dn;y.x=d*Math.cos(N),y.y=d*Math.sin(N)}(isNaN(y.vx)||isNaN(y.vy))&&(y.vx=y.vy=0)}}function m(g){return g.initialize&&g.initialize(t,x),g}return a(),n={tick:w,restart:function(){return h.restart(M),n},stop:function(){return h.stop(),n},nodes:function(g){return arguments.length?(t=g,a(),s.forEach(m),n):t},alpha:function(g){return arguments.length?(e=+g,n):e},alphaMin:function(g){return arguments.length?(r=+g,n):r},alphaDecay:function(g){return arguments.length?(i=+g,n):+i},alphaTarget:function(g){return arguments.length?(o=+g,n):o},velocityDecay:function(g){return arguments.length?(l=1-g,n):1-l},randomSource:function(g){return arguments.length?(x=g,s.forEach(m),n):x},force:function(g,f){return arguments.length>1?(f==null?s.delete(g):s.set(g,m(f)),n):s.get(g)},find:function(g,f,y){var d=0,N=t.length,p,A,F,W,L;for(y==null?y=1/0:y*=y,d=0;d<N;++d)W=t[d],p=g-W.x,A=f-W.y,F=p*p+A*A,F<y&&(L=W,y=F);return L},on:function(g,f){return arguments.length>1?(c.on(g,f),n):c.on(g)}}}function mn(){var t,n,e,r,i=$(-30),o,l=1,s=1/0,h=.81;function c(a){var m,g=t.length,f=wt(t,xn,vn).visitAfter(M);for(r=a,m=0;m<g;++m)n=t[m],f.visit(w)}function x(){if(t){var a,m=t.length,g;for(o=new Array(m),a=0;a<m;++a)g=t[a],o[g.index]=+i(g,a,t)}}function M(a){var m=0,g,f,y=0,d,N,p;if(a.length){for(d=N=p=0;p<4;++p)(g=a[p])&&(f=Math.abs(g.value))&&(m+=g.value,y+=f,d+=f*g.x,N+=f*g.y);a.x=d/y,a.y=N/y}else{g=a,g.x=g.data.x,g.y=g.data.y;do m+=o[g.data.index];while(g=g.next)}a.value=m}function w(a,m,g,f){if(!a.value)return!0;var y=a.x-n.x,d=a.y-n.y,N=f-m,p=y*y+d*d;if(N*N/h<p)return p<s&&(y===0&&(y=tt(e),p+=y*y),d===0&&(d=tt(e),p+=d*d),p<l&&(p=Math.sqrt(l*p)),n.vx+=y*a.value*r/p,n.vy+=d*a.value*r/p),!0;if(a.length||p>=s)return;(a.data!==n||a.next)&&(y===0&&(y=tt(e),p+=y*y),d===0&&(d=tt(e),p+=d*d),p<l&&(p=Math.sqrt(l*p)));do a.data!==n&&(N=o[a.data.index]*r/p,n.vx+=y*N,n.vy+=d*N);while(a=a.next)}return c.initialize=function(a,m){t=a,e=m,x()},c.strength=function(a){return arguments.length?(i=typeof a=="function"?a:$(+a),x(),c):i},c.distanceMin=function(a){return arguments.length?(l=a*a,c):Math.sqrt(l)},c.distanceMax=function(a){return arguments.length?(s=a*a,c):Math.sqrt(s)},c.theta=function(a){return arguments.length?(h=a*a,c):Math.sqrt(h)},c}function _n(t){var n=$(.1),e,r,i;typeof t!="function"&&(t=$(t==null?0:+t));function o(s){for(var h=0,c=e.length,x;h<c;++h)x=e[h],x.vx+=(i[h]-x.x)*r[h]*s}function l(){if(e){var s,h=e.length;for(r=new Array(h),i=new Array(h),s=0;s<h;++s)r[s]=isNaN(i[s]=+t(e[s],s,e))?0:+n(e[s],s,e)}}return o.initialize=function(s){e=s,l()},o.strength=function(s){return arguments.length?(n=typeof s=="function"?s:$(+s),l(),o):n},o.x=function(s){return arguments.length?(t=typeof s=="function"?s:$(+s),l(),o):t},o}function bn(t){var n=$(.1),e,r,i;typeof t!="function"&&(t=$(t==null?0:+t));function o(s){for(var h=0,c=e.length,x;h<c;++h)x=e[h],x.vy+=(i[h]-x.y)*r[h]*s}function l(){if(e){var s,h=e.length;for(r=new Array(h),i=new Array(h),s=0;s<h;++s)r[s]=isNaN(i[s]=+t(e[s],s,e))?0:+n(e[s],s,e)}}return o.initialize=function(s){e=s,l()},o.strength=function(s){return arguments.length?(n=typeof s=="function"?s:$(+s),l(),o):n},o.y=function(s){return arguments.length?(t=typeof s=="function"?s:$(+s),l(),o):t},o}function kn(t){return 4+Math.min(Math.sqrt(t)*1.2,10)}const Mn="#1a1a2e",Rn="#e0e0e0";function Et(t,n,e){let r=1/0,i=-1/0,o=1/0,l=-1/0;for(const h of t)h.x==null||h.y==null||(r=Math.min(r,h.x),i=Math.max(i,h.x),o=Math.min(o,h.y),l=Math.max(l,h.y));if(!Number.isFinite(r))return{x:0,y:0,k:1};const s=Math.max(.1,Math.min(4,Math.min((n-80)/Math.max(1,i-r),(e-80)/Math.max(1,l-o))));return{x:n/2-(r+i)/2*s,y:e/2-(o+l)/2*s,k:s}}function Nn({nodes:t,edges:n,selectedNodeId:e,onNodeClick:r,onNodeHover:i,className:o=""}){const l=C.useRef(null),s=C.useRef(null),h=C.useRef(null),c=C.useRef([]),x=C.useRef([]),M=C.useRef(null),w=C.useRef(null),a=C.useRef({x:0,y:0,k:1}),m=C.useRef(!1),g=C.useRef({x:0,y:0}),f=C.useRef({x:0,y:0}),y=C.useRef(!1),d=C.useRef(null),N=C.useRef(e??null),p=C.useRef(null),A=C.useRef(!0),F=C.useRef(new Map),W=C.useRef(r);W.current=r;const L=C.useRef(i);L.current=i,N.current=e??null,C.useEffect(()=>{var T;if(t.length===0){c.current=[],x.current=[],F.current=new Map,w.current=null,A.current=!0,(T=h.current)==null||T.stop(),h.current=null;return}const _=new Map,u=t.map((R,E)=>(_.set(R.id,E),{id:R.id,label:R.label,type:R.type,degree:R.degree,r:kn(R.degree)}));c.current=u;const S=[];for(const R of n){const E=_.get(R.source),z=_.get(R.target);E===void 0||z===void 0||S.push({source:u[E],target:u[z],type:R.type,weight:R.weight})}x.current=S;const D=new Map;for(const R of S){const E=bt(R.type);let z=D.get(E);z||(z=[],D.set(E,z)),z.push(R)}F.current=D;const X=l.current,O=(X==null?void 0:X.clientWidth)||800,B=(X==null?void 0:X.clientHeight)||600,v=u.length>5e3,k=wn(u).force("link",rn(S).id(R=>R.id).distance(R=>30+60/Math.max(1,R.source.degree+R.target.degree)).strength(v?.08:.3)).force("charge",v?null:mn().strength(R=>-30-R.degree*2)).force("center",Yt(O/2,B/2)).force("x",v?null:_n(O/2).strength(.04)).force("y",v?null:bn(B/2).strength(.04)).force("collide",v?null:nn().radius(R=>R.r+4)).alphaDecay(v?.08:.02);return k.on("tick.fit",()=>{k.alpha()<.35&&(a.current=Et(u,O,B),k.on("tick.fit",null))}),k.on("tick.dirty",()=>{A.current=!0}),h.current=k,A.current=!0,()=>{k.stop()}},[t,n]),C.useEffect(()=>{if(!e){M.current=null,A.current=!0;return}const _=new Set([e]);for(const u of x.current)u.source.id===e&&_.add(u.target.id),u.target.id===e&&_.add(u.source.id);M.current=_,A.current=!0},[e,t,n]);const K=C.useCallback(()=>{const _=l.current;if(!_)return;const u=_.getContext("2d");if(!u)return;const S=Math.min(devicePixelRatio,2),D=_.width/S,X=_.height/S;u.save(),u.clearRect(0,0,D,X),u.fillStyle=Mn,u.fillRect(0,0,D,X);const{x:O,y:B,k:v}=a.current;u.translate(O,B),u.scale(v,v);const k=c.current,T=x.current,R=N.current,E=d.current,z=M.current,Q=!!(R||E),nt=R||E,I=R?z:w.current;if(Q&&nt){u.save(),u.globalAlpha=.03,u.strokeStyle="#64748b",u.lineWidth=1/v,u.beginPath();for(const b of T){const P=b.source,Y=b.target;P.x==null||P.y==null||Y.x==null||Y.y==null||I!=null&&I.has(P.id)&&(I!=null&&I.has(Y.id))||(u.moveTo(P.x,P.y),u.lineTo(Y.x,Y.y))}u.stroke(),u.restore(),u.save(),u.globalAlpha=.6,u.lineWidth=1.5/v,u.beginPath();for(const b of T){const P=b.source,Y=b.target;P.x==null||P.y==null||Y.x==null||Y.y==null||I!=null&&I.has(P.id)&&(I!=null&&I.has(Y.id))&&(u.moveTo(P.x,P.y),u.lineTo(Y.x,Y.y))}u.strokeStyle=bt("default"),u.stroke(),u.restore()}else{u.save(),u.globalAlpha=.4,u.lineWidth=1.2/v;for(const[b,P]of F.current){u.strokeStyle=b,u.beginPath();for(const Y of P){const q=Y.source,J=Y.target;q.x==null||q.y==null||J.x==null||J.y==null||(u.moveTo(q.x,q.y),u.lineTo(J.x,J.y))}u.stroke()}u.restore()}for(const b of k){if(b.x==null||b.y==null)continue;const P=b.id===R,Y=b.id===E;if(!P&&!Y)continue;const q=P?b.r*1.7:b.r*1.35;u.globalAlpha=P?.35:.22,u.fillStyle=xt(b.type),u.beginPath(),u.arc(b.x,b.y,q*2.8,0,Math.PI*2),u.fill()}for(const b of k){if(b.x==null||b.y==null)continue;const P=b.id===R,Y=b.id===E,q=!Q||((I==null?void 0:I.has(b.id))??b.id===nt);let J=1;Q&&!q&&(J=.1);const at=P?b.r*1.7:Y?b.r*1.35:b.r;u.globalAlpha=J,u.fillStyle=xt(b.type),u.beginPath(),u.arc(b.x,b.y,at,0,Math.PI*2),u.fill(),u.globalAlpha=J*.8,u.strokeStyle="rgba(255,255,255,0.3)",u.lineWidth=1/v,u.stroke(),(P||Y)&&(u.globalAlpha=1,u.strokeStyle=P?"#ffffff":xt(b.type),u.lineWidth=(P?2:1.5)/v,u.stroke())}u.globalAlpha=1;const lt=k.length>5e3?30:k.length>1e3?8:3,jt=v>1.8&&k.length<3e3;u.font=`600 ${12/v}px system-ui, -apple-system, sans-serif`,u.textAlign="center",u.textBaseline="middle";for(const b of k){if(b.x==null||b.y==null)continue;const P=b.id===R,Y=b.id===E,q=b.degree>=lt,J=!Q||((I==null?void 0:I.has(b.id))??b.id===nt);if(!(P||Y||q||jt)||Q&&!J&&!P&&!Y)continue;const at=b.y-b.r-8/v,_t=b.label.length>48?`${b.label.slice(0,45)}…`:b.label;u.globalAlpha=J?.9:.3,u.lineJoin="round",u.lineWidth=3/v,u.strokeStyle="rgba(23,23,23,0.95)",u.strokeText(_t,b.x,at),u.fillStyle=P||Y?"#ffffff":Rn,u.fillText(_t,b.x,at),u.globalAlpha=1}u.restore(),A.current=!1},[]);C.useEffect(()=>{const _=l.current,u=s.current;if(!_||!u)return;const S=()=>{const v=Math.min(devicePixelRatio,2),k=u.clientWidth,T=u.clientHeight;_.width=k*v,_.height=T*v,_.style.width=k+"px",_.style.height=T+"px";const R=_.getContext("2d");R&&R.setTransform(v,0,0,v,0,0),A.current=!0};S();const D=new ResizeObserver(S);D.observe(u);let X=0,O=0;const B=v=>{X=requestAnimationFrame(B),A.current&&(c.current.length>5e3&&v-O<33||(O=v,K()))};return X=requestAnimationFrame(B),()=>{cancelAnimationFrame(X),D.disconnect()}},[K]);const j=C.useCallback((_,u)=>{const S=l.current;if(!S)return null;const D=S.getBoundingClientRect(),{x:X,y:O,k:B}=a.current,v=(_-D.left-X)/B,k=(u-D.top-O)/B,T=c.current;for(let R=T.length-1;R>=0;R--){const E=T[R];if(E.x==null||E.y==null)continue;const z=E.x-v,Q=E.y-k;if(z*z+Q*Q<=(E.r+3)*(E.r+3))return E}return null},[]);C.useEffect(()=>{const _=l.current;if(!_)return;const u=_;function S(v){f.current={x:v.clientX,y:v.clientY},y.current=!1;const k=j(v.clientX,v.clientY);if(k){p.current=k;const T=h.current;T&&(T.alphaTarget(.3).restart(),k.fx=k.x,k.fy=k.y),u.setPointerCapture(v.pointerId)}else m.current=!0,g.current={x:v.clientX,y:v.clientY},u.setPointerCapture(v.pointerId)}function D(v){var R;if(Math.hypot(v.clientX-f.current.x,v.clientY-f.current.y)>3&&(y.current=!0),p.current){const E=p.current,z=u.getBoundingClientRect(),{x:Q,y:nt,k:I}=a.current;E.fx=(v.clientX-z.left-Q)/I,E.fy=(v.clientY-z.top-nt)/I,A.current=!0;return}if(m.current){const E=v.clientX-g.current.x,z=v.clientY-g.current.y;a.current.x+=E,a.current.y+=z,g.current={x:v.clientX,y:v.clientY},A.current=!0;return}const k=j(v.clientX,v.clientY),T=(k==null?void 0:k.id)??null;if(T!==d.current){d.current=T;const E=T?new Set([T]):null;if(E)for(const z of x.current)z.source.id===T&&E.add(z.target.id),z.target.id===T&&E.add(z.source.id);w.current=E,(R=L.current)==null||R.call(L,T),u.style.cursor=T?"pointer":"default",A.current=!0}}function X(v){if(p.current){const k=p.current,T=h.current;T&&T.alphaTarget(0),k.fx=null,k.fy=null,p.current=null}m.current=!1,u.hasPointerCapture(v.pointerId)&&u.releasePointerCapture(v.pointerId)}function O(v){var T;if(y.current)return;const k=j(v.clientX,v.clientY);(T=W.current)==null||T.call(W,(k==null?void 0:k.id)??"")}function B(v){v.preventDefault();const k=u.getBoundingClientRect(),T=v.clientX-k.left,R=v.clientY-k.top,{x:E,y:z,k:Q}=a.current,nt=-v.deltaY*.001,I=Math.max(.1,Math.min(8,Q*Math.exp(nt))),lt=I/Q;a.current.x=T-(T-E)*lt,a.current.y=R-(R-z)*lt,a.current.k=I,A.current=!0}return u.addEventListener("pointerdown",S),u.addEventListener("pointermove",D),u.addEventListener("pointerup",X),u.addEventListener("click",O),u.addEventListener("wheel",B,{passive:!1}),()=>{u.removeEventListener("pointerdown",S),u.removeEventListener("pointermove",D),u.removeEventListener("pointerup",X),u.removeEventListener("click",O),u.removeEventListener("wheel",B)}},[j]);const U=C.useCallback(()=>{const _=l.current;if(!_)return;const u=_.getBoundingClientRect(),S=u.width/2,D=u.height/2,{x:X,y:O,k:B}=a.current,v=Math.min(8,B*1.3),k=v/B;a.current.x=S-(S-X)*k,a.current.y=D-(D-O)*k,a.current.k=v,A.current=!0},[]),V=C.useCallback(()=>{const _=l.current;if(!_)return;const u=_.getBoundingClientRect(),S=u.width/2,D=u.height/2,{x:X,y:O,k:B}=a.current,v=Math.max(.1,B/1.3),k=v/B;a.current.x=S-(S-X)*k,a.current.y=D-(D-O)*k,a.current.k=v,A.current=!0},[]),Z=C.useCallback(()=>{const _=l.current;_&&(a.current=Et(c.current,_.clientWidth,_.clientHeight),A.current=!0)},[]);return rt.jsxs("div",{ref:s,style:{position:"relative",width:"100%",height:"100%"},className:o,children:[rt.jsx("canvas",{ref:l,style:{width:"100%",height:"100%",display:"block",cursor:"default",touchAction:"none"}}),rt.jsxs("div",{style:{position:"absolute",bottom:12,right:12,display:"flex",flexDirection:"column",gap:2},children:[rt.jsx("button",{onClick:U,"aria-label":"Zoom in",style:vt,onMouseEnter:_=>_.currentTarget.style.background="rgba(255,255,255,0.12)",onMouseLeave:_=>_.currentTarget.style.background="rgba(0,0,0,0.5)",children:"+"}),rt.jsx("button",{onClick:V,"aria-label":"Zoom out",style:vt,onMouseEnter:_=>_.currentTarget.style.background="rgba(255,255,255,0.12)",onMouseLeave:_=>_.currentTarget.style.background="rgba(0,0,0,0.5)",children:"−"}),rt.jsx("button",{onClick:Z,"aria-label":"Fit graph to view",style:vt,onMouseEnter:_=>_.currentTarget.style.background="rgba(255,255,255,0.12)",onMouseLeave:_=>_.currentTarget.style.background="rgba(0,0,0,0.5)",children:"⛶"})]})]})}const vt={width:32,height:32,border:"1px solid rgba(255,255,255,0.1)",borderRadius:6,background:"rgba(0,0,0,0.5)",color:"#fff",fontSize:18,lineHeight:1,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",backdropFilter:"blur(8px)"};export{Nn as WorkspaceGraph};
1
+ import{r as C,g as bt,a as xt,j as rt}from"./index-CrgdwyMi.js";function Yt(t,n){var e,r=1;t==null&&(t=0),n==null&&(n=0);function i(){var o,l=e.length,s,h=0,c=0;for(o=0;o<l;++o)s=e[o],h+=s.x,c+=s.y;for(h=(h/l-t)*r,c=(c/l-n)*r,o=0;o<l;++o)s=e[o],s.x-=h,s.y-=c}return i.initialize=function(o){e=o},i.x=function(o){return arguments.length?(t=+o,i):t},i.y=function(o){return arguments.length?(n=+o,i):n},i.strength=function(o){return arguments.length?(r=+o,i):r},i}function St(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return Tt(this.cover(n,e),n,e,t)}function Tt(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o=t._root,l={data:r},s=t._x0,h=t._y0,c=t._x1,x=t._y1,M,w,a,m,g,f,y,d;if(!o)return t._root=l,t;for(;o.length;)if((g=n>=(M=(s+c)/2))?s=M:c=M,(f=e>=(w=(h+x)/2))?h=w:x=w,i=o,!(o=o[y=f<<1|g]))return i[y]=l,t;if(a=+t._x.call(null,o.data),m=+t._y.call(null,o.data),n===a&&e===m)return l.next=o,i?i[y]=l:t._root=l,t;do i=i?i[y]=new Array(4):t._root=new Array(4),(g=n>=(M=(s+c)/2))?s=M:c=M,(f=e>=(w=(h+x)/2))?h=w:x=w;while((y=f<<1|g)===(d=(m>=w)<<1|a>=M));return i[d]=o,i[y]=l,t}function Xt(t){var n,e,r=t.length,i,o,l=new Array(r),s=new Array(r),h=1/0,c=1/0,x=-1/0,M=-1/0;for(e=0;e<r;++e)isNaN(i=+this._x.call(null,n=t[e]))||isNaN(o=+this._y.call(null,n))||(l[e]=i,s[e]=o,i<h&&(h=i),i>x&&(x=i),o<c&&(c=o),o>M&&(M=o));if(h>x||c>M)return this;for(this.cover(h,c).cover(x,M),e=0;e<r;++e)Tt(this,l[e],s[e],t[e]);return this}function Dt(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var l=i-e||1,s=this._root,h,c;e>t||t>=i||r>n||n>=o;)switch(c=(n<r)<<1|t<e,h=new Array(4),h[c]=s,s=h,l*=2,c){case 0:i=e+l,o=r+l;break;case 1:e=i-l,o=r+l;break;case 2:i=e+l,r=o-l;break;case 3:e=i-l,r=o-l;break}this._root&&this._root.length&&(this._root=s)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this}function Bt(){var t=[];return this.visit(function(n){if(!n.length)do t.push(n.data);while(n=n.next)}),t}function Ft(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function H(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Wt(t,n,e){var r,i=this._x0,o=this._y0,l,s,h,c,x=this._x1,M=this._y1,w=[],a=this._root,m,g;for(a&&w.push(new H(a,i,o,x,M)),e==null?e=1/0:(i=t-e,o=n-e,x=t+e,M=n+e,e*=e);m=w.pop();)if(!(!(a=m.node)||(l=m.x0)>x||(s=m.y0)>M||(h=m.x1)<i||(c=m.y1)<o))if(a.length){var f=(l+h)/2,y=(s+c)/2;w.push(new H(a[3],f,y,h,c),new H(a[2],l,y,f,c),new H(a[1],f,s,h,y),new H(a[0],l,s,f,y)),(g=(n>=y)<<1|t>=f)&&(m=w[w.length-1],w[w.length-1]=w[w.length-1-g],w[w.length-1-g]=m)}else{var d=t-+this._x.call(null,a.data),N=n-+this._y.call(null,a.data),p=d*d+N*N;if(p<e){var A=Math.sqrt(e=p);i=t-A,o=n-A,x=t+A,M=n+A,r=a.data}}return r}function Ot(t){if(isNaN(x=+this._x.call(null,t))||isNaN(M=+this._y.call(null,t)))return this;var n,e=this._root,r,i,o,l=this._x0,s=this._y0,h=this._x1,c=this._y1,x,M,w,a,m,g,f,y;if(!e)return this;if(e.length)for(;;){if((m=x>=(w=(l+h)/2))?l=w:h=w,(g=M>=(a=(s+c)/2))?s=a:c=a,n=e,!(e=e[f=g<<1|m]))return this;if(!e.length)break;(n[f+1&3]||n[f+2&3]||n[f+3&3])&&(r=n,y=f)}for(;e.data!==t;)if(i=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,i?(o?i.next=o:delete i.next,this):n?(o?n[f]=o:delete n[f],(e=n[0]||n[1]||n[2]||n[3])&&e===(n[3]||n[2]||n[1]||n[0])&&!e.length&&(r?r[y]=e:this._root=e),this):(this._root=o,this)}function Ht(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this}function $t(){return this._root}function Gt(){var t=0;return this.visit(function(n){if(!n.length)do++t;while(n=n.next)}),t}function Kt(t){var n=[],e,r=this._root,i,o,l,s,h;for(r&&n.push(new H(r,this._x0,this._y0,this._x1,this._y1));e=n.pop();)if(!t(r=e.node,o=e.x0,l=e.y0,s=e.x1,h=e.y1)&&r.length){var c=(o+s)/2,x=(l+h)/2;(i=r[3])&&n.push(new H(i,c,x,s,h)),(i=r[2])&&n.push(new H(i,o,x,c,h)),(i=r[1])&&n.push(new H(i,c,l,s,x)),(i=r[0])&&n.push(new H(i,o,l,c,x))}return this}function Qt(t){var n=[],e=[],r;for(this._root&&n.push(new H(this._root,this._x0,this._y0,this._x1,this._y1));r=n.pop();){var i=r.node;if(i.length){var o,l=r.x0,s=r.y0,h=r.x1,c=r.y1,x=(l+h)/2,M=(s+c)/2;(o=i[0])&&n.push(new H(o,l,s,x,M)),(o=i[1])&&n.push(new H(o,x,s,h,M)),(o=i[2])&&n.push(new H(o,l,M,x,c)),(o=i[3])&&n.push(new H(o,x,M,h,c))}e.push(r)}for(;r=e.pop();)t(r.node,r.x0,r.y0,r.x1,r.y1);return this}function Zt(t){return t[0]}function Jt(t){return arguments.length?(this._x=t,this):this._x}function Ut(t){return t[1]}function Vt(t){return arguments.length?(this._y=t,this):this._y}function wt(t,n,e){var r=new mt(n??Zt,e??Ut,NaN,NaN,NaN,NaN);return t==null?r:r.addAll(t)}function mt(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function kt(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var G=wt.prototype=mt.prototype;G.copy=function(){var t=new mt(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root,e,r;if(!n)return t;if(!n.length)return t._root=kt(n),t;for(e=[{source:n,target:t._root=new Array(4)}];n=e.pop();)for(var i=0;i<4;++i)(r=n.source[i])&&(r.length?e.push({source:r,target:n.target[i]=new Array(4)}):n.target[i]=kt(r));return t};G.add=St;G.addAll=Xt;G.cover=Dt;G.data=Bt;G.extent=Ft;G.find=Wt;G.remove=Ot;G.removeAll=Ht;G.root=$t;G.size=Gt;G.visit=Kt;G.visitAfter=Qt;G.x=Jt;G.y=Vt;function $(t){return function(){return t}}function tt(t){return(t()-.5)*1e-6}function qt(t){return t.x+t.vx}function tn(t){return t.y+t.vy}function nn(t){var n,e,r,i=1,o=1;typeof t!="function"&&(t=$(t==null?1:+t));function l(){for(var c,x=n.length,M,w,a,m,g,f,y=0;y<o;++y)for(M=wt(n,qt,tn).visitAfter(s),c=0;c<x;++c)w=n[c],g=e[w.index],f=g*g,a=w.x+w.vx,m=w.y+w.vy,M.visit(d);function d(N,p,A,F,W){var L=N.data,K=N.r,j=g+K;if(L){if(L.index>w.index){var U=a-L.x-L.vx,V=m-L.y-L.vy,Z=U*U+V*V;Z<j*j&&(U===0&&(U=tt(r),Z+=U*U),V===0&&(V=tt(r),Z+=V*V),Z=(j-(Z=Math.sqrt(Z)))/Z*i,w.vx+=(U*=Z)*(j=(K*=K)/(f+K)),w.vy+=(V*=Z)*j,L.vx-=U*(j=1-j),L.vy-=V*j)}return}return p>a+j||F<a-j||A>m+j||W<m-j}}function s(c){if(c.data)return c.r=e[c.data.index];for(var x=c.r=0;x<4;++x)c[x]&&c[x].r>c.r&&(c.r=c[x].r)}function h(){if(n){var c,x=n.length,M;for(e=new Array(x),c=0;c<x;++c)M=n[c],e[M.index]=+t(M,c,n)}}return l.initialize=function(c,x){n=c,r=x,h()},l.iterations=function(c){return arguments.length?(o=+c,l):o},l.strength=function(c){return arguments.length?(i=+c,l):i},l.radius=function(c){return arguments.length?(t=typeof c=="function"?c:$(+c),h(),l):t},l}function en(t){return t.index}function Mt(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}function rn(t){var n=en,e=M,r,i=$(30),o,l,s,h,c,x=1;t==null&&(t=[]);function M(f){return 1/Math.min(s[f.source.index],s[f.target.index])}function w(f){for(var y=0,d=t.length;y<x;++y)for(var N=0,p,A,F,W,L,K,j;N<d;++N)p=t[N],A=p.source,F=p.target,W=F.x+F.vx-A.x-A.vx||tt(c),L=F.y+F.vy-A.y-A.vy||tt(c),K=Math.sqrt(W*W+L*L),K=(K-o[N])/K*f*r[N],W*=K,L*=K,F.vx-=W*(j=h[N]),F.vy-=L*j,A.vx+=W*(j=1-j),A.vy+=L*j}function a(){if(l){var f,y=l.length,d=t.length,N=new Map(l.map((A,F)=>[n(A,F,l),A])),p;for(f=0,s=new Array(y);f<d;++f)p=t[f],p.index=f,typeof p.source!="object"&&(p.source=Mt(N,p.source)),typeof p.target!="object"&&(p.target=Mt(N,p.target)),s[p.source.index]=(s[p.source.index]||0)+1,s[p.target.index]=(s[p.target.index]||0)+1;for(f=0,h=new Array(d);f<d;++f)p=t[f],h[f]=s[p.source.index]/(s[p.source.index]+s[p.target.index]);r=new Array(d),m(),o=new Array(d),g()}}function m(){if(l)for(var f=0,y=t.length;f<y;++f)r[f]=+e(t[f],f,t)}function g(){if(l)for(var f=0,y=t.length;f<y;++f)o[f]=+i(t[f],f,t)}return w.initialize=function(f,y){l=f,c=y,a()},w.links=function(f){return arguments.length?(t=f,a(),w):t},w.id=function(f){return arguments.length?(n=f,w):n},w.iterations=function(f){return arguments.length?(x=+f,w):x},w.strength=function(f){return arguments.length?(e=typeof f=="function"?f:$(+f),m(),w):e},w.distance=function(f){return arguments.length?(i=typeof f=="function"?f:$(+f),g(),w):i},w}var on={value:()=>{}};function Ct(){for(var t=0,n=arguments.length,e={},r;t<n;++t){if(!(r=arguments[t]+"")||r in e||/[\s.]/.test(r))throw new Error("illegal type: "+r);e[r]=[]}return new ft(e)}function ft(t){this._=t}function sn(t,n){return t.trim().split(/^|\s+/).map(function(e){var r="",i=e.indexOf(".");if(i>=0&&(r=e.slice(i+1),e=e.slice(0,i)),e&&!n.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:r}})}ft.prototype=Ct.prototype={constructor:ft,on:function(t,n){var e=this._,r=sn(t+"",e),i,o=-1,l=r.length;if(arguments.length<2){for(;++o<l;)if((i=(t=r[o]).type)&&(i=un(e[i],t.name)))return i;return}if(n!=null&&typeof n!="function")throw new Error("invalid callback: "+n);for(;++o<l;)if(i=(t=r[o]).type)e[i]=Rt(e[i],t.name,n);else if(n==null)for(i in e)e[i]=Rt(e[i],t.name,null);return this},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new ft(t)},call:function(t,n){if((i=arguments.length-2)>0)for(var e=new Array(i),r=0,i,o;r<i;++r)e[r]=arguments[r+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=this._[t],r=0,i=o.length;r<i;++r)o[r].value.apply(n,e)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};function un(t,n){for(var e=0,r=t.length,i;e<r;++e)if((i=t[e]).name===n)return i.value}function Rt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=on,t=t.slice(0,r).concat(t.slice(r+1));break}return e!=null&&t.push({name:n,value:e}),t}var it=0,st=0,ot=0,Pt=1e3,ht,ut,gt=0,et=0,yt=0,ct=typeof performance=="object"&&performance.now?performance:Date,zt=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function It(){return et||(zt(cn),et=ct.now()+yt)}function cn(){et=0}function pt(){this._call=this._time=this._next=null}pt.prototype=Lt.prototype={constructor:pt,restart:function(t,n,e){if(typeof t!="function")throw new TypeError("callback is not a function");e=(e==null?It():+e)+(n==null?0:+n),!this._next&&ut!==this&&(ut?ut._next=this:ht=this,ut=this),this._call=t,this._time=e,dt()},stop:function(){this._call&&(this._call=null,this._time=1/0,dt())}};function Lt(t,n,e){var r=new pt;return r.restart(t,n,e),r}function ln(){It(),++it;for(var t=ht,n;t;)(n=et-t._time)>=0&&t._call.call(void 0,n),t=t._next;--it}function At(){et=(gt=ct.now())+yt,it=st=0;try{ln()}finally{it=0,fn(),et=0}}function an(){var t=ct.now(),n=t-gt;n>Pt&&(yt-=n,gt=t)}function fn(){for(var t,n=ht,e,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:ht=e);ut=t,dt(r)}function dt(t){if(!it){st&&(st=clearTimeout(st));var n=t-et;n>24?(t<1/0&&(st=setTimeout(At,t-ct.now()-yt)),ot&&(ot=clearInterval(ot))):(ot||(gt=ct.now(),ot=setInterval(an,Pt)),it=1,zt(At))}}const hn=1664525,gn=1013904223,Nt=4294967296;function yn(){let t=1;return()=>(t=(hn*t+gn)%Nt)/Nt}function xn(t){return t.x}function vn(t){return t.y}var pn=10,dn=Math.PI*(3-Math.sqrt(5));function wn(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,l=.6,s=new Map,h=Lt(M),c=Ct("tick","end"),x=yn();t==null&&(t=[]);function M(){w(),c.call("tick",n),e<r&&(h.stop(),c.call("end",n))}function w(g){var f,y=t.length,d;g===void 0&&(g=1);for(var N=0;N<g;++N)for(e+=(o-e)*i,s.forEach(function(p){p(e)}),f=0;f<y;++f)d=t[f],d.fx==null?d.x+=d.vx*=l:(d.x=d.fx,d.vx=0),d.fy==null?d.y+=d.vy*=l:(d.y=d.fy,d.vy=0);return n}function a(){for(var g=0,f=t.length,y;g<f;++g){if(y=t[g],y.index=g,y.fx!=null&&(y.x=y.fx),y.fy!=null&&(y.y=y.fy),isNaN(y.x)||isNaN(y.y)){var d=pn*Math.sqrt(.5+g),N=g*dn;y.x=d*Math.cos(N),y.y=d*Math.sin(N)}(isNaN(y.vx)||isNaN(y.vy))&&(y.vx=y.vy=0)}}function m(g){return g.initialize&&g.initialize(t,x),g}return a(),n={tick:w,restart:function(){return h.restart(M),n},stop:function(){return h.stop(),n},nodes:function(g){return arguments.length?(t=g,a(),s.forEach(m),n):t},alpha:function(g){return arguments.length?(e=+g,n):e},alphaMin:function(g){return arguments.length?(r=+g,n):r},alphaDecay:function(g){return arguments.length?(i=+g,n):+i},alphaTarget:function(g){return arguments.length?(o=+g,n):o},velocityDecay:function(g){return arguments.length?(l=1-g,n):1-l},randomSource:function(g){return arguments.length?(x=g,s.forEach(m),n):x},force:function(g,f){return arguments.length>1?(f==null?s.delete(g):s.set(g,m(f)),n):s.get(g)},find:function(g,f,y){var d=0,N=t.length,p,A,F,W,L;for(y==null?y=1/0:y*=y,d=0;d<N;++d)W=t[d],p=g-W.x,A=f-W.y,F=p*p+A*A,F<y&&(L=W,y=F);return L},on:function(g,f){return arguments.length>1?(c.on(g,f),n):c.on(g)}}}function mn(){var t,n,e,r,i=$(-30),o,l=1,s=1/0,h=.81;function c(a){var m,g=t.length,f=wt(t,xn,vn).visitAfter(M);for(r=a,m=0;m<g;++m)n=t[m],f.visit(w)}function x(){if(t){var a,m=t.length,g;for(o=new Array(m),a=0;a<m;++a)g=t[a],o[g.index]=+i(g,a,t)}}function M(a){var m=0,g,f,y=0,d,N,p;if(a.length){for(d=N=p=0;p<4;++p)(g=a[p])&&(f=Math.abs(g.value))&&(m+=g.value,y+=f,d+=f*g.x,N+=f*g.y);a.x=d/y,a.y=N/y}else{g=a,g.x=g.data.x,g.y=g.data.y;do m+=o[g.data.index];while(g=g.next)}a.value=m}function w(a,m,g,f){if(!a.value)return!0;var y=a.x-n.x,d=a.y-n.y,N=f-m,p=y*y+d*d;if(N*N/h<p)return p<s&&(y===0&&(y=tt(e),p+=y*y),d===0&&(d=tt(e),p+=d*d),p<l&&(p=Math.sqrt(l*p)),n.vx+=y*a.value*r/p,n.vy+=d*a.value*r/p),!0;if(a.length||p>=s)return;(a.data!==n||a.next)&&(y===0&&(y=tt(e),p+=y*y),d===0&&(d=tt(e),p+=d*d),p<l&&(p=Math.sqrt(l*p)));do a.data!==n&&(N=o[a.data.index]*r/p,n.vx+=y*N,n.vy+=d*N);while(a=a.next)}return c.initialize=function(a,m){t=a,e=m,x()},c.strength=function(a){return arguments.length?(i=typeof a=="function"?a:$(+a),x(),c):i},c.distanceMin=function(a){return arguments.length?(l=a*a,c):Math.sqrt(l)},c.distanceMax=function(a){return arguments.length?(s=a*a,c):Math.sqrt(s)},c.theta=function(a){return arguments.length?(h=a*a,c):Math.sqrt(h)},c}function _n(t){var n=$(.1),e,r,i;typeof t!="function"&&(t=$(t==null?0:+t));function o(s){for(var h=0,c=e.length,x;h<c;++h)x=e[h],x.vx+=(i[h]-x.x)*r[h]*s}function l(){if(e){var s,h=e.length;for(r=new Array(h),i=new Array(h),s=0;s<h;++s)r[s]=isNaN(i[s]=+t(e[s],s,e))?0:+n(e[s],s,e)}}return o.initialize=function(s){e=s,l()},o.strength=function(s){return arguments.length?(n=typeof s=="function"?s:$(+s),l(),o):n},o.x=function(s){return arguments.length?(t=typeof s=="function"?s:$(+s),l(),o):t},o}function bn(t){var n=$(.1),e,r,i;typeof t!="function"&&(t=$(t==null?0:+t));function o(s){for(var h=0,c=e.length,x;h<c;++h)x=e[h],x.vy+=(i[h]-x.y)*r[h]*s}function l(){if(e){var s,h=e.length;for(r=new Array(h),i=new Array(h),s=0;s<h;++s)r[s]=isNaN(i[s]=+t(e[s],s,e))?0:+n(e[s],s,e)}}return o.initialize=function(s){e=s,l()},o.strength=function(s){return arguments.length?(n=typeof s=="function"?s:$(+s),l(),o):n},o.y=function(s){return arguments.length?(t=typeof s=="function"?s:$(+s),l(),o):t},o}function kn(t){return 4+Math.min(Math.sqrt(t)*1.2,10)}const Mn="#1a1a2e",Rn="#e0e0e0";function Et(t,n,e){let r=1/0,i=-1/0,o=1/0,l=-1/0;for(const h of t)h.x==null||h.y==null||(r=Math.min(r,h.x),i=Math.max(i,h.x),o=Math.min(o,h.y),l=Math.max(l,h.y));if(!Number.isFinite(r))return{x:0,y:0,k:1};const s=Math.max(.1,Math.min(4,Math.min((n-80)/Math.max(1,i-r),(e-80)/Math.max(1,l-o))));return{x:n/2-(r+i)/2*s,y:e/2-(o+l)/2*s,k:s}}function Nn({nodes:t,edges:n,selectedNodeId:e,onNodeClick:r,onNodeHover:i,className:o=""}){const l=C.useRef(null),s=C.useRef(null),h=C.useRef(null),c=C.useRef([]),x=C.useRef([]),M=C.useRef(null),w=C.useRef(null),a=C.useRef({x:0,y:0,k:1}),m=C.useRef(!1),g=C.useRef({x:0,y:0}),f=C.useRef({x:0,y:0}),y=C.useRef(!1),d=C.useRef(null),N=C.useRef(e??null),p=C.useRef(null),A=C.useRef(!0),F=C.useRef(new Map),W=C.useRef(r);W.current=r;const L=C.useRef(i);L.current=i,N.current=e??null,C.useEffect(()=>{var T;if(t.length===0){c.current=[],x.current=[],F.current=new Map,w.current=null,A.current=!0,(T=h.current)==null||T.stop(),h.current=null;return}const _=new Map,u=t.map((R,E)=>(_.set(R.id,E),{id:R.id,label:R.label,type:R.type,degree:R.degree,r:kn(R.degree)}));c.current=u;const S=[];for(const R of n){const E=_.get(R.source),z=_.get(R.target);E===void 0||z===void 0||S.push({source:u[E],target:u[z],type:R.type,weight:R.weight})}x.current=S;const D=new Map;for(const R of S){const E=bt(R.type);let z=D.get(E);z||(z=[],D.set(E,z)),z.push(R)}F.current=D;const X=l.current,O=(X==null?void 0:X.clientWidth)||800,B=(X==null?void 0:X.clientHeight)||600,v=u.length>5e3,k=wn(u).force("link",rn(S).id(R=>R.id).distance(R=>30+60/Math.max(1,R.source.degree+R.target.degree)).strength(v?.08:.3)).force("charge",v?null:mn().strength(R=>-30-R.degree*2)).force("center",Yt(O/2,B/2)).force("x",v?null:_n(O/2).strength(.04)).force("y",v?null:bn(B/2).strength(.04)).force("collide",v?null:nn().radius(R=>R.r+4)).alphaDecay(v?.08:.02);return k.on("tick.fit",()=>{k.alpha()<.35&&(a.current=Et(u,O,B),k.on("tick.fit",null))}),k.on("tick.dirty",()=>{A.current=!0}),h.current=k,A.current=!0,()=>{k.stop()}},[t,n]),C.useEffect(()=>{if(!e){M.current=null,A.current=!0;return}const _=new Set([e]);for(const u of x.current)u.source.id===e&&_.add(u.target.id),u.target.id===e&&_.add(u.source.id);M.current=_,A.current=!0},[e,t,n]);const K=C.useCallback(()=>{const _=l.current;if(!_)return;const u=_.getContext("2d");if(!u)return;const S=Math.min(devicePixelRatio,2),D=_.width/S,X=_.height/S;u.save(),u.clearRect(0,0,D,X),u.fillStyle=Mn,u.fillRect(0,0,D,X);const{x:O,y:B,k:v}=a.current;u.translate(O,B),u.scale(v,v);const k=c.current,T=x.current,R=N.current,E=d.current,z=M.current,Q=!!(R||E),nt=R||E,I=R?z:w.current;if(Q&&nt){u.save(),u.globalAlpha=.03,u.strokeStyle="#64748b",u.lineWidth=1/v,u.beginPath();for(const b of T){const P=b.source,Y=b.target;P.x==null||P.y==null||Y.x==null||Y.y==null||I!=null&&I.has(P.id)&&(I!=null&&I.has(Y.id))||(u.moveTo(P.x,P.y),u.lineTo(Y.x,Y.y))}u.stroke(),u.restore(),u.save(),u.globalAlpha=.6,u.lineWidth=1.5/v,u.beginPath();for(const b of T){const P=b.source,Y=b.target;P.x==null||P.y==null||Y.x==null||Y.y==null||I!=null&&I.has(P.id)&&(I!=null&&I.has(Y.id))&&(u.moveTo(P.x,P.y),u.lineTo(Y.x,Y.y))}u.strokeStyle=bt("default"),u.stroke(),u.restore()}else{u.save(),u.globalAlpha=.4,u.lineWidth=1.2/v;for(const[b,P]of F.current){u.strokeStyle=b,u.beginPath();for(const Y of P){const q=Y.source,J=Y.target;q.x==null||q.y==null||J.x==null||J.y==null||(u.moveTo(q.x,q.y),u.lineTo(J.x,J.y))}u.stroke()}u.restore()}for(const b of k){if(b.x==null||b.y==null)continue;const P=b.id===R,Y=b.id===E;if(!P&&!Y)continue;const q=P?b.r*1.7:b.r*1.35;u.globalAlpha=P?.35:.22,u.fillStyle=xt(b.type),u.beginPath(),u.arc(b.x,b.y,q*2.8,0,Math.PI*2),u.fill()}for(const b of k){if(b.x==null||b.y==null)continue;const P=b.id===R,Y=b.id===E,q=!Q||((I==null?void 0:I.has(b.id))??b.id===nt);let J=1;Q&&!q&&(J=.1);const at=P?b.r*1.7:Y?b.r*1.35:b.r;u.globalAlpha=J,u.fillStyle=xt(b.type),u.beginPath(),u.arc(b.x,b.y,at,0,Math.PI*2),u.fill(),u.globalAlpha=J*.8,u.strokeStyle="rgba(255,255,255,0.3)",u.lineWidth=1/v,u.stroke(),(P||Y)&&(u.globalAlpha=1,u.strokeStyle=P?"#ffffff":xt(b.type),u.lineWidth=(P?2:1.5)/v,u.stroke())}u.globalAlpha=1;const lt=k.length>5e3?30:k.length>1e3?8:3,jt=v>1.8&&k.length<3e3;u.font=`600 ${12/v}px system-ui, -apple-system, sans-serif`,u.textAlign="center",u.textBaseline="middle";for(const b of k){if(b.x==null||b.y==null)continue;const P=b.id===R,Y=b.id===E,q=b.degree>=lt,J=!Q||((I==null?void 0:I.has(b.id))??b.id===nt);if(!(P||Y||q||jt)||Q&&!J&&!P&&!Y)continue;const at=b.y-b.r-8/v,_t=b.label.length>48?`${b.label.slice(0,45)}…`:b.label;u.globalAlpha=J?.9:.3,u.lineJoin="round",u.lineWidth=3/v,u.strokeStyle="rgba(23,23,23,0.95)",u.strokeText(_t,b.x,at),u.fillStyle=P||Y?"#ffffff":Rn,u.fillText(_t,b.x,at),u.globalAlpha=1}u.restore(),A.current=!1},[]);C.useEffect(()=>{const _=l.current,u=s.current;if(!_||!u)return;const S=()=>{const v=Math.min(devicePixelRatio,2),k=u.clientWidth,T=u.clientHeight;_.width=k*v,_.height=T*v,_.style.width=k+"px",_.style.height=T+"px";const R=_.getContext("2d");R&&R.setTransform(v,0,0,v,0,0),A.current=!0};S();const D=new ResizeObserver(S);D.observe(u);let X=0,O=0;const B=v=>{X=requestAnimationFrame(B),A.current&&(c.current.length>5e3&&v-O<33||(O=v,K()))};return X=requestAnimationFrame(B),()=>{cancelAnimationFrame(X),D.disconnect()}},[K]);const j=C.useCallback((_,u)=>{const S=l.current;if(!S)return null;const D=S.getBoundingClientRect(),{x:X,y:O,k:B}=a.current,v=(_-D.left-X)/B,k=(u-D.top-O)/B,T=c.current;for(let R=T.length-1;R>=0;R--){const E=T[R];if(E.x==null||E.y==null)continue;const z=E.x-v,Q=E.y-k;if(z*z+Q*Q<=(E.r+3)*(E.r+3))return E}return null},[]);C.useEffect(()=>{const _=l.current;if(!_)return;const u=_;function S(v){f.current={x:v.clientX,y:v.clientY},y.current=!1;const k=j(v.clientX,v.clientY);if(k){p.current=k;const T=h.current;T&&(T.alphaTarget(.3).restart(),k.fx=k.x,k.fy=k.y),u.setPointerCapture(v.pointerId)}else m.current=!0,g.current={x:v.clientX,y:v.clientY},u.setPointerCapture(v.pointerId)}function D(v){var R;if(Math.hypot(v.clientX-f.current.x,v.clientY-f.current.y)>3&&(y.current=!0),p.current){const E=p.current,z=u.getBoundingClientRect(),{x:Q,y:nt,k:I}=a.current;E.fx=(v.clientX-z.left-Q)/I,E.fy=(v.clientY-z.top-nt)/I,A.current=!0;return}if(m.current){const E=v.clientX-g.current.x,z=v.clientY-g.current.y;a.current.x+=E,a.current.y+=z,g.current={x:v.clientX,y:v.clientY},A.current=!0;return}const k=j(v.clientX,v.clientY),T=(k==null?void 0:k.id)??null;if(T!==d.current){d.current=T;const E=T?new Set([T]):null;if(E)for(const z of x.current)z.source.id===T&&E.add(z.target.id),z.target.id===T&&E.add(z.source.id);w.current=E,(R=L.current)==null||R.call(L,T),u.style.cursor=T?"pointer":"default",A.current=!0}}function X(v){if(p.current){const k=p.current,T=h.current;T&&T.alphaTarget(0),k.fx=null,k.fy=null,p.current=null}m.current=!1,u.hasPointerCapture(v.pointerId)&&u.releasePointerCapture(v.pointerId)}function O(v){var T;if(y.current)return;const k=j(v.clientX,v.clientY);(T=W.current)==null||T.call(W,(k==null?void 0:k.id)??"")}function B(v){v.preventDefault();const k=u.getBoundingClientRect(),T=v.clientX-k.left,R=v.clientY-k.top,{x:E,y:z,k:Q}=a.current,nt=-v.deltaY*.001,I=Math.max(.1,Math.min(8,Q*Math.exp(nt))),lt=I/Q;a.current.x=T-(T-E)*lt,a.current.y=R-(R-z)*lt,a.current.k=I,A.current=!0}return u.addEventListener("pointerdown",S),u.addEventListener("pointermove",D),u.addEventListener("pointerup",X),u.addEventListener("click",O),u.addEventListener("wheel",B,{passive:!1}),()=>{u.removeEventListener("pointerdown",S),u.removeEventListener("pointermove",D),u.removeEventListener("pointerup",X),u.removeEventListener("click",O),u.removeEventListener("wheel",B)}},[j]);const U=C.useCallback(()=>{const _=l.current;if(!_)return;const u=_.getBoundingClientRect(),S=u.width/2,D=u.height/2,{x:X,y:O,k:B}=a.current,v=Math.min(8,B*1.3),k=v/B;a.current.x=S-(S-X)*k,a.current.y=D-(D-O)*k,a.current.k=v,A.current=!0},[]),V=C.useCallback(()=>{const _=l.current;if(!_)return;const u=_.getBoundingClientRect(),S=u.width/2,D=u.height/2,{x:X,y:O,k:B}=a.current,v=Math.max(.1,B/1.3),k=v/B;a.current.x=S-(S-X)*k,a.current.y=D-(D-O)*k,a.current.k=v,A.current=!0},[]),Z=C.useCallback(()=>{const _=l.current;_&&(a.current=Et(c.current,_.clientWidth,_.clientHeight),A.current=!0)},[]);return rt.jsxs("div",{ref:s,style:{position:"relative",width:"100%",height:"100%"},className:o,children:[rt.jsx("canvas",{ref:l,style:{width:"100%",height:"100%",display:"block",cursor:"default",touchAction:"none"}}),rt.jsxs("div",{style:{position:"absolute",bottom:12,right:12,display:"flex",flexDirection:"column",gap:2},children:[rt.jsx("button",{onClick:U,"aria-label":"Zoom in",style:vt,onMouseEnter:_=>_.currentTarget.style.background="rgba(255,255,255,0.12)",onMouseLeave:_=>_.currentTarget.style.background="rgba(0,0,0,0.5)",children:"+"}),rt.jsx("button",{onClick:V,"aria-label":"Zoom out",style:vt,onMouseEnter:_=>_.currentTarget.style.background="rgba(255,255,255,0.12)",onMouseLeave:_=>_.currentTarget.style.background="rgba(0,0,0,0.5)",children:"−"}),rt.jsx("button",{onClick:Z,"aria-label":"Fit graph to view",style:vt,onMouseEnter:_=>_.currentTarget.style.background="rgba(255,255,255,0.12)",onMouseLeave:_=>_.currentTarget.style.background="rgba(0,0,0,0.5)",children:"⛶"})]})]})}const vt={width:32,height:32,border:"1px solid rgba(255,255,255,0.1)",borderRadius:6,background:"rgba(0,0,0,0.5)",color:"#fff",fontSize:18,lineHeight:1,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",backdropFilter:"blur(8px)"};export{Nn as WorkspaceGraph};
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-600:oklch(57.7% .245 27.325);--color-amber-500:oklch(76.9% .188 70.08);--color-green-600:oklch(62.7% .194 149.214);--color-emerald-600:oklch(59.6% .145 163.225);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:calc(var(--radius) * .8);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--blur-xl:24px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Geist", sans-serif;--default-mono-font-family:var(--font-mono);--color-muted-foreground:var(--muted-foreground);--color-destructive-foreground:#f8fafc;--color-border:var(--border)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}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;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}html{font-family:Geist,sans-serif}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-3\.5{top:calc(var(--spacing) * 3.5)}.top-full{top:100%}.right-0{right:calc(var(--spacing) * 0)}.right-1{right:calc(var(--spacing) * 1)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-full{right:100%}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-full{left:100%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.-m-6{margin:calc(var(--spacing) * -6)}.m-0{margin:calc(var(--spacing) * 0)}.-mx-6{margin-inline:calc(var(--spacing) * -6)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-3\.5{margin-inline:calc(var(--spacing) * 3.5)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing) * 1)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-2{margin-left:calc(var(--spacing) * 2)}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.h-svh{height:100svh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-\[80vh\]{max-height:80vh}.max-h-\[calc\(100\%-1\.5rem\)\]{max-height:calc(100% - 1.5rem)}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[80px\]{min-height:80px}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-64{width:calc(var(--spacing) * 64)}.w-\[min\(20rem\,calc\(100\%-1\.5rem\)\)\]{width:min(20rem,100% - 1.5rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-50{max-width:calc(var(--spacing) * 50)}.max-w-\[70\%\]{max-width:70%}.max-w-\[200px\]{max-width:200px}.max-w-\[320px\]{max-width:320px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-5{min-width:calc(var(--spacing) * 5)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-0{rotate:0deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[min\(var\(--radius-md\)\,10px\)\]{border-radius:min(var(--radius-md),10px)}.rounded-\[min\(var\(--radius-md\)\,12px\)\]{border-radius:min(var(--radius-md),12px)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.border{border-style:var(--tw-border-style);border-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-border,.border-border\/50{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/50{border-color:color-mix(in oklab,var(--border) 50%,transparent)}}.border-chart-1\/30{border-color:var(--chart-1)}@supports (color:color-mix(in lab,red,red)){.border-chart-1\/30{border-color:color-mix(in oklab,var(--chart-1) 30%,transparent)}}.border-chart-2\/30{border-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.border-chart-2\/30{border-color:color-mix(in oklab,var(--chart-2) 30%,transparent)}}.border-chart-3\/30{border-color:var(--chart-3)}@supports (color:color-mix(in lab,red,red)){.border-chart-3\/30{border-color:color-mix(in oklab,var(--chart-3) 30%,transparent)}}.border-chart-4\/30{border-color:var(--chart-4)}@supports (color:color-mix(in lab,red,red)){.border-chart-4\/30{border-color:color-mix(in oklab,var(--chart-4) 30%,transparent)}}.border-destructive{border-color:var(--destructive)}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-\[\#171717\]{background-color:#171717}.bg-\[\#202020\]\/95{background-color:#202020f2}.bg-background{background-color:var(--background)}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.bg-black\/10{background-color:color-mix(in oklab,var(--color-black) 10%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/50{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,var(--card) 50%,transparent)}}.bg-chart-1\/15{background-color:var(--chart-1)}@supports (color:color-mix(in lab,red,red)){.bg-chart-1\/15{background-color:color-mix(in oklab,var(--chart-1) 15%,transparent)}}.bg-chart-2\/15{background-color:var(--chart-2)}@supports (color:color-mix(in lab,red,red)){.bg-chart-2\/15{background-color:color-mix(in oklab,var(--chart-2) 15%,transparent)}}.bg-chart-3\/15{background-color:var(--chart-3)}@supports (color:color-mix(in lab,red,red)){.bg-chart-3\/15{background-color:color-mix(in oklab,var(--chart-3) 15%,transparent)}}.bg-chart-4\/15{background-color:var(--chart-4)}@supports (color:color-mix(in lab,red,red)){.bg-chart-4\/15{background-color:color-mix(in oklab,var(--chart-4) 15%,transparent)}}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive) 10%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-muted,.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--muted) 20%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted) 30%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.fill-foreground{fill:var(--foreground)}.p-0{padding:calc(var(--spacing) * 0)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-heading{font-family:Geist,sans-serif}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-foreground{color:var(--accent-foreground)}.text-amber-500\/80{color:#f99c00cc}@supports (color:color-mix(in lab,red,red)){.text-amber-500\/80{color:color-mix(in oklab,var(--color-amber-500) 80%,transparent)}}.text-background{color:var(--background)}.text-card-foreground{color:var(--card-foreground)}.text-chart-1{color:var(--chart-1)}.text-chart-2{color:var(--chart-2)}.text-chart-3{color:var(--chart-3)}.text-chart-4{color:var(--chart-4)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--color-destructive-foreground)}.text-emerald-600{color:var(--color-emerald-600)}.text-foreground{color:var(--foreground)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-600{color:var(--color-red-600)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground) 70%,transparent)}}.uppercase{text-transform:uppercase}.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,)}.underline-offset-4{text-underline-offset:4px}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_var\(--sidebar-border\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-border));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur-xl{--tw-backdrop-blur:blur(var(--blur-xl));-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,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media(hover:hover){.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing) * 8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing) * -8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing) * 8)!important;height:calc(var(--spacing) * 8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing) * 4)) + 2px)}.group-data-\[collapsible\=icon\]\:flex-col:is(:where(.group)[data-collapsible=icon] *){flex-direction:column}.group-data-\[collapsible\=icon\]\:items-center:is(:where(.group)[data-collapsible=icon] *){align-items:center}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing) * 2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing) * 0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing) * -4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing) * 0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=floating\]\:ring-1:is(:where(.group)[data-variant=floating] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[variant\=floating\]\:ring-sidebar-border:is(:where(.group)[data-variant=floating] *){--tw-ring-color:var(--sidebar-border)}@media(hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing) * 1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing) * 2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing) * 1)}.peer-data-active\/menu-button\:text-sidebar-accent-foreground:is(:is(:where(.peer\/menu-button):where([data-state=active]),:where(.peer\/menu-button):where([data-active]:not([data-active=false])))~*){color:var(--sidebar-accent-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-6::file-selector-button{height:calc(var(--spacing) * 6)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing) * -2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing) * 0)}.after\:start-1\/2:after{content:var(--tw-content);inset-inline-start:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:border-border:hover{border-color:var(--border)}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.hover\:bg-destructive\/80:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/80:hover{background-color:color-mix(in oklab,var(--destructive) 80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.hover\:bg-primary\/80:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/80:hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-\[0_0_0_1px_var\(--sidebar-accent\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-accent));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-destructive\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-destructive\/40:focus-visible{border-color:color-mix(in oklab,var(--destructive) 40%,transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-input\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-input\/50:disabled{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}:where([data-slot=button-group]) .in-data-\[slot\=button-group\]\:rounded-lg{border-radius:var(--radius)}.has-data-\[icon\=inline-end\]\:pr-1\.5:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-end\]\:pr-2:has([data-icon=inline-end]){padding-right:calc(var(--spacing) * 2)}.has-data-\[icon\=inline-start\]\:pl-1\.5:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 1.5)}.has-data-\[icon\=inline-start\]\:pl-2:has([data-icon=inline-start]){padding-left:calc(var(--spacing) * 2)}.has-data-\[slot\=kbd\]\:pr-1\.5:has([data-slot=kbd]){padding-right:calc(var(--spacing) * 1.5)}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-expanded\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.aria-expanded\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.aria-expanded\:text-foreground[aria-expanded=true]{color:var(--foreground)}.aria-expanded\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.aria-expanded\:opacity-100[aria-expanded=true]{opacity:1}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:calc(var(--spacing) * 0)}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:calc(var(--spacing) * 0)}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:calc(var(--spacing) * 0)}.data-\[side\=left\]\:left-0[data-side=left]{left:calc(var(--spacing) * 0)}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=left\]\:group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\][data-side=left]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:calc(var(--spacing) * 0)}.data-\[side\=right\]\:right-0[data-side=right]{right:calc(var(--spacing) * 0)}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=right\]\:group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\][data-side=right]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:calc(var(--spacing) * 0)}.data-\[side\=top\]\:top-0[data-side=top]{top:calc(var(--spacing) * 0)}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=md\]\:text-sm[data-size=md]{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\[size\=sm\]\:text-xs[data-size=sm]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}:is(.\*\*\:data-\[slot\=kbd\]\:relative *)[data-slot=kbd]{position:relative}:is(.\*\*\:data-\[slot\=kbd\]\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.\*\*\:data-\[slot\=kbd\]\:z-50 *)[data-slot=kbd]{z-index:50}:is(.\*\*\:data-\[slot\=kbd\]\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}.data-\[state\=delayed-open\]\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=delayed-open\]\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.data-\[state\=delayed-open\]\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-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,)}}@media(min-width:40rem){.sm\:order-1{order:1}.sm\:flex{display:flex}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.sm\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left],.data-\[side\=right\]\:sm\:max-w-sm[data-side=right]{max-width:var(--container-sm)}}@media(min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing) * 2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing) * 0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) * 1.4)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing) * 2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:flex-row{flex-direction:row}.xl\:items-center{align-items:center}.xl\:justify-between{justify-content:space-between}}.ltr\:-translate-x-1\/2:where(:dir(ltr),[dir=ltr],[dir=ltr] *),.rtl\:-translate-x-1\/2:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:0deg}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:bg-destructive\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/20:is(.dark *){background-color:color-mix(in oklab,var(--destructive) 20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input) 30%,transparent)}}@media(hover:hover){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-destructive\/30:is(.dark *):hover{background-color:color-mix(in oklab,var(--destructive) 30%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input) 50%,transparent)}}.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-muted\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:disabled\:bg-input\/80:is(.dark *):disabled{background-color:color-mix(in oklab,var(--input) 80%,transparent)}}.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab,var(--destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}@media(hover:hover){:is(.data-open\:hover\:bg-sidebar-accent:where([data-state=open]),.data-open\:hover\:bg-sidebar-accent:where([data-open]:not([data-open=false]))):hover{background-color:var(--sidebar-accent)}:is(.data-open\:hover\:text-sidebar-accent-foreground:where([data-state=open]),.data-open\:hover\:text-sidebar-accent-foreground:where([data-open]:not([data-open=false]))):hover{color:var(--sidebar-accent-foreground)}}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y: 10% }.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x: -10% }.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x: 10% }.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y: -10% }.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y: 10% }.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x: -10% }.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x: 10% }.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y: -10% }.data-active\:bg-sidebar-accent:where([data-state=active]),.data-active\:bg-sidebar-accent:where([data-active]:not([data-active=false])){background-color:var(--sidebar-accent)}.data-active\:font-medium:where([data-state=active]),.data-active\:font-medium:where([data-active]:not([data-active=false])){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-active\:text-sidebar-accent-foreground:where([data-state=active]),.data-active\:text-sidebar-accent-foreground:where([data-active]:not([data-active=false])){color:var(--sidebar-accent-foreground)}.data-horizontal\:h-px:where([data-orientation=horizontal]){height:1px}.data-horizontal\:w-full:where([data-orientation=horizontal]){width:100%}.data-vertical\:w-px:where([data-orientation=vertical]){width:1px}.data-vertical\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*=size-]){width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 svg:not([class*=size-]){width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}@media(hover:hover){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.\[a\]\:hover\:bg-primary\/80:is(a):hover{background-color:color-mix(in oklab,var(--primary) 80%,transparent)}}}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing) * -2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing) * -2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes zoom-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-in{animation-duration:.15s;animation-timing-function:ease-out;animation-fill-mode:both}.fade-in-0{animation-name:fade-in}.zoom-in-95{animation-name:zoom-in}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"<length-percentage>";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"<angle>";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media(prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}.page{flex-direction:column;gap:20px;display:flex}.page h1{margin:0;font-size:28px}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{border:1px solid var(--color-border);background:#111827eb;border-radius:8px;padding:16px}.panel h2,.panel h3{margin-top:0}.stat{border-bottom:1px solid #243041cc;justify-content:space-between;gap:12px;padding:10px 0;display:flex}.stat:last-child{border-bottom:0;padding-bottom:0}.muted{color:var(--color-muted-foreground)}.query-form{flex-direction:column;gap:12px;display:flex}.field{flex-direction:column;gap:8px;display:flex}.code{border:1px solid var(--color-border);white-space:pre-wrap;background:#050a13eb;border-radius:8px;padding:14px;font-family:SFMono-Regular,Consolas,monospace;font-size:13px;overflow:auto}.nexus-layout{grid-template-columns:minmax(0,1.7fr) minmax(320px,.9fr);align-items:start;gap:16px;display:grid}.nexus-panel,.nexus-sidebar{min-height:760px}.nexus-toolbar{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.nexus-toolbar h2{margin-bottom:6px}.nexus-toolbar p{margin:0}.nexus-controls{flex-wrap:wrap;align-items:end;gap:12px;margin-bottom:12px;display:flex}.nexus-field{flex:220px;min-width:220px}.nexus-canvas{border:1px solid var(--color-border);background:linear-gradient(#94a3b80f 1px,#0000 1px) 0 0/24px 24px,linear-gradient(90deg,#94a3b80f 1px,#0000 1px) 0 0/24px 24px,#050a13eb;border-radius:8px;overflow:hidden}.force-canvas{height:720px}.force-canvas canvas{display:block}.pixi-canvas-host canvas{touch-action:none;display:block;width:100%!important;height:100%!important}.nexus-legend{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.legend-item{color:var(--color-muted-foreground);align-items:center;gap:6px;font-size:12px;display:inline-flex}.legend-dot{border-radius:999px;width:10px;height:10px;box-shadow:0 0 10px}@media(max-width:960px){.grid.cols-2,.nexus-layout{grid-template-columns:1fr}.force-canvas{height:560px}}:root{--background:oklch(100% 0 0);--foreground:oklch(14.5% 0 0);--card:oklch(100% 0 0);--card-foreground:oklch(14.5% 0 0);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.5% 0 0);--primary:oklch(20.5% 0 0);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(97% 0 0);--secondary-foreground:oklch(20.5% 0 0);--muted:oklch(97% 0 0);--muted-foreground:oklch(55.6% 0 0);--accent:oklch(97% 0 0);--accent-foreground:oklch(20.5% 0 0);--destructive:oklch(57.7% .245 27.325);--border:oklch(92.2% 0 0);--input:oklch(92.2% 0 0);--ring:oklch(70.8% 0 0);--chart-1:oklch(87% 0 0);--chart-2:oklch(55.6% 0 0);--chart-3:oklch(43.9% 0 0);--chart-4:oklch(37.1% 0 0);--chart-5:oklch(26.9% 0 0);--radius:.625rem;--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.5% 0 0);--sidebar-primary:oklch(20.5% 0 0);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(97% 0 0);--sidebar-accent-foreground:oklch(20.5% 0 0);--sidebar-border:oklch(92.2% 0 0);--sidebar-ring:oklch(70.8% 0 0)}.dark{--background:oklch(14.5% 0 0);--foreground:oklch(98.5% 0 0);--card:oklch(20.5% 0 0);--card-foreground:oklch(98.5% 0 0);--popover:oklch(20.5% 0 0);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92.2% 0 0);--primary-foreground:oklch(20.5% 0 0);--secondary:oklch(26.9% 0 0);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(26.9% 0 0);--muted-foreground:oklch(70.8% 0 0);--accent:oklch(26.9% 0 0);--accent-foreground:oklch(78% .12 195);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.6% 0 0);--chart-1:oklch(87% 0 0);--chart-2:oklch(55.6% 0 0);--chart-3:oklch(43.9% 0 0);--chart-4:oklch(37.1% 0 0);--chart-5:oklch(26.9% 0 0);--sidebar:oklch(20.5% 0 0);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(26.9% 0 0);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.6% 0 0)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-muted-foreground)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@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));filter:blur(var(--tw-enter-blur,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));filter:blur(var(--tw-exit-blur,0))}}