@chenpu17/cc-gw 0.3.9 → 0.3.11
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/README.md +1 -1
- package/package.json +17 -27
- package/src/server/dist/index.js +66 -11
- package/src/web/dist/assets/About-DmfYXdTi.js +11 -0
- package/src/web/dist/assets/{ApiKeys-D3tshK2D.js → ApiKeys-Bq84uD5O.js} +1 -1
- package/src/web/dist/assets/{Button-CiJz5FvC.js → Button-B4UYWk6z.js} +1 -1
- package/src/web/dist/assets/{Dashboard-BcpzG5Js.js → Dashboard-CJmps0fW.js} +1 -1
- package/src/web/dist/assets/{FormField-DTM2fGgN.js → FormField-DKIC96zy.js} +1 -1
- package/src/web/dist/assets/{Help-CHzXBSkF.js → Help-C7fFCpNH.js} +1 -1
- package/src/web/dist/assets/{Input-Drhy9itS.js → Input-Cr1GbVY7.js} +1 -1
- package/src/web/dist/assets/{Login-DB7EbGqT.js → Login-f_-O93Uo.js} +1 -1
- package/src/web/dist/assets/Logs-CyN3g8z0.js +1 -0
- package/src/web/dist/assets/ModelManagement-B11a4hW3.js +1 -0
- package/src/web/dist/assets/{PageSection-BXgr5Sv8.js → PageSection-eOpSKdGw.js} +1 -1
- package/src/web/dist/assets/{Settings-CCeTL4KH.js → Settings-BUNwIquC.js} +1 -1
- package/src/web/dist/assets/{StatusBadge-84FTLpO5.js → StatusBadge-CFXAJ2QF.js} +1 -1
- package/src/web/dist/assets/{copy-jyJz3iB0.js → copy-Br9n1n5X.js} +1 -1
- package/src/web/dist/assets/index-BOv43c_r.css +1 -0
- package/src/web/dist/assets/{index-DOE1cGyy.js → index-ChT0XT-w.js} +4 -4
- package/src/web/dist/assets/{index-Dcq4ildt.js → index-DtOsr5xX.js} +1 -1
- package/src/web/dist/assets/{info-BRp6pBBe.js → info-Cnwm2-vh.js} +1 -1
- package/src/web/dist/assets/{useApiQuery-DFuDkJwZ.js → useApiQuery-mBT5M_Q6.js} +1 -1
- package/src/web/dist/index.html +4 -3
- package/src/web/dist/assets/About-kwS37DF6.js +0 -11
- package/src/web/dist/assets/Logs-AlBaIKTP.js +0 -1
- package/src/web/dist/assets/ModelManagement-BkMsnFWa.js +0 -1
- package/src/web/dist/assets/index-gcfzHYPE.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as te,a as ae,r as u,j as e,d as c,S as re,L as V,b as N,k as R,x as K,A as f,m as y,z as B}from"./index-DOE1cGyy.js";import{u as _}from"./useApiQuery-DFuDkJwZ.js";import{P as ne,a as v}from"./PageSection-BXgr5Sv8.js";import{C as le}from"./copy-jyJz3iB0.js";const oe=[{value:"fatal",labelKey:"fatal"},{value:"error",labelKey:"error"},{value:"warn",labelKey:"warn"},{value:"info",labelKey:"info"},{value:"debug",labelKey:"debug"},{value:"trace",labelKey:"trace"}];function me(){const{t:s}=te(),{pushToast:g}=ae(),l=_(["config","info"],{url:"/api/config/info",method:"GET"}),x=_(["auth","web"],{url:"/api/auth/web",method:"GET"}),[r,q]=u.useState(null),[L,G]=u.useState(""),[d,h]=u.useState({port:"",host:"",logRetentionDays:"",storeRequestPayloads:!0,storeResponsePayloads:!0,logLevel:"info",requestLogging:!0,responseLogging:!0,bodyLimitMb:"10"}),[p,S]=u.useState({}),[P,E]=u.useState(!1),[A,F]=u.useState(!1),[M,D]=u.useState(!1),[o,H]=u.useState(null),[n,b]=u.useState({enabled:!1,username:"",password:"",confirmPassword:""}),[w,k]=u.useState({}),[C,O]=u.useState(!1),Q=u.useMemo(()=>{if(!r)return null;const t=r.defaults;if(!t)return null;const a=[];return t.completion&&a.push(s("settings.defaults.completion",{model:t.completion})),t.reasoning&&a.push(s("settings.defaults.reasoning",{model:t.reasoning})),t.background&&a.push(s("settings.defaults.background",{model:t.background})),a.length>0?a.join(" | "):s("settings.defaults.none")},[r,s]),T=u.useMemo(()=>n.enabled?o!=null&&o.hasPassword?n.username.trim()!==((o==null?void 0:o.username)??""):!0:!1,[n.enabled,n.username,o]);u.useEffect(()=>{if(l.data){q(l.data.config),G(l.data.path);const t=l.data.config.storePayloads,a=i=>typeof i=="boolean"?i:typeof t=="boolean"?t:!0;h({port:String(l.data.config.port??""),host:l.data.config.host??"",logRetentionDays:String(l.data.config.logRetentionDays??30),storeRequestPayloads:a(l.data.config.storeRequestPayloads),storeResponsePayloads:a(l.data.config.storeResponsePayloads),logLevel:l.data.config.logLevel??"info",requestLogging:l.data.config.requestLogging!==!1,responseLogging:l.data.config.responseLogging??l.data.config.requestLogging!==!1,bodyLimitMb:(()=>{const i=l.data.config.bodyLimit;return typeof i=="number"&&Number.isFinite(i)&&i>0?String(Math.max(1,Math.round(i/(1024*1024)))):"10"})()})}},[l.data]),u.useEffect(()=>{x.data&&(H(x.data),b({enabled:x.data.enabled,username:x.data.username??"",password:"",confirmPassword:""}),k({}))},[x.data]),u.useEffect(()=>{l.isError&&l.error&&g({title:s("settings.toast.loadFailure",{message:l.error.message}),variant:"error"})},[l.isError,l.error,g,s]),u.useEffect(()=>{x.isError&&x.error&&g({title:s("settings.toast.authLoadFailure",{message:x.error.message}),variant:"error"})},[x.isError,x.error,g,s]);const j=t=>a=>{h(i=>({...i,[t]:a}))},I=()=>{const t={},a=Number(d.port);(!Number.isFinite(a)||a<1||a>65535)&&(t.port=s("settings.validation.port"));const i=Number(d.logRetentionDays);(!Number.isFinite(i)||i<1||i>365)&&(t.logRetentionDays=s("settings.validation.retention"));const m=Number(d.bodyLimitMb);return(!Number.isFinite(m)||m<1||m>2048)&&(t.bodyLimitMb=s("settings.validation.bodyLimit")),S(t),Object.keys(t).length===0},z=()=>{const t={},a=n.username.trim(),i=o?a!==(o.username??""):!0,m=n.enabled&&(!(o!=null&&o.hasPassword)||i);return n.enabled&&!a&&(t.username=s("settings.auth.validation.username")),n.password&&n.password.length<6&&(t.password=s("settings.auth.validation.minLength")),m&&!n.password&&(t.password=s("settings.auth.validation.passwordRequired")),(n.password||n.confirmPassword)&&n.password!==n.confirmPassword&&(t.confirmPassword=s("settings.auth.validation.confirmMismatch")),k(t),Object.keys(t).length===0},W=async()=>{if(!r){g({title:s("settings.toast.loadFailure",{message:s("settings.toast.missingConfig")}),variant:"error"});return}if(I()){E(!0);try{const t=Number(d.port),a=Number(d.logRetentionDays),i=Number(d.bodyLimitMb),m={...r,port:t,host:d.host.trim()||void 0,logRetentionDays:a,storeRequestPayloads:d.storeRequestPayloads,storeResponsePayloads:d.storeResponsePayloads,logLevel:d.logLevel,requestLogging:d.requestLogging,responseLogging:d.responseLogging,bodyLimit:Math.max(1,Math.floor(i*1024*1024))},{webAuth:ie,...se}=m;await N.put("/api/config",se),q({...m,webAuth:r.webAuth}),g({title:s("settings.toast.saveSuccess"),variant:"success"}),l.refetch()}catch(t){g({title:s("settings.toast.saveFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}finally{E(!1)}}},$=()=>{r&&(h({port:String(r.port??""),host:r.host??"",logRetentionDays:String(r.logRetentionDays??30),storeRequestPayloads:typeof r.storeRequestPayloads=="boolean"?r.storeRequestPayloads:typeof r.storePayloads=="boolean"?r.storePayloads:!0,storeResponsePayloads:typeof r.storeResponsePayloads=="boolean"?r.storeResponsePayloads:typeof r.storePayloads=="boolean"?r.storePayloads:!0,logLevel:r.logLevel??"info",requestLogging:r.requestLogging!==!1,responseLogging:r.responseLogging??r.requestLogging!==!1,bodyLimitMb:(()=>{const t=r.bodyLimit;return typeof t=="number"&&Number.isFinite(t)&&t>0?String(Math.max(1,Math.round(t/(1024*1024)))):"10"})()}),S({}))},J=async()=>{var t;if(z()){O(!0);try{const a={enabled:n.enabled,username:n.username.trim()||void 0};n.password&&(a.password=n.password);const m=(t=(await N.post("/api/auth/web",a)).data)==null?void 0:t.auth;m&&(H(m),b({enabled:m.enabled,username:m.username??"",password:"",confirmPassword:""}),k({})),g({title:s("settings.auth.toast.success"),variant:"success"}),x.refetch()}catch(a){const i=a instanceof Error?a.message:"unknown";g({title:s("settings.auth.toast.failure",{message:i}),variant:"error"})}finally{O(!1)}}},U=()=>{o&&(b({enabled:o.enabled,username:o.username??"",password:"",confirmPassword:""}),k({}))},X=async()=>{if(!L){g({title:s("settings.toast.copyFailure",{message:s("settings.file.unknown")}),variant:"error"});return}try{await navigator.clipboard.writeText(L),g({title:s("settings.toast.copySuccess"),variant:"success"})}catch(t){g({title:s("settings.toast.copyFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}},Y=async()=>{F(!0);try{const a=(await N.post("/api/logs/cleanup")).data.deleted??0;g({title:a>0?s("settings.toast.cleanupSuccess",{count:a}):s("settings.toast.cleanupNone"),variant:"success"})}catch(t){g({title:s("settings.toast.cleanupFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}finally{F(!1)}},Z=async()=>{D(!0);try{const t=await N.post("/api/logs/clear"),{deleted:a,metricsCleared:i}=t.data;g({title:s("settings.toast.clearAllSuccess",{logs:a,metrics:i}),variant:"success"})}catch(t){g({title:s("settings.toast.clearAllFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}finally{D(!1)}},ee=l.isPending||!r&&l.isFetching;return e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsx(ne,{icon:e.jsx(re,{className:"h-6 w-6","aria-hidden":"true"}),title:s("settings.title"),description:s("settings.description"),actions:r?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",onClick:$,className:c(R,"h-10 rounded-full px-4"),disabled:P,children:s("common.actions.reset")}),e.jsx("button",{type:"button",onClick:W,className:c(K,"h-10 rounded-full px-4"),disabled:P,children:s(P?"common.actions.saving":"common.actions.save")})]}):null}),ee?e.jsx(v,{className:"flex min-h-[220px] items-center justify-center",children:e.jsx(V,{})}):r?e.jsxs(e.Fragment,{children:[e.jsxs(v,{title:s("settings.sections.basics"),contentClassName:"grid w-full gap-5 md:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.port")}),e.jsx("input",{type:"number",min:1,max:65535,value:d.port,onChange:t=>j("port")(t.target.value),className:c(f,"h-11"),"aria-invalid":!!p.port}),p.port?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:p.port}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.host")}),e.jsx("input",{value:d.host,onChange:t=>j("host")(t.target.value),placeholder:s("settings.fields.hostPlaceholder"),className:c(f,"h-11")})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.retention")}),e.jsx("input",{type:"number",min:1,max:365,value:d.logRetentionDays,onChange:t=>j("logRetentionDays")(t.target.value),className:c(f,"h-11"),"aria-invalid":!!p.logRetentionDays}),p.logRetentionDays?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:p.logRetentionDays}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.bodyLimit")}),e.jsx("input",{type:"number",min:1,max:2048,value:d.bodyLimitMb,onChange:t=>j("bodyLimitMb")(t.target.value),className:c(f,"h-11"),"aria-invalid":!!p.bodyLimitMb}),e.jsx("p",{className:c(y,"text-[11px] leading-relaxed"),children:s("settings.fields.bodyLimitHint")}),p.bodyLimitMb?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:p.bodyLimitMb}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.logLevel")}),e.jsx("select",{value:d.logLevel,onChange:t=>h(a=>({...a,logLevel:t.target.value})),className:"h-10",children:oe.map(t=>e.jsx("option",{value:t.value,children:s(`settings.fields.logLevelOption.${t.labelKey}`)},t.value))})]}),e.jsxs("div",{className:"md:col-span-2 grid gap-4 sm:grid-cols-2",children:[e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.storeRequestPayloads,onChange:t=>h(a=>({...a,storeRequestPayloads:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.storeRequestPayloads")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.storeRequestPayloadsHint")})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.storeResponsePayloads,onChange:t=>h(a=>({...a,storeResponsePayloads:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.storeResponsePayloads")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.storeResponsePayloadsHint")})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.requestLogging,onChange:t=>h(a=>({...a,requestLogging:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.requestLogging")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.requestLoggingHint")})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.responseLogging,onChange:t=>h(a=>({...a,responseLogging:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.responseLogging")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.responseLoggingHint")})]})]})]}),e.jsxs("div",{className:"md:col-span-2 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 text-sm text-slate-700 shadow-sm shadow-slate-200/60 dark:border-slate-700/60 dark:bg-slate-900/70 dark:text-slate-200",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.defaults")}),e.jsx("p",{className:"mt-2 text-sm",children:Q??s("settings.defaults.none")})]})]}),e.jsx(v,{title:s("settings.sections.security"),description:s("settings.auth.description"),contentClassName:"space-y-5",children:x.isPending&&!o?e.jsx("div",{className:"flex min-h-[120px] items-center justify-center",children:e.jsx(V,{})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-2xl border border-slate-200/70 bg-white/90 p-5 shadow-sm shadow-slate-200/50 transition dark:border-slate-700/60 dark:bg-slate-900/80 dark:shadow-slate-900/40",children:e.jsxs("label",{className:"flex cursor-pointer select-none items-start gap-3",children:[e.jsx("input",{type:"checkbox",checked:n.enabled,onChange:t=>b(a=>({...a,enabled:t.target.checked})),className:"mt-1 h-5 w-5 rounded border-slate-300 bg-white text-blue-600 shadow-sm transition focus:ring-blue-400/40 dark:border-slate-600 dark:bg-slate-900 dark:text-blue-200"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-800 dark:text-slate-100",children:s("settings.auth.enable")}),e.jsx("p",{className:c(y,"text-xs leading-relaxed"),children:s("settings.auth.enableHint")}),e.jsxs("div",{className:"flex flex-wrap gap-2 text-[11px] font-medium text-slate-500 dark:text-slate-400",children:[e.jsx("span",{className:"rounded-full bg-slate-100/90 px-3 py-1 shadow-sm shadow-slate-200/40 dark:bg-slate-800/70",children:"/ui"}),e.jsx("span",{className:"rounded-full bg-slate-100/90 px-3 py-1 shadow-sm shadow-slate-200/40 dark:bg-slate-800/70",children:"/api/*"}),e.jsx("span",{className:"rounded-full bg-slate-100/90 px-3 py-1 shadow-sm shadow-slate-200/40 dark:bg-slate-800/70",children:"Cookie Session"})]})]})]})}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,0.85fr)]",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2 sm:col-span-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.auth.username")}),e.jsx("input",{value:n.username,onChange:t=>b(a=>({...a,username:t.target.value})),placeholder:s("settings.auth.usernamePlaceholder"),className:c(f,"h-11 font-medium")}),w.username?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:w.username}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.auth.password")}),e.jsx("input",{type:"password",value:n.password,disabled:!n.enabled,onChange:t=>b(a=>({...a,password:t.target.value})),placeholder:s("settings.auth.passwordPlaceholder"),className:c(f,"h-11 disabled:cursor-not-allowed disabled:bg-slate-100 dark:disabled:bg-slate-900/40")}),w.password?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:w.password}):e.jsx("span",{className:c(y,"text-xs leading-relaxed"),children:s(T?"settings.auth.passwordHintRequired":"settings.auth.passwordHintOptional")})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.auth.confirmPassword")}),e.jsx("input",{type:"password",value:n.confirmPassword,disabled:!n.enabled,onChange:t=>b(a=>({...a,confirmPassword:t.target.value})),placeholder:s("settings.auth.confirmPasswordPlaceholder"),className:c(f,"h-11 disabled:cursor-not-allowed disabled:bg-slate-100 dark:disabled:bg-slate-900/40")}),w.confirmPassword?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:w.confirmPassword}):null]})]}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"rounded-2xl border border-slate-200/70 bg-white/95 px-5 py-4 text-sm shadow-sm shadow-slate-200/40 dark:border-slate-700/60 dark:bg-slate-900/75 dark:text-slate-200 dark:shadow-slate-900/40",children:[e.jsx("div",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500/90 dark:text-slate-400",children:s("settings.auth.status")}),e.jsx("div",{className:"mt-2 text-base font-semibold text-slate-800 dark:text-slate-100",children:o!=null&&o.enabled?s("settings.auth.statusEnabled"):s("settings.auth.statusDisabled")}),o!=null&&o.username?e.jsxs("div",{className:"mt-3 rounded-2xl bg-blue-50/80 px-3 py-2 text-xs font-medium text-blue-700 shadow-sm shadow-blue-200/40 dark:bg-blue-500/20 dark:text-blue-100",children:[s("settings.auth.username"),": ",o.username]}):null]}),e.jsx("div",{className:"rounded-2xl border border-slate-200/60 bg-slate-50/80 px-5 py-4 text-xs leading-relaxed text-slate-600 shadow-sm shadow-slate-200/40 dark:border-slate-700/50 dark:bg-slate-800/60 dark:text-slate-300",children:s(T?"settings.auth.passwordHintRequired":"settings.auth.passwordHintOptional")})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-3",children:[e.jsx("button",{type:"button",onClick:J,className:c(K,"h-10 rounded-full px-6"),disabled:C,children:s(C?"common.actions.saving":"settings.auth.actions.save")}),e.jsx("button",{type:"button",onClick:U,className:c(R,"h-10 rounded-full px-4"),disabled:C,children:s("common.actions.reset")})]})]})}),e.jsx(v,{title:s("settings.sections.configFile"),description:s("settings.file.description"),actions:e.jsxs("button",{type:"button",onClick:X,className:c(R,"h-10 rounded-full px-4"),children:[e.jsx(le,{className:"h-4 w-4","aria-hidden":"true"}),s("common.actions.copy")]}),contentClassName:"gap-3",children:e.jsx("code",{className:"block break-all rounded-2xl border border-slate-200/60 bg-slate-100 px-4 py-3 text-xs text-slate-700 dark:border-slate-700/60 dark:bg-slate-900 dark:text-slate-200",children:L||s("settings.file.unknown")})}),e.jsxs(v,{title:s("settings.sections.cleanup"),description:s("settings.cleanup.description"),contentClassName:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsx("button",{type:"button",onClick:Y,className:c(B,"px-5"),disabled:A,children:s(A?"common.actions.cleaning":"common.actions.cleanup")}),e.jsx("button",{type:"button",onClick:Z,className:c(B,"px-5 border-red-500/70 bg-red-600 text-white hover:bg-red-600/90 dark:border-red-500 dark:bg-red-500 dark:text-white"),disabled:M,children:s(M?"settings.cleanup.clearingAll":"settings.cleanup.clearAll")})]}),e.jsx("p",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:s("settings.cleanup.clearAllWarning")})]})]}):e.jsx(v,{children:e.jsx("p",{className:"text-sm font-medium text-red-500 dark:text-red-300",children:s("settings.toast.missingConfig")})})]})}export{me as default};
|
|
1
|
+
import{u as te,a as ae,r as u,j as e,d as c,S as re,L as V,b as N,k as R,x as K,A as f,m as y,z as B}from"./index-ChT0XT-w.js";import{u as _}from"./useApiQuery-mBT5M_Q6.js";import{P as ne,a as v}from"./PageSection-eOpSKdGw.js";import{C as le}from"./copy-Br9n1n5X.js";const oe=[{value:"fatal",labelKey:"fatal"},{value:"error",labelKey:"error"},{value:"warn",labelKey:"warn"},{value:"info",labelKey:"info"},{value:"debug",labelKey:"debug"},{value:"trace",labelKey:"trace"}];function me(){const{t:s}=te(),{pushToast:g}=ae(),l=_(["config","info"],{url:"/api/config/info",method:"GET"}),x=_(["auth","web"],{url:"/api/auth/web",method:"GET"}),[r,q]=u.useState(null),[L,G]=u.useState(""),[d,h]=u.useState({port:"",host:"",logRetentionDays:"",storeRequestPayloads:!0,storeResponsePayloads:!0,logLevel:"info",requestLogging:!0,responseLogging:!0,bodyLimitMb:"10"}),[p,S]=u.useState({}),[P,E]=u.useState(!1),[A,F]=u.useState(!1),[M,D]=u.useState(!1),[o,H]=u.useState(null),[n,b]=u.useState({enabled:!1,username:"",password:"",confirmPassword:""}),[w,k]=u.useState({}),[C,O]=u.useState(!1),Q=u.useMemo(()=>{if(!r)return null;const t=r.defaults;if(!t)return null;const a=[];return t.completion&&a.push(s("settings.defaults.completion",{model:t.completion})),t.reasoning&&a.push(s("settings.defaults.reasoning",{model:t.reasoning})),t.background&&a.push(s("settings.defaults.background",{model:t.background})),a.length>0?a.join(" | "):s("settings.defaults.none")},[r,s]),T=u.useMemo(()=>n.enabled?o!=null&&o.hasPassword?n.username.trim()!==((o==null?void 0:o.username)??""):!0:!1,[n.enabled,n.username,o]);u.useEffect(()=>{if(l.data){q(l.data.config),G(l.data.path);const t=l.data.config.storePayloads,a=i=>typeof i=="boolean"?i:typeof t=="boolean"?t:!0;h({port:String(l.data.config.port??""),host:l.data.config.host??"",logRetentionDays:String(l.data.config.logRetentionDays??30),storeRequestPayloads:a(l.data.config.storeRequestPayloads),storeResponsePayloads:a(l.data.config.storeResponsePayloads),logLevel:l.data.config.logLevel??"info",requestLogging:l.data.config.requestLogging!==!1,responseLogging:l.data.config.responseLogging??l.data.config.requestLogging!==!1,bodyLimitMb:(()=>{const i=l.data.config.bodyLimit;return typeof i=="number"&&Number.isFinite(i)&&i>0?String(Math.max(1,Math.round(i/(1024*1024)))):"10"})()})}},[l.data]),u.useEffect(()=>{x.data&&(H(x.data),b({enabled:x.data.enabled,username:x.data.username??"",password:"",confirmPassword:""}),k({}))},[x.data]),u.useEffect(()=>{l.isError&&l.error&&g({title:s("settings.toast.loadFailure",{message:l.error.message}),variant:"error"})},[l.isError,l.error,g,s]),u.useEffect(()=>{x.isError&&x.error&&g({title:s("settings.toast.authLoadFailure",{message:x.error.message}),variant:"error"})},[x.isError,x.error,g,s]);const j=t=>a=>{h(i=>({...i,[t]:a}))},I=()=>{const t={},a=Number(d.port);(!Number.isFinite(a)||a<1||a>65535)&&(t.port=s("settings.validation.port"));const i=Number(d.logRetentionDays);(!Number.isFinite(i)||i<1||i>365)&&(t.logRetentionDays=s("settings.validation.retention"));const m=Number(d.bodyLimitMb);return(!Number.isFinite(m)||m<1||m>2048)&&(t.bodyLimitMb=s("settings.validation.bodyLimit")),S(t),Object.keys(t).length===0},z=()=>{const t={},a=n.username.trim(),i=o?a!==(o.username??""):!0,m=n.enabled&&(!(o!=null&&o.hasPassword)||i);return n.enabled&&!a&&(t.username=s("settings.auth.validation.username")),n.password&&n.password.length<6&&(t.password=s("settings.auth.validation.minLength")),m&&!n.password&&(t.password=s("settings.auth.validation.passwordRequired")),(n.password||n.confirmPassword)&&n.password!==n.confirmPassword&&(t.confirmPassword=s("settings.auth.validation.confirmMismatch")),k(t),Object.keys(t).length===0},W=async()=>{if(!r){g({title:s("settings.toast.loadFailure",{message:s("settings.toast.missingConfig")}),variant:"error"});return}if(I()){E(!0);try{const t=Number(d.port),a=Number(d.logRetentionDays),i=Number(d.bodyLimitMb),m={...r,port:t,host:d.host.trim()||void 0,logRetentionDays:a,storeRequestPayloads:d.storeRequestPayloads,storeResponsePayloads:d.storeResponsePayloads,logLevel:d.logLevel,requestLogging:d.requestLogging,responseLogging:d.responseLogging,bodyLimit:Math.max(1,Math.floor(i*1024*1024))},{webAuth:ie,...se}=m;await N.put("/api/config",se),q({...m,webAuth:r.webAuth}),g({title:s("settings.toast.saveSuccess"),variant:"success"}),l.refetch()}catch(t){g({title:s("settings.toast.saveFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}finally{E(!1)}}},$=()=>{r&&(h({port:String(r.port??""),host:r.host??"",logRetentionDays:String(r.logRetentionDays??30),storeRequestPayloads:typeof r.storeRequestPayloads=="boolean"?r.storeRequestPayloads:typeof r.storePayloads=="boolean"?r.storePayloads:!0,storeResponsePayloads:typeof r.storeResponsePayloads=="boolean"?r.storeResponsePayloads:typeof r.storePayloads=="boolean"?r.storePayloads:!0,logLevel:r.logLevel??"info",requestLogging:r.requestLogging!==!1,responseLogging:r.responseLogging??r.requestLogging!==!1,bodyLimitMb:(()=>{const t=r.bodyLimit;return typeof t=="number"&&Number.isFinite(t)&&t>0?String(Math.max(1,Math.round(t/(1024*1024)))):"10"})()}),S({}))},J=async()=>{var t;if(z()){O(!0);try{const a={enabled:n.enabled,username:n.username.trim()||void 0};n.password&&(a.password=n.password);const m=(t=(await N.post("/api/auth/web",a)).data)==null?void 0:t.auth;m&&(H(m),b({enabled:m.enabled,username:m.username??"",password:"",confirmPassword:""}),k({})),g({title:s("settings.auth.toast.success"),variant:"success"}),x.refetch()}catch(a){const i=a instanceof Error?a.message:"unknown";g({title:s("settings.auth.toast.failure",{message:i}),variant:"error"})}finally{O(!1)}}},U=()=>{o&&(b({enabled:o.enabled,username:o.username??"",password:"",confirmPassword:""}),k({}))},X=async()=>{if(!L){g({title:s("settings.toast.copyFailure",{message:s("settings.file.unknown")}),variant:"error"});return}try{await navigator.clipboard.writeText(L),g({title:s("settings.toast.copySuccess"),variant:"success"})}catch(t){g({title:s("settings.toast.copyFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}},Y=async()=>{F(!0);try{const a=(await N.post("/api/logs/cleanup")).data.deleted??0;g({title:a>0?s("settings.toast.cleanupSuccess",{count:a}):s("settings.toast.cleanupNone"),variant:"success"})}catch(t){g({title:s("settings.toast.cleanupFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}finally{F(!1)}},Z=async()=>{D(!0);try{const t=await N.post("/api/logs/clear"),{deleted:a,metricsCleared:i}=t.data;g({title:s("settings.toast.clearAllSuccess",{logs:a,metrics:i}),variant:"success"})}catch(t){g({title:s("settings.toast.clearAllFailure",{message:t instanceof Error?t.message:"unknown"}),variant:"error"})}finally{D(!1)}},ee=l.isPending||!r&&l.isFetching;return e.jsxs("div",{className:"flex flex-col gap-8",children:[e.jsx(ne,{icon:e.jsx(re,{className:"h-6 w-6","aria-hidden":"true"}),title:s("settings.title"),description:s("settings.description"),actions:r?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("button",{type:"button",onClick:$,className:c(R,"h-10 rounded-full px-4"),disabled:P,children:s("common.actions.reset")}),e.jsx("button",{type:"button",onClick:W,className:c(K,"h-10 rounded-full px-4"),disabled:P,children:s(P?"common.actions.saving":"common.actions.save")})]}):null}),ee?e.jsx(v,{className:"flex min-h-[220px] items-center justify-center",children:e.jsx(V,{})}):r?e.jsxs(e.Fragment,{children:[e.jsxs(v,{title:s("settings.sections.basics"),contentClassName:"grid w-full gap-5 md:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.port")}),e.jsx("input",{type:"number",min:1,max:65535,value:d.port,onChange:t=>j("port")(t.target.value),className:c(f,"h-11"),"aria-invalid":!!p.port}),p.port?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:p.port}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.host")}),e.jsx("input",{value:d.host,onChange:t=>j("host")(t.target.value),placeholder:s("settings.fields.hostPlaceholder"),className:c(f,"h-11")})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.retention")}),e.jsx("input",{type:"number",min:1,max:365,value:d.logRetentionDays,onChange:t=>j("logRetentionDays")(t.target.value),className:c(f,"h-11"),"aria-invalid":!!p.logRetentionDays}),p.logRetentionDays?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:p.logRetentionDays}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.bodyLimit")}),e.jsx("input",{type:"number",min:1,max:2048,value:d.bodyLimitMb,onChange:t=>j("bodyLimitMb")(t.target.value),className:c(f,"h-11"),"aria-invalid":!!p.bodyLimitMb}),e.jsx("p",{className:c(y,"text-[11px] leading-relaxed"),children:s("settings.fields.bodyLimitHint")}),p.bodyLimitMb?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:p.bodyLimitMb}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.logLevel")}),e.jsx("select",{value:d.logLevel,onChange:t=>h(a=>({...a,logLevel:t.target.value})),className:"h-10",children:oe.map(t=>e.jsx("option",{value:t.value,children:s(`settings.fields.logLevelOption.${t.labelKey}`)},t.value))})]}),e.jsxs("div",{className:"md:col-span-2 grid gap-4 sm:grid-cols-2",children:[e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.storeRequestPayloads,onChange:t=>h(a=>({...a,storeRequestPayloads:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.storeRequestPayloads")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.storeRequestPayloadsHint")})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.storeResponsePayloads,onChange:t=>h(a=>({...a,storeResponsePayloads:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.storeResponsePayloads")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.storeResponsePayloadsHint")})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.requestLogging,onChange:t=>h(a=>({...a,requestLogging:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.requestLogging")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.requestLoggingHint")})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 shadow-sm shadow-slate-200/60 transition hover:border-slate-300 dark:border-slate-700/60 dark:bg-slate-900/70 dark:hover:border-slate-500/60",children:[e.jsx("input",{type:"checkbox",checked:d.responseLogging,onChange:t=>h(a=>({...a,responseLogging:t.target.checked})),className:"mt-1 h-4 w-4 rounded border-slate-300 text-blue-600 focus:ring-blue-400 dark:border-slate-600"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-700 dark:text-slate-100",children:s("settings.fields.responseLogging")}),e.jsx("p",{className:c(y,"text-xs"),children:s("settings.fields.responseLoggingHint")})]})]})]}),e.jsxs("div",{className:"md:col-span-2 rounded-2xl border border-slate-200/70 bg-white/80 px-4 py-3 text-sm text-slate-700 shadow-sm shadow-slate-200/60 dark:border-slate-700/60 dark:bg-slate-900/70 dark:text-slate-200",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.fields.defaults")}),e.jsx("p",{className:"mt-2 text-sm",children:Q??s("settings.defaults.none")})]})]}),e.jsx(v,{title:s("settings.sections.security"),description:s("settings.auth.description"),contentClassName:"space-y-5",children:x.isPending&&!o?e.jsx("div",{className:"flex min-h-[120px] items-center justify-center",children:e.jsx(V,{})}):e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-2xl border border-slate-200/70 bg-white/90 p-5 shadow-sm shadow-slate-200/50 transition dark:border-slate-700/60 dark:bg-slate-900/80 dark:shadow-slate-900/40",children:e.jsxs("label",{className:"flex cursor-pointer select-none items-start gap-3",children:[e.jsx("input",{type:"checkbox",checked:n.enabled,onChange:t=>b(a=>({...a,enabled:t.target.checked})),className:"mt-1 h-5 w-5 rounded border-slate-300 bg-white text-blue-600 shadow-sm transition focus:ring-blue-400/40 dark:border-slate-600 dark:bg-slate-900 dark:text-blue-200"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("span",{className:"text-sm font-semibold text-slate-800 dark:text-slate-100",children:s("settings.auth.enable")}),e.jsx("p",{className:c(y,"text-xs leading-relaxed"),children:s("settings.auth.enableHint")}),e.jsxs("div",{className:"flex flex-wrap gap-2 text-[11px] font-medium text-slate-500 dark:text-slate-400",children:[e.jsx("span",{className:"rounded-full bg-slate-100/90 px-3 py-1 shadow-sm shadow-slate-200/40 dark:bg-slate-800/70",children:"/ui"}),e.jsx("span",{className:"rounded-full bg-slate-100/90 px-3 py-1 shadow-sm shadow-slate-200/40 dark:bg-slate-800/70",children:"/api/*"}),e.jsx("span",{className:"rounded-full bg-slate-100/90 px-3 py-1 shadow-sm shadow-slate-200/40 dark:bg-slate-800/70",children:"Cookie Session"})]})]})]})}),e.jsxs("div",{className:"grid gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,0.85fr)]",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex flex-col gap-2 sm:col-span-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.auth.username")}),e.jsx("input",{value:n.username,onChange:t=>b(a=>({...a,username:t.target.value})),placeholder:s("settings.auth.usernamePlaceholder"),className:c(f,"h-11 font-medium")}),w.username?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:w.username}):null]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.auth.password")}),e.jsx("input",{type:"password",value:n.password,disabled:!n.enabled,onChange:t=>b(a=>({...a,password:t.target.value})),placeholder:s("settings.auth.passwordPlaceholder"),className:c(f,"h-11 disabled:cursor-not-allowed disabled:bg-slate-100 dark:disabled:bg-slate-900/40")}),w.password?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:w.password}):e.jsx("span",{className:c(y,"text-xs leading-relaxed"),children:s(T?"settings.auth.passwordHintRequired":"settings.auth.passwordHintOptional")})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsx("span",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500 dark:text-slate-400",children:s("settings.auth.confirmPassword")}),e.jsx("input",{type:"password",value:n.confirmPassword,disabled:!n.enabled,onChange:t=>b(a=>({...a,confirmPassword:t.target.value})),placeholder:s("settings.auth.confirmPasswordPlaceholder"),className:c(f,"h-11 disabled:cursor-not-allowed disabled:bg-slate-100 dark:disabled:bg-slate-900/40")}),w.confirmPassword?e.jsx("span",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:w.confirmPassword}):null]})]}),e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"rounded-2xl border border-slate-200/70 bg-white/95 px-5 py-4 text-sm shadow-sm shadow-slate-200/40 dark:border-slate-700/60 dark:bg-slate-900/75 dark:text-slate-200 dark:shadow-slate-900/40",children:[e.jsx("div",{className:"text-xs font-semibold uppercase tracking-wide text-slate-500/90 dark:text-slate-400",children:s("settings.auth.status")}),e.jsx("div",{className:"mt-2 text-base font-semibold text-slate-800 dark:text-slate-100",children:o!=null&&o.enabled?s("settings.auth.statusEnabled"):s("settings.auth.statusDisabled")}),o!=null&&o.username?e.jsxs("div",{className:"mt-3 rounded-2xl bg-blue-50/80 px-3 py-2 text-xs font-medium text-blue-700 shadow-sm shadow-blue-200/40 dark:bg-blue-500/20 dark:text-blue-100",children:[s("settings.auth.username"),": ",o.username]}):null]}),e.jsx("div",{className:"rounded-2xl border border-slate-200/60 bg-slate-50/80 px-5 py-4 text-xs leading-relaxed text-slate-600 shadow-sm shadow-slate-200/40 dark:border-slate-700/50 dark:bg-slate-800/60 dark:text-slate-300",children:s(T?"settings.auth.passwordHintRequired":"settings.auth.passwordHintOptional")})]})]}),e.jsxs("div",{className:"flex flex-wrap items-center justify-end gap-3",children:[e.jsx("button",{type:"button",onClick:J,className:c(K,"h-10 rounded-full px-6"),disabled:C,children:s(C?"common.actions.saving":"settings.auth.actions.save")}),e.jsx("button",{type:"button",onClick:U,className:c(R,"h-10 rounded-full px-4"),disabled:C,children:s("common.actions.reset")})]})]})}),e.jsx(v,{title:s("settings.sections.configFile"),description:s("settings.file.description"),actions:e.jsxs("button",{type:"button",onClick:X,className:c(R,"h-10 rounded-full px-4"),children:[e.jsx(le,{className:"h-4 w-4","aria-hidden":"true"}),s("common.actions.copy")]}),contentClassName:"gap-3",children:e.jsx("code",{className:"block break-all rounded-2xl border border-slate-200/60 bg-slate-100 px-4 py-3 text-xs text-slate-700 dark:border-slate-700/60 dark:bg-slate-900 dark:text-slate-200",children:L||s("settings.file.unknown")})}),e.jsxs(v,{title:s("settings.sections.cleanup"),description:s("settings.cleanup.description"),contentClassName:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-3",children:[e.jsx("button",{type:"button",onClick:Y,className:c(B,"px-5"),disabled:A,children:s(A?"common.actions.cleaning":"common.actions.cleanup")}),e.jsx("button",{type:"button",onClick:Z,className:c(B,"px-5 border-red-500/70 bg-red-600 text-white hover:bg-red-600/90 dark:border-red-500 dark:bg-red-500 dark:text-white"),disabled:M,children:s(M?"settings.cleanup.clearingAll":"settings.cleanup.clearAll")})]}),e.jsx("p",{className:"text-xs font-medium text-red-500 dark:text-red-300",children:s("settings.cleanup.clearAllWarning")})]})]}):e.jsx(v,{children:e.jsx("p",{className:"text-sm font-medium text-red-500 dark:text-red-300",children:s("settings.toast.missingConfig")})})]})}export{me as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s,d as n,y as u}from"./index-
|
|
1
|
+
import{j as s,d as n,y as u}from"./index-ChT0XT-w.js";function c({variant:a,children:e,icon:r,className:t}){return s.jsxs("span",{className:n(u[a],t),children:[r||s.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-current","aria-hidden":"true"}),e]})}export{c as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 475px){.container{max-width:475px}}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}@media (min-width: 1600px){.container{max-width:1600px}}@media (min-width: 1920px){.container{max-width:1920px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-y-0{top:0;bottom:0}.bottom-32{bottom:8rem}.left-0{left:0}.left-10{left:2.5rem}.right-0{right:0}.right-16{right:4rem}.right-6{right:1.5rem}.top-0{top:0}.top-20{top:5rem}.top-6{top:1.5rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-36{height:9rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-56{height:14rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-56{max-height:14rem}.max-h-64{max-height:16rem}.max-h-80{max-height:20rem}.max-h-\[60vh\]{max-height:60vh}.min-h-\[120px\]{min-height:120px}.min-h-\[200px\]{min-height:200px}.min-h-\[220px\]{min-height:220px}.min-h-\[320px\]{min-height:320px}.min-h-\[44px\]{min-height:44px}.min-h-\[96px\]{min-height:96px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-\[240px\]{min-width:240px}.min-w-full{min-width:100%}.max-w-3xl{max-width:48rem}.max-w-\[1600px\]{max-width:1600px}.max-w-\[360px\]{max-width:360px}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .2s ease-out}@keyframes slide-down{0%{transform:translateY(-10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-down{animation:slide-down .3s ease-out}@keyframes slide-up{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slide-up .3s ease-out}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-3{row-gap:.75rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(226 232 240 / var(--tw-divide-opacity, 1))}.divide-slate-200\/50>:not([hidden])~:not([hidden]){border-color:#e2e8f080}.divide-slate-200\/60>:not([hidden])~:not([hidden]){border-color:#e2e8f099}.divide-slate-200\/70>:not([hidden])~:not([hidden]){border-color:#e2e8f0b3}.divide-slate-200\/80>:not([hidden])~:not([hidden]){border-color:#e2e8f0cc}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[3px\]{border-width:3px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-blue-200\/40{border-color:#bfdbfe66}.border-blue-200\/50{border-color:#bfdbfe80}.border-blue-200\/60{border-color:#bfdbfe99}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-500\/30{border-color:#3b82f64d}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-current{border-color:currentColor}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-green-200\/60{border-color:#bbf7d099}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-200\/50{border-color:#fecaca80}.border-red-200\/70{border-color:#fecacab3}.border-red-300\/50{border-color:#fca5a580}.border-red-500\/70{border-color:#ef4444b3}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.border-slate-200\/20{border-color:#e2e8f033}.border-slate-200\/30{border-color:#e2e8f04d}.border-slate-200\/40{border-color:#e2e8f066}.border-slate-200\/50{border-color:#e2e8f080}.border-slate-200\/60{border-color:#e2e8f099}.border-slate-200\/70{border-color:#e2e8f0b3}.border-slate-300{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.border-slate-300\/50{border-color:#cbd5e180}.border-slate-300\/60{border-color:#cbd5e199}.border-t-blue-600{--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}.border-t-transparent{border-top-color:transparent}.bg-amber-500\/15{background-color:#f59e0b26}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-100\/50{background-color:#dbeafe80}.bg-blue-100\/80{background-color:#dbeafecc}.bg-blue-50\/70{background-color:#eff6ffb3}.bg-blue-50\/80{background-color:#eff6ffcc}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-500\/10{background-color:#3b82f61a}.bg-blue-500\/15{background-color:#3b82f626}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-current{background-color:currentColor}.bg-emerald-100\/80{background-color:#d1fae5cc}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-emerald-500\/15{background-color:#10b98126}.bg-emerald-500\/20{background-color:#10b98133}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-100\/50{background-color:#dcfce780}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-indigo-100{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity, 1))}.bg-purple-100{--tw-bg-opacity: 1;background-color:rgb(243 232 255 / var(--tw-bg-opacity, 1))}.bg-purple-500\/10{background-color:#a855f71a}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-100\/80{background-color:#fee2e2cc}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-50\/80{background-color:#fef2f2cc}.bg-red-500\/15{background-color:#ef444426}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.bg-slate-100\/50{background-color:#f1f5f980}.bg-slate-100\/70{background-color:#f1f5f9b3}.bg-slate-100\/80{background-color:#f1f5f9cc}.bg-slate-100\/90{background-color:#f1f5f9e6}.bg-slate-200\/40{background-color:#e2e8f066}.bg-slate-200\/50{background-color:#e2e8f080}.bg-slate-200\/80{background-color:#e2e8f0cc}.bg-slate-300\/35{background-color:#cbd5e159}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-slate-50\/30{background-color:#f8fafc4d}.bg-slate-50\/50{background-color:#f8fafc80}.bg-slate-50\/60{background-color:#f8fafc99}.bg-slate-50\/70{background-color:#f8fafcb3}.bg-slate-50\/80{background-color:#f8fafccc}.bg-slate-900\/60{background-color:#0f172a99}.bg-slate-900\/80{background-color:#0f172acc}.bg-slate-900\/90{background-color:#0f172ae6}.bg-slate-900\/95{background-color:#0f172af2}.bg-slate-950\/60{background-color:#02061799}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-white\/50{background-color:#ffffff80}.bg-white\/60{background-color:#fff9}.bg-white\/70{background-color:#ffffffb3}.bg-white\/75{background-color:#ffffffbf}.bg-white\/80{background-color:#fffc}.bg-white\/90{background-color:#ffffffe6}.bg-white\/95{background-color:#fffffff2}.bg-\[radial-gradient\(circle_at_top\,_rgba\(15\,23\,42\,0\.08\)\,_transparent_55\%\)\]{background-image:radial-gradient(circle at top,rgba(15,23,42,.08),transparent 55%)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-50{--tw-gradient-from: #eff6ff var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-50\/80{--tw-gradient-from: rgb(239 246 255 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-50\/90{--tw-gradient-from: rgb(239 246 255 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/20{--tw-gradient-from: rgb(59 130 246 / .2) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-600\/15{--tw-gradient-from: rgb(37 99 235 / .15) var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-50\/80{--tw-gradient-from: rgb(240 253 244 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(240 253 244 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-50{--tw-gradient-from: #fef2f2 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 242 242 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-100{--tw-gradient-from: #f1f5f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(241 245 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-50\/80{--tw-gradient-from: rgb(248 250 252 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(248 250 252 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-900{--tw-gradient-from: #0f172a var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/80{--tw-gradient-from: rgb(255 255 255 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/85{--tw-gradient-from: rgb(255 255 255 / .85) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/90{--tw-gradient-from: rgb(255 255 255 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-white\/95{--tw-gradient-from: rgb(255 255 255 / .95) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-blue-600{--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #2563eb var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-slate-800{--tw-gradient-to: rgb(30 41 59 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #1e293b var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #fff var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\/60{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\/80{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .8) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white\/90{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .9) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-700{--tw-gradient-to: #1d4ed8 var(--tw-gradient-to-position)}.to-emerald-50\/60{--tw-gradient-to: rgb(236 253 245 / .6) var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to: #eef2ff var(--tw-gradient-to-position)}.to-indigo-50\/60{--tw-gradient-to: rgb(238 242 255 / .6) var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to: #6366f1 var(--tw-gradient-to-position)}.to-indigo-500\/20{--tw-gradient-to: rgb(99 102 241 / .2) var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.to-indigo-600\/10{--tw-gradient-to: rgb(79 70 229 / .1) var(--tw-gradient-to-position)}.to-purple-50\/80{--tw-gradient-to: rgb(250 245 255 / .8) var(--tw-gradient-to-position)}.to-red-100{--tw-gradient-to: #fee2e2 var(--tw-gradient-to-position)}.to-slate-100\/70{--tw-gradient-to: rgb(241 245 249 / .7) var(--tw-gradient-to-position)}.to-slate-200{--tw-gradient-to: #e2e8f0 var(--tw-gradient-to-position)}.to-slate-50{--tw-gradient-to: #f8fafc var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to: rgb(255 255 255 / .7) var(--tw-gradient-to-position)}.to-white\/75{--tw-gradient-to: rgb(255 255 255 / .75) var(--tw-gradient-to-position)}.to-white\/80{--tw-gradient-to: rgb(255 255 255 / .8) var(--tw-gradient-to-position)}.to-white\/85{--tw-gradient-to: rgb(255 255 255 / .85) var(--tw-gradient-to-position)}.to-white\/90{--tw-gradient-to: rgb(255 255 255 / .9) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.p-0{padding:0}.p-1\.5{padding:.375rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-8{padding-bottom:2rem}.pr-10{padding-right:2.5rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.pt-9{padding-top:2.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-emerald-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.text-slate-50{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.text-slate-500\/90{color:#64748be6}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-slate-800{--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-blue-100\/40{--tw-shadow-color: rgb(219 234 254 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-100\/50{--tw-shadow-color: rgb(219 234 254 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-200\/30{--tw-shadow-color: rgb(191 219 254 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-200\/40{--tw-shadow-color: rgb(191 219 254 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-200\/50{--tw-shadow-color: rgb(191 219 254 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/20{--tw-shadow-color: rgb(59 130 246 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-500\/30{--tw-shadow-color: rgb(59 130 246 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-blue-600\/30{--tw-shadow-color: rgb(37 99 235 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-emerald-500\/30{--tw-shadow-color: rgb(16 185 129 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-100\/50{--tw-shadow-color: rgb(220 252 231 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-green-500\/30{--tw-shadow-color: rgb(34 197 94 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-200\/30{--tw-shadow-color: rgb(254 202 202 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-red-200\/40{--tw-shadow-color: rgb(254 202 202 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/15{--tw-shadow-color: rgb(226 232 240 / .15);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/20{--tw-shadow-color: rgb(226 232 240 / .2);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/25{--tw-shadow-color: rgb(226 232 240 / .25);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/30{--tw-shadow-color: rgb(226 232 240 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/40{--tw-shadow-color: rgb(226 232 240 / .4);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/50{--tw-shadow-color: rgb(226 232 240 / .5);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/60{--tw-shadow-color: rgb(226 232 240 / .6);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-200\/70{--tw-shadow-color: rgb(226 232 240 / .7);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-400\/30{--tw-shadow-color: rgb(148 163 184 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-900\/30{--tw-shadow-color: rgb(15 23 42 / .3);--tw-shadow: var(--tw-shadow-colored)}.shadow-slate-900\/40{--tw-shadow-color: rgb(15 23 42 / .4);--tw-shadow: var(--tw-shadow-colored)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-amber-500\/25{--tw-ring-color: rgb(245 158 11 / .25)}.ring-blue-200\/50{--tw-ring-color: rgb(191 219 254 / .5)}.ring-blue-400\/30{--tw-ring-color: rgb(96 165 250 / .3)}.ring-blue-500\/20{--tw-ring-color: rgb(59 130 246 / .2)}.ring-blue-500\/25{--tw-ring-color: rgb(59 130 246 / .25)}.ring-blue-500\/30{--tw-ring-color: rgb(59 130 246 / .3)}.ring-emerald-200\/50{--tw-ring-color: rgb(167 243 208 / .5)}.ring-emerald-500\/25{--tw-ring-color: rgb(16 185 129 / .25)}.ring-red-200\/50{--tw-ring-color: rgb(254 202 202 / .5)}.ring-red-500\/25{--tw-ring-color: rgb(239 68 68 / .25)}.ring-slate-200\/30{--tw-ring-color: rgb(226 232 240 / .3)}.ring-slate-200\/40{--tw-ring-color: rgb(226 232 240 / .4)}.ring-slate-200\/50{--tw-ring-color: rgb(226 232 240 / .5)}.ring-slate-200\/60{--tw-ring-color: rgb(226 232 240 / .6)}.blur-3xl{--tw-blur: blur(64px);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-lg{--tw-backdrop-blur: blur(16px);-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-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}:root{color-scheme:light dark;--color-primary-50: 239 246 255;--color-primary-100: 219 234 254;--color-primary-200: 191 219 254;--color-primary-300: 147 197 253;--color-primary-400: 96 165 250;--color-primary-500: 59 130 246;--color-primary-600: 37 99 235;--color-primary-700: 29 78 216;--color-primary-800: 30 64 175;--color-primary-900: 30 58 138;--color-primary-950: 23 37 84;--glass-bg: rgba(255, 255, 255, .8);--glass-border: rgba(255, 255, 255, .2);--glass-shadow: rgba(0, 0, 0, .1)}:root,html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-height:100%}[data-theme=dark]{--glass-bg: rgba(15, 23, 42, .8);--glass-border: rgba(255, 255, 255, .1);--glass-shadow: rgba(0, 0, 0, .3)}html,body,#root{height:100%;width:100%;overflow-x:hidden;max-width:100vw;position:relative}body{min-height:100vh;background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));--tw-gradient-from: #f8fafc var(--tw-gradient-from-position);--tw-gradient-to: rgb(248 250 252 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: rgb(239 246 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(239 246 255 / .3) var(--tw-gradient-via-position), var(--tw-gradient-to);--tw-gradient-to: rgb(238 242 255 / .2) var(--tw-gradient-to-position);--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1));-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}body:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(2 6 23 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}body{background-image:radial-gradient(circle at 25% 15%,rgba(59,130,246,.08),transparent 50%),radial-gradient(circle at 75% 10%,rgba(139,92,246,.06),transparent 45%),radial-gradient(circle at 50% 80%,rgba(236,72,153,.04),transparent 35%);background-attachment:fixed;background-size:100% 100%,80% 80%,60% 60%;background-color:#f8fafc;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-image:radial-gradient(rgba(148,163,184,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.03) 1px,transparent 1px);background-size:32px 32px,32px 32px;opacity:.8;pointer-events:none}@media (prefers-color-scheme: dark){body{background-image:radial-gradient(circle at 25% 15%,rgba(59,130,246,.12),transparent 50%),radial-gradient(circle at 75% 10%,rgba(139,92,246,.1),transparent 45%),radial-gradient(circle at 50% 80%,rgba(236,72,153,.06),transparent 35%);background-color:#020617}body:before{background-image:radial-gradient(rgba(148,163,184,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.02) 1px,transparent 1px);opacity:.4}}input[type=text],input[type=number],input[type=search],input[type=email],input[type=url],input[type=date],input[type=time],input[type=datetime-local],input[type=password],select,textarea{border-radius:1rem;border-width:1px;border-color:#e2e8f080;background-color:#ffffffe6;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(30 41 59 / var(--tw-text-opacity, 1));--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-shadow-color: rgb(226 232 240 / .3);--tw-shadow: var(--tw-shadow-colored);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}input[type=text]:focus,input[type=number]:focus,input[type=search]:focus,input[type=email]:focus,input[type=url]:focus,input[type=date]:focus,input[type=time]:focus,input[type=datetime-local]:focus,input[type=password]:focus,select:focus,textarea:focus{border-color:#60a5fab3;--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-shadow-color: rgb(191 219 254 / .4);--tw-shadow: var(--tw-shadow-colored);outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(96 165 250 / .2)}input[type=text]:is([data-theme=dark] *),input[type=number]:is([data-theme=dark] *),input[type=search]:is([data-theme=dark] *),input[type=email]:is([data-theme=dark] *),input[type=url]:is([data-theme=dark] *),input[type=date]:is([data-theme=dark] *),input[type=time]:is([data-theme=dark] *),input[type=datetime-local]:is([data-theme=dark] *),input[type=password]:is([data-theme=dark] *),select:is([data-theme=dark] *),textarea:is([data-theme=dark] *){border-color:#33415580;background-color:#0f172ae6;--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1));--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);--tw-shadow-color: rgb(15 23 42 / .3);--tw-shadow: var(--tw-shadow-colored)}input[type=text]:focus:is([data-theme=dark] *),input[type=number]:focus:is([data-theme=dark] *),input[type=search]:focus:is([data-theme=dark] *),input[type=email]:focus:is([data-theme=dark] *),input[type=url]:focus:is([data-theme=dark] *),input[type=date]:focus:is([data-theme=dark] *),input[type=time]:focus:is([data-theme=dark] *),input[type=datetime-local]:focus:is([data-theme=dark] *),input[type=password]:focus:is([data-theme=dark] *),select:focus:is([data-theme=dark] *),textarea:focus:is([data-theme=dark] *){border-color:#60a5fab3;--tw-ring-color: rgb(96 165 250 / .2)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background-color:#f1f5f980}:is([data-theme=dark] *)::-webkit-scrollbar-track{background-color:#1e293b80}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background-color:#cbd5e1b3}:is([data-theme=dark] *)::-webkit-scrollbar-thumb{background-color:#475569b3}::-webkit-scrollbar-thumb{border-radius:10px}::-webkit-scrollbar-thumb:hover{background-color:#94a3b8cc}:is([data-theme=dark] *)::-webkit-scrollbar-thumb:hover{background-color:#64748bcc}*:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff}*:focus-visible:is([data-theme=dark] *){--tw-ring-offset-color: #020617}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.gradient-text{background-image:linear-gradient(to right,var(--tw-gradient-stops));--tw-gradient-from: #2563eb var(--tw-gradient-from-position);--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #9333ea var(--tw-gradient-to-position);-webkit-background-clip:text;background-clip:text;color:transparent}.gradient-text:is([data-theme=dark] *){--tw-gradient-from: #60a5fa var(--tw-gradient-from-position);--tw-gradient-to: rgb(96 165 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);--tw-gradient-to: #c084fc var(--tw-gradient-to-position)}.glass{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);background:var(--glass-bg);border:1px solid var(--glass-border);box-shadow:0 8px 32px var(--glass-shadow)}.hover-lift{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;transition-timing-function:cubic-bezier(0,0,.2,1)}.hover-lift:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}*{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}::-moz-selection{background-color:#3b82f633;--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}::selection{background-color:#3b82f633;--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}:is([data-theme=dark] *)::-moz-selection{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}:is([data-theme=dark] *)::selection{--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}@media (min-resolution: 192dpi){.fine-detail{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}@media (hover: none) and (pointer: coarse){.hover-lift:hover{transform:none}button,a,[role=button]{min-height:44px;min-width:44px}}.table-container{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;transform:translateZ(0)}@supports (-webkit-appearance: none){.table-container{-webkit-overflow-scrolling:auto;scrollbar-width:auto}}.table-container::-webkit-scrollbar{height:12px!important;width:12px!important;display:block!important}.table-container::-webkit-scrollbar-track{background:#f1f5f9;border-radius:4px}.table-container::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.table-container::-webkit-scrollbar-thumb:hover{background:#94a3b8}@media (prefers-color-scheme: dark){.table-container::-webkit-scrollbar-track{background:#1e293b}.table-container::-webkit-scrollbar-thumb{background:#475569}.table-container::-webkit-scrollbar-thumb:hover{background:#64748b}}.gpu-accelerated{will-change:opacity}.responsive-container{width:100%;max-width:1600px;margin:0 auto;padding:0 1rem}@media (min-width: 640px){.responsive-container{padding:0 2rem}}@media (min-width: 1921px){.responsive-container{max-width:1800px;padding:0 3rem}}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-translate-y-1:hover{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-200:hover{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.hover\:border-blue-200\/60:hover{border-color:#bfdbfe99}.hover\:border-slate-200\/70:hover{border-color:#e2e8f0b3}.hover\:border-slate-300:hover{--tw-border-opacity: 1;border-color:rgb(203 213 225 / var(--tw-border-opacity, 1))}.hover\:border-slate-300\/70:hover{border-color:#cbd5e1b3}.hover\:bg-blue-50\/50:hover{background-color:#eff6ff80}.hover\:bg-blue-50\/70:hover{background-color:#eff6ffb3}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-500\/90:hover{background-color:#10b981e6}.hover\:bg-red-500\/10:hover{background-color:#ef44441a}.hover\:bg-red-600\/90:hover{background-color:#dc2626e6}.hover\:bg-slate-100:hover{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-100\/80:hover{background-color:#f1f5f9cc}.hover\:bg-slate-200:hover{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-300:hover{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.hover\:bg-slate-50\/70:hover{background-color:#f8fafcb3}.hover\:bg-slate-50\/80:hover{background-color:#f8fafccc}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:bg-white\/80:hover{background-color:#fffc}.hover\:bg-white\/90:hover{background-color:#ffffffe6}.hover\:bg-white\/95:hover{background-color:#fffffff2}.hover\:bg-gradient-to-r:hover{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.hover\:from-blue-700:hover{--tw-gradient-from: #1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(29 78 216 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-red-100:hover{--tw-gradient-from: #fee2e2 var(--tw-gradient-from-position);--tw-gradient-to: rgb(254 226 226 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:from-white:hover{--tw-gradient-from: #fff var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:via-white\/95:hover{--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(255 255 255 / .95) var(--tw-gradient-via-position), var(--tw-gradient-to)}.hover\:to-blue-800:hover{--tw-gradient-to: #1e40af var(--tw-gradient-to-position)}.hover\:to-red-200:hover{--tw-gradient-to: #fecaca var(--tw-gradient-to-position)}.hover\:to-white\/90:hover{--tw-gradient-to: rgb(255 255 255 / .9) var(--tw-gradient-to-position)}.hover\:text-red-600:hover{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.hover\:text-slate-900:hover{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-blue-200\/40:hover{--tw-shadow-color: rgb(191 219 254 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-blue-600\/40:hover{--tw-shadow-color: rgb(37 99 235 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-red-200\/40:hover{--tw-shadow-color: rgb(254 202 202 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-slate-200\/30:hover{--tw-shadow-color: rgb(226 232 240 / .3);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-slate-200\/40:hover{--tw-shadow-color: rgb(226 232 240 / .4);--tw-shadow: var(--tw-shadow-colored)}.hover\:shadow-slate-200\/50:hover{--tw-shadow-color: rgb(226 232 240 / .5);--tw-shadow: var(--tw-shadow-colored)}.focus\:not-sr-only:focus{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}.focus\:absolute:focus{position:absolute}.focus\:z-50:focus{z-index:50}.focus\:m-4:focus{margin:1rem}.focus\:rounded-md:focus{border-radius:.375rem}.focus\:border-blue-400\/70:focus{border-color:#60a5fab3}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.focus\:bg-blue-600:focus{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.focus\:px-4:focus{padding-left:1rem;padding-right:1rem}.focus\:py-2:focus{padding-top:.5rem;padding-bottom:.5rem}.focus\:text-white:focus{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.focus\:shadow-md:focus{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:shadow-blue-200\/40:focus{--tw-shadow-color: rgb(191 219 254 / .4);--tw-shadow: var(--tw-shadow-colored)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(191 219 254 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(96 165 250 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-400\/20:focus{--tw-ring-color: rgb(96 165 250 / .2)}.focus\:ring-blue-400\/30:focus{--tw-ring-color: rgb(96 165 250 / .3)}.focus\:ring-blue-400\/40:focus{--tw-ring-color: rgb(96 165 250 / .4)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.focus\:ring-blue-500\/30:focus{--tw-ring-color: rgb(59 130 246 / .3)}.focus\:ring-blue-500\/50:focus{--tw-ring-color: rgb(59 130 246 / .5)}.focus\:ring-red-500\/30:focus{--tw-ring-color: rgb(239 68 68 / .3)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-slate-100:disabled{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity, 1))}.disabled\:text-slate-400:disabled{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.dark\:divide-slate-700:is([data-theme=dark] *)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(51 65 85 / var(--tw-divide-opacity, 1))}.dark\:divide-slate-700\/50:is([data-theme=dark] *)>:not([hidden])~:not([hidden]){border-color:#33415580}.dark\:divide-slate-700\/60:is([data-theme=dark] *)>:not([hidden])~:not([hidden]){border-color:#33415599}.dark\:divide-slate-700\/80:is([data-theme=dark] *)>:not([hidden])~:not([hidden]){border-color:#334155cc}.dark\:divide-slate-800\/60:is([data-theme=dark] *)>:not([hidden])~:not([hidden]){border-color:#1e293b99}.dark\:border-blue-400:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.dark\:border-blue-400\/20:is([data-theme=dark] *){border-color:#60a5fa33}.dark\:border-blue-400\/30:is([data-theme=dark] *){border-color:#60a5fa4d}.dark\:border-blue-500\/30:is([data-theme=dark] *){border-color:#3b82f64d}.dark\:border-blue-700\/60:is([data-theme=dark] *){border-color:#1d4ed899}.dark\:border-blue-900\/30:is([data-theme=dark] *){border-color:#1e3a8a4d}.dark\:border-emerald-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity, 1))}.dark\:border-green-700\/60:is([data-theme=dark] *){border-color:#15803d99}.dark\:border-red-500:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.dark\:border-red-500\/30:is([data-theme=dark] *){border-color:#ef44444d}.dark\:border-red-500\/40:is([data-theme=dark] *){border-color:#ef444466}.dark\:border-red-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.dark\:border-red-800\/50:is([data-theme=dark] *){border-color:#991b1b80}.dark\:border-red-800\/70:is([data-theme=dark] *){border-color:#991b1bb3}.dark\:border-slate-600:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity, 1))}.dark\:border-slate-600\/50:is([data-theme=dark] *){border-color:#47556980}.dark\:border-slate-600\/60:is([data-theme=dark] *){border-color:#47556999}.dark\:border-slate-700:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity, 1))}.dark\:border-slate-700\/30:is([data-theme=dark] *){border-color:#3341554d}.dark\:border-slate-700\/40:is([data-theme=dark] *){border-color:#33415566}.dark\:border-slate-700\/50:is([data-theme=dark] *){border-color:#33415580}.dark\:border-slate-700\/60:is([data-theme=dark] *){border-color:#33415599}.dark\:border-slate-800:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity, 1))}.dark\:border-slate-800\/20:is([data-theme=dark] *){border-color:#1e293b33}.dark\:border-slate-800\/30:is([data-theme=dark] *){border-color:#1e293b4d}.dark\:border-slate-800\/40:is([data-theme=dark] *){border-color:#1e293b66}.dark\:border-slate-800\/50:is([data-theme=dark] *){border-color:#1e293b80}.dark\:border-slate-800\/60:is([data-theme=dark] *){border-color:#1e293b99}.dark\:border-t-blue-300:is([data-theme=dark] *){--tw-border-opacity: 1;border-top-color:rgb(147 197 253 / var(--tw-border-opacity, 1))}.dark\:bg-amber-500\/20:is([data-theme=dark] *){background-color:#f59e0b33}.dark\:bg-blue-500\/20:is([data-theme=dark] *){background-color:#3b82f633}.dark\:bg-blue-900\/20:is([data-theme=dark] *){background-color:#1e3a8a33}.dark\:bg-blue-900\/30:is([data-theme=dark] *){background-color:#1e3a8a4d}.dark\:bg-blue-900\/40:is([data-theme=dark] *){background-color:#1e3a8a66}.dark\:bg-emerald-500\/20:is([data-theme=dark] *){background-color:#10b98133}.dark\:bg-emerald-500\/30:is([data-theme=dark] *){background-color:#10b9814d}.dark\:bg-emerald-900\/40:is([data-theme=dark] *){background-color:#064e3b66}.dark\:bg-green-900\/20:is([data-theme=dark] *){background-color:#14532d33}.dark\:bg-green-900\/40:is([data-theme=dark] *){background-color:#14532d66}.dark\:bg-indigo-900\/40:is([data-theme=dark] *){background-color:#312e8166}.dark\:bg-purple-500\/20:is([data-theme=dark] *){background-color:#a855f733}.dark\:bg-purple-900\/40:is([data-theme=dark] *){background-color:#581c8766}.dark\:bg-red-500:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.dark\:bg-red-500\/15:is([data-theme=dark] *){background-color:#ef444426}.dark\:bg-red-500\/20:is([data-theme=dark] *){background-color:#ef444433}.dark\:bg-red-900\/40:is([data-theme=dark] *){background-color:#7f1d1d66}.dark\:bg-slate-700\/30:is([data-theme=dark] *){background-color:#3341554d}.dark\:bg-slate-700\/50:is([data-theme=dark] *){background-color:#33415580}.dark\:bg-slate-800:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.dark\:bg-slate-800\/20:is([data-theme=dark] *){background-color:#1e293b33}.dark\:bg-slate-800\/30:is([data-theme=dark] *){background-color:#1e293b4d}.dark\:bg-slate-800\/40:is([data-theme=dark] *){background-color:#1e293b66}.dark\:bg-slate-800\/50:is([data-theme=dark] *){background-color:#1e293b80}.dark\:bg-slate-800\/60:is([data-theme=dark] *){background-color:#1e293b99}.dark\:bg-slate-800\/70:is([data-theme=dark] *){background-color:#1e293bb3}.dark\:bg-slate-800\/80:is([data-theme=dark] *){background-color:#1e293bcc}.dark\:bg-slate-800\/90:is([data-theme=dark] *){background-color:#1e293be6}.dark\:bg-slate-900:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.dark\:bg-slate-900\/50:is([data-theme=dark] *){background-color:#0f172a80}.dark\:bg-slate-900\/60:is([data-theme=dark] *){background-color:#0f172a99}.dark\:bg-slate-900\/70:is([data-theme=dark] *){background-color:#0f172ab3}.dark\:bg-slate-900\/75:is([data-theme=dark] *){background-color:#0f172abf}.dark\:bg-slate-900\/80:is([data-theme=dark] *){background-color:#0f172acc}.dark\:bg-slate-900\/85:is([data-theme=dark] *){background-color:#0f172ad9}.dark\:bg-slate-900\/90:is([data-theme=dark] *){background-color:#0f172ae6}.dark\:bg-slate-900\/95:is([data-theme=dark] *){background-color:#0f172af2}.dark\:bg-slate-950\/60:is([data-theme=dark] *){background-color:#02061799}.dark\:bg-slate-950\/90:is([data-theme=dark] *){background-color:#020617e6}.dark\:from-blue-400:is([data-theme=dark] *){--tw-gradient-from: #60a5fa var(--tw-gradient-from-position);--tw-gradient-to: rgb(96 165 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-500:is([data-theme=dark] *){--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-500\/25:is([data-theme=dark] *){--tw-gradient-from: rgb(59 130 246 / .25) var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-900\/30:is([data-theme=dark] *){--tw-gradient-from: rgb(30 58 138 / .3) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 58 138 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-blue-900\/40:is([data-theme=dark] *){--tw-gradient-from: rgb(30 58 138 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 58 138 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-green-900\/30:is([data-theme=dark] *){--tw-gradient-from: rgb(20 83 45 / .3) var(--tw-gradient-from-position);--tw-gradient-to: rgb(20 83 45 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-red-900\/40:is([data-theme=dark] *){--tw-gradient-from: rgb(127 29 29 / .4) var(--tw-gradient-from-position);--tw-gradient-to: rgb(127 29 29 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-100:is([data-theme=dark] *){--tw-gradient-from: #f1f5f9 var(--tw-gradient-from-position);--tw-gradient-to: rgb(241 245 249 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-800:is([data-theme=dark] *){--tw-gradient-from: #1e293b var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 41 59 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-800\/60:is([data-theme=dark] *){--tw-gradient-from: rgb(30 41 59 / .6) var(--tw-gradient-from-position);--tw-gradient-to: rgb(30 41 59 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-900\/80:is([data-theme=dark] *){--tw-gradient-from: rgb(15 23 42 / .8) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-900\/85:is([data-theme=dark] *){--tw-gradient-from: rgb(15 23 42 / .85) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-900\/90:is([data-theme=dark] *){--tw-gradient-from: rgb(15 23 42 / .9) var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:from-slate-950\/95:is([data-theme=dark] *){--tw-gradient-from: rgb(2 6 23 / .95) var(--tw-gradient-from-position);--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:via-blue-600:is([data-theme=dark] *){--tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #2563eb var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:via-slate-900\/50:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .5) var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:via-slate-900\/70:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .7) var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:via-slate-900\/80:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .8) var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:via-slate-950:is([data-theme=dark] *){--tw-gradient-to: rgb(2 6 23 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #020617 var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:to-blue-600:is([data-theme=dark] *){--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.dark\:to-emerald-900\/30:is([data-theme=dark] *){--tw-gradient-to: rgb(6 78 59 / .3) var(--tw-gradient-to-position)}.dark\:to-indigo-400:is([data-theme=dark] *){--tw-gradient-to: #818cf8 var(--tw-gradient-to-position)}.dark\:to-indigo-500:is([data-theme=dark] *){--tw-gradient-to: #6366f1 var(--tw-gradient-to-position)}.dark\:to-indigo-500\/15:is([data-theme=dark] *){--tw-gradient-to: rgb(99 102 241 / .15) var(--tw-gradient-to-position)}.dark\:to-indigo-600:is([data-theme=dark] *){--tw-gradient-to: #4f46e5 var(--tw-gradient-to-position)}.dark\:to-indigo-900\/30:is([data-theme=dark] *){--tw-gradient-to: rgb(49 46 129 / .3) var(--tw-gradient-to-position)}.dark\:to-red-800\/40:is([data-theme=dark] *){--tw-gradient-to: rgb(153 27 27 / .4) var(--tw-gradient-to-position)}.dark\:to-slate-300:is([data-theme=dark] *){--tw-gradient-to: #cbd5e1 var(--tw-gradient-to-position)}.dark\:to-slate-700\/50:is([data-theme=dark] *){--tw-gradient-to: rgb(51 65 85 / .5) var(--tw-gradient-to-position)}.dark\:to-slate-800\/60:is([data-theme=dark] *){--tw-gradient-to: rgb(30 41 59 / .6) var(--tw-gradient-to-position)}.dark\:to-slate-800\/70:is([data-theme=dark] *){--tw-gradient-to: rgb(30 41 59 / .7) var(--tw-gradient-to-position)}.dark\:to-slate-900:is([data-theme=dark] *){--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.dark\:to-slate-900\/70:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / .7) var(--tw-gradient-to-position)}.dark\:to-slate-900\/75:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / .75) var(--tw-gradient-to-position)}.dark\:to-slate-900\/80:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / .8) var(--tw-gradient-to-position)}.dark\:to-slate-900\/85:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / .85) var(--tw-gradient-to-position)}.dark\:to-slate-950\/90:is([data-theme=dark] *){--tw-gradient-to: rgb(2 6 23 / .9) var(--tw-gradient-to-position)}.dark\:text-amber-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-emerald-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity, 1))}.dark\:text-emerald-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.dark\:text-emerald-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-green-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(134 239 172 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-indigo-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(165 180 252 / var(--tw-text-opacity, 1))}.dark\:text-purple-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(233 213 255 / var(--tw-text-opacity, 1))}.dark\:text-purple-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(216 180 254 / var(--tw-text-opacity, 1))}.dark\:text-red-100:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity, 1))}.dark\:text-red-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.dark\:text-red-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-slate-100:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.dark\:text-slate-200:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.dark\:text-slate-300:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.dark\:text-slate-400:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity, 1))}.dark\:text-slate-50:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.dark\:text-slate-500:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity, 1))}.dark\:text-slate-600:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity, 1))}.dark\:text-white:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:shadow-2xl:is([data-theme=dark] *){--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-lg:is([data-theme=dark] *){--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-md:is([data-theme=dark] *){--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-xl:is([data-theme=dark] *){--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:shadow-black\/40:is([data-theme=dark] *){--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-blue-500\/20:is([data-theme=dark] *){--tw-shadow-color: rgb(59 130 246 / .2);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-blue-500\/30:is([data-theme=dark] *){--tw-shadow-color: rgb(59 130 246 / .3);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-blue-900\/30:is([data-theme=dark] *){--tw-shadow-color: rgb(30 58 138 / .3);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-blue-900\/40:is([data-theme=dark] *){--tw-shadow-color: rgb(30 58 138 / .4);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-green-900\/30:is([data-theme=dark] *){--tw-shadow-color: rgb(20 83 45 / .3);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-indigo-900\/40:is([data-theme=dark] *){--tw-shadow-color: rgb(49 46 129 / .4);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-red-900\/30:is([data-theme=dark] *){--tw-shadow-color: rgb(127 29 29 / .3);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-slate-900\/20:is([data-theme=dark] *){--tw-shadow-color: rgb(15 23 42 / .2);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-slate-900\/30:is([data-theme=dark] *){--tw-shadow-color: rgb(15 23 42 / .3);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-slate-900\/40:is([data-theme=dark] *){--tw-shadow-color: rgb(15 23 42 / .4);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-slate-900\/50:is([data-theme=dark] *){--tw-shadow-color: rgb(15 23 42 / .5);--tw-shadow: var(--tw-shadow-colored)}.dark\:shadow-slate-900\/60:is([data-theme=dark] *){--tw-shadow-color: rgb(15 23 42 / .6);--tw-shadow: var(--tw-shadow-colored)}.dark\:ring-amber-400\/30:is([data-theme=dark] *){--tw-ring-color: rgb(251 191 36 / .3)}.dark\:ring-blue-400\/20:is([data-theme=dark] *){--tw-ring-color: rgb(96 165 250 / .2)}.dark\:ring-blue-400\/30:is([data-theme=dark] *){--tw-ring-color: rgb(96 165 250 / .3)}.dark\:ring-blue-700\/50:is([data-theme=dark] *){--tw-ring-color: rgb(29 78 216 / .5)}.dark\:ring-emerald-400\/30:is([data-theme=dark] *){--tw-ring-color: rgb(52 211 153 / .3)}.dark\:ring-emerald-700\/50:is([data-theme=dark] *){--tw-ring-color: rgb(4 120 87 / .5)}.dark\:ring-red-400\/30:is([data-theme=dark] *){--tw-ring-color: rgb(248 113 113 / .3)}.dark\:ring-red-700\/50:is([data-theme=dark] *){--tw-ring-color: rgb(185 28 28 / .5)}.dark\:ring-slate-700\/40:is([data-theme=dark] *){--tw-ring-color: rgb(51 65 85 / .4)}.dark\:ring-slate-700\/50:is([data-theme=dark] *){--tw-ring-color: rgb(51 65 85 / .5)}.dark\:ring-slate-700\/60:is([data-theme=dark] *){--tw-ring-color: rgb(51 65 85 / .6)}.dark\:hover\:border-blue-500\/40:hover:is([data-theme=dark] *){border-color:#3b82f666}.dark\:hover\:border-blue-500\/60:hover:is([data-theme=dark] *){border-color:#3b82f699}.dark\:hover\:border-slate-500\/60:hover:is([data-theme=dark] *){border-color:#64748b99}.dark\:hover\:border-slate-500\/70:hover:is([data-theme=dark] *){border-color:#64748bb3}.dark\:hover\:border-slate-600\/70:hover:is([data-theme=dark] *){border-color:#475569b3}.dark\:hover\:bg-blue-900\/20:hover:is([data-theme=dark] *){background-color:#1e3a8a33}.dark\:hover\:bg-slate-700:hover:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-slate-700\/60:hover:is([data-theme=dark] *){background-color:#33415599}.dark\:hover\:bg-slate-700\/70:hover:is([data-theme=dark] *){background-color:#334155b3}.dark\:hover\:bg-slate-800:hover:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-slate-800\/40:hover:is([data-theme=dark] *){background-color:#1e293b66}.dark\:hover\:bg-slate-800\/60:hover:is([data-theme=dark] *){background-color:#1e293b99}.dark\:hover\:bg-slate-800\/80:hover:is([data-theme=dark] *){background-color:#1e293bcc}.dark\:hover\:bg-slate-900:hover:is([data-theme=dark] *){--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-slate-900\/80:hover:is([data-theme=dark] *){background-color:#0f172acc}.dark\:hover\:bg-slate-900\/90:hover:is([data-theme=dark] *){background-color:#0f172ae6}.dark\:hover\:bg-slate-900\/95:hover:is([data-theme=dark] *){background-color:#0f172af2}.dark\:hover\:from-slate-900:hover:is([data-theme=dark] *){--tw-gradient-from: #0f172a var(--tw-gradient-from-position);--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.dark\:hover\:via-slate-900\/95:hover:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), rgb(15 23 42 / .95) var(--tw-gradient-via-position), var(--tw-gradient-to)}.dark\:hover\:to-slate-900\/90:hover:is([data-theme=dark] *){--tw-gradient-to: rgb(15 23 42 / .9) var(--tw-gradient-to-position)}.dark\:hover\:text-slate-100:hover:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity, 1))}.dark\:hover\:text-slate-200:hover:is([data-theme=dark] *){--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity, 1))}.dark\:hover\:shadow-lg:hover:is([data-theme=dark] *){--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.dark\:hover\:shadow-slate-900\/30:hover:is([data-theme=dark] *){--tw-shadow-color: rgb(15 23 42 / .3);--tw-shadow: var(--tw-shadow-colored)}.dark\:focus\:border-blue-400:focus:is([data-theme=dark] *){--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.dark\:focus\:border-blue-400\/70:focus:is([data-theme=dark] *){border-color:#60a5fab3}.dark\:focus\:ring-blue-400\/20:focus:is([data-theme=dark] *){--tw-ring-color: rgb(96 165 250 / .2)}.dark\:focus\:ring-blue-400\/40:focus:is([data-theme=dark] *){--tw-ring-color: rgb(96 165 250 / .4)}.dark\:disabled\:bg-slate-800\/60:disabled:is([data-theme=dark] *){background-color:#1e293b99}.dark\:disabled\:bg-slate-900\/40:disabled:is([data-theme=dark] *){background-color:#0f172a66}@media (min-width: 640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mt-4{margin-top:1rem}.sm\:inline{display:inline}.sm\:h-10{height:2.5rem}.sm\:max-h-\[70vh\]{max-height:70vh}.sm\:min-h-0{min-height:0px}.sm\:min-h-\[300px\]{min-height:300px}.sm\:w-10{width:2.5rem}.sm\:w-80{width:20rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:gap-8{gap:2rem}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:rounded-3xl{border-radius:1.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.sm\:py-3{padding-top:.75rem;padding-bottom:.75rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:pb-12{padding-bottom:3rem}.sm\:pt-8{padding-top:2rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media (min-width: 768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}}@media (min-width: 1024px){.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-36{width:9rem}.lg\:min-w-\[9rem\]{min-width:9rem}.lg\:max-w-\[9rem\]{max-width:9rem}.lg\:flex-shrink-0{flex-shrink:0}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,.85fr)}.lg\:space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.lg\:p-10{padding:2.5rem}.lg\:p-4{padding:1rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pb-16{padding-bottom:4rem}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:text-4xl{font-size:2.25rem;line-height:2.5rem}.lg\:text-5xl{font-size:3rem;line-height:1}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width: 1280px){.xl\:block{display:block}.xl\:w-40{width:10rem}.xl\:min-w-\[10rem\]{min-width:10rem}.xl\:max-w-\[10rem\]{max-width:10rem}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width: 1536px){.\32xl\:w-44{width:11rem}.\32xl\:min-w-\[11rem\]{min-width:11rem}.\32xl\:max-w-\[11rem\]{max-width:11rem}.\32xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}
|