rivet-design 0.28.1 → 0.28.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/cli/commands/libraryOpen.js +1 -0
  2. package/dist/cli/commands/mcpServe.js +5 -1
  3. package/dist/cli/commands/open.js +17 -6
  4. package/dist/cli/commands/profile.js +8 -1
  5. package/dist/cli/commands/profileDisconnect.d.ts +3 -0
  6. package/dist/cli/commands/profileDisconnect.js +34 -0
  7. package/dist/cli/commands/serve.js +2 -0
  8. package/dist/cli/commands/shared.js +4 -1
  9. package/dist/cli/envelope.d.ts +1 -0
  10. package/dist/cli/router.js +8 -2
  11. package/dist/jest.globalSetup.d.ts +3 -0
  12. package/dist/jest.globalSetup.js +19 -0
  13. package/dist/library/browserLaunch.d.ts +2 -1
  14. package/dist/library/browserLaunch.js +3 -2
  15. package/dist/proxy-middleware/proxy-config.d.ts +0 -1
  16. package/dist/proxy-middleware/proxy-config.js +6 -34
  17. package/dist/routes/agentVariants.js +20 -173
  18. package/dist/routes/referenceProfiles.js +3 -3
  19. package/dist/routes/static.js +8 -2
  20. package/dist/server.d.ts +1 -1
  21. package/dist/server.js +15 -26
  22. package/dist/services/AuthService.js +7 -61
  23. package/dist/services/IntegrationsClient.d.ts +2 -1
  24. package/dist/services/IntegrationsClient.js +46 -20
  25. package/dist/services/TelemetryService.d.ts +16 -2
  26. package/dist/services/TelemetryService.js +18 -0
  27. package/dist/services/accessTokenRefresh.js +2 -2
  28. package/dist/services/profiles/DesignProfiles.d.ts +16 -0
  29. package/dist/services/profiles/DesignProfiles.js +78 -17
  30. package/dist/services/profiles/ProfileAnalysis.d.ts +3 -0
  31. package/dist/services/profiles/ProfileAnalysis.js +66 -1
  32. package/dist/services/profiles/ProfileImports.d.ts +2 -0
  33. package/dist/services/profiles/ProfileImports.js +2 -0
  34. package/dist/services/templates/viteReactTs.js +1 -1
  35. package/dist/storage/profiles/ProfileRecords.d.ts +17 -0
  36. package/dist/storage/profiles/ProfileRecords.js +45 -7
  37. package/dist/storage/profiles/migrations.d.ts +2 -2
  38. package/dist/storage/profiles/migrations.js +7 -0
  39. package/dist/storage/profiles/schema.d.ts +48 -0
  40. package/dist/storage/profiles/schema.js +3 -0
  41. package/dist/types/api-responses.d.ts +39 -0
  42. package/dist/types/api-responses.js +12 -1
  43. package/dist/types/design-profile.d.ts +12 -0
  44. package/dist/types/design-profile.js +10 -1
  45. package/dist/types/rivet-page-types.d.ts +48 -0
  46. package/dist/types/rivet-page-types.js +6 -0
  47. package/dist/utils/failureReason.js +1 -1
  48. package/dist/utils/hostedLogPrivacy.js +1 -1
  49. package/dist/utils/launchRuntime.d.ts +2 -0
  50. package/dist/utils/launchRuntime.js +12 -0
  51. package/dist/utils/rivetPage.d.ts +8 -0
  52. package/dist/utils/rivetPage.js +24 -0
  53. package/dist/utils/rivetPage.testHelpers.d.ts +6 -0
  54. package/dist/utils/rivetPage.testHelpers.js +18 -0
  55. package/dist/utils/rivetPageDocument.d.ts +7 -0
  56. package/dist/utils/rivetPageDocument.js +41 -0
  57. package/dist/utils/scriptJson.d.ts +2 -0
  58. package/dist/utils/scriptJson.js +9 -0
  59. package/dist/utils/skills/cli-guidance.d.ts +1 -1
  60. package/dist/utils/skills/cli-guidance.js +2 -1
  61. package/dist/utils/uiDistPath.d.ts +2 -0
  62. package/dist/utils/uiDistPath.js +22 -0
  63. package/package.json +8 -5
  64. package/src/ui/dist/assets/LibraryEntry-CSU5OJwC.js +2 -0
  65. package/src/ui/dist/assets/google-g-CpxN0HWb.png +0 -0
  66. package/src/ui/dist/assets/main-B89lcZEY.css +1 -0
  67. package/src/ui/dist/assets/main-DeCxjHC1.js +204 -0
  68. package/src/ui/dist/index.html +3 -3
  69. package/src/ui/dist/pages/empty-project.html +53 -0
  70. package/src/ui/dist/pages/rivet-page.html +53 -0
  71. package/dist/routes/emptyStatePage.d.ts +0 -2
  72. package/dist/routes/emptyStatePage.js +0 -589
  73. package/src/ui/dist/assets/LibraryEntry-DS6Ce0sW.js +0 -112
  74. package/src/ui/dist/assets/logo-animation/clasp.png +0 -0
  75. package/src/ui/dist/assets/logo-animation/eraser.png +0 -0
  76. package/src/ui/dist/assets/logo-animation/playdough.png +0 -0
  77. package/src/ui/dist/assets/logo-animation/sea/bubblephone.png +0 -0
  78. package/src/ui/dist/assets/logo-animation/sea/cart.png +0 -0
  79. package/src/ui/dist/assets/logo-animation/sea/chair.png +0 -0
  80. package/src/ui/dist/assets/logo-animation/sea/desk.png +0 -0
  81. package/src/ui/dist/assets/logo-animation/sea/mug.png +0 -0
  82. package/src/ui/dist/assets/logo-animation/sea/pitcher.png +0 -0
  83. package/src/ui/dist/assets/logo-animation/sea/pot.png +0 -0
  84. package/src/ui/dist/assets/logo-animation/sea/startac.png +0 -0
  85. package/src/ui/dist/assets/logo-animation/sea/terracotta-1.png +0 -0
  86. package/src/ui/dist/assets/logo-animation/sea/terracotta-2.png +0 -0
  87. package/src/ui/dist/assets/logo-animation/sea/vhsplant.png +0 -0
  88. package/src/ui/dist/assets/main-CQSk-6km.css +0 -1
  89. package/src/ui/dist/assets/main-DkKRuatC.js +0 -218
@@ -0,0 +1,2 @@
1
+ var qe=r=>{throw TypeError(r)};var Ne=(r,t,a)=>t.has(r)||qe("Cannot "+a);var N=(r,t,a)=>(Ne(r,t,"read from private field"),a?a.call(r):t.get(r)),K=(r,t,a)=>t.has(r)?qe("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(r):t.set(r,a),Z=(r,t,a,n)=>(Ne(r,t,"write to private field"),n?n.call(r,a):t.set(r,a),a),Q=(r,t,a)=>(Ne(r,t,"access private method"),a);import{S as Nt,n as Ae,s as Et,r as At,Q as et,u as Pe,a as Lt,b as Rt,c as s,e as It,d as kt,f as _t,g as Ht,h as ze,i as Ct,j as Mt,p as ye,k as de,l as e,B as H,m as Le,M as Pt,o as Vt,q as Ot,t as Zt,v as Ee,w as Tt,x as tt,D as rt,y as st,z as at,A as nt,P as Ft,C as it,E as Ue,F as Dt,G as $t,H as qt,I as Ke,J as zt,K as re,L as ve,N as T,R as Ut,O as ot,T as Kt,U as ne,V as Qt,W as Bt,X as ce,Y as Wt,Z as ie,_ as q,$ as lt,a0 as je,a1 as Gt,a2 as Yt,a3 as $,a4 as ct,a5 as Jt,a6 as Xt,a7 as ue,a8 as er,a9 as Re,aa as tr,ab as rr,ac as Qe,ad as sr,ae as ar,af as nr,ag as ir,ah as or,ai as lr,aj as cr,ak as dr,al as ur,am as mr,an as hr,ao as pr,ap as fr,aq as xr,ar as br,as as gr,at as vr,au as yr,av as jr,aw as dt,ax as wr,ay as Sr,az as Nr,aA as Er,aB as Ar,aC as Lr,aD as Rr,aE as Ir,aF as kr}from"./main-DeCxjHC1.js";function Be(r,t){const a=new Set(t);return r.filter(n=>!a.has(n))}var oe,D,le,se,U,ae,me,he,pe,fe,M,Ie,ke,ut,_e,He,Ce,Xe,_r=(Xe=class extends Nt{constructor(t,a,n){super();K(this,M);K(this,oe);K(this,D);K(this,le);K(this,se);K(this,U);K(this,ae);K(this,me);K(this,he);K(this,pe);K(this,fe,[]);Z(this,oe,t),Z(this,se,n),Z(this,le,[]),Z(this,U,[]),Z(this,D,[]),this.setQueries(a)}onSubscribe(){this.listeners.size===1&&N(this,U).forEach(t=>{t.subscribe(a=>{Q(this,M,He).call(this,t,a)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,N(this,U).forEach(t=>{t.destroy()})}setQueries(t,a){Z(this,le,t),Z(this,se,a),Ae.batch(()=>{const n=N(this,U),o=Q(this,M,_e).call(this,N(this,le));o.forEach(x=>x.observer.setOptions(x.defaultedQueryOptions));const l=o.map(x=>x.observer),c=l.map(x=>x.getCurrentResult()),i=n.length!==l.length,p=l.some((x,f)=>x!==n[f]),h=i||p,S=h?!0:c.some((x,f)=>{const g=N(this,D)[f];return!g||!Et(x,g)});!h&&!S||(h&&(Z(this,fe,o),Z(this,U,l)),Z(this,D,c),this.hasListeners()&&(h&&(Be(n,l).forEach(x=>{x.destroy()}),Be(l,n).forEach(x=>{x.subscribe(f=>{Q(this,M,He).call(this,x,f)})})),Q(this,M,Ce).call(this)))})}getCurrentResult(){return N(this,D)}getQueries(){return N(this,U).map(t=>t.getCurrentQuery())}getObservers(){return N(this,U)}getOptimisticResult(t,a){const n=Q(this,M,_e).call(this,t),o=n.map(c=>c.observer.getOptimisticResult(c.defaultedQueryOptions)),l=n.map(c=>c.defaultedQueryOptions.queryHash);return[o,c=>Q(this,M,ke).call(this,c??o,a,l),()=>Q(this,M,Ie).call(this,o,n)]}},oe=new WeakMap,D=new WeakMap,le=new WeakMap,se=new WeakMap,U=new WeakMap,ae=new WeakMap,me=new WeakMap,he=new WeakMap,pe=new WeakMap,fe=new WeakMap,M=new WeakSet,Ie=function(t,a){const n=new Set;return a.map((o,l)=>{const c=t[l];return o.defaultedQueryOptions.notifyOnChangeProps?c:o.observer.trackResult(c,i=>{n.has(i)||(n.add(i),a.forEach(p=>{p.observer.trackProp(i)}))})})},ke=function(t,a,n){if(a){const o=N(this,pe),l=n!==void 0&&o!==void 0&&(o.length!==n.length||n.some((c,i)=>c!==o[i]));return(N(this,D)!==N(this,he)||l||a!==N(this,me))&&(Z(this,me,a),Z(this,he,N(this,D)),n!==void 0&&Z(this,pe,n),Z(this,ae,At(N(this,ae),a(t)))),N(this,ae)}return t},ut=function(){var t;return!((t=N(this,se))!=null&&t.combine)||N(this,U).some((a,n)=>{var o;return a.options.suspense&&((o=N(this,D)[n])==null?void 0:o.data)===void 0})},_e=function(t){const a=new Map;N(this,U).forEach(o=>{const l=o.options.queryHash;if(!l)return;const c=a.get(l);c?c.push(o):a.set(l,[o])});const n=[];return t.forEach(o=>{var i;const l=N(this,oe).defaultQueryOptions(o),c=((i=a.get(l.queryHash))==null?void 0:i.shift())??new et(N(this,oe),l);n.push({defaultedQueryOptions:l,observer:c})}),n},He=function(t,a){const n=N(this,U).indexOf(t);n!==-1&&(Z(this,D,N(this,D).slice()),N(this,D)[n]=a,Q(this,M,Ce).call(this))},Ce=function(){var t;if(this.hasListeners()){const a=Q(this,M,ut).call(this),n=N(this,ae),o=a?n:Q(this,M,ke).call(this,Q(this,M,Ie).call(this,N(this,D),N(this,fe)),(t=N(this,se))==null?void 0:t.combine);(a||n!==o)&&Ae.batch(()=>{this.listeners.forEach(l=>{l(N(this,D))})})}},Xe);function Hr({queries:r,...t},a){const n=Pe(),o=Lt(),l=Rt(),c=t.subscribed!==!1,i=s.useMemo(()=>r.map(b=>{const A=n.defaultQueryOptions(b);return A._optimisticResults=o?"isRestoring":c?"optimistic":void 0,A}),[r,n,o,c]);i.forEach(b=>{It(b);const A=n.getQueryCache().get(b.queryHash);kt(b,l,A)}),_t(l);const[p]=s.useState(()=>new _r(n,i,t)),[h,S,x]=p.getOptimisticResult(i,t.combine);s.useEffect(()=>{p.setQueries(i,t)},[i,t,p]);const f=!o&&c;s.useSyncExternalStore(s.useCallback(b=>f?p.subscribe(Ae.batchCalls(b)):Ht,[p,f]),()=>p.getCurrentResult(),()=>p.getCurrentResult());const g=h.some((b,A)=>ze(i[A],b))?h.flatMap((b,A)=>{const j=i[A];if(j&&ze(j,b)){const k=new et(n,j);return Ct(j,k,l)}return[]}):[];if(g.length>0)throw Promise.all(g);const R=h.find((b,A)=>{const j=i[A];return j&&Mt({result:b,errorResetBoundary:l,throwOnError:j.throwOnError,query:n.getQueryCache().get(j.queryHash),suspense:j.suspense})});if(R)throw R.error;return S(x())}const Cr=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M112,56V200L40,128Z",opacity:"0.2"}),s.createElement("path",{d:"M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z"}))]]),Mr=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M204,64V168a12,12,0,0,1-24,0V93L72.49,200.49a12,12,0,0,1-17-17L163,76H88a12,12,0,0,1,0-24H192A12,12,0,0,1,204,64Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M192,64V168L88,64Z",opacity:"0.2"}),s.createElement("path",{d:"M192,56H88a8,8,0,0,0-5.66,13.66L128.69,116,58.34,186.34a8,8,0,0,0,11.32,11.32L140,127.31l46.34,46.35A8,8,0,0,0,200,168V64A8,8,0,0,0,192,56Zm-8,92.69-38.34-38.34h0L107.31,72H184Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M200,64V168a8,8,0,0,1-13.66,5.66L140,127.31,69.66,197.66a8,8,0,0,1-11.32-11.32L128.69,116,82.34,69.66A8,8,0,0,1,88,56H192A8,8,0,0,1,200,64Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M198,64V168a6,6,0,0,1-12,0V78.48L68.24,196.24a6,6,0,0,1-8.48-8.48L177.52,70H88a6,6,0,0,1,0-12H192A6,6,0,0,1,198,64Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M200,64V168a8,8,0,0,1-16,0V83.31L69.66,197.66a8,8,0,0,1-11.32-11.32L172.69,72H88a8,8,0,0,1,0-16H192A8,8,0,0,1,200,64Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M196,64V168a4,4,0,0,1-8,0V73.66L66.83,194.83a4,4,0,0,1-5.66-5.66L182.34,68H88a4,4,0,0,1,0-8H192A4,4,0,0,1,196,64Z"}))]]),Pr=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M231,112a12,12,0,0,0-10.81-1.65l-23.81,7.93a12,12,0,0,0-7.34,6.93l-13.67,34.18-34.18,13.67a12,12,0,0,0-6.93,7.34l-7.93,23.81A12,12,0,0,0,137.73,220H216a20,20,0,0,0,20-20V121.73A12,12,0,0,0,231,112Zm-19,84H154.38l.91-2.73,33.79-13.51a12,12,0,0,0,6.68-6.68l13.51-33.79,2.73-.91Zm4-160H40A20,20,0,0,0,20,56V200a20,20,0,0,0,20,20H95.57A12,12,0,0,0,107,211.79L123.21,163l35.09-14A12,12,0,0,0,165,142.3l14-35.09L227.79,91A12,12,0,0,0,236,79.57V56A20,20,0,0,0,216,36ZM102.2,150.16,86.92,196H44V173.66l48-48,17.14,17.14h0A12,12,0,0,0,102.2,150.16ZM212,70.92,166.16,86.2a12,12,0,0,0-7.35,6.93l-14.2,35.48-11.22,4.49-27.25-27.24a20,20,0,0,0-28.28,0L44,139.72V60H212Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M224,56V88l-48,16-16,40-23.35,9.34-39-39a8,8,0,0,0-11.32,0L32,168.69V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z",opacity:"0.2"}),s.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16h64a8,8,0,0,0,7.59-5.47l14.83-44.48L163,151.43a8.07,8.07,0,0,0,4.46-4.46l14.62-36.55,44.48-14.83A8,8,0,0,0,232,88V56A16,16,0,0,0,216,40ZM112.41,157.47,98.23,200H40V172l52-52,30.42,30.42L117,152.57A8,8,0,0,0,112.41,157.47ZM216,82.23,173.47,96.41a8,8,0,0,0-4.9,4.62l-14.72,36.82L138.58,144l-35.27-35.27a16,16,0,0,0-22.62,0L40,149.37V56H216Zm12.68,33a8,8,0,0,0-7.21-1.1l-23.8,7.94a8,8,0,0,0-4.9,4.61l-14.31,35.77-35.77,14.31a8,8,0,0,0-4.61,4.9l-7.94,23.8A8,8,0,0,0,137.73,216H216a16,16,0,0,0,16-16V121.73A8,8,0,0,0,228.68,115.24ZM216,200H148.83l3.25-9.75,35.51-14.2a8.07,8.07,0,0,0,4.46-4.46l14.2-35.51,9.75-3.25Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16h64a8,8,0,0,0,7.59-5.47l14.83-44.48L163,151.43a8.07,8.07,0,0,0,4.46-4.46l14.62-36.55,44.48-14.83A8,8,0,0,0,232,88V56A16,16,0,0,0,216,40ZM117,152.57a8,8,0,0,0-4.62,4.9L98.23,200H40V160.69l46.34-46.35a8,8,0,0,1,11.32,0l32.84,32.84Zm115-30.84V200a16,16,0,0,1-16,16H137.73a8,8,0,0,1-7.59-10.53l7.94-23.8a8,8,0,0,1,4.61-4.9l35.77-14.31,14.31-35.77a8,8,0,0,1,4.9-4.61l23.8-7.94A8,8,0,0,1,232,121.73Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,42H40A14,14,0,0,0,26,56V200a14,14,0,0,0,14,14h64a6,6,0,0,0,5.69-4.1l15.12-45.36,37.42-15a6,6,0,0,0,3.34-3.34l15-37.42L225.9,93.69A6,6,0,0,0,230,88V56A14,14,0,0,0,216,42ZM117.77,154.43a6,6,0,0,0-3.46,3.67L99.68,202H40a2,2,0,0,1-2-2V171.17l52.58-52.58a2,2,0,0,1,2.83,0L126,151.15ZM218,83.68,174.1,98.31a6,6,0,0,0-3.67,3.46l-15.05,37.61L138.1,146.3l-36.2-36.2a14,14,0,0,0-19.8,0L38,154.2V56a2,2,0,0,1,2-2H216a2,2,0,0,1,2,2Zm9.51,33.18a6,6,0,0,0-5.41-.82L198.3,124a6,6,0,0,0-3.67,3.47L180,164l-36.56,14.63A6,6,0,0,0,140,182.3L132,206.1a6,6,0,0,0,5.69,7.9H216a14,14,0,0,0,14-14V121.73A6,6,0,0,0,227.51,116.86ZM218,200a2,2,0,0,1-2,2H146.06l4.42-13.26,36.37-14.55a6,6,0,0,0,3.34-3.34l14.55-36.37L218,130.06Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16h64a8,8,0,0,0,7.59-5.47l14.83-44.48L163,151.43a8.07,8.07,0,0,0,4.46-4.46l14.62-36.55,44.48-14.83A8,8,0,0,0,232,88V56A16,16,0,0,0,216,40ZM112.41,157.47,98.23,200H40V172l52-52,30.42,30.42L117,152.57A8,8,0,0,0,112.41,157.47ZM216,82.23,173.47,96.41a8,8,0,0,0-4.9,4.62l-14.72,36.82L138.58,144l-35.27-35.27a16,16,0,0,0-22.62,0L40,149.37V56H216Zm12.68,33a8,8,0,0,0-7.21-1.1l-23.8,7.94a8,8,0,0,0-4.9,4.61l-14.31,35.77-35.77,14.31a8,8,0,0,0-4.61,4.9l-7.94,23.8A8,8,0,0,0,137.73,216H216a16,16,0,0,0,16-16V121.73A8,8,0,0,0,228.68,115.24ZM216,200H148.83l3.25-9.75,35.51-14.2a8.07,8.07,0,0,0,4.46-4.46l14.2-35.51,9.75-3.25Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,44H40A12,12,0,0,0,28,56V200a12,12,0,0,0,12,12h64a4,4,0,0,0,3.79-2.74L123.21,163l38.28-15.31a4,4,0,0,0,2.22-2.22L179,107.21l46.24-15.42A4,4,0,0,0,228,88V56A12,12,0,0,0,216,44ZM118.51,156.29a4,4,0,0,0-2.3,2.45L101.12,204H40a4,4,0,0,1-4-4V170.34l53.17-53.17a4,4,0,0,1,5.66,0l34.71,34.71ZM220,85.12l-45.26,15.09a4,4,0,0,0-2.45,2.3l-15.37,38.41-19.3,7.73-37.13-37.14a12,12,0,0,0-17,0L36,159V56a4,4,0,0,1,4-4H216a4,4,0,0,1,4,4Zm6.34,33.37a4,4,0,0,0-3.6-.55l-23.81,7.93a4,4,0,0,0-2.44,2.31l-15,37.36-37.36,15a4,4,0,0,0-2.31,2.44l-7.93,23.81a4,4,0,0,0,.55,3.6,4,4,0,0,0,3.24,1.66H216a12,12,0,0,0,12-12V121.73A4,4,0,0,0,226.34,118.49ZM220,200a4,4,0,0,1-4,4H143.28l5.59-16.78,37.23-14.89a4,4,0,0,0,2.23-2.23l14.89-37.23L220,127.28Z"}))]]),Vr=new Map([["bold",s.createElement(s.Fragment,null,s.createElement("path",{d:"M160,88a16,16,0,1,1,16,16A16,16,0,0,1,160,88Zm76-32V160a20,20,0,0,1-20,20H204v20a20,20,0,0,1-20,20H40a20,20,0,0,1-20-20V88A20,20,0,0,1,40,68H60V56A20,20,0,0,1,80,36H216A20,20,0,0,1,236,56ZM180,180H80a20,20,0,0,1-20-20V92H44V196H180Zm-21.66-24L124,121.66,89.66,156ZM212,60H84v67.72l25.86-25.86a20,20,0,0,1,28.28,0L192.28,156H212Z"}))],["duotone",s.createElement(s.Fragment,null,s.createElement("path",{d:"M224,56v82.06l-23.72-23.72a8,8,0,0,0-11.31,0L163.31,140,113.66,90.34a8,8,0,0,0-11.32,0L64,128.69V56a8,8,0,0,1,8-8H216A8,8,0,0,1,224,56Z",opacity:"0.2"}),s.createElement("path",{d:"M216,40H72A16,16,0,0,0,56,56V72H40A16,16,0,0,0,24,88V200a16,16,0,0,0,16,16H184a16,16,0,0,0,16-16V184h16a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM72,56H216v62.75l-10.07-10.06a16,16,0,0,0-22.63,0l-20,20-44-44a16,16,0,0,0-22.62,0L72,109.37ZM184,200H40V88H56v80a16,16,0,0,0,16,16H184Zm32-32H72V132l36-36,49.66,49.66a8,8,0,0,0,11.31,0L194.63,120,216,141.38V168ZM160,84a12,12,0,1,1,12,12A12,12,0,0,1,160,84Z"}))],["fill",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,40H72A16,16,0,0,0,56,56V72H40A16,16,0,0,0,24,88V200a16,16,0,0,0,16,16H184a16,16,0,0,0,16-16V184h16a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM172,72a12,12,0,1,1-12,12A12,12,0,0,1,172,72Zm12,128H40V88H56v80a16,16,0,0,0,16,16H184Zm32-32H72V120.69l30.34-30.35a8,8,0,0,1,11.32,0L163.31,140,189,114.34a8,8,0,0,1,11.31,0L216,130.07V168Z"}))],["light",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,42H72A14,14,0,0,0,58,56V74H40A14,14,0,0,0,26,88V200a14,14,0,0,0,14,14H184a14,14,0,0,0,14-14V182h18a14,14,0,0,0,14-14V56A14,14,0,0,0,216,42ZM70,56a2,2,0,0,1,2-2H216a2,2,0,0,1,2,2v67.57L204.53,110.1a14,14,0,0,0-19.8,0l-21.42,21.41L117.9,86.1a14,14,0,0,0-19.8,0L70,114.2ZM186,200a2,2,0,0,1-2,2H40a2,2,0,0,1-2-2V88a2,2,0,0,1,2-2H58v82a14,14,0,0,0,14,14H186Zm30-30H72a2,2,0,0,1-2-2V131.17l36.58-36.58a2,2,0,0,1,2.83,0l49.66,49.66a6,6,0,0,0,8.49,0l25.65-25.66a2,2,0,0,1,2.83,0l22,22V168A2,2,0,0,1,216,170ZM162,84a10,10,0,1,1,10,10A10,10,0,0,1,162,84Z"}))],["regular",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,40H72A16,16,0,0,0,56,56V72H40A16,16,0,0,0,24,88V200a16,16,0,0,0,16,16H184a16,16,0,0,0,16-16V184h16a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM72,56H216v62.75l-10.07-10.06a16,16,0,0,0-22.63,0l-20,20-44-44a16,16,0,0,0-22.62,0L72,109.37ZM184,200H40V88H56v80a16,16,0,0,0,16,16H184Zm32-32H72V132l36-36,49.66,49.66a8,8,0,0,0,11.31,0L194.63,120,216,141.38V168ZM160,84a12,12,0,1,1,12,12A12,12,0,0,1,160,84Z"}))],["thin",s.createElement(s.Fragment,null,s.createElement("path",{d:"M216,44H72A12,12,0,0,0,60,56V76H40A12,12,0,0,0,28,88V200a12,12,0,0,0,12,12H184a12,12,0,0,0,12-12V180h20a12,12,0,0,0,12-12V56A12,12,0,0,0,216,44ZM68,56a4,4,0,0,1,4-4H216a4,4,0,0,1,4,4v72.4l-16.89-16.89a12,12,0,0,0-17,0l-22.83,22.83L116.49,87.51a12,12,0,0,0-17,0L68,119ZM188,200a4,4,0,0,1-4,4H40a4,4,0,0,1-4-4V88a4,4,0,0,1,4-4H60v84a12,12,0,0,0,12,12H188Zm28-28H72a4,4,0,0,1-4-4V130.34l37.17-37.17a4,4,0,0,1,5.66,0l49.66,49.66a4,4,0,0,0,5.65,0l25.66-25.66a4,4,0,0,1,5.66,0L220,139.71V168A4,4,0,0,1,216,172ZM164,84a8,8,0,1,1,8,8A8,8,0,0,1,164,84Z"}))]]),mt=s.forwardRef((r,t)=>s.createElement(ye,{ref:t,...r,weights:Cr}));mt.displayName="ArrowLeftIcon";const Or=mt,ht=s.forwardRef((r,t)=>s.createElement(ye,{ref:t,...r,weights:Mr}));ht.displayName="ArrowUpRightIcon";const pt=ht,ft=s.forwardRef((r,t)=>s.createElement(ye,{ref:t,...r,weights:Pr}));ft.displayName="ImageBrokenIcon";const Zr=ft,xt=s.forwardRef((r,t)=>s.createElement(ye,{ref:t,...r,weights:Vr}));xt.displayName="ImagesIcon";const Tr=xt,Fr=({project:r,onRename:t,onRemove:a,onSetPinned:n})=>{const o=de(),l=s.useRef(null),c=s.useRef(null),i=s.useRef(null),[p,h]=s.useState(!1),[S,x]=s.useState(!1),f=!!r.pinnedAt,[g,R]=s.useState(null),[b,A]=s.useState(r.name),[j,k]=s.useState(!1),[F,m]=s.useState(null);let B=g==="rename"?"Save name":"Remove from projects";j&&(B="Saving…"),s.useEffect(()=>{var w;if(S||!i.current)return;const y=i.current==="button"?c:l;i.current=null,(w=y.current)==null||w.focus()},[S]);const E=y=>{h(y),o==null||o.capture(y?"library_project_menu_opened":"library_project_menu_closed")},I=async y=>{if(!S){i.current=y,x(!0),o==null||o.capture("library_project_pin_clicked",{is_pinning:!f,method:y});try{await n(r.id,!f)}catch(w){it.error(Ue(w,"Could not save pin. Try again."))}finally{x(!1)}}},V=y=>{A(r.name),m(null),R(y),o==null||o.capture("library_project_action_opened",{action:y})},P=y=>{o==null||o.capture("library_project_action_closed",{action:g,outcome:y}),R(null)},C=async()=>{if(!(j||!g||g==="rename"&&!b.trim())){k(!0),m(null);try{g==="rename"?await t(r.id,b.trim()):await a(r.id),P("completed")}catch(y){m(Ue(y,"Could not save changes. Try again."))}finally{k(!1)}}};return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:`flex items-center gap-0.5 group-hover/project:pointer-events-auto group-hover/project:opacity-100 has-[:focus-visible]:pointer-events-auto has-[:focus-visible]:opacity-100 [@media(hover:none)]:pointer-events-auto [@media(hover:none)]:opacity-100 ${p?"pointer-events-auto opacity-100":"pointer-events-none opacity-0"}`,children:[e.jsx(H,{ref:c,type:"button",variant:"ghost",size:"icon-compact",title:f?"Unpin project":"Pin project","aria-label":`${f?"Unpin":"Pin"} ${r.name}`,"aria-pressed":f,disabled:S,onClick:()=>{I("button")},children:e.jsx(Le,{weight:f?"fill":"bold",size:16,"aria-hidden":!0})}),e.jsxs(Pt,{isOpen:p,onOpenChange:E,children:[e.jsx(Vt,{asChild:!0,children:e.jsx(H,{ref:l,type:"button",variant:"ghost",size:"icon-compact","aria-label":`Actions for ${r.name}`,children:e.jsx(Ot,{size:16,weight:"bold","aria-hidden":!0})})}),e.jsxs(Zt,{"data-rivet-private":!0,"aria-label":"Project actions",align:"start",onCloseAutoFocus:y=>{g&&y.preventDefault()},className:"ph-no-capture min-w-44",children:[e.jsxs(Ee,{disabled:S,onSelect:()=>void I("menu"),children:[e.jsx(Le,{size:14,weight:f?"fill":"bold","aria-hidden":!0}),f?"Unpin":"Pin"]}),e.jsxs(Ee,{onSelect:()=>V("rename"),children:[e.jsx(Tt,{size:14,weight:"bold","aria-hidden":!0}),"Rename"]}),e.jsxs(Ee,{onSelect:()=>V("remove"),children:[e.jsx(tt,{size:14,weight:"bold","aria-hidden":!0}),"Remove from projects"]})]})]})]}),e.jsx(rt,{open:g!==null,onOpenChange:y=>{!y&&!j&&P("cancelled")},children:e.jsxs(st,{surface:"library","data-rivet-private":!0,onCloseAutoFocus:y=>{var w;y.preventDefault(),(w=l.current)==null||w.focus()},className:"ph-no-capture w-[calc(100%-2rem)] max-w-sm",children:[e.jsx(at,{className:"text-base font-medium break-words",children:g==="rename"?"Rename project":`Remove “${r.name}” from projects?`}),e.jsx(nt,{className:"mt-2 text-sm leading-6 text-white/60",children:g==="rename"?"Choose a display name for this project. Its folder name will stay the same.":"Your folders and saved variants will remain on this computer. Open the project again to restore it."}),e.jsxs("form",{onSubmit:y=>{y.preventDefault(),C()},children:[g==="rename"?e.jsxs("label",{className:"mt-5 block text-xs text-white/70",children:["Project name",e.jsx("input",{autoFocus:!0,value:b,onChange:y=>A(y.target.value),maxLength:Ft,disabled:j,className:"focus:border-soft-foreground mt-2 w-full rounded-lg border border-white/15 bg-white/5 px-3 py-2 text-sm text-white focus-visible:outline-hidden transition-colors"})]}):null,F?e.jsx("p",{role:"alert",className:"text-muted-foreground mt-4 text-xs",children:F}):null,e.jsxs("div",{className:"mt-6 flex justify-end gap-2",children:[e.jsx(H,{type:"button",variant:"ghost",disabled:j,onClick:()=>P("cancelled"),children:"Cancel"}),e.jsx(H,{type:"submit",variant:"secondary",disabled:j||g==="rename"&&!b.trim(),children:B})]})]})]})})]})},bt=6e4,gt=60*bt,we=24*gt,Dr=7*we,$r=30*we,qr=365*we,zr=[["year",qr],["month",$r],["week",Dr],["day",we],["hour",gt],["minute",bt]],Ur=new Intl.RelativeTimeFormat("en",{numeric:"always"}),Kr=r=>{const t=new Map;for(const a of r??[]){const n=Date.parse(a.createdAt);if(!Number.isFinite(n))continue;const o=t.get(a.projectId);(o===void 0||n>o)&&t.set(a.projectId,n)}return t},Qr=({projects:r,latestEdits:t})=>[...r].sort((a,n)=>{if(a.pinnedAt&&!n.pinnedAt)return-1;if(n.pinnedAt&&!a.pinnedAt)return 1;if(a.pinnedAt&&n.pinnedAt)return a.pinnedAt.localeCompare(n.pinnedAt)||a.id.localeCompare(n.id);const o=t.get(a.id),l=t.get(n.id);return o===void 0&&l!==void 0?1:l===void 0&&o!==void 0?-1:(l??0)-(o??0)||a.name.localeCompare(n.name)||a.id.localeCompare(n.id)}),Br=({editedAt:r,now:t})=>{const a=Math.max(0,t-r);for(const[n,o]of zr)if(a>=o)return`Edited ${Ur.format(-Math.floor(a/o),n)}`;return"Edited just now"},vt=s.createContext(null),Wr=({navigation:r,onBrowseProjects:t,controls:a,isHeaderVisible:n=!0,children:o})=>{const[l,c]=s.useState(null);return e.jsxs(vt.Provider,{value:l,children:[n?e.jsxs("div",{className:"grid shrink-0 grid-cols-[auto_minmax(0,1fr)] items-center gap-4 px-10 py-5 max-sm:px-5 sm:grid-cols-[auto_minmax(0,1fr)_auto]",children:[e.jsx("button",{onClick:t,"aria-label":"Projects",className:"hover:bg-hover focus-visible:border-muted-foreground focus-visible:bg-active -m-1 flex items-center rounded-lg border border-transparent p-[3px] transition-colors focus-visible:outline-hidden",children:e.jsx("img",{src:Dt,alt:"","aria-hidden":!0,draggable:!1,className:"h-8 w-8"})}),e.jsx("div",{ref:c,className:"col-span-2 row-start-2 flex min-w-0 items-center gap-3 sm:col-span-1 sm:col-start-2 sm:row-start-1",children:a}),e.jsx("div",{className:"col-start-2 row-start-1 justify-self-end sm:col-start-3",children:r})]}):null,o]})},Me=({children:r})=>{const t=s.useContext(vt);return t?$t.createPortal(r,t):null},Ve=({label:r,value:t,onChange:a,onBlur:n,isDisabled:o=!1})=>e.jsxs("label",{className:"not-focus-within:has-[:enabled]:hover:border-border focus-within:border-muted-foreground focus-within:bg-hover focus-within:text-soft-foreground flex w-64 min-w-0 items-center gap-2 rounded-lg border border-white/[0.08] bg-white/[0.02] px-3 py-2.5 text-white/35 transition-colors max-sm:flex-1",children:[e.jsx(qt,{size:14,weight:"bold",className:"shrink-0","aria-hidden":!0}),e.jsx("input",{type:"search","aria-label":r,placeholder:`${r}…`,value:t,onChange:l=>a==null?void 0:a(l.target.value),onBlur:n,disabled:o,className:"min-w-0 flex-1 bg-transparent text-xs text-white focus-visible:outline-hidden placeholder:text-white/30 disabled:opacity-40 [&::-webkit-search-cancel-button]:hidden"})]}),Gr=({projects:r,variants:t,historyError:a,onRetryHistory:n,projectPreviews:o={},selectedProjectId:l,onSelectProject:c,onBrowseLibrary:i,onOpenProject:p,onRenameProject:h,onRemoveProject:S,onSetProjectPinned:x,isOpeningProject:f=!1,projectOpenError:g,onSearchCompleted:R,accountMenu:b,navigation:A,view:j="library",children:k})=>{const[F,m]=s.useState(""),B=l===null||k===void 0,E=s.useRef(null),I=Kr(t),[V]=s.useState(Date.now),P=r.find(w=>w.id===l),C=new Map;if(t)for(const w of r)w.historyIssue||C.set(w.id,0);for(const{projectId:w}of t??[]){const z=C.get(w);z!==void 0&&C.set(w,z+1)}const y=Qr({projects:r.filter(w=>w.name.toLowerCase().includes(F.toLowerCase())),latestEdits:I});return e.jsx("div",{className:"ph-no-capture bg-background text-foreground flex h-screen min-h-0","data-rivet-private":!0,children:e.jsx("main",{className:"relative flex min-w-0 flex-1 flex-col overflow-hidden",children:e.jsxs(Wr,{navigation:A,onBrowseProjects:i,isHeaderVisible:B,controls:j==="library"?e.jsx(Ve,{label:"Search projects",value:F,onChange:m,onBlur:()=>R==null?void 0:R(F.length)}):null,children:[g?e.jsx("p",{role:"alert",className:"text-muted-foreground px-10 pt-5 text-xs",children:g}):null,k!==void 0?k:e.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto px-10 pb-10 max-sm:px-5",children:[e.jsx("h1",{ref:E,tabIndex:-1,className:"sr-only",children:"Projects"}),e.jsx("div",{className:"mb-9 flex items-center justify-end",children:e.jsx(H,{onClick:()=>p(),variant:"secondary",disabled:f,leadingIcon:Ke,className:"shrink-0",children:"Open project…"})}),a?e.jsxs("div",{role:"alert",className:"mb-6 flex items-center gap-3 text-xs",children:[e.jsx("span",{className:"text-muted-foreground",children:a}),e.jsx(H,{onClick:n,variant:"ghost",size:"compact",className:"shrink-0",children:"Retry history"})]}):null,P!=null&&P.issue?e.jsx("p",{role:"alert",className:"border-accent-warning/10 bg-accent-warning/[0.03] mb-6 rounded-lg border p-4 text-xs leading-6 text-white/70",children:P.issue}):null,P&&!P.isAvailable?e.jsxs("div",{className:"border-accent-warning/10 bg-accent-warning/[0.03] mb-6 flex items-center justify-between gap-4 rounded-lg border p-4 text-xs text-white/60",children:[e.jsxs("span",{children:["Locate ",P.name,"’s working folder to open its workspace."]}),e.jsx(H,{disabled:f,onClick:()=>p(P.id),variant:"secondary",size:"compact",className:"shrink-0",children:"Locate folder"})]}):null,e.jsxs("div",{className:"grid items-start gap-x-6 gap-y-8 sm:grid-cols-2",children:[y.map(w=>{const z=C.get(w.id);let te="Loading variants…";z!==void 0?te=`${z.toLocaleString()} ${z===1?"variant":"variants"}`:(a||w.historyIssue)&&(te="Variants unavailable");const W=I.get(w.id);let Y="No edits yet";a||w.historyIssue?Y="Edit history unavailable":t===void 0?Y="Loading edits…":z&&(Y="Edit date unavailable");const J=o[w.id];return e.jsxs("div",{className:"group/project grid min-w-0",children:[e.jsxs("button",{onClick:()=>{m(""),c(w.id)},className:"group hover:bg-hover focus-visible:bg-active col-start-1 row-span-2 row-start-1 -m-2 grid w-[calc(100%+1rem)] min-w-0 grid-rows-subgrid rounded-2xl p-2 text-left transition-colors focus-visible:outline-hidden",children:[e.jsx("span",{className:"group-hover:border-border group-focus-visible:border-muted-foreground relative block aspect-video overflow-hidden rounded-xl border border-white/[0.08] bg-white/[0.02]",children:J?e.jsx("img",{src:J.dataUrl,alt:`${w.name} — ${J.label}`,draggable:!1,className:"h-full w-full object-cover object-top"}):null}),e.jsxs("span",{className:"mt-3 block pr-16",children:[e.jsxs("span",{className:"flex min-w-0 items-center gap-1.5 text-sm font-medium",children:[w.pinnedAt?e.jsx(Le,{size:12,weight:"fill","aria-hidden":!0,className:"text-soft-foreground shrink-0"}):null,e.jsx("span",{className:"truncate",children:w.name})]}),e.jsxs("span",{className:"text-muted-foreground group-hover:text-soft-foreground group-focus-visible:text-soft-foreground mt-2 flex min-w-0 flex-wrap items-center gap-x-3 gap-y-1 text-xs",children:[W!==void 0?e.jsx("time",{dateTime:new Date(W).toISOString(),title:new Date(W).toLocaleString(),children:Br({editedAt:W,now:V})}):e.jsx("span",{children:Y}),e.jsx("span",{className:"shrink-0",children:te})]}),w.isAvailable?null:e.jsx("span",{className:"text-accent-warning mt-2 block text-xs",children:"Folder unavailable"})]})]}),e.jsx("div",{className:"z-content col-start-1 row-start-2 mt-3 self-center justify-self-end",children:e.jsx(Fr,{project:w,onRename:h,onSetPinned:x,onRemove:async u=>{var L;await S(u),(L=E.current)==null||L.focus()}})})]},w.id)}),y.length===0?e.jsxs("div",{className:"col-span-full flex min-h-80 flex-col items-center justify-center rounded-xl border border-dashed border-white/10 px-8 text-center",children:[e.jsx(Ke,{size:26,weight:"bold",className:"mb-5 text-white/25","aria-hidden":!0}),e.jsx("h2",{className:"text-sm font-medium",children:F?"No matching projects":"Add your projects"}),e.jsx("p",{className:"text-muted-foreground mt-2 max-w-sm text-xs leading-6",children:F?"Try another project name.":"Open an existing project to add it as a project here"}),F?null:e.jsx(H,{onClick:()=>p(),variant:"secondary",disabled:f,className:"mt-5",children:"Open project"})]}):null]})]}),B&&b?e.jsx("footer",{className:"border-surface-2 bg-card shrink-0 border-t px-2.5 py-2.5",children:b}):null]})})})},yt=8,We=1,Yr=({children:r})=>e.jsx("ul",{className:"grid grid-cols-1 items-start gap-x-5 min-[400px]:grid-cols-2 md:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5",style:{gridAutoRows:`${yt}px`},children:r}),Jr=({children:r})=>{const[t,a]=s.useState(We),n=s.useRef(null),o=s.useCallback(l=>{var i;if((i=n.current)==null||i.disconnect(),!l)return;const c=()=>a(Math.max(We,Math.ceil(l.getBoundingClientRect().height/yt)));c(),n.current=new ResizeObserver(c),n.current.observe(l)},[]);return e.jsx("li",{className:"min-w-0",style:{gridRowEnd:`span ${t}`},children:e.jsx("div",{ref:o,className:"relative pb-8",children:r})})},Xr=async({profileId:r,referenceId:t,hash:a,signal:n})=>{const o=await zt(`/api/library/profile/references/${encodeURIComponent(t)}/media/${a}?${new URLSearchParams({profileId:r})}`,{signal:n});if(!o.ok)throw new Error("Image unavailable");return o.blob()},es="200px",jt=({profileId:r,referenceId:t,hash:a,title:n,isDetail:o=!1})=>{const[l,c]=s.useState(!1),[i,p]=s.useState(!1),h=s.useRef(null),S=s.useCallback(g=>{var R;(R=h.current)==null||R.disconnect(),g&&(h.current=new IntersectionObserver(b=>{var A;b.some(j=>j.isIntersecting)&&(c(!0),(A=h.current)==null||A.disconnect())},{rootMargin:es}),h.current.observe(g))},[]),x=re({queryKey:T.designLibraryImage({profileId:r,referenceId:t,hash:a}),queryFn:async({signal:g})=>{const R=await Xr({profileId:r,referenceId:t,hash:a,signal:g});return new Promise((b,A)=>{const j=new FileReader;j.onload=()=>typeof j.result=="string"?b(j.result):A(new Error("Image unavailable")),j.onerror=()=>A(new Error("Image unavailable")),j.readAsDataURL(R)})},enabled:l,staleTime:1/0,gcTime:0,retry:!1}),f=!!x.data&&!i;return e.jsxs("div",{ref:S,className:ve("flex items-center justify-center overflow-hidden bg-white/[0.025]",o?"min-h-32":null,!o&&!f?"aspect-[4/3]":null),children:[x.isError||i?e.jsxs("span",{className:"text-muted-foreground flex items-center gap-2 p-5 text-xs",children:[e.jsx(Zr,{size:16,weight:"bold","aria-hidden":!0}),"Image unavailable"]}):null,x.data&&!i?e.jsx("img",{src:x.data,alt:n,onError:()=>p(!0),className:o?"max-h-[65vh] w-full object-contain":"block h-auto w-full"}):null,!x.data&&!x.isError?e.jsx("span",{className:"text-muted-foreground text-xs",children:"Loading image…"}):null]})},ts={arena:"Are.na",cosmos:"Cosmos",pinterest:"Pinterest",x:"X",image:"Uploaded image",text:"Saved text",variant:"Saved direction",pdf:"PDF"},rs=({provider:r})=>e.jsxs("span",{className:"inline-flex items-center gap-1.5",children:[r==="arena"||r==="cosmos"||r==="pinterest"||r==="x"?e.jsx(Ut,{provider:r,className:"h-3.5 w-3.5"}):null,ts[r]]}),ss=({label:r,onCopy:t,referenceCount:a=1,provider:n})=>{const o=de(),[l,c]=s.useState("idle"),i=async()=>{c("copying");try{await t(),c("copied"),o==null||o.capture("library_reference_copy_completed",{reference_count:a,copy_kind:"agent",...n?{provider:n}:{}})}catch{c("failed"),it.error("Could not copy. Check clipboard access and try again."),o==null||o.capture("library_reference_copy_failed",{reference_count:a,copy_kind:"agent",...n?{provider:n}:{}})}},p=l==="copied"?ot:Kt,h=l==="copied"?"Copied":r;return e.jsxs(e.Fragment,{children:[e.jsx(H,{variant:"secondary",size:"compact",leadingIcon:p,disabled:l==="copying",onClick:()=>void i(),"aria-label":h,"aria-live":"polite",children:e.jsxs("span",{className:"grid whitespace-nowrap",children:[e.jsx("span",{"aria-hidden":!0,className:"invisible col-start-1 row-start-1",children:r}),e.jsx("span",{className:"col-start-1 row-start-1",children:h})]})}),l==="failed"?e.jsx("span",{role:"alert",className:"sr-only",children:"Could not copy. Check clipboard access and try again."}):null]})},wt=ne({id:q(),title:q(),provider:lt,isIncluded:je()}),as=Qt.extend({sourceIds:ce(q()),observation:Bt.nullable()}),ns=ne({profileId:q(),revision:ie(),isEnabled:je(),sources:ce(wt),references:ce(as)});ne({query:q().trim().min(2).max(1e3),sourceId:q().min(1).max(200).optional(),limit:ie().int().min(1).max(100).default(24),runtime:Wt.default("codex")});const is=ne({profileId:q(),query:q(),coverage:ne({saved:ie(),analyzed:ie(),indexed:ie()}),results:ce(ne({id:q(),key:q(),title:q(),provider:lt,url:q().optional(),description:q().nullable(),imageCount:ie(),sources:ce(wt),isIncluded:je()}))}),St=50,Ge=12,os=q().regex(/^[a-f0-9]{12,64}@[1-9][0-9]*$/).refine(r=>Number.isSafeInteger(Number(r.split("@")[1])),"Invalid reference revision"),ls=ne({profileId:q().uuid(),keys:ce(os).min(1).max(St),isDetailed:je().default(!1)}),cs=r=>{const t=new Map;for(const a of r){const n=a.id.slice(0,Ge);t.set(n,(t.get(n)??0)+1)}return new Map(r.map(a=>{const n=a.id.slice(0,Ge),o=t.get(n)===1?n:a.id;return[a.id,`${o}@${a.revision}`]}))},ds=r=>{const t=new Set(r);return t.size>1?"mixed":[...t][0]},us=({profileId:r,referenceKeys:t})=>{const a=ls.parse({profileId:r,keys:t});return["rivet","profile","reference",a.profileId,...a.keys].join(" ")},Oe=r=>{const t=r.referenceKeys.length===1?"Copy to agent":`Copy ${r.referenceKeys.length} to agent`;return e.jsx(ss,{label:t,referenceCount:r.referenceKeys.length,provider:ds(r.providers),onCopy:()=>navigator.clipboard.writeText(us(r))})},ms=({profileId:r,reference:t,sources:a,referenceKey:n,children:o})=>{var p,h;const l=de(),c=t.title||"Untitled reference",i=t.url&&/^https?:\/\//i.test(t.url)?t.url:void 0;return e.jsxs(rt,{onOpenChange:S=>l==null?void 0:l.capture(S?"library_reference_opened":"library_reference_closed",{provider:t.provider,media_count:t.media.length}),children:[e.jsx(Gt,{asChild:!0,children:o}),e.jsxs(st,{surface:"librarySheet",className:"ph-no-capture w-full max-w-2xl","data-rivet-private":!0,children:[e.jsxs("header",{className:"flex items-start justify-between gap-6 border-b border-white/[0.07] px-7 py-6",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx(nt,{className:"text-muted-foreground mb-2 text-xs",children:e.jsx(rs,{provider:t.provider})}),e.jsx(at,{className:"text-lg leading-snug font-medium tracking-tight break-words",children:c})]}),e.jsx(Yt,{asChild:!0,children:e.jsx(H,{variant:"ghost",size:"icon-compact","aria-label":"Close reference",children:e.jsx(tt,{size:18,weight:"bold","aria-hidden":!0})})})]}),e.jsx("div",{className:"border-b border-white/[0.07] px-7 py-4",children:e.jsx(Oe,{profileId:r,referenceKeys:[n],providers:[t.provider]},t.revision)}),e.jsxs("div",{className:"min-h-0 flex-1 space-y-7 overflow-y-auto px-7 py-6",children:[t.media.map(S=>e.jsx(jt,{profileId:r,referenceId:t.id,hash:S.hash,title:c,isDetail:!0},S.hash)),t.text?e.jsx("p",{className:"text-sm leading-7 break-words whitespace-pre-wrap text-white/70",children:t.text}):null,t.note?e.jsxs("section",{children:[e.jsx("h3",{className:"text-muted-foreground mb-2 text-xs font-medium",children:"Your note"}),e.jsx("p",{className:"text-sm leading-7 break-words whitespace-pre-wrap text-white/75",children:t.note})]}):null,e.jsxs("section",{children:[e.jsx("h3",{className:"text-muted-foreground mb-2 text-xs font-medium",children:((p=t.observation)==null?void 0:p.evidence)==="preference"?"Your preference":"Rivet’s analysis"}),e.jsx("p",{className:"text-sm leading-7 break-words whitespace-pre-wrap text-white/75",children:((h=t.observation)==null?void 0:h.description)??t.unsupportedReason??"No analysis saved yet."})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-muted-foreground mb-3 text-xs font-medium",children:"Saved in"}),e.jsx("ul",{className:"space-y-2",children:a.filter(S=>t.sourceIds.includes(S.id)).map(S=>e.jsxs("li",{className:"flex flex-wrap items-center justify-between gap-2 rounded-md bg-white/[0.035] px-3 py-2.5 text-xs",children:[e.jsx("span",{children:S.title}),S.isIncluded?null:e.jsx("span",{className:"text-muted-foreground",children:"Excluded from generation"})]},S.id))})]}),i?e.jsxs("a",{href:i,target:"_blank",rel:"noopener noreferrer",onClick:()=>l==null?void 0:l.capture("library_reference_original_opened",{provider:t.provider}),className:"hover:text-foreground focus-visible:text-foreground focus-visible:bg-active -mx-1.5 -my-1 inline-flex items-center gap-1 rounded-md px-1.5 py-1 text-xs text-white/70 underline-offset-4 transition-colors focus-visible:outline-hidden hover:underline focus-visible:underline",children:["Open original",e.jsx(pt,{size:14,weight:"bold","aria-hidden":!0})]}):null]})]})]})},Ye="opacity-0 group-hover/card:opacity-100 group-focus-within/card:opacity-100 [@media(hover:none)]:opacity-100",hs="pointer-events-none group-hover/card:pointer-events-auto group-focus-within/card:pointer-events-auto [@media(hover:none)]:pointer-events-auto",ps=({profileId:r,reference:t,sources:a,referenceKey:n,isSelected:o,isSelectionDisabled:l,onSelect:c})=>{var h;const i=t.title||"Untitled reference",p=t.media[0];return e.jsxs("div",{className:"group/card relative",children:[e.jsx(ms,{profileId:r,reference:t,sources:a,referenceKey:n,children:e.jsx("button",{"aria-label":`Inspect ${i}`,className:"focus-visible:border-muted-foreground block w-full overflow-hidden border border-transparent text-left focus-visible:outline-hidden transition-colors",children:p?e.jsx(jt,{profileId:r,referenceId:t.id,hash:p.hash,title:i},p.hash):e.jsxs("div",{className:"border-border bg-surface-2 min-h-44 border p-5 pb-14",children:[e.jsx("p",{className:"text-soft-foreground text-sm font-medium",children:i}),e.jsx("p",{className:"text-muted-foreground mt-3 line-clamp-3 text-xs leading-5",children:((h=t.observation)==null?void 0:h.description)??t.text})]})})}),e.jsx("div",{"aria-hidden":!0,className:ve("pointer-events-none absolute inset-0 bg-black/40",Ye)}),e.jsxs("div",{className:ve("absolute inset-x-0 bottom-0 z-10 flex items-center justify-between gap-2 p-2",o?null:Ye,o?null:hs),children:[e.jsxs("label",{className:"relative shrink-0 cursor-pointer",title:o?"Deselect":"Select",children:[e.jsx("input",{type:"checkbox","aria-label":`Select ${i}`,checked:o,disabled:l,onChange:c,className:"peer absolute inset-0 h-full w-full cursor-pointer opacity-0 focus-visible:outline-hidden disabled:cursor-default"}),e.jsx("span",{className:ve("peer-focus-visible:border-foreground peer-focus-visible:text-foreground flex h-7 w-7 items-center justify-center rounded-full border shadow-sm transition-colors peer-disabled:opacity-40 forced-colors:peer-focus-visible:outline-2 forced-colors:peer-focus-visible:outline-offset-2 forced-colors:peer-focus-visible:outline-solid",o?"border-primary bg-primary text-primary-foreground":"peer-enabled:peer-hover:text-foreground border-white/35 bg-black/60 text-white/70 peer-focus-visible:bg-black/80"),children:e.jsx(ot,{size:14,weight:"bold","aria-hidden":!0})})]}),e.jsx(Oe,{profileId:r,referenceKeys:[n],providers:[t.provider]},t.revision)]})]})},be=24,fs="200px",xs=350,bs=100,gs=({snapshot:r,onAddSources:t,isAddSourcesDisabled:a})=>{var J;const n=de(),[o,l]=s.useState(""),[c,i]=s.useState(""),p=s.useRef(null),[h,S]=s.useState(""),[x,f]=s.useState(be),[g,R]=s.useState([]),b=s.useRef(null),A=cs(r.references),j=r.references.filter(u=>u.media.length>0),k=re({queryKey:T.designReferenceSearch({profileId:r.profileId,revision:r.revision,references:r.references.map(({id:u,revision:L,sourceIds:X})=>[u,L,X]),search:c,sourceId:h}),queryFn:({signal:u})=>$("/profile/search",{schema:is,method:"POST",body:{query:c,sourceId:h||void 0,limit:bs},signal:u}),enabled:c.length>=2&&r.references.length>0,retry:!1}),F=r.references.filter(u=>g.includes(u.id)),m=F.flatMap(u=>{const L=A.get(u.id);return L?[L]:[]}),B=o.trim(),E=B.length>=2,I=E&&r.references.length>0&&(c!==B||k.isLoading),V=E&&!I&&k.isError,P=new Map(r.references.map(u=>[u.id,u])),C=E?(((J=k.data)==null?void 0:J.results)??[]).flatMap(({id:u})=>{const L=P.get(u);return L?[L]:[]}):j.filter(u=>!h||u.sourceIds.includes(h)),y=j.length>0,w=C.length,z=r.references.length>0?"No images yet":"Your library starts here",te=r.references.length>0?"Ask your agent to save a design reference with an image to your library. It will appear here, ready to browse.":"Connect a source, then choose what to import into your library.",W=s.useCallback(u=>{var L;(L=b.current)==null||L.disconnect(),u&&(b.current=new IntersectionObserver(X=>{var ee;X.some(xe=>xe.isIntersecting)&&((ee=b.current)==null||ee.disconnect(),f(Math.min(x+be,w)))},{root:u.parentElement,rootMargin:fs}),b.current.observe(u))},[x,w]),Y=u=>{const L=F.map(ee=>ee.id),X=L.includes(u)?L.filter(ee=>ee!==u):[...L,u];R(X),n==null||n.capture("library_reference_selection_changed",{selected_count:X.length})};return e.jsxs("div",{className:"ph-no-capture flex min-h-0 flex-1 flex-col","data-rivet-private":!0,children:[e.jsx(Me,{children:e.jsx(Ve,{label:"Search references",value:o,onChange:u=>{l(u),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>i(u.trim()),xs),f(be)},onBlur:()=>{var u;return n==null?void 0:n.capture("library_reference_search_completed",{query_length:o.length,result_count:E?((u=k.data)==null?void 0:u.results.length)??0:C.length})}})}),e.jsxs("div",{className:"min-h-0 flex-1 overflow-y-auto px-10 pb-10 max-sm:px-5",children:[!r.isEnabled&&y?e.jsx("p",{className:"text-muted-foreground mb-5 text-xs",children:"Automatic use is paused. Your saved references are still here."}):null,y?e.jsx("div",{className:"mb-7 flex flex-wrap items-center gap-3",children:e.jsxs("select",{"aria-label":"Source",value:h,onChange:u=>{S(u.target.value),f(be),n==null||n.capture("library_reference_source_filtered",{is_filtered:!!u.target.value})},className:"bg-background hover:border-border focus-visible:border-muted-foreground focus-visible:text-foreground max-w-64 rounded-lg border border-white/[0.08] px-3 py-2.5 text-xs text-white/60 transition-colors focus-visible:outline-hidden",children:[e.jsx("option",{value:"",children:"All sources"}),r.sources.map(u=>e.jsx("option",{value:u.id,children:u.title},u.id))]})}):null,m.length?e.jsxs("div",{className:"bg-background sticky top-0 z-20 mb-6 flex flex-wrap items-center gap-3 rounded-lg border border-white/10 p-3 shadow-lg",children:[e.jsxs("span",{className:"text-xs text-white/50",children:[m.length," selected"]}),e.jsx(Oe,{profileId:r.profileId,referenceKeys:m,providers:F.map(u=>u.provider)},m.join(" ")),e.jsx(H,{variant:"ghost",size:"compact",onClick:()=>{R([]),n==null||n.capture("library_reference_selection_changed",{selected_count:0})},children:"Clear selection"})]}):null,E&&k.data&&k.data.coverage.analyzed<k.data.coverage.saved?e.jsxs("p",{role:"status",className:"text-muted-foreground mb-5 text-xs",children:[k.data.coverage.analyzed," of"," ",k.data.coverage.saved," references analyzed; results may be incomplete."]}):null,I?e.jsx("p",{role:"status",className:"text-muted-foreground py-10 text-center text-xs",children:"Searching references…"}):null,V?e.jsxs("div",{role:"alert",className:"text-foreground py-10 text-center text-xs",children:[e.jsxs("p",{children:["Search is unavailable: ",k.error.message]}),e.jsx(H,{variant:"ghost",onClick:()=>{n==null||n.capture("library_reference_search_retry"),k.refetch()},children:"Try again"})]}):null,!I&&!V&&C.length?e.jsx(Yr,{children:C.slice(0,x).map(u=>{const L=A.get(u.id);return L?e.jsx(Jr,{children:e.jsx(ps,{profileId:r.profileId,reference:u,sources:r.sources,referenceKey:L,isSelected:g.includes(u.id),isSelectionDisabled:!g.includes(u.id)&&m.length>=St,onSelect:()=>Y(u.id)})},u.id):null})}):null,!I&&!V&&!C.length?e.jsxs("div",{className:"flex min-h-72 flex-col items-center justify-center rounded-xl border border-dashed border-white/[0.08] px-6 text-center",children:[e.jsx(Tr,{size:28,weight:"light",className:"mb-5 text-white/25","aria-hidden":!0}),e.jsx("h2",{className:"text-sm text-white/75",children:y||E?"No references found":z}),e.jsx("p",{className:"text-muted-foreground mt-2 max-w-sm text-xs leading-6",children:y||E?"Try another search or choose a different source.":te}),r.references.length===0&&!E?e.jsx(H,{variant:"tertiary",className:"mt-5",onClick:t,disabled:a,children:"Add sources"}):null]}):null,!I&&!V&&C.length>x?e.jsx("div",{ref:W,role:"status",className:"text-muted-foreground py-8 text-center text-xs",children:"Loading more references…"}):null]})]})},vs=1e4,ys=({onBrowseProjects:r})=>{var x,f,g;const t=ct(),a=de(),[n,o]=s.useState(!1),l=!((x=t.data)!=null&&x.isAuthenticated),c=R=>{l||(a==null||a.capture("library_sources_opened",{entry_point:R}),o(!0))},i=re({queryKey:T.designLibrary((f=t.data)==null?void 0:f.userId,(g=t.data)==null?void 0:g.isAuthenticated),queryFn:({signal:R})=>$("/profile/library",{schema:ns,signal:R}),enabled:!t.isPending,refetchInterval:vs,gcTime:0,retry:!1}),p=()=>{a==null||a.capture("library_reference_retry"),i.refetch()},h=e.jsx(Me,{children:e.jsx(Ve,{label:"Search references",value:"",isDisabled:!0})});let S;return i.isError&&!i.data?S=e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[h,e.jsxs("div",{className:"m-auto max-w-md px-8 text-center",children:[e.jsx("h1",{className:"mb-3 text-lg font-medium",children:"References"}),e.jsx("p",{role:"alert",className:"text-muted-foreground text-sm",children:i.error.message}),e.jsx("div",{className:"mt-5 flex justify-center gap-3",children:e.jsx(H,{variant:"ghost",onClick:r,children:"Projects"})})]})]}):i.data?S=e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[i.isError?e.jsxs("div",{role:"alert",className:"text-muted-foreground flex items-center justify-between gap-4 border-b border-white/10 px-8 py-3 text-xs",children:[e.jsx("span",{children:"Could not refresh. Showing the last saved results."}),e.jsx(H,{variant:"ghost",onClick:p,children:"Try again"})]}):null,e.jsx(gs,{snapshot:i.data,onAddSources:()=>c("empty_state"),isAddSourcesDisabled:l},i.data.profileId)]}):S=e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[h,e.jsx("p",{role:"status",className:"m-auto text-xs text-white/40",children:"Loading references…"})]}),e.jsxs(e.Fragment,{children:[S,e.jsx(Me,{children:e.jsx(H,{variant:"tertiary",className:"order-last shrink-0",disabled:l,onClick:()=>c("header"),children:"Add sources"})}),e.jsx(Jt,{isOpen:n,onClose:()=>{a==null||a.capture("library_sources_closed"),o(!1)},context:"library"})]})},js=({view:r,onNavigate:t})=>e.jsx("nav",{"aria-label":"Library",className:"bg-surface-2 flex items-center gap-1 rounded-lg p-1",children:["library","references"].map(a=>e.jsx("a",{href:a==="library"?"/rivet/library":"/rivet/library/references","aria-current":r===a?"page":void 0,onClick:n=>{n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||(n.preventDefault(),t(a))},className:Xt("rounded-md px-3 py-2 text-xs outline-none forced-colors:focus-visible:outline-2 forced-colors:focus-visible:outline-offset-2 forced-colors:focus-visible:outline-solid",r===a?"bg-active text-foreground focus-visible:bg-selected forced-colors:bg-[Highlight] forced-colors:text-[HighlightText] forced-colors:forced-color-adjust-none forced-colors:focus-visible:bg-[Highlight]":"text-muted-foreground hover:text-soft-foreground focus-visible:bg-hover focus-visible:text-foreground"),children:a==="library"?"Projects":"References"},a))}),ws=()=>{const r=Pe(),t=async l=>{await r.cancelQueries({queryKey:T.projectLibrary.all}),r.setQueryData(T.projectLibrary.projects,c=>c&&{projects:l(c.projects)}),r.setQueriesData({queryKey:T.projectLibrary.histories},c=>{if(!c)return c;const i=l(c.projects),p=new Set(i.map(({id:h})=>h));return{projects:i,variants:c.variants.filter(({projectId:h})=>p.has(h))}}),r.invalidateQueries({queryKey:T.projectLibrary.all})},a=ue({mutationFn:({projectId:l,name:c})=>$(`/projects/${encodeURIComponent(l)}`,{schema:Re,method:"PATCH",body:{name:c}}),onSuccess:({project:l})=>t(c=>c.map(i=>i.id===l.id?{...i,name:l.name}:i))}),n=ue({mutationFn:({projectId:l,isPinned:c})=>$(`/projects/${encodeURIComponent(l)}/pin`,{schema:Re,method:c?"PUT":"DELETE"}),onSuccess:({project:l})=>t(c=>c.map(i=>i.id===l.id?{...i,pinnedAt:l.pinnedAt}:i))}),o=ue({mutationFn:l=>$(`/projects/${encodeURIComponent(l)}`,{schema:er,method:"DELETE"}),onSuccess:async(l,c)=>{await t(i=>i.filter(({id:p})=>p!==c)),await r.cancelQueries({queryKey:T.libraryProjectPreview.project(c)}),r.removeQueries({queryKey:T.libraryProjectPreview.project(c)})}});return{setProjectPinned:async(l,c)=>{await n.mutateAsync({projectId:l,isPinned:c})},renameProject:async(l,c)=>{await a.mutateAsync({projectId:l,name:c})},removeProject:async l=>{await o.mutateAsync(l)}}},Je=2500,Ss=500,Ns=6e4,Es=[],As=[],Ls=24,ge=({error:r,retry:t})=>e.jsxs("div",{className:"m-auto max-w-md px-8 text-center",children:[e.jsx("div",{className:"text-muted-foreground mb-3 flex justify-center",children:e.jsx(hr,{"aria-hidden":!0,size:Ls})}),e.jsx("p",{className:"text-foreground text-sm",children:r.message}),e.jsx(H,{onClick:t,variant:"tertiary",size:"compact",className:"mt-5",children:"Try again"})]}),Rs=()=>{var xe,Ze,Te,Fe,De,$e;const r=tr(br),t=de();rr(ct().data);const a=Pe(),{renameProject:n,removeProject:o,setProjectPinned:l}=ws(),c=s.useRef(),[i,p]=s.useState(()=>Qe(new URL(window.location.href))),[h]=s.useState(()=>crypto.randomUUID()),S=s.useRef(0),x=s.useRef(null),f=re({queryKey:T.projectLibrary.projects,queryFn:({signal:d})=>$("/projects",{schema:gr,signal:d}),refetchInterval:Je,retry:!1}),g=((xe=f.data)==null?void 0:xe.projects)??Es,R=g.map(({id:d,projectPath:v})=>({id:d,projectPath:v})).sort((d,v)=>d.id.localeCompare(v.id)),b=re({queryKey:T.projectLibrary.history(R),queryFn:({signal:d})=>$("",{schema:vr,signal:d}),placeholderData:d=>{if(!d)return;const v=new Map(d.projects.map(({id:O,projectPath:G})=>[O,G]));if(!g.every(({id:O,projectPath:G})=>v.get(O)===G))return;const _=new Set(g.map(({id:O})=>O));return{projects:d.projects.filter(({id:O})=>_.has(O)),variants:d.variants.filter(({projectId:O})=>_.has(O))}},enabled:g.length>0,refetchInterval:Je,retry:!1}),A=new Map((Ze=b.data)==null?void 0:Ze.projects.map(d=>[d.id,d])),j=g.map(d=>{const v=A.get(d.id);return{...d,issue:v?v.issue:d.issue,historyIssue:v?v.historyIssue:d.historyIssue}}),k=((Te=b.data)==null?void 0:Te.variants)??As,F=Hr({queries:j.map(d=>({queryKey:T.libraryProjectPreview.thumbnail(d.id,d.projectPath),queryFn:({signal:v})=>$(`/projects/${d.id}/thumbnail`,{schema:xr,signal:v}),enabled:i.kind==="library",refetchInterval:Ns,retry:!1}))}),m=j.find(d=>d.id===i.projectId),B=sr({name:m==null?void 0:m.name,projectPath:m==null?void 0:m.projectPath}),E=k.find(d=>d.projectId===i.projectId&&d.sessionId===i.sessionId&&d.variantId===i.variantId),I=s.useCallback(d=>{window.history.pushState(null,"",ar(d)),p(d)},[]);s.useEffect(()=>{const d=nr(B);return m?c.current=m.id:f.isSuccess&&!f.isFetching&&i.projectId===c.current&&i.projectId&&(c.current=void 0,I({kind:"library"})),d},[m,B,i.projectId,f.isSuccess,f.isFetching,I]),s.useEffect(()=>{const d=()=>p(Qe(new URL(window.location.href)));return window.addEventListener("popstate",d),()=>window.removeEventListener("popstate",d)},[]),s.useEffect(()=>{const d=new AbortController;let v;const _=async()=>{try{const O=await $(`/views/${h}`,{schema:dr,method:"PUT",body:{isFocused:document.visibilityState==="visible"&&document.hasFocus()},signal:d.signal});for(const G of O.navigations){if(d.signal.aborted)return;if(G.sequence>S.current){let Se="library";G.projectId&&(Se="workspace"),G.variantId&&(Se="preview"),I({...G,kind:Se}),S.current=G.sequence}await $(`/views/${h}/acknowledgements`,{schema:ur,method:"POST",body:{sequence:G.sequence},signal:d.signal})}}catch{}d.signal.aborted||(v=setTimeout(()=>{_()},Ss))};return _(),()=>{d.abort(),clearTimeout(v)}},[h,I]);const V=re({queryKey:T.libraryWorkspace(i.projectId),queryFn:()=>$(`/projects/${i.projectId}/runtime`,{schema:yr,method:"POST"}),enabled:i.kind==="workspace"&&!!i.projectId&&(m==null?void 0:m.isAvailable)===!0,retry:!1,refetchOnWindowFocus:!1}),P=V.data?new URL(V.data.editorUrl).origin:null;s.useEffect(()=>{if(i.kind!=="workspace"||!P)return;const d=v=>{!x.current||v.source!==x.current.contentWindow||v.origin!==P||v.data!==mr||(t==null||t.capture("library_view_changed",{view:"projects"}),I({kind:"library"}))};return window.addEventListener("message",d),()=>window.removeEventListener("message",d)},[i.kind,P,I,t]);const C=re({queryKey:T.libraryPreview({projectId:i.projectId,sessionId:i.sessionId,variantId:i.variantId}),queryFn:()=>$(`/projects/${i.projectId}/variants/${i.sessionId}/${i.variantId}/preview`,{schema:jr,method:"POST"}),enabled:i.kind==="preview"&&!!(E!=null&&E.hasStaticPreview),retry:!1,refetchOnWindowFocus:!1}),y=ue({mutationFn:d=>$(`/projects/${i.projectId}/variants/${i.sessionId}/${i.variantId}`,{schema:pr,method:"PATCH",body:{label:d}}),onSuccess:()=>a.invalidateQueries({queryKey:T.projectLibrary.all})}),w=d=>{const v=j.find(_=>_.id===d);t==null||t.capture("library_project_selected",{project_id:d,workspace_available:(v==null?void 0:v.isAvailable)??!1}),I({kind:"workspace",projectId:d})},z=ue({mutationFn:async d=>{const{projectPath:v}=await $("/folder-selections",{schema:fr,method:"POST"});return v===null?null:$(d?`/projects/${d}/workspace`:"/projects",{schema:Re,method:d?"PATCH":"POST",body:{projectPath:v}})},onSuccess:d=>{d&&(a.invalidateQueries({queryKey:T.projectLibrary.all}),t==null||t.capture("library_project_selected",{project_id:d.project.id,workspace_available:d.project.isAvailable}),I({kind:"workspace",projectId:d.project.id}))},onSettled:(d,v,_)=>{t==null||t.capture("library_open_project_closed",{is_relink:!!_})}}),te=d=>{z.isPending||(t==null||t.capture("library_open_project_opened",{is_relink:!!d}),z.mutate(d))},W=()=>{t==null||t.capture("library_view_changed",{view:"projects"}),I({kind:"library"})},Y=()=>{t==null||t.capture("library_view_changed",{view:"workspace"}),I({...i,kind:"workspace"})},J=()=>{t==null||t.capture("library_history_retry"),b.refetch()};let u;if(i.kind==="workspace"&&(m==null?void 0:m.isAvailable)!==!1||i.kind==="preview"){let d=!1,v=e.jsxs("div",{className:"text-muted-foreground m-auto flex items-center gap-2 text-xs",children:[e.jsx(ir,{size:14,weight:"bold",className:"animate-spin","aria-hidden":!0}),"Opening ",(m==null?void 0:m.name)??"project","…"]});if(f.data&&!m||b.data&&i.variantId&&!E)v=e.jsx("div",{className:"m-auto text-sm text-white/60",children:"This project or direction is no longer in your library."});else if(i.kind==="preview"&&b.error&&!b.data)v=e.jsx(ge,{error:b.error,retry:J});else if(i.kind==="workspace"&&V.error)v=e.jsx(ge,{error:V.error,retry:()=>{V.refetch()}});else if(i.kind==="workspace"&&V.data){d=!0;const _=new URL(or(V.data.editorUrl,r));_.searchParams.set("library","1"),_.searchParams.set("libraryOrigin",window.location.origin),i.sessionId&&i.variantId&&(_.searchParams.set("historySession",i.sessionId),_.searchParams.set("historyVariant",i.variantId)),v=e.jsx("iframe",{ref:x,title:`${(m==null?void 0:m.name)??"Project"} workspace`,src:_.toString(),allow:"clipboard-write","data-rivet-private":!0,className:"ph-no-capture min-h-0 w-full flex-1 border-0"},_.toString())}else i.kind==="preview"&&C.error?v=e.jsx(ge,{error:C.error,retry:()=>{C.refetch()}}):i.kind==="preview"&&C.data?v=e.jsx("iframe",{title:`${(E==null?void 0:E.label)??"Saved direction"} preview`,src:C.data.url,sandbox:"allow-scripts allow-same-origin allow-forms allow-popups",className:"min-h-0 w-full flex-1 border-0 bg-white"}):i.kind==="preview"&&E&&!E.hasStaticPreview&&(v=e.jsxs("div",{className:"m-auto max-w-sm text-center",children:[e.jsx("p",{className:"text-sm",children:E.hasInteractivePreview?"Open this direction in its workspace":"This direction contains saved code changes"}),e.jsx("p",{className:"text-muted-foreground mt-2 text-xs leading-6",children:E.hasInteractivePreview?"Rivet will start the preview with this project’s dependencies and configuration.":"Open the project to continue working with its saved history."}),e.jsx(H,{onClick:Y,disabled:(m==null?void 0:m.isAvailable)===!1,variant:"primary",className:"mt-5",children:"Open workspace"})]}));u=e.jsxs(e.Fragment,{children:[i.kind==="preview"?e.jsxs("header",{className:"flex h-14 shrink-0 items-center gap-3 border-b border-white/[0.07] px-5",children:[e.jsx(H,{"aria-label":"Back to projects",onClick:W,variant:"ghost",size:"icon-compact",children:e.jsx(Or,{size:15,weight:"bold","aria-hidden":!0})}),e.jsx("span",{className:"text-muted-foreground text-xs",children:m==null?void 0:m.name}),E?e.jsxs(e.Fragment,{children:[e.jsx("span",{"aria-hidden":!0,className:"text-white/20",children:"/"}),e.jsxs("form",{onSubmit:_=>{_.preventDefault();const O=new FormData(_.currentTarget);y.mutate(String(O.get("label")))},className:"flex min-w-0 flex-1 gap-2",children:[e.jsx("input",{name:"label","aria-label":"Direction name",defaultValue:E.label,className:"hover:border-border focus-visible:border-muted-foreground focus-visible:bg-hover focus-visible:text-foreground -ml-2 max-w-xs min-w-0 flex-1 rounded-md border border-transparent bg-transparent px-2 py-1 text-xs text-white/80 transition-colors focus-visible:outline-hidden"}),e.jsx(H,{type:"submit",disabled:y.isPending,variant:"ghost",size:"compact",children:"Rename"})]},`${E.projectId}:${E.variantId}`)]}):e.jsx("span",{className:"flex-1"}),i.kind==="preview"?e.jsx(H,{onClick:Y,disabled:(m==null?void 0:m.isAvailable)===!1,variant:"tertiary",size:"compact",trailingIcon:pt,children:"Edit in project"}):null]}):null,i.kind==="workspace"&&!d?e.jsx(H,{onClick:W,variant:"ghost",size:"compact",className:"absolute top-5 left-5",children:"Projects"}):null,y.error?e.jsx("p",{role:"alert",className:"text-muted-foreground px-5 py-2 text-xs",children:y.error.message}):null,v]})}let L=u;f.error&&!f.data?L=e.jsx(ge,{error:f.error,retry:()=>{f.refetch()}}):f.isPending&&(L=e.jsx("div",{role:"status",className:"text-muted-foreground flex min-h-0 flex-1 items-center justify-center text-xs",children:"Loading projects…"}));const X=i.kind==="references"?"references":"library",ee=e.jsx(js,{view:X,onNavigate:d=>{t==null||t.capture("library_view_changed",{view:d==="references"?"references":"projects"}),I({kind:d})}});return i.kind==="references"&&(L=e.jsx(ys,{onBrowseProjects:W})),e.jsxs(e.Fragment,{children:[e.jsx(Gr,{projects:j,variants:(Fe=b.data)==null?void 0:Fe.variants,historyError:(De=b.error)==null?void 0:De.message,onRetryHistory:J,projectPreviews:Object.fromEntries(j.map((d,v)=>{var _,O;return[d.id,(O=(_=F[v])==null?void 0:_.data)==null?void 0:O.preview]})),selectedProjectId:i.projectId??null,onSelectProject:w,onBrowseLibrary:W,navigation:ee,view:X,onOpenProject:te,onRenameProject:n,onRemoveProject:o,onSetProjectPinned:l,accountMenu:e.jsx(lr,{side:"top",align:"start"}),isOpeningProject:z.isPending,projectOpenError:($e=z.error)==null?void 0:$e.message,onSearchCompleted:d=>t==null?void 0:t.capture("library_search_completed",{query_length:d}),children:L}),e.jsx(cr,{position:"bottom-right",theme:"dark"})]})},Is=async r=>{const t=kr(),a=await Ar("/api/library/browser-sessions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!a.ok){const n=Lr.safeParse(await a.json().catch(()=>null));throw new Error(n.success?n.data.error:"Could not start a library session.")}Rr(Ir(await a.json()),t)},ks=()=>{const r=s.useSyncExternalStore(dt,Sr),{startLogin:t,isStartingLogin:a,loginError:n}=Nr("library",Is);return e.jsx(Er,{isSigningIn:a,onStartSignIn:()=>void t(),errorMessage:n??r})},Cs=()=>s.useSyncExternalStore(dt,wr)?e.jsx(Rs,{}):e.jsx(ks,{});export{Cs as default};
2
+ //# sourceMappingURL=LibraryEntry-CSU5OJwC.js.map
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.3.5 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-200:oklch(88.5% .062 18.334);--color-red-500:oklch(63.7% .237 25.331);--color-sky-400:oklch(74.6% .16 232.661);--color-neutral-900:oklch(20.5% 0 none);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-3xl:48rem;--container-5xl:64rem;--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);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-widest:.1em;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@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,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, 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:where(:not(iframe)){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}*,:after,:before{border-color:var(--surface-2)}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.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}.static{position:static}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-px{top:1px;right:1px;bottom:1px;left:1px}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-5{top:calc(var(--spacing) * 5)}.top-10{top:calc(var(--spacing) * 10)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-5{left:calc(var(--spacing) * 5)}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.z-\[100\]{z-index:100}.z-content{z-index:var(--z-content)}.z-max{z-index:var(--z-max)}.z-modal{z-index:var(--z-modal)}.z-tooltip{z-index:var(--z-tooltip)}.z-ui-secondary{z-index:var(--z-ui-secondary)}.order-first{order:-9999}.order-last{order:9999}.col-span-2{grid-column:span 2/span 2}.col-span-full{grid-column:1/-1}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.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-1{margin:calc(var(--spacing) * -1)}.-m-2{margin:calc(var(--spacing) * -2)}.-m-6{margin:calc(var(--spacing) * -6)}.m-0{margin:0}.m-auto{margin:auto}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.mx-\[18px\]{margin-inline:18px}.mx-auto{margin-inline:auto}.-my-1{margin-block:calc(var(--spacing) * -1)}.my-4{margin-block:calc(var(--spacing) * 4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mb-1{margin-bottom:var(--spacing)}.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-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-9{margin-bottom:calc(var(--spacing) * 9)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-video{aspect-ratio:var(--aspect-video)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-2\.5{height:calc(var(--spacing) * 2.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-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-72{height:calc(var(--spacing) * 72)}.h-\[22px\]{height:22px}.h-\[520px\]{height:520px}.h-\[560px\]{height:560px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-\[65vh\]{max-height:65vh}.max-h-\[min\(480px\,calc\(100vh-32px\)\)\]{max-height:min(480px,100vh - 32px)}.max-h-\[min\(680px\,calc\(100vh-32px\)\)\]{max-height:min(680px,100vh - 32px)}.min-h-0{min-height:0}.min-h-32{min-height:calc(var(--spacing) * 32)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-\[64px\]{min-height:64px}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing) * .5)}.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-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-11{width:calc(var(--spacing) * 11)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-72{width:calc(var(--spacing) * 72)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[22px\]{width:22px}.w-\[320px\]{width:320px}.w-\[360px\]{width:360px}.w-\[440px\]{width:440px}.w-\[calc\(100\%\+1rem\)\]{width:calc(100% + 1rem)}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-\[min\(440px\,calc\(100vw-32px\)\)\]{width:min(440px,100vw - 32px)}.w-\[min\(1440px\,calc\(100vw-20px\)\)\]{width:min(1440px,100vw - 20px)}.w-auto{width:auto}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-60{max-width:calc(var(--spacing) * 60)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[8rem\]{max-width:8rem}.max-w-\[14rem\]{max-width:14rem}.max-w-\[400px\]{max-width:400px}.max-w-\[480px\]{max-width:480px}.max-w-\[720px\]{max-width:720px}.max-w-full{max-width:100%}.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:0}.min-w-40{min-width:calc(var(--spacing) * 40)}.min-w-44{min-width:calc(var(--spacing) * 44)}.min-w-\[160px\]{min-width:160px}.min-w-\[180px\]{min-width:180px}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;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)}.transform{transform:var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, )}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-auto{cursor:auto}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-none{touch-action:none}.resize-none{resize:none}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-rows-subgrid{grid-template-rows:subgrid}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-\[18px\]{gap:18px}.gap-\[inherit\]{gap:inherit}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * 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-7>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 7) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 7) * 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-3{column-gap:calc(var(--spacing) * 3)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-8{row-gap:calc(var(--spacing) * 8)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-surface-2>:not(:last-child)){border-color:var(--surface-2)}.self-center{align-self:center}.justify-self-end{justify-self:flex-end}.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-2xl{border-radius:var(--radius-2xl)}.rounded-\[18px\]{border-radius:18px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.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-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-accent-warning\/10{border-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.border-accent-warning\/10{border-color:color-mix(in oklab,var(--warning) 10%,transparent)}}.border-border{border-color:var(--border)}.border-border-strong{border-color:var(--border-strong)}.border-current{border-color:currentColor}.border-primary{border-color:var(--primary)}.border-soft-foreground\/40{border-color:var(--soft-foreground)}@supports (color:color-mix(in lab,red,red)){.border-soft-foreground\/40{border-color:color-mix(in oklab,var(--soft-foreground) 40%,transparent)}}.border-surface-2{border-color:var(--surface-2)}.border-surface-3{border-color:var(--surface-3)}.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)}}.border-white\/15{border-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.border-white\/15{border-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab,red,red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.border-white\/35{border-color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.border-white\/35{border-color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.border-white\/\[0\.07\]{border-color:#ffffff12}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.07\]{border-color:color-mix(in oklab,var(--color-white) 7%,transparent)}}.border-white\/\[0\.08\]{border-color:#ffffff14}@supports (color:color-mix(in lab,red,red)){.border-white\/\[0\.08\]{border-color:color-mix(in oklab,var(--color-white) 8%,transparent)}}.border-t-muted-foreground{border-top-color:var(--muted-foreground)}.bg-\[var\(--btn-bg\)\]{background-color:var(--btn-bg)}.bg-accent{background-color:var(--accent)}.bg-accent-error{background-color:var(--error-text)}.bg-accent-success,.bg-accent-success\/15{background-color:var(--success)}@supports (color:color-mix(in lab,red,red)){.bg-accent-success\/15{background-color:color-mix(in oklab,var(--success) 15%,transparent)}}.bg-accent-warning,.bg-accent-warning\/15{background-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.bg-accent-warning\/15{background-color:color-mix(in oklab,var(--warning) 15%,transparent)}}.bg-accent-warning\/\[0\.03\]{background-color:var(--warning)}@supports (color:color-mix(in lab,red,red)){.bg-accent-warning\/\[0\.03\]{background-color:color-mix(in oklab,var(--warning) 3%,transparent)}}.bg-active{background-color:var(--active)}.bg-background{background-color:var(--background)}.bg-background-sunken{background-color:var(--background-sunken)}.bg-background\/90{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/90{background-color:color-mix(in oklab,var(--background) 90%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/55{background-color:#0000008c}@supports (color:color-mix(in lab,red,red)){.bg-black\/55{background-color:color-mix(in oklab,var(--color-black) 55%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black) 60%,transparent)}}.bg-border-strong{background-color:var(--border-strong)}.bg-card{background-color:var(--card)}.bg-current{background-color:currentColor}.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-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/15{background-color:color-mix(in oklab,var(--destructive) 15%,transparent)}}.bg-destructive\/25{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/25{background-color:color-mix(in oklab,var(--destructive) 25%,transparent)}}.bg-foreground{background-color:var(--foreground)}.bg-hover{background-color:var(--hover)}.bg-muted{background-color:var(--muted)}.bg-muted-foreground{background-color:var(--muted-foreground)}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500) 15%,transparent)}}.bg-selected{background-color:var(--selected)}.bg-soft-foreground{background-color:var(--soft-foreground)}.bg-surface-1{background-color:var(--surface-1)}.bg-surface-2{background-color:var(--surface-2)}.bg-surface-3{background-color:var(--surface-3)}.bg-surface-4{background-color:var(--surface-4)}.bg-surface-5{background-color:var(--surface-5)}.bg-surface-6{background-color:var(--surface-6)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white) 5%,transparent)}}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white) 15%,transparent)}}.bg-white\/\[0\.02\]{background-color:#ffffff05}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.02\]{background-color:color-mix(in oklab,var(--color-white) 2%,transparent)}}.bg-white\/\[0\.03\]{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.03\]{background-color:color-mix(in oklab,var(--color-white) 3%,transparent)}}.bg-white\/\[0\.04\]{background-color:#ffffff0a}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-white) 4%,transparent)}}.bg-white\/\[0\.012\]{background-color:#ffffff03}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.012\]{background-color:color-mix(in oklab,var(--color-white) 1.2%,transparent)}}.bg-white\/\[0\.025\]{background-color:#ffffff06}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.025\]{background-color:color-mix(in oklab,var(--color-white) 2.5%,transparent)}}.bg-white\/\[0\.035\]{background-color:#ffffff09}@supports (color:color-mix(in lab,red,red)){.bg-white\/\[0\.035\]{background-color:color-mix(in oklab,var(--color-white) 3.5%,transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-top{object-position:top}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.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)}.p-8{padding:calc(var(--spacing) * 8)}.p-\[3px\]{padding:3px}.px-1{padding-inline:var(--spacing)}.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-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-10{padding-inline:calc(var(--spacing) * 10)}.px-\[18px\]{padding-inline:18px}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-28{padding-block:calc(var(--spacing) * 28)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-\[18px\]{padding-top:18px}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pr-16{padding-right:calc(var(--spacing) * 16)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.pb-14{padding-bottom:calc(var(--spacing) * 14)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-\[33px\]{padding-left:33px}.text-center{text-align:center}.text-left{text-align:left}.font-main{font-family:Satoshi,Inter,system-ui,-apple-system,Segoe UI,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-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--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-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[22px\]{font-size:22px}.text-\[clamp\(32px\,5vw\,64px\)\]{font-size:clamp(32px,5vw,64px)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-\[1\.45\]{--tw-leading:1.45;line-height:1.45}.leading-none{--tw-leading:1;line-height:1}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.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-\[-0\.03em\]{--tw-tracking:-.03em;letter-spacing:-.03em}.tracking-\[-0\.06em\]{--tw-tracking:-.06em;letter-spacing:-.06em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent-error{color:var(--error-text)}.text-accent-success{color:var(--success)}.text-accent-warning{color:var(--warning)}.text-background{color:var(--background)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.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-200{color:var(--color-red-200)}.text-sky-400{color:var(--color-sky-400)}.text-soft-foreground{color:var(--soft-foreground)}.text-white{color:var(--color-white)}.text-white\/20{color:#fff3}@supports (color:color-mix(in lab,red,red)){.text-white\/20{color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.text-white\/25{color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.text-white\/25{color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.text-white\/35{color:#ffffff59}@supports (color:color-mix(in lab,red,red)){.text-white\/35{color:color-mix(in oklab,var(--color-white) 35%,transparent)}}.text-white\/40{color:#fff6}@supports (color:color-mix(in lab,red,red)){.text-white\/40{color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.text-white\/50{color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.text-white\/50{color:color-mix(in oklab,var(--color-white) 50%,transparent)}}.text-white\/60{color:#fff9}@supports (color:color-mix(in lab,red,red)){.text-white\/60{color:color-mix(in oklab,var(--color-white) 60%,transparent)}}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.text-white\/75{color:#ffffffbf}@supports (color:color-mix(in lab,red,red)){.text-white\/75{color:color-mix(in oklab,var(--color-white) 75%,transparent)}}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white) 80%,transparent)}}.uppercase{text-transform:uppercase}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.placeholder-muted-foreground::placeholder{color:var(--muted-foreground)}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--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-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_transparent\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,transparent);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\(--border\)\,inset_0_0_0_0px_var\(--border\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--border)), inset 0 0 0 0px var(--tw-shadow-color,var(--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-\[0_0_0_1px_var\(--btn-bg\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--btn-bg));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_2px_8px_rgba\(0\,0\,0\,0\.2\)\,0_4px_16px_rgba\(0\,0\,0\,0\.1\)\]{--tw-shadow:0 2px 8px var(--tw-shadow-color,#0003), 0 4px 16px 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-\[0_4px_12px_rgba\(0\,0\,0\,0\.28\)\,0_10px_24px_rgba\(0\,0\,0\,0\.16\)\]{--tw-shadow:0 4px 12px var(--tw-shadow-color,#00000047), 0 10px 24px var(--tw-shadow-color,#00000029);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_20px_60px_rgba\(22\,22\,21\,0\.08\)\]{--tw-shadow:0 20px 60px var(--tw-shadow-color,#16161514);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-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-surface-3{--tw-shadow:var(--shadow-surface-3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-surface-4{--tw-shadow:var(--shadow-surface-4);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring,.ring-1{--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-2{--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)}.ring-secondary{--tw-ring-color:var(--secondary)}.ring-soft-foreground\/30{--tw-ring-color:var(--soft-foreground)}@supports (color:color-mix(in lab,red,red)){.ring-soft-foreground\/30{--tw-ring-color:color-mix(in oklab, var(--soft-foreground) 30%, transparent)}}.ring-soft-foreground\/70{--tw-ring-color:var(--soft-foreground)}@supports (color:color-mix(in lab,red,red)){.ring-soft-foreground\/70{--tw-ring-color:color-mix(in oklab, var(--soft-foreground) 70%, transparent)}}.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}.blur{--tw-blur:blur(8px);filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.brightness-0{--tw-brightness:brightness(0%);filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.invert{--tw-invert:invert(100%);filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.filter{filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.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-\[background-color\,border-color\,box-shadow\]{transition-property:background-color,border-color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[box-shadow\,background-color\]{transition-property:box-shadow,background-color;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-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-80{--tw-duration:80ms;transition-duration:80ms}.duration-150{--tw-duration:.15s;transition-duration:.15s}.\[transition-duration\:180ms\,80ms\]{transition-duration:.18s,80ms}.\[transition-timing-function\:cubic-bezier\(0\.23\,1\,0\.32\,1\)\,ease\]{transition-timing-function:cubic-bezier(.23,1,.32,1),ease}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.select-text{-webkit-user-select:text;user-select:text}.\[--btn-bg\:var\(--accent\)\]{--btn-bg:var(--accent)}.\[--btn-bg\:var\(--foreground\)\]{--btn-bg:var(--foreground)}.\[text-box\:trim-both_cap_alphabetic\]{text-box:trim-both cap alphabetic}:is(:where(.group\/card):focus-within .group-focus-within\/card\:pointer-events-auto){pointer-events:auto}:is(:where(.group\/card):focus-within .group-focus-within\/card\:opacity-100){opacity:1}@media(hover:hover){:is(:where(.group):hover .group-hover\:pointer-events-auto){pointer-events:auto}:is(:where(.group):hover .group-hover\:border-border){border-color:var(--border)}:is(:where(.group):hover .group-hover\:text-soft-foreground){color:var(--soft-foreground)}:is(:where(.group):hover .group-hover\:opacity-100){opacity:1}:is(:where(.group\/button):hover .group-hover\/button\:bg-hover){background-color:var(--hover)}:is(:where(.group\/button):hover .group-hover\/button\:shadow-\[0_0_0_1px_var\(--hover\)\]){--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--hover));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--accent\)_80\%\,var\(--background\)\)\]){--btn-bg:var(--accent)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--accent\)_80\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--accent) 80%,var(--background))}}:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_90\%\,var\(--background\)\)\]){--btn-bg:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):hover .group-hover\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_90\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--foreground) 90%,var(--background))}}:is(:where(.group\/card):hover .group-hover\/card\:pointer-events-auto){pointer-events:auto}:is(:where(.group\/card):hover .group-hover\/card\:opacity-100){opacity:1}:is(:where(.group\/project):hover .group-hover\/project\:pointer-events-auto){pointer-events:auto}:is(:where(.group\/project):hover .group-hover\/project\:opacity-100){opacity:1}:is(:where(.group\/resize):hover .group-hover\/resize\:w-0\.5){width:calc(var(--spacing) * .5)}:is(:where(.group\/resize):hover .group-hover\/resize\:bg-soft-foreground){background-color:var(--soft-foreground)}}:is(:where(.group):focus-visible .group-focus-visible\:border-muted-foreground){border-color:var(--muted-foreground)}:is(:where(.group):focus-visible .group-focus-visible\:text-soft-foreground){color:var(--soft-foreground)}:is(:where(.group\/account):focus-visible .group-focus-visible\/account\:border-foreground){border-color:var(--foreground)}:is(:where(.group\/button):focus-visible .group-focus-visible\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button):focus-visible .group-focus-visible\/button\:shadow-\[0_0_0_1px_var\(--active\)\]){--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):focus-visible .group-focus-visible\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]){--btn-bg:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):focus-visible .group-focus-visible\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--foreground) 80%,var(--background))}}:is(:where(.group\/button):focus-visible .group-focus-visible\/button\:\[--btn-bg\:var\(--selected\)\]){--btn-bg:var(--selected)}:is(:where(.group\/button):active .group-active\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button):active .group-active\/button\:shadow-\[0_0_0_0px_var\(--active\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):active .group-active\/button\:shadow-\[0_0_0_0px_var\(--border\)\,inset_0_0_0_1px_var\(--border\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--border)), inset 0 0 0 1px var(--tw-shadow-color,var(--border));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):active .group-active\/button\:shadow-\[0_0_0_0px_var\(--btn-bg\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--btn-bg));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):active .group-active\/button\:\[transition-duration\:80ms\,80ms\]){transition-duration:80ms,80ms}:is(:where(.group\/button):active .group-active\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]){--btn-bg:var(--foreground)}@supports (color:color-mix(in lab,red,red)){:is(:where(.group\/button):active .group-active\/button\:\[--btn-bg\:color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]){--btn-bg:color-mix(in oklab,var(--foreground) 80%,var(--background))}}:is(:where(.group\/button):active .group-active\/button\:\[--btn-bg\:var\(--accent\)\]){--btn-bg:var(--accent)}:is(:where(.group\/button)[aria-expanded=true] .group-aria-expanded\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button)[aria-expanded=true] .group-aria-expanded\/button\:shadow-\[0_0_0_0px_var\(--active\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):focus-visible :is(:where(.group\/button)[aria-expanded=true] .group-aria-expanded\/button\:group-focus-visible\/button\:bg-selected)){background-color:var(--selected)}:is(:where(.group\/button)[aria-pressed=true] .group-aria-pressed\/button\:bg-active){background-color:var(--active)}:is(:where(.group\/button)[aria-pressed=true] .group-aria-pressed\/button\:shadow-\[0_0_0_0px_var\(--active\)\]){--tw-shadow:0 0 0 0px var(--tw-shadow-color,var(--active));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(:where(.group\/button):focus-visible :is(:where(.group\/button)[aria-pressed=true] .group-aria-pressed\/button\:group-focus-visible\/button\:bg-selected)){background-color:var(--selected)}:is(:where(.peer):focus-visible~.peer-focus-visible\:border-foreground){border-color:var(--foreground)}:is(:where(.peer):focus-visible~.peer-focus-visible\:bg-black\/80){background-color:#000c}@supports (color:color-mix(in lab,red,red)){:is(:where(.peer):focus-visible~.peer-focus-visible\:bg-black\/80){background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}:is(:where(.peer):focus-visible~.peer-focus-visible\:text-foreground){color:var(--foreground)}@media(hover:hover){:is(:where(.peer):hover~:is(:where(.peer):enabled~.peer-enabled\:peer-hover\:text-foreground)){color:var(--foreground)}}:is(:where(.peer):disabled~.peer-disabled\:opacity-40){opacity:.4}.placeholder\:text-soft-foreground::placeholder{color:var(--soft-foreground)}.placeholder\:text-white\/30::placeholder{color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-white\/30::placeholder{color:color-mix(in oklab,var(--color-white) 30%,transparent)}}.focus-within\:border-muted-foreground:focus-within{border-color:var(--muted-foreground)}.focus-within\:border-soft-foreground:focus-within{border-color:var(--soft-foreground)}.focus-within\:bg-hover:focus-within{background-color:var(--hover)}.focus-within\:text-soft-foreground:focus-within{color:var(--soft-foreground)}@media(hover:hover){.hover\:border-border:hover{border-color:var(--border)}.hover\:border-soft-foreground\/50:hover{border-color:var(--soft-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:border-soft-foreground\/50:hover{border-color:color-mix(in oklab,var(--soft-foreground) 50%,transparent)}}.hover\:bg-\[color-mix\(in_oklab\,var\(--foreground\)_90\%\,var\(--background\)\)\]:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-\[color-mix\(in_oklab\,var\(--foreground\)_90\%\,var\(--background\)\)\]:hover{background-color:color-mix(in oklab,var(--foreground) 90%,var(--background))}}.hover\:bg-background\/80:hover{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-background\/80:hover{background-color:color-mix(in oklab,var(--background) 80%,transparent)}}.hover\:bg-card:hover{background-color:var(--card)}.hover\:bg-destructive\/25:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/25:hover{background-color:color-mix(in oklab,var(--destructive) 25%,transparent)}}.hover\:bg-destructive\/85:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/85:hover{background-color:color-mix(in oklab,var(--destructive) 85%,transparent)}}.hover\:bg-hover:hover{background-color:var(--hover)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-red-500\/25:hover{background-color:#fb2c3640}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/25:hover{background-color:color-mix(in oklab,var(--color-red-500) 25%,transparent)}}.hover\:bg-selected:hover{background-color:var(--selected)}.hover\:bg-surface-3:hover{background-color:var(--surface-3)}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/\[0\.03\]:hover{background-color:color-mix(in oklab,var(--color-white) 3%,transparent)}}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-soft-foreground:hover{color:var(--soft-foreground)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-soft-foreground:focus{border-color:var(--soft-foreground)}.focus\:bg-hover:focus{background-color:var(--hover)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-muted-foreground:focus-visible{border-color:var(--muted-foreground)}.focus-visible\:border-soft-foreground:focus-visible{border-color:var(--soft-foreground)}.focus-visible\:border-white\/40:focus-visible{border-color:#fff6}@supports (color:color-mix(in lab,red,red)){.focus-visible\:border-white\/40:focus-visible{border-color:color-mix(in oklab,var(--color-white) 40%,transparent)}}.focus-visible\:bg-\[color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]:focus-visible{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-\[color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]:focus-visible{background-color:color-mix(in oklab,var(--foreground) 80%,var(--background))}}.focus-visible\:bg-active:focus-visible{background-color:var(--active)}.focus-visible\:bg-destructive\/25:focus-visible{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-destructive\/25:focus-visible{background-color:color-mix(in oklab,var(--destructive) 25%,transparent)}}.focus-visible\:bg-destructive\/85:focus-visible{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:bg-destructive\/85:focus-visible{background-color:color-mix(in oklab,var(--destructive) 85%,transparent)}}.focus-visible\:bg-hover:focus-visible{background-color:var(--hover)}.focus-visible\:bg-muted:focus-visible{background-color:var(--muted)}.focus-visible\:bg-selected:focus-visible{background-color:var(--selected)}.focus-visible\:bg-surface-3:focus-visible{background-color:var(--surface-3)}.focus-visible\:text-destructive:focus-visible{color:var(--destructive)}.focus-visible\:text-foreground:focus-visible{color:var(--foreground)}.focus-visible\:underline:focus-visible{text-decoration-line:underline}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-\[color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]:active{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.active\:bg-\[color-mix\(in_oklab\,var\(--foreground\)_80\%\,var\(--background\)\)\]:active{background-color:color-mix(in oklab,var(--foreground) 80%,var(--background))}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-default:disabled{cursor:default}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(hover:hover){.not-focus-within\:has-\[\:enabled\]\:hover\:border-border:not(:focus-within):has(:enabled):hover{border-color:var(--border)}}.has-\[\:focus-visible\]\:pointer-events-auto:has(:focus-visible){pointer-events:auto}.has-\[\:focus-visible\]\:border-soft-foreground:has(:focus-visible){border-color:var(--soft-foreground)}.has-\[\:focus-visible\]\:bg-active:has(:focus-visible){background-color:var(--active)}.has-\[\:focus-visible\]\:opacity-100:has(:focus-visible){opacity:1}.aria-expanded\:text-foreground[aria-expanded=true],.aria-pressed\:text-foreground[aria-pressed=true]{color:var(--foreground)}@media(prefers-reduced-motion:no-preference){.motion-safe\:animate-\[spinner-move_2s_linear_infinite\,spinner-dash_4s_ease-in-out_infinite\]{animation:2s linear infinite spinner-move,4s ease-in-out infinite spinner-dash}}@media(prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}.motion-reduce\:transition-none{transition-property:none}}@media not all and (min-width:40rem){.max-sm\:flex-1{flex:1}.max-sm\:px-5{padding-inline:calc(var(--spacing) * 5)}}@media(min-width:400px){.min-\[400px\]\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:col-start-2{grid-column-start:2}.sm\:col-start-3{grid-column-start:3}.sm\:row-start-1{grid-row-start:1}.sm\:flex{display:flex}.sm\:h-\[720px\]{height:720px}.sm\:w-\[min\(1440px\,calc\(100vw-32px\)\)\]{width:min(1440px,100vw - 32px)}.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\:grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.sm\:grid-cols-\[repeat\(auto-fit\,minmax\(420px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:pt-8{padding-top:calc(var(--spacing) * 8)}}@media(min-width:48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:96rem){.\32xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(forced-colors:active){.forced-colors\:border{border-style:var(--tw-border-style);border-width:1px}.forced-colors\:bg-\[CanvasText\]{background-color:canvastext}.forced-colors\:bg-\[Highlight\]{background-color:highlight}.forced-colors\:text-\[CanvasText\]\!{color:canvastext!important}.forced-colors\:text-\[HighlightText\]{color:highlighttext}.forced-colors\:forced-color-adjust-none{forced-color-adjust:none}:is(:where(.peer):focus-visible~.forced-colors\:peer-focus-visible\:outline-2){outline-style:var(--tw-outline-style);outline-width:2px}:is(:where(.peer):focus-visible~.forced-colors\:peer-focus-visible\:outline-offset-2){outline-offset:2px}:is(:where(.peer):focus-visible~.forced-colors\:peer-focus-visible\:outline-solid){--tw-outline-style:solid;outline-style:solid}.forced-colors\:focus-within\:outline-2:focus-within{outline-style:var(--tw-outline-style);outline-width:2px}.forced-colors\:focus-within\:outline-solid:focus-within{--tw-outline-style:solid;outline-style:solid}.forced-colors\:focus-visible\:bg-\[Highlight\]:focus-visible{background-color:highlight}.forced-colors\:focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.forced-colors\:focus-visible\:-outline-offset-2:focus-visible{outline-offset:-2px}.forced-colors\:focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.forced-colors\:focus-visible\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}}.\[\&_svg\]\:h-3\.5 svg{height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing) * 4)}.\[\&_svg\]\:w-3\.5 svg{width:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-search-cancel-button\]\:hidden::-webkit-search-cancel-button{display:none}@media(hover:none){.\[\@media\(hover\:none\)\]\:pointer-events-auto{pointer-events:auto}.\[\@media\(hover\:none\)\]\:opacity-100{opacity:1}}}:root{--background:#1c1c20;--background-sunken:#111215;--foreground:#fff;--card:#1e1e22;--card-foreground:#fff;--popover:var(--surface-4);--popover-foreground:#fff;--primary:#e54b2c;--primary-foreground:#fff;--focus-ring:#6b97ff;--secondary:#2e2e2e;--secondary-foreground:#fff;--muted:#2e2e2e;--muted-foreground:#9ca3af;--soft-foreground:#d1d5db;--accent:#333;--accent-foreground:#fff;--selected:#404040;--border:#ffffff1f;--border-strong:#4b5563;--input:#404040;--ring:#404040;--destructive:#ef4444;--destructive-foreground:#fff;--destructive-light:#450a0a;--success:#10b981;--warning:#f59e0b;--error-text:#ffa2a2;--hover:#ffffff0f;--active:#ffffff1a;--checker-a:#1f1f1f;--checker-b:#2a2a2a;--surface-1:#1c1c20;--surface-2:#232328;--surface-3:#2a2a30;--surface-4:#313138;--surface-5:#383840;--surface-6:#3f3f48;--surface-7:#464650;--surface-8:#4d4d58;--z-content:10;--z-modal:30;--z-ui-secondary:40;--z-ui-primary:50;--z-tooltip:70;--z-max:999999;--dm-hi-base:#ffffff03;--dm-hi-mid:#ffffff05;--dm-hi-high:#ffffff0a;--dm-hi-peak:#ffffff0f;--dm-ring-base:#ffffff05;--dm-ring-mid:#ffffff0a;--dm-ring-high:#ffffff0f;--dm-drop:#0000002e;--shadow-surface-1:inset 0 0 0 1px var(--dm-ring-base);--shadow-surface-2:inset 0 1px 0 0 var(--dm-hi-base), inset 0 0 0 1px var(--dm-ring-base), 0 1px 1px -.5px var(--dm-drop);--shadow-surface-3:inset 0 1px 0 0 var(--dm-hi-mid), inset 0 0 0 1px var(--dm-ring-base), 0 0 0 1px #0000001f, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop);--shadow-surface-4:inset 0 1px 0 0 var(--dm-hi-mid), inset 0 0 0 1px var(--dm-ring-mid), 0 0 0 1px #00000024, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop);--shadow-surface-5:inset 0 1px 0 0 var(--dm-hi-high), inset 0 0 0 1px var(--dm-ring-mid), 0 0 0 1px #00000029, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop);--shadow-surface-6:inset 0 1px 0 0 var(--dm-hi-high), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px #0000002e, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop);--shadow-surface-7:inset 0 1px 0 0 var(--dm-hi-peak), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px #0003, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop), 0 48px 48px -24px var(--dm-drop);--shadow-surface-8:inset 0 1px 0 0 var(--dm-hi-peak), inset 0 0 0 1px var(--dm-ring-high), 0 0 0 1px #00000038, 0 1px 1px -.5px var(--dm-drop), 0 3px 3px -1.5px var(--dm-drop), 0 6px 6px -3px var(--dm-drop), 0 12px 12px -6px var(--dm-drop), 0 24px 24px -12px var(--dm-drop), 0 48px 48px -24px var(--dm-drop), 0 96px 96px -48px var(--dm-drop)}html,body{background-color:var(--background);overflow:hidden}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-family:Satoshi,Inter,system-ui,sans-serif}@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-Variable.woff2)format("woff2-variations");font-weight:300 900;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-VariableItalic.woff2)format("woff2-variations");font-weight:300 900;font-style:italic;font-display:swap}*{scrollbar-width:thin;scrollbar-color:#404040 transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0;border-radius:4px}::-webkit-scrollbar-thumb{background:#3a3a3f padding-box padding-box;border:2px solid #0000;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#505058 padding-box padding-box;border:2px solid #0000}::-webkit-scrollbar-corner{background:0 0}@keyframes rivet-sparkle-scroll{0%{transform:translateY(0)}to{transform:translateY(-6em)}}.rivet-sparkle-strip{animation:.9s steps(6,end) infinite rivet-sparkle-scroll}@media(prefers-reduced-motion:reduce){.rivet-sparkle-strip{animation:none}}.rivet-skeleton{background-color:#a3a3aa14;position:relative;overflow:hidden}.rivet-skeleton:after{content:"";background:linear-gradient(100deg,#0000 20%,#ffffff0f,#0000 80%);animation:1.6s ease-in-out infinite rivet-skeleton-sweep;position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%)}@keyframes rivet-skeleton-sweep{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.rivet-skeleton:after{animation:none}}.glass-panel{-webkit-backdrop-filter:blur(20px);background:#ffffff04;border:1px solid #ffffff08}.active-push:active{transition:transform .1s;transform:scale(.98)}:root{--variant-split-ease:cubic-bezier(.4, 0, .2, 1);--variant-split-accent:var(--primary);--variant-split-zone-bg:#26262aeb;--variant-split-zone-border:#ffffff0a;--variant-split-zone-shadow:0 30px 60px -20px #0000008c, 0 0 90px 10px #ffdca00d}.variant-preview-region{isolation:isolate}.variant-preview-primary{transition:filter .2s var(--variant-split-ease)}.variant-preview-region.is-dragging .variant-preview-primary{filter:brightness(.92)saturate(.92)}.variant-preview-region.is-dragging iframe{pointer-events:none}.variant-preview-atmosphere{pointer-events:none;opacity:0;z-index:30;transition:opacity .2s var(--variant-split-ease);background:radial-gradient(60% 50%,#0000,#00000059);position:absolute;top:0;right:0;bottom:0;left:0}.variant-preview-region.is-dragging .variant-preview-atmosphere{opacity:1}.variant-drop-zones{pointer-events:none;z-index:50;position:absolute;top:16px;right:16px;bottom:16px;left:16px}.variant-drop-zone{background:var(--variant-split-zone-bg);border:1px solid var(--variant-split-zone-border);pointer-events:auto;opacity:0;filter:blur(12px);width:14%;min-width:130px;max-width:180px;box-shadow:var(--variant-split-zone-shadow);transition:opacity .32s var(--variant-split-ease),transform .32s var(--variant-split-ease),filter .32s var(--variant-split-ease),box-shadow .24s var(--variant-split-ease);border-radius:14px;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;transform:scale(.94)}.variant-drop-zone.is-left{left:8px}.variant-drop-zone.is-right{right:8px}.variant-drop-zones.is-visible .variant-drop-zone{opacity:1;filter:blur();transform:scale(1)}.variant-drop-zones.is-exiting .variant-drop-zone{opacity:0;filter:blur(8px);transition:opacity .2s var(--variant-split-ease),transform .2s var(--variant-split-ease),filter .2s var(--variant-split-ease);transform:scale(.97)}.variant-drop-zone.is-disabled{opacity:.6;filter:blur(2px)saturate(.6)}.variant-drop-zone-inner{opacity:0;filter:blur(4px);transition:opacity .22s var(--variant-split-ease),transform .22s var(--variant-split-ease),filter .22s var(--variant-split-ease);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;top:0;right:0;bottom:0;left:0;transform:translateY(6px)}.variant-drop-zones.is-visible .variant-drop-zone-inner{opacity:1;filter:blur();transition-delay:.18s;transform:translateY(0)}.variant-drop-zone.is-hover .variant-drop-zone-caption{color:var(--variant-split-accent)}.variant-drop-zone-icon{border:1.5px solid #ffffff73;border-radius:6px;width:36px;height:28px;position:relative;overflow:hidden}.variant-drop-zone-icon:after{content:"";background:#ffffff73;width:1.5px;position:absolute;top:0;bottom:0}.variant-drop-zone-icon.is-left:after{left:11px}.variant-drop-zone-icon.is-right:after{right:11px}.variant-drop-zone-icon.is-left:before{content:"";background:#ffffff14;width:11px;position:absolute;top:0;bottom:0;left:0}.variant-drop-zone-icon.is-right:before{content:"";background:#ffffff14;width:11px;position:absolute;top:0;bottom:0;right:0}.variant-drop-zone.is-hover .variant-drop-zone-icon{border-color:var(--variant-split-accent)}.variant-drop-zone.is-hover .variant-drop-zone-icon:after,.variant-drop-zone.is-hover .variant-drop-zone-icon.is-left:before,.variant-drop-zone.is-hover .variant-drop-zone-icon.is-right:before{background:var(--variant-split-accent)}@supports (color:color-mix(in lab,red,red)){.variant-drop-zone.is-hover .variant-drop-zone-icon.is-left:before,.variant-drop-zone.is-hover .variant-drop-zone-icon.is-right:before{background:color-mix(in srgb,var(--variant-split-accent) 22%,transparent)}}.variant-drop-zone-caption{letter-spacing:.02em;color:#fff9;text-align:center;max-width:80%;font-size:11.5px;line-height:1.35}.variant-drop-zone-border{border:2px dashed var(--variant-split-accent);opacity:0;transition:opacity .24s var(--variant-split-ease);pointer-events:none;border-radius:10px;position:absolute;top:4px;right:4px;bottom:4px;left:4px}.variant-drop-zone.is-hover .variant-drop-zone-border{opacity:1}.variant-drop-zone-preview{display:none}.variant-split-secondary{border-left:1px solid var(--surface-2);background:var(--background);min-width:0;animation:variantSplitSecondaryEnter .42s var(--variant-split-ease) both;flex-direction:column;flex:1 1 0;display:flex;position:relative}.variant-preview-region.is-split>.variant-preview-row>.variant-preview-primary{border-right:1px solid var(--surface-2)}@keyframes variantSplitSecondaryEnter{0%{opacity:0}to{opacity:1}}.variant-split-secondary-toolbar{background:var(--background);border-bottom:1px solid var(--surface-2);color:#9ca3af;flex:0 0 32px;justify-content:space-between;align-items:center;height:32px;padding:0 10px;font-size:11.5px;display:flex}.variant-split-secondary-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}@media(prefers-reduced-motion:reduce){.variant-drop-zone,.variant-drop-zone-inner,.variant-drop-zone-preview,.variant-drop-zone-border,.variant-preview-primary,.variant-preview-atmosphere,.variant-split-secondary{filter:none!important;transition-duration:80ms!important;animation-duration:80ms!important;transform:none!important}.variant-drop-zones.is-visible .variant-drop-zone-inner{transition-delay:0s}}@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-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-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-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-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes spinner-move{to{stroke-dashoffset:-100px}}@keyframes spinner-dash{0%,to{stroke-dasharray:15 85}50%{stroke-dasharray:40 60}}