@epic-web/workshop-app 6.84.3 → 6.84.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-app",
3
- "version": "6.84.3",
3
+ "version": "6.84.5",
4
4
  "sideEffects": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -42,8 +42,8 @@
42
42
  "@epic-web/invariant": "^1.0.0",
43
43
  "@epic-web/remember": "^1.1.0",
44
44
  "@epic-web/restore-scroll": "^2.0.0",
45
- "@epic-web/workshop-presence": "6.84.3",
46
- "@epic-web/workshop-utils": "6.84.3",
45
+ "@epic-web/workshop-presence": "6.84.5",
46
+ "@epic-web/workshop-utils": "6.84.5",
47
47
  "@mdx-js/mdx": "^3.1.1",
48
48
  "@mux/mux-player-react": "^3.11.4",
49
49
  "@nasa-gcn/remix-seo": "^2.0.1",
@@ -1,2 +0,0 @@
1
- import{h as T}from"./chunk-4LKRSAEJ-B1jEeA_F.js";import{w as H,f as E,d as $}from"./chunk-JZWAC4HX-0uKZ9a0b.js";import{j as e}from"./jsx-runtime-C5WNSv3b.js";import{r as m}from"./index-Bi6L2ga8.js";import{C as F}from"./client-only-CUo_KSMO.js";import{i as W,I as D,B as R}from"./button-CPJdTWu4.js";import{I as g,f as k,e as U,c as q,h as J,i as K,b as A,j as P,k as G}from"./misc-w_rthUBN.js";import{L as _}from"./launch-editor-CPRN8qq5.js";import"./pe-tear8uic.js";import"./progress-bar-DTHojpoN.js";import"./root-loader-DlSJfUY6.js";function X({selectedWorkshops:t,availableWorkshops:o,currentWorkshopId:l}){const[d,s]=$(),i=(a,x)=>{const c=x?[...t,a]:t.filter(j=>j!==a),h=new URLSearchParams(d);c.length>0?h.set("workshops",c.join(",")):h.delete("workshops"),s(h)};return e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"mb-3 text-lg font-semibold",children:"Workshop Filter"}),e.jsx("div",{className:"flex flex-wrap gap-3",children:o.map(a=>e.jsxs("label",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",checked:t.includes(a),onChange:x=>i(a,x.target.checked),className:"rounded"}),e.jsxs("span",{className:`text-sm ${a===l?"text-primary font-bold":""}`,children:[a," ",a===l?"(current)":null]})]},a))})]})}function Z({filterQuery:t}){const[o,l]=$(),[d,s]=m.useState(t),i=m.useRef(null);m.useEffect(()=>{s(t)},[t]);const a=c=>{const h=new URLSearchParams(o);c?h.set("q",c):h.delete("q"),l(h)},x=()=>{s(""),a(""),i.current?.focus()};return e.jsxs("div",{className:"mb-6",children:[e.jsx("h3",{className:"mb-3 text-lg font-semibold",children:"Search Cache Entries"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("input",{ref:i,type:"text",placeholder:"Search by key or cache name...",value:d,onChange:c=>{s(c.target.value),a(c.target.value)},className:"border-border bg-background text-foreground focus:ring-ring flex-1 rounded-md border px-3 py-2 focus:ring-2 focus:outline-none"}),d?e.jsx(D,{onClick:x,title:"Clear search",children:e.jsx(g,{name:"Close",className:"h-4 w-4"})}):null]})]})}function Q({workshopId:t,cacheName:o,filename:l,entryKey:d}){const s=E(),i=E(),[a,x]=m.useState(null),[c,h]=m.useState(null),[j,n]=m.useState(!1),[r,b]=m.useState(!1),[N,v]=m.useState(!1),f=m.useRef(null),p=m.useRef(i.state),y=`${t}/${o}/${l}`,w=s.data?.entry?.value,S=s.state==="loading",I=!!s.data?.entry,V=s.data?.entry===null,M=r&&N&&!S&&s.data===void 0&&s.state==="idle";m.useEffect(()=>{s.state!=="idle"&&v(!0)},[s.state]),m.useEffect(()=>{if(I){const u=JSON.stringify(w,null,2)??"";x(u),h(u),n(!1)}},[I,w]),m.useEffect(()=>{const u=i.state;p.current!=="idle"&&u==="idle"&&i.data?.status==="success"&&(h(f.current??""),n(!1)),p.current=u},[i.state,i.data?.status]);const O=()=>{a!==null&&(f.current=a,i.submit({intent:"update-entry",workshopId:t,cacheName:o,filename:l,newValue:a},{method:"POST"}))},L=u=>{if(x(u),c===null){n(!1);return}n(u!==c)},B=()=>{c!==null&&(x(c),n(!1))},z=u=>{u.currentTarget.open&&!r?(s.load(T("/admin/cache/*",{"*":y})),b(!0)):u.currentTarget.open||(b(!1),v(!1))},Y=()=>{s.load(T("/admin/cache/*",{"*":y}))};return e.jsxs("details",{className:"mt-2",onToggle:z,children:[e.jsx("summary",{className:"text-muted-foreground hover:text-foreground cursor-pointer text-sm",children:"Edit entry details"}),e.jsx("div",{className:"border-border bg-muted mt-2 space-y-3 rounded border p-3",children:S?e.jsx("p",{className:"text-muted-foreground text-sm",children:"Loading entry..."}):M?e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-destructive text-sm",children:"Failed to load entry details."}),e.jsx(R,{varient:"mono",onClick:Y,children:"Retry"})]}):V?e.jsx("p",{className:"text-destructive text-sm",children:"Entry details were not found."}):I?e.jsxs(e.Fragment,{children:[e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-sm font-medium",children:"Key:"}),e.jsx("code",{className:"bg-background rounded border px-2 py-1 text-sm",children:d})]}),e.jsxs("div",{children:[e.jsx("label",{className:"mb-1 block text-sm font-medium",children:"Value:"}),e.jsx("textarea",{value:a??"",onChange:u=>L(u.target.value),className:"resize-vertical border-border bg-background text-foreground focus:ring-ring h-32 w-full rounded border p-2 font-mono text-sm focus:ring-2 focus:outline-none",placeholder:"Enter JSON value..."})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(R,{varient:"primary",onClick:O,disabled:!j||i.state!=="idle",children:i.state!=="idle"?"Saving...":"Save"}),e.jsx(R,{varient:"mono",onClick:B,disabled:!j,children:"Reset"})]})]}):e.jsx("p",{className:"text-muted-foreground text-sm",children:"Open to load entry details."})})]})}function ee({skippedFiles:t,workshopId:o,cacheName:l}){const d=E();return t.length===0?null:e.jsxs("div",{className:"border-warning bg-warning mt-4 rounded border p-3",children:[e.jsxs("div",{className:"mb-2 flex items-center gap-2",children:[e.jsx(g,{name:"TriangleAlert",className:"text-warning-foreground h-4 w-4"}),e.jsxs("h5",{className:"text-warning-foreground font-medium",children:["Skipped Files (",t.length,")"]})]}),e.jsx("p",{className:"text-warning-foreground/80 mb-3 text-sm",children:"These cache files were skipped because they exceed the 3MB size limit:"}),e.jsx("div",{className:"space-y-2",children:t.map(s=>e.jsxs("div",{className:"border-warning/20 bg-warning/5 flex items-center justify-between rounded border p-2",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"text-warning-foreground truncate font-mono text-sm font-medium",children:s.filename}),e.jsxs("div",{className:"text-warning-foreground/70 text-xs",children:[s.error," • Size:"," ",e.jsx("span",{title:`${s.size} bytes`,children:k(s.size)})]})]}),e.jsx("div",{className:"ml-2 flex shrink-0",children:e.jsx(C,{onConfirm:()=>{d.submit({intent:"delete-entry",workshopId:o,cacheName:l,filename:s.filename},{method:"POST"})},title:"Delete large cache file",className:"text-destructive-foreground hover:bg-destructive/20 hover:text-destructive-foreground",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})})]},s.filename))})]})}const fe=H(function({loaderData:o}){const l=E(),d=(n,r,b)=>{l.submit({intent:"delete-entry",workshopId:n,cacheName:r,filename:b},{method:"POST"})},s=(n,r)=>{l.submit({intent:"delete-cache",workshopId:n,cacheName:r},{method:"POST"})},i=n=>{l.submit({intent:"delete-workshop-cache",workshopId:n},{method:"POST"})},{currentWorkshopId:a,filteredCaches:x,filterQuery:c,selectedWorkshops:h,availableWorkshops:j}=o;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"mb-2 text-2xl font-bold",children:"Cache Management"}),e.jsxs("p",{className:"text-muted-foreground",children:["Current Workshop:"," ",e.jsx("span",{className:"text-foreground font-semibold",children:a})]})]}),e.jsx(X,{selectedWorkshops:h,availableWorkshops:j,currentWorkshopId:a}),e.jsx(Z,{filterQuery:c}),l.data?.status==="success"?e.jsx("div",{className:"border-border bg-success text-success-foreground rounded border p-4",children:l.data.message}):null,l.data?.status==="error"?e.jsx("div",{className:"border-border bg-destructive text-destructive-foreground rounded border p-4",children:l.data.error}):null,x.length===0?e.jsx("div",{className:"text-muted-foreground py-8 text-center",children:"No caches found matching your criteria."}):null,e.jsx("div",{className:"space-y-6",children:x.map(n=>e.jsxs("details",{open:n.workshopId===a,children:[e.jsx("summary",{className:"border-border bg-card hover:bg-accent cursor-pointer rounded-lg border p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h3",{className:"text-card-foreground flex items-center gap-2 text-lg font-semibold",children:[e.jsx(g,{name:"Files",className:"h-5 w-5"}),n.workshopId==="global"?"Global Caches":n.workshopId,n.workshopId===a?e.jsx("span",{className:"bg-primary text-primary-foreground rounded px-2 py-1 text-xs",children:"Current"}):null]}),e.jsx(C,{onConfirm:()=>i(n.workshopId),title:"Delete all workshop caches",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})]})}),e.jsx("div",{className:"mt-4 space-y-4 pl-4",children:n.caches.map(r=>{const b=r.entries.reduce((f,p)=>f+(p.size||0),0),N=(r.skippedFiles||[]).reduce((f,p)=>f+p.size,0),v=b+N;return e.jsxs("details",{className:"bg-muted rounded-md",children:[e.jsx("summary",{className:"hover:bg-accent cursor-pointer p-3",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("h4",{className:"text-muted-foreground flex items-center gap-2 font-medium",children:[e.jsx(g,{name:"Files",className:"h-4 w-4"}),r.name,e.jsxs("span",{className:"text-sm",children:["(",r.entries.length," entr",r.entries.length===1?"y":"ies",")"]}),v>0?e.jsxs("span",{className:"text-muted-foreground text-sm",children:["•"," ",e.jsx("span",{title:`${v} bytes`,children:k(v)})," ","total",N>0?e.jsxs("span",{className:"text-warning",children:[" ","(",e.jsx("span",{title:`${N} bytes`,children:k(N)})," ","skipped)"]}):null]}):null]}),e.jsx(C,{onConfirm:()=>s(n.workshopId,r.name),title:"Delete cache",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})]})}),e.jsxs("div",{className:"p-3 pt-0",children:[r.entries.length===0?e.jsx("p",{className:"text-muted-foreground text-sm",children:"No entries match your search."}):null,r.skippedFiles&&r.skippedFiles.length>0?e.jsx(ee,{skippedFiles:r.skippedFiles,workshopId:n.workshopId,cacheName:r.name}):null,e.jsx("div",{className:"space-y-2",children:r.entries.map(({key:f,metadata:p,filename:y,size:w,filepath:S})=>e.jsxs("div",{className:"border-border bg-background rounded border p-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"mb-1 flex items-center gap-2",children:[e.jsx("div",{className:"truncate font-mono text-sm font-medium",title:f,children:f}),w?e.jsx("span",{className:"bg-muted text-muted-foreground inline-flex items-center rounded px-1.5 py-0.5 text-xs whitespace-nowrap",title:`${w} bytes`,children:k(w)}):null]}),e.jsx(se,{metadata:p})]}),e.jsxs("div",{className:"ml-4 flex shrink-0 gap-1",children:[e.jsx("a",{href:T("/admin/cache/*",{"*":`${n.workshopId}/${r.name}/${y}`}),target:"_blank",rel:"noopener noreferrer",className:"border-border bg-background text-foreground hover:bg-muted focus:ring-ring inline-flex h-8 w-8 items-center justify-center rounded border focus:ring-2 focus:outline-none",title:"View JSON",children:e.jsx(g,{name:"ExternalLink",className:"h-4 w-4"})}),S?e.jsx(_,{file:S,className:W,children:e.jsx(g,{name:"Files",className:"h-4 w-4",title:"Open in editor"})}):null,e.jsx(C,{onConfirm:()=>d(n.workshopId,r.name,y),title:"Delete entry",children:e.jsx(g,{name:"Remove",className:"h-4 w-4"})})]})]}),e.jsx(Q,{workshopId:n.workshopId,cacheName:r.name,filename:y,entryKey:f})]},f))})]})]},r.name)})})]},n.workshopId))})]})});function se({metadata:t}){const o=J(),[,l]=m.useState(Date.now()),d=K(t);A(()=>{l(Date.now())},1e3);const s=o(t.createdTime),i=d?G(d):{text:"Never",isExpired:!1,isExpiringSoon:!1};return e.jsxs("div",{className:"text-muted-foreground flex flex-col gap-1 text-xs",children:[e.jsxs("div",{children:["Created: ",s.format("MMM D, YYYY HH:mm:ss")," ",e.jsx(F,{children:()=>`(${s.fromNow()})`})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[t.ttl!==void 0&&t.ttl!==null?e.jsxs("span",{children:["TTL:"," ",t.ttl===1/0?"Forever":e.jsx("span",{title:`${t.ttl}ms`,children:P(t.ttl)})]}):null,t.swr!==void 0?e.jsxs("span",{children:["SWR:"," ",e.jsx("span",{title:`${t.swr}ms`,children:P(t.swr)})]}):null,e.jsx("div",{className:`inline-flex w-auto rounded-full px-2 py-[2px] font-medium ${i.isExpired?"bg-destructive text-destructive-foreground":i.isExpiringSoon?"bg-warning text-warning-foreground":"text-foreground"}`,children:d?e.jsxs(e.Fragment,{children:["Expires: ",o(d).format("MMM D, YYYY HH:mm:ss")," (",e.jsx("span",{className:"tabular-nums",children:e.jsx(F,{children:()=>i.text})}),")"]}):"Expires: Never"})]})]})}function C({onConfirm:t,children:o,className:l,...d}){const s=U();return e.jsx(D,{...s.getButtonProps({onClick:s.doubleCheck?t:void 0,...d}),className:q(s.doubleCheck?"bg-destructive text-destructive-foreground":null,l),children:s.doubleCheck?"✓":o})}export{fe as default};
2
- //# sourceMappingURL=cache-B9dY5MVl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-B9dY5MVl.js","sources":["../../../app/routes/admin+/cache.tsx"],"sourcesContent":["import {\n\tdeleteCacheEntry,\n\tdeleteWorkshopCache,\n\tgetAllWorkshopCaches,\n\tgetGlobalCaches,\n\tglobalCacheDirectoryExists,\n\tupdateCacheEntry,\n} from '@epic-web/workshop-utils/cache.server'\nimport { getEnv } from '@epic-web/workshop-utils/env.server'\nimport { getErrorMessage } from '@epic-web/workshop-utils/utils'\nimport { useEffect, useRef, useState } from 'react'\nimport { href, useFetcher, useSearchParams } from 'react-router'\nimport { ClientOnly } from 'remix-utils/client-only'\nimport { z } from 'zod'\nimport {\n\tButton,\n\tIconButton,\n\ticonButtonClassName,\n} from '#app/components/button.tsx'\nimport { Icon } from '#app/components/icons.tsx'\nimport { LaunchEditor } from '#app/routes/launch-editor.tsx'\nimport {\n\tcalculateExpirationTime,\n\tcn,\n\tensureUndeployed,\n\tformatDuration,\n\tformatFileSize,\n\tformatTimeRemaining,\n\tuseDayjs,\n\tuseDoubleCheck,\n\tuseInterval,\n} from '#app/utils/misc.tsx'\nimport { type Route } from './+types/cache.ts'\n\nfunction normalizeSearchQuery(query: string) {\n\treturn query.trim().toLowerCase()\n}\n\nfunction entryValueMatches(value: unknown, query: string) {\n\tif (!query) return true\n\tif (value === null || value === undefined) return false\n\tif (typeof value === 'string') {\n\t\treturn value.toLowerCase().includes(query)\n\t}\n\ttry {\n\t\tconst serialized = JSON.stringify(value)\n\t\tif (!serialized) return false\n\t\treturn serialized.toLowerCase().includes(query)\n\t} catch {\n\t\treturn false\n\t}\n}\n\nexport async function loader({ request }: Route.LoaderArgs) {\n\tensureUndeployed()\n\tconst currentWorkshopId = getEnv().EPICSHOP_WORKSHOP_INSTANCE_ID\n\tconst allWorkshopCaches = await getAllWorkshopCaches()\n\tconst globalCaches = await getGlobalCaches()\n\tconst allCaches = [...allWorkshopCaches, ...globalCaches]\n\n\tconst url = new URL(request.url)\n\tconst filterQuery = url.searchParams.get('q') || ''\n\n\t// Ensure 'global' is always in available workshops if global cache directory exists\n\tconst availableWorkshopIds = new Set(allCaches.map((w) => w.workshopId))\n\tconst globalDirExists = await globalCacheDirectoryExists()\n\tif (globalDirExists) {\n\t\tavailableWorkshopIds.add('global')\n\t}\n\n\tconst selectedWorkshops = url.searchParams\n\t\t.get('workshops')\n\t\t?.split(',')\n\t\t.filter(Boolean) || [\n\t\tcurrentWorkshopId,\n\t\t...(globalDirExists ? ['global'] : []),\n\t]\n\tconst normalizedQuery = normalizeSearchQuery(filterQuery)\n\n\t// Filter caches based on search query and selected workshops\n\tconst filteredCaches = allCaches\n\t\t.filter(\n\t\t\t(workshopCache) =>\n\t\t\t\tselectedWorkshops.includes(workshopCache.workshopId) ||\n\t\t\t\tselectedWorkshops.length === 0,\n\t\t)\n\t\t.map((workshopCache) => ({\n\t\t\t...workshopCache,\n\t\t\tcaches: workshopCache.caches\n\t\t\t\t.map((cache) => {\n\t\t\t\t\tconst cacheNameMatches =\n\t\t\t\t\t\tnormalizedQuery === ''\n\t\t\t\t\t\t\t? true\n\t\t\t\t\t\t\t: cache.name.toLowerCase().includes(normalizedQuery)\n\t\t\t\t\tconst entries = cache.entries\n\t\t\t\t\t\t.filter((entry) => {\n\t\t\t\t\t\t\tif (normalizedQuery === '') return true\n\t\t\t\t\t\t\tif (cacheNameMatches) return true\n\t\t\t\t\t\t\tif (entry.key.toLowerCase().includes(normalizedQuery)) return true\n\t\t\t\t\t\t\treturn entryValueMatches(entry.entry.value, normalizedQuery)\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.map((entry) => ({\n\t\t\t\t\t\t\tkey: entry.key,\n\t\t\t\t\t\t\tfilename: entry.filename,\n\t\t\t\t\t\t\tsize: entry.size,\n\t\t\t\t\t\t\tfilepath: entry.filepath,\n\t\t\t\t\t\t\tmetadata: entry.entry.metadata,\n\t\t\t\t\t\t}))\n\t\t\t\t\treturn { ...cache, entries }\n\t\t\t\t})\n\t\t\t\t.filter((cache) => cache.entries.length > 0 || normalizedQuery === ''),\n\t\t}))\n\t\t.filter(\n\t\t\t(workshopCache) =>\n\t\t\t\tworkshopCache.caches.length > 0 || normalizedQuery === '',\n\t\t)\n\n\treturn {\n\t\tcurrentWorkshopId,\n\t\tfilteredCaches,\n\t\tfilterQuery,\n\t\tselectedWorkshops,\n\t\tavailableWorkshops: Array.from(availableWorkshopIds),\n\t}\n}\n\nconst ActionSchema = z.discriminatedUnion('intent', [\n\tz.object({\n\t\tintent: z.literal('delete-entry'),\n\t\tworkshopId: z.string(),\n\t\tcacheName: z.string(),\n\t\tfilename: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('delete-cache'),\n\t\tworkshopId: z.string(),\n\t\tcacheName: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('delete-workshop-cache'),\n\t\tworkshopId: z.string(),\n\t}),\n\tz.object({\n\t\tintent: z.literal('update-entry'),\n\t\tworkshopId: z.string(),\n\t\tcacheName: z.string(),\n\t\tfilename: z.string(),\n\t\tnewValue: z.string(),\n\t}),\n])\n\nexport async function action({ request }: Route.ActionArgs) {\n\tensureUndeployed()\n\n\tconst formData = await request.formData()\n\tconst rawData = Object.fromEntries(formData.entries())\n\tconst result = ActionSchema.safeParse(rawData)\n\n\tif (!result.success) {\n\t\treturn { status: 'error', error: 'Invalid request' } as const\n\t}\n\n\tconst data = result.data\n\n\ttry {\n\t\tswitch (data.intent) {\n\t\t\tcase 'delete-entry': {\n\t\t\t\tconst path = `${data.workshopId}/${data.cacheName}/${data.filename}`\n\t\t\t\tawait deleteCacheEntry(path)\n\t\t\t\treturn { status: 'success', message: 'Cache entry deleted' } as const\n\t\t\t}\n\t\t\tcase 'delete-cache': {\n\t\t\t\tawait deleteWorkshopCache(data.workshopId, data.cacheName)\n\t\t\t\treturn { status: 'success', message: 'Cache deleted' } as const\n\t\t\t}\n\t\t\tcase 'delete-workshop-cache': {\n\t\t\t\tawait deleteWorkshopCache(data.workshopId)\n\t\t\t\treturn { status: 'success', message: 'Workshop cache deleted' } as const\n\t\t\t}\n\t\t\tcase 'update-entry': {\n\t\t\t\tconst path = `${data.workshopId}/${data.cacheName}/${data.filename}`\n\t\t\t\ttry {\n\t\t\t\t\tconst parsedValue = JSON.parse(data.newValue)\n\t\t\t\t\tawait updateCacheEntry(path, parsedValue)\n\t\t\t\t\treturn { status: 'success', message: 'Cache entry updated' } as const\n\t\t\t\t} catch (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: 'error',\n\t\t\t\t\t\terror: getErrorMessage(error, 'Invalid JSON value'),\n\t\t\t\t\t} as const\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tconsole.error('Cache action error:', error)\n\t\treturn { status: 'error', error: 'Operation failed' } as const\n\t}\n}\n\nfunction WorkshopChooser({\n\tselectedWorkshops,\n\tavailableWorkshops,\n\tcurrentWorkshopId,\n}: {\n\tselectedWorkshops: string[]\n\tavailableWorkshops: string[]\n\tcurrentWorkshopId: string\n}) {\n\tconst [searchParams, setSearchParams] = useSearchParams()\n\n\tconst handleWorkshopChange = (workshop: string, checked: boolean) => {\n\t\tconst newSelected = checked\n\t\t\t? [...selectedWorkshops, workshop]\n\t\t\t: selectedWorkshops.filter((w) => w !== workshop)\n\n\t\tconst params = new URLSearchParams(searchParams)\n\t\tif (newSelected.length > 0) {\n\t\t\tparams.set('workshops', newSelected.join(','))\n\t\t} else {\n\t\t\tparams.delete('workshops')\n\t\t}\n\t\tsetSearchParams(params)\n\t}\n\n\treturn (\n\t\t<div className=\"mb-6\">\n\t\t\t<h3 className=\"mb-3 text-lg font-semibold\">Workshop Filter</h3>\n\t\t\t<div className=\"flex flex-wrap gap-3\">\n\t\t\t\t{availableWorkshops.map((workshop) => (\n\t\t\t\t\t<label key={workshop} className=\"flex items-center gap-2\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\t\tchecked={selectedWorkshops.includes(workshop)}\n\t\t\t\t\t\t\tonChange={(e) => handleWorkshopChange(workshop, e.target.checked)}\n\t\t\t\t\t\t\tclassName=\"rounded\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclassName={`text-sm ${workshop === currentWorkshopId ? 'text-primary font-bold' : ''}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{workshop} {workshop === currentWorkshopId ? '(current)' : null}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nfunction SearchFilter({ filterQuery }: { filterQuery: string }) {\n\tconst [searchParams, setSearchParams] = useSearchParams()\n\tconst [inputValue, setInputValue] = useState(filterQuery)\n\tconst inputRef = useRef<HTMLInputElement>(null)\n\n\t// Update input value when filterQuery changes (e.g., from URL)\n\tuseEffect(() => {\n\t\tsetInputValue(filterQuery)\n\t}, [filterQuery])\n\n\tconst handleSearch = (query: string) => {\n\t\tconst params = new URLSearchParams(searchParams)\n\t\tif (query) {\n\t\t\tparams.set('q', query)\n\t\t} else {\n\t\t\tparams.delete('q')\n\t\t}\n\t\tsetSearchParams(params)\n\t}\n\n\tconst handleClear = () => {\n\t\tsetInputValue('')\n\t\thandleSearch('')\n\t\tinputRef.current?.focus()\n\t}\n\n\treturn (\n\t\t<div className=\"mb-6\">\n\t\t\t<h3 className=\"mb-3 text-lg font-semibold\">Search Cache Entries</h3>\n\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t<input\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tplaceholder=\"Search by key or cache name...\"\n\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetInputValue(e.target.value)\n\t\t\t\t\t\thandleSearch(e.target.value)\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"border-border bg-background text-foreground focus:ring-ring flex-1 rounded-md border px-3 py-2 focus:ring-2 focus:outline-none\"\n\t\t\t\t/>\n\t\t\t\t{inputValue ? (\n\t\t\t\t\t<IconButton onClick={handleClear} title=\"Clear search\">\n\t\t\t\t\t\t<Icon name=\"Close\" className=\"h-4 w-4\" />\n\t\t\t\t\t</IconButton>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n// Inline entry editor component\nfunction InlineEntryEditor({\n\tworkshopId,\n\tcacheName,\n\tfilename,\n\tentryKey,\n}: {\n\tworkshopId: string\n\tcacheName: string\n\tfilename: string\n\tentryKey: string\n}) {\n\tconst entryFetcher = useFetcher<{\n\t\tentry: {\n\t\t\tvalue: unknown\n\t\t\tmetadata: {\n\t\t\t\tcreatedTime: number\n\t\t\t\tttl?: number | null\n\t\t\t\tswr?: number\n\t\t\t}\n\t\t} | null\n\t}>()\n\tconst updateFetcher = useFetcher<typeof action>()\n\tconst [editValue, setEditValue] = useState<string | null>(null)\n\tconst [baselineValue, setBaselineValue] = useState<string | null>(null)\n\tconst [hasChanges, setHasChanges] = useState(false)\n\tconst [hasRequested, setHasRequested] = useState(false)\n\tconst [hasStartedLoading, setHasStartedLoading] = useState(false)\n\tconst submittedValueRef = useRef<string | null>(null)\n\tconst prevUpdateStateRef = useRef<string>(updateFetcher.state)\n\n\tconst entryPath = `${workshopId}/${cacheName}/${filename}`\n\tconst entryValue = entryFetcher.data?.entry?.value\n\tconst isEntryLoading = entryFetcher.state === 'loading'\n\tconst hasEntry = Boolean(entryFetcher.data?.entry)\n\tconst entryMissing = entryFetcher.data?.entry === null\n\tconst entryFetchFailed =\n\t\thasRequested &&\n\t\thasStartedLoading &&\n\t\t!isEntryLoading &&\n\t\tentryFetcher.data === undefined &&\n\t\tentryFetcher.state === 'idle'\n\n\tuseEffect(() => {\n\t\tif (entryFetcher.state !== 'idle') {\n\t\t\tsetHasStartedLoading(true)\n\t\t}\n\t}, [entryFetcher.state])\n\n\tuseEffect(() => {\n\t\tif (hasEntry) {\n\t\t\tconst formattedValue = JSON.stringify(entryValue, null, 2) ?? ''\n\t\t\tsetEditValue(formattedValue)\n\t\t\tsetBaselineValue(formattedValue)\n\t\t\tsetHasChanges(false)\n\t\t}\n\t}, [hasEntry, entryValue])\n\n\tuseEffect(() => {\n\t\tconst currentUpdateState = updateFetcher.state\n\t\tconst wasSubmitting = prevUpdateStateRef.current !== 'idle'\n\t\tconst nowIdle = currentUpdateState === 'idle'\n\n\t\tif (wasSubmitting && nowIdle && updateFetcher.data?.status === 'success') {\n\t\t\tsetBaselineValue(submittedValueRef.current ?? '')\n\t\t\tsetHasChanges(false)\n\t\t}\n\t\tprevUpdateStateRef.current = currentUpdateState\n\t}, [updateFetcher.state, updateFetcher.data?.status])\n\n\tconst handleSave = () => {\n\t\tif (editValue === null) return\n\t\tsubmittedValueRef.current = editValue\n\t\tvoid updateFetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'update-entry',\n\t\t\t\tworkshopId,\n\t\t\t\tcacheName,\n\t\t\t\tfilename,\n\t\t\t\tnewValue: editValue,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst handleChange = (value: string) => {\n\t\tsetEditValue(value)\n\t\tif (baselineValue === null) {\n\t\t\tsetHasChanges(false)\n\t\t\treturn\n\t\t}\n\t\tsetHasChanges(value !== baselineValue)\n\t}\n\n\tconst handleReset = () => {\n\t\tif (baselineValue === null) return\n\t\tsetEditValue(baselineValue)\n\t\tsetHasChanges(false)\n\t}\n\n\tconst handleToggle = (event: React.SyntheticEvent<HTMLDetailsElement>) => {\n\t\tif (event.currentTarget.open && !hasRequested) {\n\t\t\tvoid entryFetcher.load(\n\t\t\t\thref('/admin/cache/*', {\n\t\t\t\t\t'*': entryPath,\n\t\t\t\t}),\n\t\t\t)\n\t\t\tsetHasRequested(true)\n\t\t} else if (!event.currentTarget.open) {\n\t\t\t// Reset on close to allow retry\n\t\t\tsetHasRequested(false)\n\t\t\tsetHasStartedLoading(false)\n\t\t}\n\t}\n\n\tconst handleRetry = () => {\n\t\tvoid entryFetcher.load(\n\t\t\thref('/admin/cache/*', {\n\t\t\t\t'*': entryPath,\n\t\t\t}),\n\t\t)\n\t}\n\n\treturn (\n\t\t<details className=\"mt-2\" onToggle={handleToggle}>\n\t\t\t<summary className=\"text-muted-foreground hover:text-foreground cursor-pointer text-sm\">\n\t\t\t\tEdit entry details\n\t\t\t</summary>\n\t\t\t<div className=\"border-border bg-muted mt-2 space-y-3 rounded border p-3\">\n\t\t\t\t{isEntryLoading ? (\n\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">Loading entry...</p>\n\t\t\t\t) : entryFetchFailed ? (\n\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t<p className=\"text-destructive text-sm\">\n\t\t\t\t\t\t\tFailed to load entry details.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<Button varient=\"mono\" onClick={handleRetry}>\n\t\t\t\t\t\t\tRetry\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t) : entryMissing ? (\n\t\t\t\t\t<p className=\"text-destructive text-sm\">\n\t\t\t\t\t\tEntry details were not found.\n\t\t\t\t\t</p>\n\t\t\t\t) : hasEntry ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">Key:</label>\n\t\t\t\t\t\t\t<code className=\"bg-background rounded border px-2 py-1 text-sm\">\n\t\t\t\t\t\t\t\t{entryKey}\n\t\t\t\t\t\t\t</code>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<label className=\"mb-1 block text-sm font-medium\">Value:</label>\n\t\t\t\t\t\t\t<textarea\n\t\t\t\t\t\t\t\tvalue={editValue ?? ''}\n\t\t\t\t\t\t\t\tonChange={(e) => handleChange(e.target.value)}\n\t\t\t\t\t\t\t\tclassName=\"resize-vertical border-border bg-background text-foreground focus:ring-ring h-32 w-full rounded border p-2 font-mono text-sm focus:ring-2 focus:outline-none\"\n\t\t\t\t\t\t\t\tplaceholder=\"Enter JSON value...\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"flex gap-2\">\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvarient=\"primary\"\n\t\t\t\t\t\t\t\tonClick={handleSave}\n\t\t\t\t\t\t\t\tdisabled={!hasChanges || updateFetcher.state !== 'idle'}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{updateFetcher.state !== 'idle' ? 'Saving...' : 'Save'}\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\tvarient=\"mono\"\n\t\t\t\t\t\t\t\tonClick={handleReset}\n\t\t\t\t\t\t\t\tdisabled={!hasChanges}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReset\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\tOpen to load entry details.\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</details>\n\t)\n}\n\nfunction SkippedFilesSection({\n\tskippedFiles,\n\tworkshopId,\n\tcacheName,\n}: {\n\tskippedFiles: Array<{\n\t\tfilename: string\n\t\terror: string\n\t\tsize: number\n\t\tskipped: true\n\t}>\n\tworkshopId: string\n\tcacheName: string\n}) {\n\tconst fetcher = useFetcher<typeof action>()\n\n\tif (skippedFiles.length === 0) return null\n\n\treturn (\n\t\t<div className=\"border-warning bg-warning mt-4 rounded border p-3\">\n\t\t\t<div className=\"mb-2 flex items-center gap-2\">\n\t\t\t\t<Icon\n\t\t\t\t\tname=\"TriangleAlert\"\n\t\t\t\t\tclassName=\"text-warning-foreground h-4 w-4\"\n\t\t\t\t/>\n\t\t\t\t<h5 className=\"text-warning-foreground font-medium\">\n\t\t\t\t\tSkipped Files ({skippedFiles.length})\n\t\t\t\t</h5>\n\t\t\t</div>\n\t\t\t<p className=\"text-warning-foreground/80 mb-3 text-sm\">\n\t\t\t\tThese cache files were skipped because they exceed the 3MB size limit:\n\t\t\t</p>\n\t\t\t<div className=\"space-y-2\">\n\t\t\t\t{skippedFiles.map((skippedFile) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tkey={skippedFile.filename}\n\t\t\t\t\t\tclassName=\"border-warning/20 bg-warning/5 flex items-center justify-between rounded border p-2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t<div className=\"text-warning-foreground truncate font-mono text-sm font-medium\">\n\t\t\t\t\t\t\t\t{skippedFile.filename}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div className=\"text-warning-foreground/70 text-xs\">\n\t\t\t\t\t\t\t\t{skippedFile.error} • Size:{' '}\n\t\t\t\t\t\t\t\t<span title={`${skippedFile.size} bytes`}>\n\t\t\t\t\t\t\t\t\t{formatFileSize(skippedFile.size)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div className=\"ml-2 flex shrink-0\">\n\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\tonConfirm={() => {\n\t\t\t\t\t\t\t\t\tvoid fetcher.submit(\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tintent: 'delete-entry',\n\t\t\t\t\t\t\t\t\t\t\tworkshopId,\n\t\t\t\t\t\t\t\t\t\t\tcacheName,\n\t\t\t\t\t\t\t\t\t\t\tfilename: skippedFile.filename,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ method: 'POST' },\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\ttitle=\"Delete large cache file\"\n\t\t\t\t\t\t\t\tclassName=\"text-destructive-foreground hover:bg-destructive/20 hover:text-destructive-foreground\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\nexport default function CacheManagement({ loaderData }: Route.ComponentProps) {\n\tconst fetcher = useFetcher<typeof action>()\n\n\tconst deleteEntry = (\n\t\tworkshopId: string,\n\t\tcacheName: string,\n\t\tfilename: string,\n\t) => {\n\t\tvoid fetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'delete-entry',\n\t\t\t\tworkshopId,\n\t\t\t\tcacheName,\n\t\t\t\tfilename,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst deleteCache = (workshopId: string, cacheName: string) => {\n\t\tvoid fetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'delete-cache',\n\t\t\t\tworkshopId,\n\t\t\t\tcacheName,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst deleteWorkshopCache = (workshopId: string) => {\n\t\tvoid fetcher.submit(\n\t\t\t{\n\t\t\t\tintent: 'delete-workshop-cache',\n\t\t\t\tworkshopId,\n\t\t\t},\n\t\t\t{ method: 'POST' },\n\t\t)\n\t}\n\n\tconst {\n\t\tcurrentWorkshopId,\n\t\tfilteredCaches,\n\t\tfilterQuery,\n\t\tselectedWorkshops,\n\t\tavailableWorkshops,\n\t} = loaderData\n\n\treturn (\n\t\t<div className=\"space-y-6\">\n\t\t\t<div>\n\t\t\t\t<h2 className=\"mb-2 text-2xl font-bold\">Cache Management</h2>\n\t\t\t\t<p className=\"text-muted-foreground\">\n\t\t\t\t\tCurrent Workshop:{' '}\n\t\t\t\t\t<span className=\"text-foreground font-semibold\">\n\t\t\t\t\t\t{currentWorkshopId}\n\t\t\t\t\t</span>\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<WorkshopChooser\n\t\t\t\tselectedWorkshops={selectedWorkshops}\n\t\t\t\tavailableWorkshops={availableWorkshops}\n\t\t\t\tcurrentWorkshopId={currentWorkshopId}\n\t\t\t/>\n\n\t\t\t<SearchFilter filterQuery={filterQuery} />\n\n\t\t\t{fetcher.data?.status === 'success' ? (\n\t\t\t\t<div className=\"border-border bg-success text-success-foreground rounded border p-4\">\n\t\t\t\t\t{fetcher.data.message}\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{fetcher.data?.status === 'error' ? (\n\t\t\t\t<div className=\"border-border bg-destructive text-destructive-foreground rounded border p-4\">\n\t\t\t\t\t{fetcher.data.error}\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t{filteredCaches.length === 0 ? (\n\t\t\t\t<div className=\"text-muted-foreground py-8 text-center\">\n\t\t\t\t\tNo caches found matching your criteria.\n\t\t\t\t</div>\n\t\t\t) : null}\n\n\t\t\t<div className=\"space-y-6\">\n\t\t\t\t{filteredCaches.map((workshopCache) => (\n\t\t\t\t\t<details\n\t\t\t\t\t\tkey={workshopCache.workshopId}\n\t\t\t\t\t\topen={workshopCache.workshopId === currentWorkshopId}\n\t\t\t\t\t>\n\t\t\t\t\t\t<summary className=\"border-border bg-card hover:bg-accent cursor-pointer rounded-lg border p-4\">\n\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t<h3 className=\"text-card-foreground flex items-center gap-2 text-lg font-semibold\">\n\t\t\t\t\t\t\t\t\t<Icon name=\"Files\" className=\"h-5 w-5\" />\n\t\t\t\t\t\t\t\t\t{workshopCache.workshopId === 'global'\n\t\t\t\t\t\t\t\t\t\t? 'Global Caches'\n\t\t\t\t\t\t\t\t\t\t: workshopCache.workshopId}\n\t\t\t\t\t\t\t\t\t{workshopCache.workshopId === currentWorkshopId ? (\n\t\t\t\t\t\t\t\t\t\t<span className=\"bg-primary text-primary-foreground rounded px-2 py-1 text-xs\">\n\t\t\t\t\t\t\t\t\t\t\tCurrent\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</h3>\n\t\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\t\tonConfirm={() =>\n\t\t\t\t\t\t\t\t\t\tdeleteWorkshopCache(workshopCache.workshopId)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ttitle=\"Delete all workshop caches\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</summary>\n\n\t\t\t\t\t\t<div className=\"mt-4 space-y-4 pl-4\">\n\t\t\t\t\t\t\t{workshopCache.caches.map((cache) => {\n\t\t\t\t\t\t\t\tconst totalSize = cache.entries.reduce(\n\t\t\t\t\t\t\t\t\t(sum, entry) => sum + (entry.size || 0),\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tconst skippedSize = (cache.skippedFiles || []).reduce(\n\t\t\t\t\t\t\t\t\t(sum, file) => sum + file.size,\n\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tconst grandTotal = totalSize + skippedSize\n\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<details key={cache.name} className=\"bg-muted rounded-md\">\n\t\t\t\t\t\t\t\t\t\t<summary className=\"hover:bg-accent cursor-pointer p-3\">\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t<h4 className=\"text-muted-foreground flex items-center gap-2 font-medium\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Files\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cache.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t({cache.entries.length} entr\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{cache.entries.length === 1 ? 'y' : 'ies'})\n\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{grandTotal > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t•{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span title={`${grandTotal} bytes`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(grandTotal)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttotal\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{skippedSize > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className=\"text-warning\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span title={`${skippedSize} bytes`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(skippedSize)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tskipped)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\t\t\t\t\t\tonConfirm={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteCache(workshopCache.workshopId, cache.name)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Delete cache\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</summary>\n\n\t\t\t\t\t\t\t\t\t\t<div className=\"p-3 pt-0\">\n\t\t\t\t\t\t\t\t\t\t\t{cache.entries.length === 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<p className=\"text-muted-foreground text-sm\">\n\t\t\t\t\t\t\t\t\t\t\t\t\tNo entries match your search.\n\t\t\t\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t\t\t\t\t{cache.skippedFiles && cache.skippedFiles.length > 0 ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<SkippedFilesSection\n\t\t\t\t\t\t\t\t\t\t\t\t\tskippedFiles={cache.skippedFiles}\n\t\t\t\t\t\t\t\t\t\t\t\t\tworkshopId={workshopCache.workshopId}\n\t\t\t\t\t\t\t\t\t\t\t\t\tcacheName={cache.name}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t\t\t\t\t<div className=\"space-y-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t{cache.entries.map(\n\t\t\t\t\t\t\t\t\t\t\t\t\t({ key, metadata, filename, size, filepath }) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-background rounded border p-3\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"flex items-start justify-between\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"mb-1 flex items-center gap-2\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"truncate font-mono text-sm font-medium\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{size ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"bg-muted text-muted-foreground inline-flex items-center rounded px-1.5 py-0.5 text-xs whitespace-nowrap\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={`${size} bytes`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{formatFileSize(size)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CacheMetadata metadata={metadata} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className=\"ml-4 flex shrink-0 gap-1\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thref={href('/admin/cache/*', {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'*': `${workshopCache.workshopId}/${cache.name}/${filename}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"border-border bg-background text-foreground hover:bg-muted focus:ring-ring inline-flex h-8 w-8 items-center justify-center rounded border focus:ring-2 focus:outline-none\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"View JSON\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname=\"ExternalLink\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{filepath ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<LaunchEditor\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfile={filepath}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName={iconButtonClassName}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tname=\"Files\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"h-4 w-4\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Open in editor\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</LaunchEditor>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<DoubleCheckButton\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonConfirm={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeleteEntry(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkshopCache.workshopId,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcache.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilename,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle=\"Delete entry\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Icon name=\"Remove\" className=\"h-4 w-4\" />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</DoubleCheckButton>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<InlineEntryEditor\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tworkshopId={workshopCache.workshopId}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcacheName={cache.name}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfilename={filename}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentryKey={key}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</details>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</details>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n// Component for displaying cache metadata with live countdown\nfunction CacheMetadata({\n\tmetadata,\n}: {\n\tmetadata: {\n\t\tcreatedTime: number\n\t\tttl?: number | null\n\t\tswr?: number\n\t}\n}) {\n\tconst dayjs = useDayjs()\n\tconst [, setCurrentTime] = useState(Date.now())\n\tconst expirationTime = calculateExpirationTime(metadata)\n\n\t// Update time every second for live countdown\n\tuseInterval(() => {\n\t\tsetCurrentTime(Date.now())\n\t}, 1000)\n\n\tconst createdDate = dayjs(metadata.createdTime)\n\tconst timeRemaining = expirationTime\n\t\t? formatTimeRemaining(expirationTime)\n\t\t: { text: 'Never', isExpired: false, isExpiringSoon: false }\n\n\treturn (\n\t\t<div className=\"text-muted-foreground flex flex-col gap-1 text-xs\">\n\t\t\t<div>\n\t\t\t\tCreated: {createdDate.format('MMM D, YYYY HH:mm:ss')}{' '}\n\t\t\t\t<ClientOnly>{() => `(${createdDate.fromNow()})`}</ClientOnly>\n\t\t\t</div>\n\t\t\t<div className=\"flex flex-wrap items-center gap-3\">\n\t\t\t\t{metadata.ttl !== undefined && metadata.ttl !== null ? (\n\t\t\t\t\t<span>\n\t\t\t\t\t\tTTL:{' '}\n\t\t\t\t\t\t{metadata.ttl === Infinity ? (\n\t\t\t\t\t\t\t'Forever'\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span title={`${metadata.ttl}ms`}>\n\t\t\t\t\t\t\t\t{formatDuration(metadata.ttl)}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</span>\n\t\t\t\t) : null}\n\t\t\t\t{metadata.swr !== undefined ? (\n\t\t\t\t\t<span>\n\t\t\t\t\t\tSWR:{' '}\n\t\t\t\t\t\t<span title={`${metadata.swr}ms`}>\n\t\t\t\t\t\t\t{formatDuration(metadata.swr)}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t) : null}\n\t\t\t\t<div\n\t\t\t\t\tclassName={`inline-flex w-auto rounded-full px-2 py-[2px] font-medium ${\n\t\t\t\t\t\ttimeRemaining.isExpired\n\t\t\t\t\t\t\t? 'bg-destructive text-destructive-foreground'\n\t\t\t\t\t\t\t: timeRemaining.isExpiringSoon\n\t\t\t\t\t\t\t\t? 'bg-warning text-warning-foreground'\n\t\t\t\t\t\t\t\t: 'text-foreground'\n\t\t\t\t\t}`}\n\t\t\t\t>\n\t\t\t\t\t{expirationTime ? (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\tExpires: {dayjs(expirationTime).format('MMM D, YYYY HH:mm:ss')} (\n\t\t\t\t\t\t\t<span className=\"tabular-nums\">\n\t\t\t\t\t\t\t\t<ClientOnly>{() => timeRemaining.text}</ClientOnly>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t</>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t'Expires: Never'\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n// Double-check delete button\nfunction DoubleCheckButton({\n\tonConfirm,\n\tchildren,\n\tclassName,\n\t...props\n}: React.ComponentPropsWithoutRef<'button'> & {\n\tonConfirm: () => void\n}) {\n\tconst doubleCheck = useDoubleCheck()\n\n\treturn (\n\t\t<IconButton\n\t\t\t{...doubleCheck.getButtonProps({\n\t\t\t\tonClick: doubleCheck.doubleCheck ? onConfirm : undefined,\n\t\t\t\t...props,\n\t\t\t})}\n\t\t\tclassName={cn(\n\t\t\t\tdoubleCheck.doubleCheck\n\t\t\t\t\t? 'bg-destructive text-destructive-foreground'\n\t\t\t\t\t: null,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t>\n\t\t\t{doubleCheck.doubleCheck ? '✓' : children}\n\t\t</IconButton>\n\t)\n}\n"],"names":["WorkshopChooser","selectedWorkshops","availableWorkshops","currentWorkshopId","searchParams","setSearchParams","useSearchParams","handleWorkshopChange","workshop","checked","newSelected","filter","w","params","URLSearchParams","length","set","join","delete","jsxs","className","children","jsx","map","type","includes","onChange","e","target","SearchFilter","filterQuery","inputValue","setInputValue","useState","inputRef","useRef","useEffect","handleSearch","query","handleClear","current","focus","ref","placeholder","value","IconButton","onClick","title","Icon","name","InlineEntryEditor","workshopId","cacheName","filename","entryKey","entryFetcher","useFetcher","updateFetcher","editValue","setEditValue","baselineValue","setBaselineValue","hasChanges","setHasChanges","hasRequested","setHasRequested","hasStartedLoading","setHasStartedLoading","submittedValueRef","prevUpdateStateRef","state","entryPath","entryValue","data","entry","isEntryLoading","hasEntry","Boolean","entryMissing","entryFetchFailed","formattedValue","JSON","stringify","currentUpdateState","status","handleSave","submit","intent","newValue","method","handleChange","handleReset","handleToggle","event","currentTarget","open","load","href","handleRetry","onToggle","Button","varient","Fragment","disabled","SkippedFilesSection","skippedFiles","fetcher","skippedFile","error","size","formatFileSize","DoubleCheckButton","onConfirm","cache","_UNSAFE_withComponentProps","loaderData","deleteEntry","deleteCache","deleteWorkshopCache","filteredCaches","message","workshopCache","caches","totalSize","entries","reduce","sum","skippedSize","file","grandTotal","key","metadata","filepath","CacheMetadata","rel","LaunchEditor","iconButtonClassName","dayjs","useDayjs","setCurrentTime","Date","now","expirationTime","calculateExpirationTime","useInterval","createdDate","createdTime","timeRemaining","formatTimeRemaining","text","isExpired","isExpiringSoon","format","ClientOnly","fromNow","ttl","Infinity","formatDuration","swr","props","doubleCheck","useDoubleCheck","getButtonProps","cn"],"mappings":"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"}
@@ -1 +0,0 @@
1
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) 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-space-x-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-mono:var(--font-mono);--color-yellow-500:oklch(79.5% .184 86.047);--color-slate-500:oklch(55.4% .046 257.417);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-300:oklch(87.2% .01 258.338);--color-black:#000;--spacing:.25rem;--container-2xs:18rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--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 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--leading-tight:1.25;--drop-shadow-sm:0 1px 2px #00000026;--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--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);--text-h1:3.5rem;--text-h1--line-height:3.875rem;--text-h1--font-weight:700;--text-h2:2.5rem;--text-h2--line-height:3rem;--text-h2--font-weight:700;--text-h3:2rem;--text-h3--line-height:2.25rem;--text-h3--font-weight:700;--text-h4:1.75rem;--text-h4--line-height:2.25rem;--text-h4--font-weight:700;--text-h5:1.5rem;--text-h5--line-height:2rem;--text-h5--font-weight:700;--text-body-xl:1.75rem;--text-body-xl--line-height:2.25rem;--text-body-lg:1.5rem;--text-body-lg--line-height:2rem;--text-body-md:1.25rem;--text-body-md--line-height:1.75rem}}@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%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-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,::backdrop{border-color:hsl(var(--border))}::file-selector-button{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-feature-settings:"rlig" 1,"calt" 1}html,body{height:-webkit-fill-available}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}*{scrollbar-color:initial;scrollbar-width:initial}}@layer components{.prose :where(*):not(:where([class~=not-prose],[class~=not-prose] *)){color:hsl(var(--foreground))}.prose>ul>li>:first-child{margin-top:unset}.prose>ul>li>:last-child{margin-bottom:unset}.prose>ol>li>:first-child{margin-top:unset}.prose>ol>li>:last-child{margin-bottom:unset}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}}@layer utilities{.\@container{container-type:inline-size}.pointer-events-none{pointer-events:none}.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}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.-top-1{top:calc(var(--spacing)*-1)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing)*4)}.top-\[20vh\]{top:20vh}.top-\[50\%\]{top:50%}.top-full{top:100%}.-right-1{right:calc(var(--spacing)*-1)}.right-0{right:calc(var(--spacing)*0)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.right-5{right:calc(var(--spacing)*5)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-5{bottom:calc(var(--spacing)*5)}.-left-1{left:calc(var(--spacing)*-1)}.-left-4{left:calc(var(--spacing)*-4)}.left-0{left:calc(var(--spacing)*0)}.left-\[50\%\]{left:50%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-1{grid-column:span 1/span 1}.col-start-1{grid-column-start:1}.row-span-1{grid-row:span 1/span 1}.row-start-1{grid-row-start:1}.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-0{margin:calc(var(--spacing)*0)}.m-2{margin:calc(var(--spacing)*2)}.m-5{margin:calc(var(--spacing)*5)}.container{margin-inline:auto;padding-inline:2rem}@media(min-width:1400px){.container{max-width:1400px}}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-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-8{margin-top:calc(var(--spacing)*8)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-3{margin-left:calc(var(--spacing)*3)}.ml-4{margin-left:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.box-content{box-sizing:content-box}.scrollbar-thin::-webkit-scrollbar-track{background-color:var(--scrollbar-track);border-radius:var(--scrollbar-track-radius)}.scrollbar-thin::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:var(--scrollbar-thumb-radius)}.scrollbar-thin::-webkit-scrollbar-corner{background-color:var(--scrollbar-corner);border-radius:var(--scrollbar-corner-radius)}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb,initial)var(--scrollbar-track,initial)}.scrollbar-thin::-webkit-scrollbar{width:8px;height:8px;display:block}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.h-screen-safe{height:calc(100vh - (var(--twsa-safe-area-inset-top) + var(--twsa-safe-area-inset-bottom)));height:-webkit-fill-available}.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-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-28{height:calc(var(--spacing)*28)}.h-32{height:calc(var(--spacing)*32)}.h-36{height:calc(var(--spacing)*36)}.h-\[0\.20rem\]{height:.2rem}.h-\[1em\]{height:1em}.h-\[32px\]{height:32px}.h-\[calc\(100vh-64px-env\(safe-area-inset-top\)-env\(safe-area-inset-bottom\)\)\]{height:calc(100vh - 64px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.h-\[calc\(100vh-128px-env\(safe-area-inset-top\)-env\(safe-area-inset-bottom\)\)\]{height:calc(100vh - 128px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.h-\[unset\]{height:unset}.h-full{height:100%}.h-px{height:1px}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-72{max-height:calc(var(--spacing)*72)}.max-h-96{max-height:calc(var(--spacing)*96)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[55vh\]{max-height:55vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[400px\]{max-height:400px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-14{min-height:calc(var(--spacing)*14)}.min-h-\[50vh\]{min-height:50vh}.min-h-\[420px\]{min-height:420px}.min-h-full{min-height:100%}.w-0{width:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.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-5\/12{width:41.6667%}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-8\/12{width:66.6667%}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-36{width:calc(var(--spacing)*36)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-80{width:calc(var(--spacing)*80)}.w-\[1em\]{width:1em}.w-\[25px\]{width:25px}.w-\[140px\]{width:140px}.w-\[min\(720px\,calc\(100vw-2rem\)\)\]{width:min(720px,100vw - 2rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-2xs{max-width:var(--container-2xs)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-64{max-width:calc(var(--spacing)*64)}.max-w-\[50\%\]{max-width:50%}.max-w-\[360px\]{max-width:360px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[120px\]{min-width:120px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.basis-0{flex-basis:calc(var(--spacing)*0)}.basis-auto{flex-basis:auto}.basis-full{flex-basis:100%}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\[-50\%\]{--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)}.-translate-y-10{--tw-translate-y:calc(var(--spacing)*-10);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--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-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-progress{cursor:progress}.cursor-wait{cursor:wait}.resize{resize:both}.scroll-mt-8{scroll-margin-top:calc(var(--spacing)*8)}.scroll-pt-6{scroll-padding-top:calc(var(--spacing)*6)}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.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}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.gap-12{gap:calc(var(--spacing)*12)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing)*2)}.gap-x-4{column-gap:calc(var(--spacing)*4)}:where(.space-x-1\.5>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-1{row-gap:calc(var(--spacing)*1)}: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-border>:not(:last-child)){border-color:hsl(var(--border))}.self-center{align-self:center}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-border{border-color:hsl(var(--border))}.border-destructive{border-color:hsl(var(--destructive))}.border-foreground{border-color:hsl(var(--foreground))}.border-info\/60{border-color:hsl(var(--info))}@supports (color:color-mix(in lab,red,red)){.border-info\/60{border-color:color-mix(in oklab,hsl(var(--info))60%,transparent)}}.border-warning,.border-warning\/20{border-color:hsl(var(--warning))}@supports (color:color-mix(in lab,red,red)){.border-warning\/20{border-color:color-mix(in oklab,hsl(var(--warning))20%,transparent)}}.border-b-gray-50{border-bottom-color:var(--color-gray-50)}.bg-\[var\(--shiki-background\)\]{background-color:var(--shiki-background)}.bg-accent{background-color:hsl(var(--accent))}.bg-background,.bg-background\/80{background-color:hsl(var(--background))}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,hsl(var(--background))80%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive,.bg-destructive\/10{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,hsl(var(--destructive))10%,transparent)}}.bg-destructive\/60{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/60{background-color:color-mix(in oklab,hsl(var(--destructive))60%,transparent)}}.bg-destructive\/80{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/80{background-color:color-mix(in oklab,hsl(var(--destructive))80%,transparent)}}.bg-foreground,.bg-foreground\/20{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.bg-foreground\/20{background-color:color-mix(in oklab,hsl(var(--foreground))20%,transparent)}}.bg-foreground\/40{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.bg-foreground\/40{background-color:color-mix(in oklab,hsl(var(--foreground))40%,transparent)}}.bg-highlight{background-color:hsl(var(--highlight))}.bg-info{background-color:hsl(var(--info))}.bg-info-foreground\/20{background-color:hsl(var(--info-foreground))}@supports (color:color-mix(in lab,red,red)){.bg-info-foreground\/20{background-color:color-mix(in oklab,hsl(var(--info-foreground))20%,transparent)}}.bg-info\/10{background-color:hsl(var(--info))}@supports (color:color-mix(in lab,red,red)){.bg-info\/10{background-color:color-mix(in oklab,hsl(var(--info))10%,transparent)}}.bg-info\/60{background-color:hsl(var(--info))}@supports (color:color-mix(in lab,red,red)){.bg-info\/60{background-color:color-mix(in oklab,hsl(var(--info))60%,transparent)}}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground{background-color:hsl(var(--muted-foreground))}.bg-muted\/30{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,hsl(var(--muted))30%,transparent)}}.bg-muted\/40{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,hsl(var(--muted))40%,transparent)}}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-success,.bg-success\/60{background-color:hsl(var(--success))}@supports (color:color-mix(in lab,red,red)){.bg-success\/60{background-color:color-mix(in oklab,hsl(var(--success))60%,transparent)}}.bg-warning,.bg-warning\/5{background-color:hsl(var(--warning))}@supports (color:color-mix(in lab,red,red)){.bg-warning\/5{background-color:color-mix(in oklab,hsl(var(--warning))5%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/60{background-color:#edb20099}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/60{background-color:color-mix(in oklab,var(--color-yellow-500)60%,transparent)}}.bg-linear-to-tr{--tw-gradient-position:to top right}@supports (background-image:linear-gradient(in lab,red,red)){.bg-linear-to-tr{--tw-gradient-position:to top right in oklab}}.bg-linear-to-tr{background-image:linear-gradient(var(--tw-gradient-stops))}.from-highlight{--tw-gradient-from:hsl(var(--highlight));--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-info{--tw-gradient-to:hsl(var(--info));--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.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-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.p-20{padding:calc(var(--spacing)*20)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.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-9{padding-inline:calc(var(--spacing)*9)}.px-10{padding-inline:calc(var(--spacing)*10)}.px-\[5px\]{padding-inline:5px}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-\[0\.5px\]{padding-block:.5px}.py-\[2px\]{padding-block:2px}.py-\[6px\]{padding-block:6px}.py-\[21px\]{padding-block:21px}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-10{padding-top:calc(var(--spacing)*10)}.pt-\[15px\]{padding-top:15px}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-3\.5{padding-right:calc(var(--spacing)*3.5)}.pr-5{padding-right:calc(var(--spacing)*5)}.pr-10{padding-right:calc(var(--spacing)*10)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-1\.5{padding-bottom:calc(var(--spacing)*1.5)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-1\.5{padding-left:calc(var(--spacing)*1.5)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-10{padding-left:calc(var(--spacing)*10)}.pl-\[18px\]{padding-left:18px}.text-center{text-align:center}.text-left{text-align:left}.align-super{vertical-align:super}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-h1{font-size:var(--text-h1);line-height:var(--tw-leading,var(--text-h1--line-height));font-weight:var(--tw-font-weight,var(--text-h1--font-weight))}.text-h2{font-size:var(--text-h2);line-height:var(--tw-leading,var(--text-h2--line-height));font-weight:var(--tw-font-weight,var(--text-h2--font-weight))}.text-h3{font-size:var(--text-h3);line-height:var(--tw-leading,var(--text-h3--line-height));font-weight:var(--tw-font-weight,var(--text-h3--font-weight))}.text-h4{font-size:var(--text-h4);line-height:var(--tw-leading,var(--text-h4--line-height));font-weight:var(--tw-font-weight,var(--text-h4--font-weight))}.text-h5{font-size:var(--text-h5);line-height:var(--tw-leading,var(--text-h5--line-height));font-weight:var(--tw-font-weight,var(--text-h5--font-weight))}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-body-lg{font-size:var(--text-body-lg);line-height:var(--tw-leading,var(--text-body-lg--line-height))}.text-body-md{font-size:var(--text-body-md);line-height:var(--tw-leading,var(--text-body-md--line-height))}.text-body-xl{font-size:var(--text-body-xl);line-height:var(--tw-leading,var(--text-body-xl--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-\[clamp\(3rem\,6vw\,7\.5rem\)\]{font-size:clamp(3rem,6vw,7.5rem)}.leading-3{--tw-leading:calc(var(--spacing)*3);line-height:calc(var(--spacing)*3)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-balance{text-wrap:balance}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#10b981\]{color:#10b981}.text-\[\#ef4444\]{color:#ef4444}.text-\[\#fb923c\]{color:#fb923c}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-background{color:hsl(var(--background))}.text-black{color:var(--color-black)}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground,.text-destructive-foreground\/80{color:hsl(var(--destructive-foreground))}@supports (color:color-mix(in lab,red,red)){.text-destructive-foreground\/80{color:color-mix(in oklab,hsl(var(--destructive-foreground))80%,transparent)}}.text-foreground{color:hsl(var(--foreground))}.text-foreground-destructive{color:hsl(var(--foreground-destructive))}.text-highlight{color:hsl(var(--highlight))}.text-info{color:hsl(var(--info))}.text-info-foreground{color:hsl(var(--info-foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-success{color:hsl(var(--success))}.text-success-foreground{color:hsl(var(--success-foreground))}.text-warning{color:hsl(var(--warning))}.text-warning-foreground,.text-warning-foreground\/70{color:hsl(var(--warning-foreground))}@supports (color:color-mix(in lab,red,red)){.text-warning-foreground\/70{color:color-mix(in oklab,hsl(var(--warning-foreground))70%,transparent)}}.text-warning-foreground\/80{color:hsl(var(--warning-foreground))}@supports (color:color-mix(in lab,red,red)){.text-warning-foreground\/80{color:color-mix(in oklab,hsl(var(--warning-foreground))80%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.\!no-underline{text-decoration-line:none!important}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.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-\[0_0_2px_0_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 0 2px 0 var(--tw-shadow-color,#0000004d);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_4px_0_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 0 4px 0 var(--tw-shadow-color,#0000004d);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_7px_0_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 0 7px 0 var(--tw-shadow-color,#0000004d);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_10px_0_rgba\(0\,0\,0\,0\.3\)\]{--tw-shadow:0 0 10px 0 var(--tw-shadow-color,#0000004d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-highlight{--tw-shadow-color:hsl(var(--highlight))}@supports (color:color-mix(in lab,red,red)){.shadow-highlight{--tw-shadow-color:color-mix(in oklab,hsl(var(--highlight))var(--tw-shadow-alpha),transparent)}}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--drop-shadow-sm));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[height\]{transition-property:height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[stroke-dashoffset\]{transition-property:stroke-dashoffset;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-none{transition-property:none}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.safe{--twsa-safe-area-inset-top:env(safe-area-inset-top);--twsa-safe-area-inset-right:env(safe-area-inset-right);--twsa-safe-area-inset-bottom:env(safe-area-inset-bottom);--twsa-safe-area-inset-left:env(safe-area-inset-left)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.paused{animation-play-state:paused}.running{animation-play-state:running}.scrollbar-thumb-scrollbar{--scrollbar-thumb:var(--scrollbar)}@media(hover:hover){.group-hover\:translate-y-0:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:translate-y-10:is(:where(.group):hover *){--tw-translate-y:calc(var(--spacing)*10);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:bg-background:is(:where(.group):hover *){background-color:hsl(var(--background))}.group-hover\:opacity-0:is(:where(.group):hover *){opacity:0}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-radix-state-open\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-0:before{content:var(--tw-content);top:calc(var(--spacing)*0)}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\:h-\[10\%\]:before{content:var(--tw-content);height:10%}.before\:h-\[20\%\]:before{content:var(--tw-content);height:20%}.before\:h-\[30\%\]:before{content:var(--tw-content);height:30%}.before\:h-\[40\%\]:before{content:var(--tw-content);height:40%}.before\:h-\[50\%\]:before{content:var(--tw-content);height:50%}.before\:h-\[60\%\]:before{content:var(--tw-content);height:60%}.before\:h-\[70\%\]:before{content:var(--tw-content);height:70%}.before\:h-\[80\%\]:before{content:var(--tw-content);height:80%}.before\:h-\[90\%\]:before{content:var(--tw-content);height:90%}.before\:h-\[100\%\]:before{content:var(--tw-content);height:100%}.before\:w-\[4px\]:before{content:var(--tw-content);width:4px}.before\:border-t:before{content:var(--tw-content);border-top-style:var(--tw-border-style);border-top-width:1px}.before\:bg-highlight:before{content:var(--tw-content);background-color:hsl(var(--highlight))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-right-2\.5:after{content:var(--tw-content);right:calc(var(--spacing)*-2.5)}.after\:right-10:after{content:var(--tw-content);right:calc(var(--spacing)*10)}.after\:-bottom-2\.5:after{content:var(--tw-content);bottom:calc(var(--spacing)*-2.5)}.after\:h-5:after{content:var(--tw-content);height:calc(var(--spacing)*5)}.after\:w-5:after{content:var(--tw-content);width:calc(var(--spacing)*5)}.after\:-translate-x-2:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*-2);translate:var(--tw-translate-x)var(--tw-translate-y)}.after\:scale-75:after{content:var(--tw-content);--tw-scale-x:75%;--tw-scale-y:75%;--tw-scale-z:75%;scale:var(--tw-scale-x)var(--tw-scale-y)}.after\:rotate-45:after{content:var(--tw-content);rotate:45deg}.after\:bg-background:after{content:var(--tw-content);background-color:hsl(var(--background))}.after\:opacity-0:after{content:var(--tw-content);opacity:0}.after\:transition:after{content:var(--tw-content);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))}.after\:content-\[\"\"\]:after{--tw-content:"";content:var(--tw-content)}.after\:content-\[\'→\'\]:after{--tw-content:"→";content:var(--tw-content)}.first\:mt-0:first-child{margin-top:calc(var(--spacing)*0)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:calc(var(--spacing)*0)}.first\:pt-3:first-child{padding-top:calc(var(--spacing)*3)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-3:last-child{padding-bottom:calc(var(--spacing)*3)}.focus-within\:-translate-y-1:focus-within{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.focus-within\:opacity-100:focus-within{opacity:1}.focus-within\:shadow-lg:focus-within{--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)}@media(hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:animate-none:hover{animation:none}.hover\:bg-\[hsl\(var\(--foreground\)\/0\.02\)\]:hover{background-color:hsl(var(--foreground)/.02)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-background:hover{background-color:hsl(var(--background))}.hover\:bg-destructive:hover,.hover\:bg-destructive\/20:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/20:hover{background-color:color-mix(in oklab,hsl(var(--destructive))20%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,hsl(var(--destructive))90%,transparent)}}.hover\:bg-foreground-destructive\/10:hover{background-color:hsl(var(--foreground-destructive))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-foreground-destructive\/10:hover{background-color:color-mix(in oklab,hsl(var(--foreground-destructive))10%,transparent)}}.hover\:bg-foreground\/20:hover{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-foreground\/20:hover{background-color:color-mix(in oklab,hsl(var(--foreground))20%,transparent)}}.hover\:bg-info-foreground\/30:hover{background-color:hsl(var(--info-foreground))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-info-foreground\/30:hover{background-color:color-mix(in oklab,hsl(var(--info-foreground))30%,transparent)}}.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,hsl(var(--muted))50%,transparent)}}.hover\:bg-muted\/60:hover{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab,hsl(var(--muted))60%,transparent)}}.hover\:bg-muted\/80:hover{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/80:hover{background-color:color-mix(in oklab,hsl(var(--muted))80%,transparent)}}.hover\:text-destructive-foreground:hover{color:hsl(var(--destructive-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--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)}.hover\:after\:translate-x-0:hover:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:after\:opacity-100:hover:after{content:var(--tw-content);opacity:1}}.focus\:animate-none:focus{animation:none}.focus\:bg-\[hsl\(var\(--foreground\)\/0\.02\)\]:focus{background-color:hsl(var(--foreground)/.02)}.focus\:bg-background:focus{background-color:hsl(var(--background))}.focus\:bg-foreground\/80:focus{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.focus\:bg-foreground\/80:focus{background-color:color-mix(in oklab,hsl(var(--foreground))80%,transparent)}}.focus\:bg-muted\/60:focus{background-color:hsl(var(--muted))}@supports (color:color-mix(in lab,red,red)){.focus\:bg-muted\/60:focus{background-color:color-mix(in oklab,hsl(var(--muted))60%,transparent)}}.focus\:text-background\/80:focus{color:hsl(var(--background))}@supports (color:color-mix(in lab,red,red)){.focus\:text-background\/80:focus{color:color-mix(in oklab,hsl(var(--background))80%,transparent)}}.focus\:text-foreground:focus{color:hsl(var(--foreground))}.focus\:underline:focus{text-decoration-line:underline}.focus\:opacity-100:focus{opacity:1}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:hsl(var(--background))}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-foreground\/30:active{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.active\:bg-foreground\/30:active{background-color:color-mix(in oklab,hsl(var(--foreground))30%,transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media(prefers-reduced-motion:no-preference){.motion-safe\: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))}}@media(min-width:40rem){.sm\:col-span-1{grid-column:span 1/span 1}.sm\:row-span-1{grid-row:span 1/span 1}.sm\:prose-lg{font-size:1.125rem;line-height:1.77778}.sm\:prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em}.sm\:prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.09091em;margin-bottom:1.09091em;font-size:1.22222em;line-height:1.45455}.sm\:prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em}.sm\:prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.833333em;font-size:2.66667em;line-height:1}.sm\:prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.86667em;margin-bottom:1.06667em;font-size:1.66667em;line-height:1.33333}.sm\:prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.66667em;margin-bottom:.666667em;font-size:1.33333em;line-height:1.5}.sm\:prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:.444444em;line-height:1.55556}.sm\:prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.sm\:prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:1.77778em}.sm\:prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.sm\:prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:1.77778em}.sm\:prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.222222em;padding-inline-end:.444444em;padding-bottom:.222222em;border-radius:.3125rem;padding-inline-start:.444444em;font-size:.888889em}.sm\:prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.sm\:prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.866667em}.sm\:prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.sm\:prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:1em;padding-inline-end:1.5em;padding-bottom:1em;border-radius:.375rem;margin-top:2em;margin-bottom:2em;padding-inline-start:1.5em;font-size:.888889em;line-height:1.75}.sm\:prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.sm\:prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.55556em}.sm\:prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;margin-bottom:.666667em}.sm\:prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.sm\:prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.444444em}.sm\:prose-lg :where(.sm\:prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em}.sm\:prose-lg :where(.sm\:prose-lg>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em}.sm\:prose-lg :where(.sm\:prose-lg>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.33333em}.sm\:prose-lg :where(.sm\:prose-lg>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em}.sm\:prose-lg :where(.sm\:prose-lg>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.33333em}.sm\:prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em}.sm\:prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em}.sm\:prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em}.sm\:prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;padding-inline-start:1.55556em}.sm\:prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:3.11111em;margin-bottom:3.11111em}.sm\:prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.sm\:prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.sm\:prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.sm\:prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.sm\:prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em;line-height:1.5}.sm\:prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.sm\:prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.sm\:prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.sm\:prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.75em;padding-inline-end:.75em;padding-bottom:.75em;padding-inline-start:.75em}.sm\:prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.sm\:prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.sm\:prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.77778em;margin-bottom:1.77778em}.sm\:prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.sm\:prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1em;font-size:.888889em;line-height:1.5}.sm\:prose-lg :where(.sm\:prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.sm\:prose-lg :where(.sm\:prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sm\:mb-4{margin-bottom:calc(var(--spacing)*4)}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-\[calc\(100vh-64px-env\(safe-area-inset-top\)-env\(safe-area-inset-bottom\)\)\]{height:calc(100vh - 64px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.sm\:h-\[calc\(100vh-env\(safe-area-inset-top\)-env\(safe-area-inset-bottom\)\)\]{height:calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.sm\:h-full{height:100%}.sm\:min-h-\[800px\]{min-height:800px}.sm\:min-h-\[unset\]{min-height:unset}.sm\:w-full{width:100%}.sm\:max-w-\[calc\(100\%-56px\)\]{max-width:calc(100% - 56px)}.sm\:shrink-0{flex-shrink:0}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}:where(.sm\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.sm\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.sm\:p-10{padding:calc(var(--spacing)*10)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:text-left{text-align:left}}@media(min-width:48rem){.md\:col-span-2{grid-column:span 2/span 2}.md\:block{display:block}.md\:min-h-\[unset\]{min-height:unset}.md\:w-3\/4{width:75%}.md\:w-full{width:100%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:px-10{padding-inline:calc(var(--spacing)*10)}.md\:py-12{padding-block:calc(var(--spacing)*12)}.md\:pt-8{padding-top:calc(var(--spacing)*8)}.md\:pt-16{padding-top:calc(var(--spacing)*16)}.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}@media(min-width:64rem){.lg\:block{display:block}.lg\:h-full{height:100%}.lg\:max-h-\[70vh\]{max-height:70vh}.lg\:min-h-0{min-height:calc(var(--spacing)*0)}.lg\:flex-1{flex:1}.lg\:basis-\(--split-pct\){flex-basis:var(--split-pct)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-rows-1{grid-template-rows:repeat(1,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:justify-center{justify-content:center}.lg\:gap-4{gap:calc(var(--spacing)*4)}.lg\:overflow-y-auto{overflow-y:auto}.lg\:overflow-y-hidden{overflow-y:hidden}.lg\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.lg\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}}@media(min-width:80rem){.xl\:inline{display:inline}.xl\:w-2\/3{width:66.6667%}.xl\:p-12{padding:calc(var(--spacing)*12)}}@container (min-width:300px){.\@min-\[300px\]\:inline{display:inline}}@container (min-width:400px){.\@min-\[400px\]\:inline{display:inline}}@container (min-width:500px){.\@min-\[500px\]\:inline{display:inline}}@container (min-width:600px){.\@min-\[600px\]\:inline{display:inline}}@container (min-width:640px){.\@min-\[640px\]\:inline{display:inline}}@container (min-width:720px){.\@min-\[720px\]\:block{display:block}.\@min-\[720px\]\:hidden{display:none}}@container (min-width:900px){.\@min-\[900px\]\:block{display:block}.\@min-\[900px\]\:hidden{display:none}}:where(.dark\:divide-border\/50:is(.dark *)>:not(:last-child)){border-color:hsl(var(--border))}@supports (color:color-mix(in lab,red,red)){:where(.dark\:divide-border\/50:is(.dark *)>:not(:last-child)){border-color:color-mix(in oklab,hsl(var(--border))50%,transparent)}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.prose-pre\:m-0 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing)*0)}.prose-pre\:mb-1 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:calc(var(--spacing)*1)}.prose-pre\:rounded-none :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:0}.radix-disabled\:text-muted-foreground[data-disabled]{color:hsl(var(--muted-foreground))}.radix-highlighted\:opacity-100[data-highlighted]{opacity:1}.radix-highlighted\:outline-none[data-highlighted]{--tw-outline-style:none;outline-style:none}.radix-placeholder\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.radix-state-active\:z-10[data-state=active]{z-index:10}.radix-state-active\:bg-foreground[data-state=active]{background-color:hsl(var(--foreground))}.radix-state-active\:text-background[data-state=active]{color:hsl(var(--background))}@media(hover:hover){.radix-state-active\:hover\:bg-foreground\/80[data-state=active]:hover{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.radix-state-active\:hover\:bg-foreground\/80[data-state=active]:hover{background-color:color-mix(in oklab,hsl(var(--foreground))80%,transparent)}}.radix-state-active\:hover\:text-background\/80[data-state=active]:hover{color:hsl(var(--background))}@supports (color:color-mix(in lab,red,red)){.radix-state-active\:hover\:text-background\/80[data-state=active]:hover{color:color-mix(in oklab,hsl(var(--background))80%,transparent)}}}.radix-state-checked\:opacity-100[data-state=checked]{opacity:1}.radix-state-closed\:hidden[data-state=closed],.radix-state-inactive\:hidden[data-state=inactive]{display:none}@media(hover:hover){.radix-state-inactive\:hover\:bg-foreground\/20[data-state=inactive]:hover{background-color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.radix-state-inactive\:hover\:bg-foreground\/20[data-state=inactive]:hover{background-color:color-mix(in oklab,hsl(var(--foreground))20%,transparent)}}.radix-state-inactive\:hover\:text-foreground\/80[data-state=inactive]:hover{color:hsl(var(--foreground))}@supports (color:color-mix(in lab,red,red)){.radix-state-inactive\:hover\:text-foreground\/80[data-state=inactive]:hover{color:color-mix(in oklab,hsl(var(--foreground))80%,transparent)}}}.slideRightContent{transform-origin:var(--radix-popover-content-transform-origin);animation:.25s ease-out slideRight}.slideUpContent{transform-origin:var(--radix-popover-content-transform-origin);animation:.25s ease-out slideUp}}:root{--twsa-safe-area-inset-top:env(safe-area-inset-top);--twsa-safe-area-inset-right:env(safe-area-inset-right);--twsa-safe-area-inset-bottom:env(safe-area-inset-bottom);--twsa-safe-area-inset-left:env(safe-area-inset-left)}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root,.dark .invert-theme,.dark .invert-theme .invert-theme .invert-theme{--font-sans:Neogrotesk,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--background:0 0% 100%;--foreground:0 0% 0%;--foreground-destructive:345 82.7% 40.8%;--highlight:220 85% 60%;--muted:210 40% 96.1%;--muted-foreground:215.4 16.3% 46.9%;--scrollbar:#e5e5e5;--popover:0 0% 100%;--popover-foreground:222.2 47.4% 11.2%;--card:0 0% 100%;--card-foreground:222.2 47.4% 11.2%;--border:214.3 31.8% 91.4%;--input:214.3 31.8% 91.4%;--primary:224 71% 4%;--primary-foreground:213 31% 91%;--secondary:210 40% 96.1%;--secondary-foreground:222.2 47.4% 11.2%;--accent:210 40% 96.1%;--accent-foreground:222.2 47.4% 11.2%;--destructive:0 100% 50%;--destructive-foreground:210 40% 98%;--warning:51 100% 95%;--warning-foreground:56 100% 20%;--success:142 76% 36%;--success-foreground:355 25% 95%;--info:221 83% 53%;--info-foreground:210 40% 98%;--ring:215 20.2% 65.1%;--radius:.5rem}.dark,.light .invert-theme,.light .invert-theme .invert-theme .invert-theme{--background:230 16% 14%;--foreground:230 20% 96%;--foreground-destructive:-4 68% 52%;--highlight:220 90% 75%;--muted:223 47% 11%;--muted-foreground:215.4 16.3% 56.9%;--scrollbar:#3a3a3a;--popover:224 71% 4%;--popover-foreground:215 20.2% 65.1%;--card:224 71% 4%;--card-foreground:213 31% 91%;--border:230 6% 30%;--input:216 34% 17%;--primary:0 0% 100%;--primary-foreground:222.2 47.4% 11.2%;--secondary:222.2 47.4% 11.2%;--secondary-foreground:210 40% 98%;--accent:216 34% 17%;--accent-foreground:210 40% 98%;--destructive:0 63% 31%;--destructive-foreground:210 40% 98%;--warning:36 23% 9%;--warning-foreground:47 100% 63%;--success:142 76% 36%;--success-foreground:355 25% 95%;--info:221 83% 53%;--info-foreground:210 40% 98%;--ring:216 34% 17%;--radius:.5rem}@keyframes slideRight{0%{opacity:0;transform:translate(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes badgeBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.animate-badge-bounce{animation:1s ease-in-out infinite badgeBounce}@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-space-x-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-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}}