@anvia/studio 0.7.46 → 0.7.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/ui/assets/{evals-page-DkyqKUak.js → evals-page-C2joY2Qr.js} +2 -2
  2. package/dist/ui/assets/{evals-page-DkyqKUak.js.map → evals-page-C2joY2Qr.js.map} +1 -1
  3. package/dist/ui/assets/index-CzSafghW.css +1 -0
  4. package/dist/ui/assets/{index-DuJGKHsF.js → index-VugvP6Aw.js} +4 -4
  5. package/dist/ui/assets/{index-DuJGKHsF.js.map → index-VugvP6Aw.js.map} +1 -1
  6. package/dist/ui/assets/{knowledge-page-BsIEmgbK.js → knowledge-page-C-E0mYOo.js} +2 -2
  7. package/dist/ui/assets/{knowledge-page-BsIEmgbK.js.map → knowledge-page-C-E0mYOo.js.map} +1 -1
  8. package/dist/ui/assets/{mcps-page-CLkKV3gQ.js → mcps-page-CUOzbESH.js} +2 -2
  9. package/dist/ui/assets/{mcps-page-CLkKV3gQ.js.map → mcps-page-CUOzbESH.js.map} +1 -1
  10. package/dist/ui/assets/{memory-page-B6wO-dfj.js → memory-page-DzLW_0HQ.js} +2 -2
  11. package/dist/ui/assets/{memory-page-B6wO-dfj.js.map → memory-page-DzLW_0HQ.js.map} +1 -1
  12. package/dist/ui/assets/{pipelines-page-DBrdwSHs.js → pipelines-page-DtLbZmyZ.js} +2 -2
  13. package/dist/ui/assets/{pipelines-page-DBrdwSHs.js.map → pipelines-page-DtLbZmyZ.js.map} +1 -1
  14. package/dist/ui/assets/renderers-BYO0FrBn.js +93 -0
  15. package/dist/ui/assets/{renderers-BgRlCTll.js.map → renderers-BYO0FrBn.js.map} +1 -1
  16. package/dist/ui/assets/{sandboxes-page-B9Tqi3T9.js → sandboxes-page-CDnOeY_U.js} +2 -2
  17. package/dist/ui/assets/{sandboxes-page-B9Tqi3T9.js.map → sandboxes-page-CDnOeY_U.js.map} +1 -1
  18. package/dist/ui/assets/{sessions-page-BEVnUUFi.js → sessions-page-BR8471nF.js} +2 -2
  19. package/dist/ui/assets/{sessions-page-BEVnUUFi.js.map → sessions-page-BR8471nF.js.map} +1 -1
  20. package/dist/ui/assets/{status-page-CqcN8K2V.js → status-page-BDXN8kdv.js} +2 -2
  21. package/dist/ui/assets/{status-page-CqcN8K2V.js.map → status-page-BDXN8kdv.js.map} +1 -1
  22. package/dist/ui/assets/{tool-runner-7FNoql1w.js → tool-runner-DXo58NH6.js} +2 -2
  23. package/dist/ui/assets/{tool-runner-7FNoql1w.js.map → tool-runner-DXo58NH6.js.map} +1 -1
  24. package/dist/ui/assets/{tools-page-zkT-hZtg.js → tools-page-t_RYZv42.js} +2 -2
  25. package/dist/ui/assets/{tools-page-zkT-hZtg.js.map → tools-page-t_RYZv42.js.map} +1 -1
  26. package/dist/ui/assets/{trace-browser-BrJaIgIn.js → trace-browser-BhGaLL9S.js} +2 -2
  27. package/dist/ui/assets/{trace-browser-BrJaIgIn.js.map → trace-browser-BhGaLL9S.js.map} +1 -1
  28. package/dist/ui/assets/{transcript-item-CHLeQcgs.js → transcript-item-Bjl-TsKQ.js} +2 -2
  29. package/dist/ui/assets/{transcript-item-CHLeQcgs.js.map → transcript-item-Bjl-TsKQ.js.map} +1 -1
  30. package/dist/ui/index.html +2 -2
  31. package/package.json +5 -5
  32. package/dist/ui/assets/index-CQmSyO8y.css +0 -1
  33. package/dist/ui/assets/renderers-BgRlCTll.js +0 -93
@@ -1,2 +1,2 @@
1
- import{r as e}from"./utils-C9GMruoG.js";import{I as t,L as n,a as r,d as i,f as a,i as o,l as s,o as c,p as l,r as u,rt as d,s as f,u as p}from"./index-DuJGKHsF.js";var m=e();function h(e){let t=e.evals.find(t=>t.id===e.selectedEvalId)??e.evals[0];return(0,m.jsx)(r,{children:(0,m.jsx)(`div`,{className:`grid min-h-0 min-w-0 pb-6 pr-6`,children:(0,m.jsxs)(f,{className:`grid content-start gap-5 overflow-auto p-6`,children:[(0,m.jsxs)(`header`,{className:`flex min-w-0 items-start justify-between gap-4 border-b border-border/80 pb-5`,children:[(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`p`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Evals`}),(0,m.jsx)(`h1`,{className:`m-0 mt-2 text-2xl font-semibold tracking-tight text-foreground`,children:t?.name??`Eval suite`}),(0,m.jsx)(`p`,{className:`m-0 mt-2 max-w-2xl text-sm leading-6 text-muted-foreground`,children:t?.description??`Inspect eval datasets, metrics, run configuration, and per-case outcomes.`})]}),(0,m.jsx)(g,{disabled:!e.enabled||t===void 0||e.runState===`running`,label:e.runState===`running`?`Running`:`Run`,onRun:e.onRun})]}),(0,m.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[340px_minmax(0,1fr)]`,children:[(0,m.jsxs)(`aside`,{className:`grid content-start gap-4 border-r border-border/80 pr-5 max-lg:border-b max-lg:border-r-0 max-lg:pb-5 max-lg:pr-0`,children:[(0,m.jsxs)(`label`,{className:`grid gap-2`,htmlFor:`eval-suite-select`,children:[(0,m.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:`Suite`}),(0,m.jsxs)(s,{value:t?.id??``,onValueChange:e.onSelectEval,children:[(0,m.jsx)(a,{id:`eval-suite-select`,className:`h-9 w-full rounded-lg border-border/80 bg-background text-xs hover:border-muted-foreground/60 focus:border-muted-foreground/70 focus:ring-muted-foreground/20`,children:(0,m.jsx)(l,{placeholder:`Select eval`})}),(0,m.jsx)(p,{children:e.evals.map(e=>(0,m.jsx)(i,{value:e.id,children:e.name},e.id))})]})]}),t===void 0?null:(0,m.jsx)(_,{suite:t,enabled:e.enabled})]}),(0,m.jsx)(`main`,{className:`min-w-0`,children:t===void 0?(0,m.jsx)(u,{className:`min-h-0`,title:`No eval suites`,text:`0 eval suite records are available in this Studio runtime.`}):e.result===void 0?(0,m.jsx)(v,{suite:t,enabled:e.enabled,runState:e.runState}):(0,m.jsx)(w,{result:e.result,suite:t})})]})]})})})}function g(e){return(0,m.jsxs)(n,{className:`h-9 shrink-0 gap-1.5 rounded-lg border border-white bg-white px-3 text-sm font-semibold text-black shadow-none hover:border-white hover:bg-white/90 hover:text-black disabled:border-border disabled:bg-muted disabled:text-muted-foreground [&_svg]:!size-3`,disabled:e.disabled,onClick:e.onRun,variant:`ghost`,children:[(0,m.jsx)(t,{icon:d,"aria-hidden":`true`}),e.label]})}function _(e){let t=z(e.suite.metadata),n=e.suite.casePreviewCount??e.suite.casePreviews?.length??0;return(0,m.jsxs)(`div`,{className:`grid gap-4`,children:[(0,m.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,m.jsx)(o,{label:`Cases`,value:String(e.suite.caseCount)}),(0,m.jsx)(o,{label:`Metrics`,value:String(e.suite.metricNames.length)}),(0,m.jsx)(o,{label:`Concurrency`,value:String(e.suite.concurrency??1)}),(0,m.jsx)(o,{label:`Previewed`,value:`${n}/${e.suite.caseCount}`})]}),(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/70 bg-background/45 p-4`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`h2`,{className:`m-0 text-sm font-semibold text-foreground`,children:`Run readiness`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:e.enabled?`This suite is available in the current Studio runtime.`:`Eval routes are not available in the current Studio runtime.`})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:[(0,m.jsx)(A,{label:`Suite id`,value:e.suite.id}),(0,m.jsx)(A,{label:`Metadata keys`,value:t.length>0?t.join(`, `):`None`})]})]})]})}function v(e){return(0,m.jsxs)(`div`,{className:`grid gap-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-4 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(M,{children:`What this eval tests`}),(0,m.jsx)(`p`,{className:`m-0 max-w-3xl text-sm leading-6 text-foreground`,children:e.suite.description??`This suite has no description. Use the dataset and metric definitions below to inspect coverage before running it.`})]}),(0,m.jsx)(O,{metadata:e.suite.metadata})]}),(0,m.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1.35fr)_minmax(320px,0.65fr)]`,children:[(0,m.jsx)(y,{suite:e.suite}),(0,m.jsxs)(`div`,{className:`grid content-start gap-4`,children:[(0,m.jsx)(x,{metrics:e.suite.metricSummaries,metricNames:e.suite.metricNames}),(0,m.jsx)(C,{suite:e.suite,enabled:e.enabled,runState:e.runState})]})]})]})}function y(e){let t=e.suite.casePreviews??[];return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Dataset preview`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[`Showing `,t.length,` of `,e.suite.caseCount,` cases.`]})]}),(0,m.jsxs)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground`,children:[e.suite.caseCount,` cases`]})]}),t.length===0?(0,m.jsx)(j,{children:`No dataset preview is available for this suite.`}):(0,m.jsx)(`div`,{className:`grid gap-3`,children:t.map(e=>(0,m.jsx)(b,{testCase:e},e.id))})]})}function b(e){return(0,m.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/70 bg-card/35 p-4`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,m.jsx)(`h3`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.testCase.id}),e.testCase.metadataKeys===void 0?null:(0,m.jsxs)(`span`,{className:`shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:[e.testCase.metadataKeys.length,` metadata`]})]}),(0,m.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,m.jsx)(k,{label:`Input`,value:e.testCase.input,emptyText:`No input preview`}),(0,m.jsx)(k,{label:`Expected`,value:e.testCase.expected,emptyText:`No expected value`})]})]})}function x(e){let t=e.metrics??e.metricNames.map(e=>({name:e}));return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Metrics`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:`Scoring functions that evaluate every case output.`})]}),t.length===0?(0,m.jsx)(j,{children:`No metrics are configured for this suite.`}):(0,m.jsx)(`div`,{className:`grid gap-2`,children:t.map(e=>(0,m.jsx)(S,{metric:e},e.name))})]})}function S(e){let t=[e.metric.dataType,e.metric.configId===void 0?void 0:`config ${e.metric.configId}`,e.metric.scoreConfigId===void 0?void 0:`score ${e.metric.scoreConfigId}`,e.metric.metadataKeys===void 0?void 0:`${e.metric.metadataKeys.length} metadata`].filter(Boolean);return(0,m.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-card/35 px-3 py-3`,children:[(0,m.jsx)(`div`,{className:` text-sm font-semibold text-foreground`,children:e.metric.name}),(0,m.jsx)(`div`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:t.length>0?t.join(` / `):`No metric metadata`})]})}function C(e){return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Run configuration`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[`This run will execute `,e.suite.caseCount,` cases across`,` `,e.suite.metricNames.length,` metrics.`]})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:[(0,m.jsx)(A,{label:`Concurrency`,value:String(e.suite.concurrency??1)}),(0,m.jsx)(A,{label:`Status`,value:e.enabled?e.runState:`Unavailable`})]})]})}function w(e){let t=P(e.result.result),n=Array.isArray(t.results)?t.results:[];return(0,m.jsxs)(`article`,{className:`grid gap-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Run summary`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[e.result.runId,` / `,new Date(e.result.startedAt).toLocaleTimeString()]})]}),(0,m.jsx)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.suite.name})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-4`,children:[(0,m.jsx)(o,{label:`Passed`,value:String(t.passed??0)}),(0,m.jsx)(o,{label:`Failed`,value:String(t.failed??0)}),(0,m.jsx)(o,{label:`Invalid`,value:String(t.invalid??0)}),(0,m.jsx)(o,{label:`Duration`,value:`${t.durationMs??e.result.durationMs}ms`})]})]}),(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Case results`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:`Each case shows the prompt, expected answer, model output, then metric judgments.`})]}),(0,m.jsxs)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground`,children:[n.length,` cases`]})]}),n.length===0?(0,m.jsx)(j,{children:`No per-case results were returned by this eval run.`}):(0,m.jsx)(`div`,{className:`grid gap-4`,children:n.map((e,t)=>(0,m.jsx)(T,{index:t,result:e},F(e,t)))})]}),(0,m.jsx)(N,{title:`Raw result`,value:e.result.result})]})}function T(e){let t=V(e.result.case)?e.result.case:{},n=Array.isArray(e.result.metrics)?e.result.metrics:[],r=typeof t.id==`string`?t.id:`case-${e.index+1}`,i=I(n),a=L(i);return(0,m.jsxs)(`article`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card/35`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-4 border-b border-border/70 bg-background/35 px-4 py-4`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,m.jsx)(`span`,{className:`flex h-7 min-w-7 items-center justify-center rounded-lg border border-border/80 bg-card/70 text-xs font-semibold text-muted-foreground`,children:e.index+1}),(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`h3`,{className:`m-0 truncate text-base font-semibold text-foreground`,children:r}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[n.length,` metric outcomes / `,i.passed,` pass / `,i.failed,` fail /`,` `,i.invalid,` invalid`]})]})]}),(0,m.jsx)(D,{children:a})]}),(0,m.jsxs)(`div`,{className:`grid gap-4 p-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-3`,children:[(0,m.jsx)(M,{children:`Test case`}),(0,m.jsxs)(`div`,{className:`grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,0.85fr)]`,children:[(0,m.jsx)(k,{label:`Input`,value:t.input,emptyText:`No input`}),(0,m.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 xl:grid-cols-1`,children:[(0,m.jsx)(k,{label:`Expected`,value:t.expected,emptyText:`No expected value`}),(0,m.jsx)(k,{label:`Output`,value:e.result.output,emptyText:`No output`})]})]})]}),e.result.targetError===void 0?null:(0,m.jsx)(k,{label:`Target error`,value:e.result.targetError,emptyText:`No target error`}),(0,m.jsxs)(`section`,{className:`grid gap-3`,children:[(0,m.jsx)(M,{children:`Metric judgments`}),n.length===0?(0,m.jsx)(j,{children:`No metric results were returned for this case.`}):(0,m.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border/70 bg-background/45`,children:[(0,m.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/70 px-3 py-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:[(0,m.jsx)(`span`,{children:`Metric`}),(0,m.jsx)(`span`,{children:`Score`}),(0,m.jsx)(`span`,{className:`text-right`,children:`Status`})]}),(0,m.jsx)(`div`,{className:`grid`,children:n.map((e,t)=>(0,m.jsx)(E,{index:t,metric:e},R(e)))})]})]})]})]})}function E(e){let t=V(e.metric.outcome)?e.metric.outcome:{},n=typeof t.outcome==`string`?t.outcome:`unknown`,r=Array.isArray(e.metric.reporterErrors)?e.metric.reporterErrors:[];return(0,m.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/60 px-3 py-3 last:border-b-0`,children:[(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e.metric.metricName??`metric-${e.index+1}`}),(0,m.jsx)(`div`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:typeof t.comment==`string`?t.comment:typeof t.reason==`string`?t.reason:`No comment`}),r.length>0?(0,m.jsx)(`pre`,{className:`m-0 mt-2 whitespace-pre-wrap break-words rounded-md border border-border/70 bg-card/45 p-2 text-xs leading-5 text-muted-foreground`,children:B(r)}):null]}),(0,m.jsx)(`div`,{className:` text-xs leading-6 text-foreground`,children:`score`in t?B(t.score):`n/a`}),(0,m.jsx)(`div`,{className:`flex justify-end`,children:(0,m.jsx)(D,{children:n})})]})}function D(e){return(0,m.jsx)(c,{className:`h-7 rounded-md bg-card/70 text-foreground`,children:e.children})}function O(e){let t=V(e.metadata)?Object.entries(e.metadata):[];return t.length===0?(0,m.jsx)(j,{children:`No suite metadata was provided.`}):(0,m.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/70 bg-card/35 p-4`,children:[(0,m.jsx)(M,{children:`Suite metadata`}),(0,m.jsx)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:t.map(([e,t])=>(0,m.jsx)(A,{label:e,value:B(t)},e))})]})}function k(e){let t=e.value!==void 0;return(0,m.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/45 p-3`,children:[(0,m.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,m.jsx)(`pre`,{className:`m-0 mt-2 whitespace-pre-wrap break-words text-xs leading-5 text-foreground`,children:t?B(e.value):e.emptyText})]})}function A(e){return(0,m.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,m.jsx)(`span`,{className:`shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.label}),(0,m.jsx)(`span`,{className:`min-w-0 break-words text-right text-xs text-foreground`,children:e.value})]})}function j(e){return(0,m.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-card/35 p-3 text-sm leading-6 text-muted-foreground`,children:e.children})}function M(e){return(0,m.jsx)(`h2`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.children})}function N(e){return(0,m.jsxs)(`details`,{className:`rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsx)(`summary`,{className:`cursor-pointer text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.title}),(0,m.jsx)(`pre`,{className:`mt-3 max-h-[45vh] overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border/70 bg-card/35 p-3 text-xs leading-5 text-foreground`,children:B(e.value)})]})}function P(e){return V(e)?e:{}}function F(e,t){let n=V(e.case)?e.case:{};return typeof n.id==`string`?n.id:`case-${t+1}`}function I(e){return e.reduce((e,t)=>{let n=V(t.outcome)?t.outcome.outcome:void 0;return n===`pass`&&(e.passed+=1),n===`fail`&&(e.failed+=1),n===`invalid`&&(e.invalid+=1),e},{passed:0,failed:0,invalid:0})}function L(e){return e.failed>0?`fail`:e.invalid>0?`invalid`:e.passed>0?`pass`:`unknown`}function R(e){return typeof e.metricName==`string`&&e.metricName.length>0?e.metricName:B(e)}function z(e){return V(e)?Object.keys(e).filter(t=>e[t]!==void 0):[]}function B(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function V(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{h as EvalsPage};
2
- //# sourceMappingURL=evals-page-DkyqKUak.js.map
1
+ import{r as e}from"./utils-C9GMruoG.js";import{I as t,L as n,a as r,d as i,f as a,i as o,l as s,o as c,p as l,r as u,rt as d,s as f,u as p}from"./index-VugvP6Aw.js";var m=e();function h(e){let t=e.evals.find(t=>t.id===e.selectedEvalId)??e.evals[0];return(0,m.jsx)(r,{children:(0,m.jsx)(`div`,{className:`grid min-h-0 min-w-0 pb-6 pr-6`,children:(0,m.jsxs)(f,{className:`grid content-start gap-5 overflow-auto p-6`,children:[(0,m.jsxs)(`header`,{className:`flex min-w-0 items-start justify-between gap-4 border-b border-border/80 pb-5`,children:[(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`p`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Evals`}),(0,m.jsx)(`h1`,{className:`m-0 mt-2 text-2xl font-semibold tracking-tight text-foreground`,children:t?.name??`Eval suite`}),(0,m.jsx)(`p`,{className:`m-0 mt-2 max-w-2xl text-sm leading-6 text-muted-foreground`,children:t?.description??`Inspect eval datasets, metrics, run configuration, and per-case outcomes.`})]}),(0,m.jsx)(g,{disabled:!e.enabled||t===void 0||e.runState===`running`,label:e.runState===`running`?`Running`:`Run`,onRun:e.onRun})]}),(0,m.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[340px_minmax(0,1fr)]`,children:[(0,m.jsxs)(`aside`,{className:`grid content-start gap-4 border-r border-border/80 pr-5 max-lg:border-b max-lg:border-r-0 max-lg:pb-5 max-lg:pr-0`,children:[(0,m.jsxs)(`label`,{className:`grid gap-2`,htmlFor:`eval-suite-select`,children:[(0,m.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:`Suite`}),(0,m.jsxs)(s,{value:t?.id??``,onValueChange:e.onSelectEval,children:[(0,m.jsx)(a,{id:`eval-suite-select`,className:`h-9 w-full rounded-lg border-border/80 bg-background text-xs hover:border-muted-foreground/60 focus:border-muted-foreground/70 focus:ring-muted-foreground/20`,children:(0,m.jsx)(l,{placeholder:`Select eval`})}),(0,m.jsx)(p,{children:e.evals.map(e=>(0,m.jsx)(i,{value:e.id,children:e.name},e.id))})]})]}),t===void 0?null:(0,m.jsx)(_,{suite:t,enabled:e.enabled})]}),(0,m.jsx)(`main`,{className:`min-w-0`,children:t===void 0?(0,m.jsx)(u,{className:`min-h-0`,title:`No eval suites`,text:`0 eval suite records are available in this Studio runtime.`}):e.result===void 0?(0,m.jsx)(v,{suite:t,enabled:e.enabled,runState:e.runState}):(0,m.jsx)(w,{result:e.result,suite:t})})]})]})})})}function g(e){return(0,m.jsxs)(n,{className:`h-9 shrink-0 gap-1.5 rounded-lg border border-white bg-white px-3 text-sm font-semibold text-black shadow-none hover:border-white hover:bg-white/90 hover:text-black disabled:border-border disabled:bg-muted disabled:text-muted-foreground [&_svg]:!size-3`,disabled:e.disabled,onClick:e.onRun,variant:`ghost`,children:[(0,m.jsx)(t,{icon:d,"aria-hidden":`true`}),e.label]})}function _(e){let t=z(e.suite.metadata),n=e.suite.casePreviewCount??e.suite.casePreviews?.length??0;return(0,m.jsxs)(`div`,{className:`grid gap-4`,children:[(0,m.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,m.jsx)(o,{label:`Cases`,value:String(e.suite.caseCount)}),(0,m.jsx)(o,{label:`Metrics`,value:String(e.suite.metricNames.length)}),(0,m.jsx)(o,{label:`Concurrency`,value:String(e.suite.concurrency??1)}),(0,m.jsx)(o,{label:`Previewed`,value:`${n}/${e.suite.caseCount}`})]}),(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/70 bg-background/45 p-4`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`h2`,{className:`m-0 text-sm font-semibold text-foreground`,children:`Run readiness`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:e.enabled?`This suite is available in the current Studio runtime.`:`Eval routes are not available in the current Studio runtime.`})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:[(0,m.jsx)(A,{label:`Suite id`,value:e.suite.id}),(0,m.jsx)(A,{label:`Metadata keys`,value:t.length>0?t.join(`, `):`None`})]})]})]})}function v(e){return(0,m.jsxs)(`div`,{className:`grid gap-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-4 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(M,{children:`What this eval tests`}),(0,m.jsx)(`p`,{className:`m-0 max-w-3xl text-sm leading-6 text-foreground`,children:e.suite.description??`This suite has no description. Use the dataset and metric definitions below to inspect coverage before running it.`})]}),(0,m.jsx)(O,{metadata:e.suite.metadata})]}),(0,m.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1.35fr)_minmax(320px,0.65fr)]`,children:[(0,m.jsx)(y,{suite:e.suite}),(0,m.jsxs)(`div`,{className:`grid content-start gap-4`,children:[(0,m.jsx)(x,{metrics:e.suite.metricSummaries,metricNames:e.suite.metricNames}),(0,m.jsx)(C,{suite:e.suite,enabled:e.enabled,runState:e.runState})]})]})]})}function y(e){let t=e.suite.casePreviews??[];return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Dataset preview`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[`Showing `,t.length,` of `,e.suite.caseCount,` cases.`]})]}),(0,m.jsxs)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground`,children:[e.suite.caseCount,` cases`]})]}),t.length===0?(0,m.jsx)(j,{children:`No dataset preview is available for this suite.`}):(0,m.jsx)(`div`,{className:`grid gap-3`,children:t.map(e=>(0,m.jsx)(b,{testCase:e},e.id))})]})}function b(e){return(0,m.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/70 bg-card/35 p-4`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,m.jsx)(`h3`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.testCase.id}),e.testCase.metadataKeys===void 0?null:(0,m.jsxs)(`span`,{className:`shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:[e.testCase.metadataKeys.length,` metadata`]})]}),(0,m.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,m.jsx)(k,{label:`Input`,value:e.testCase.input,emptyText:`No input preview`}),(0,m.jsx)(k,{label:`Expected`,value:e.testCase.expected,emptyText:`No expected value`})]})]})}function x(e){let t=e.metrics??e.metricNames.map(e=>({name:e}));return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Metrics`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:`Scoring functions that evaluate every case output.`})]}),t.length===0?(0,m.jsx)(j,{children:`No metrics are configured for this suite.`}):(0,m.jsx)(`div`,{className:`grid gap-2`,children:t.map(e=>(0,m.jsx)(S,{metric:e},e.name))})]})}function S(e){let t=[e.metric.dataType,e.metric.configId===void 0?void 0:`config ${e.metric.configId}`,e.metric.scoreConfigId===void 0?void 0:`score ${e.metric.scoreConfigId}`,e.metric.metadataKeys===void 0?void 0:`${e.metric.metadataKeys.length} metadata`].filter(Boolean);return(0,m.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-card/35 px-3 py-3`,children:[(0,m.jsx)(`div`,{className:` text-sm font-semibold text-foreground`,children:e.metric.name}),(0,m.jsx)(`div`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:t.length>0?t.join(` / `):`No metric metadata`})]})}function C(e){return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Run configuration`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[`This run will execute `,e.suite.caseCount,` cases across`,` `,e.suite.metricNames.length,` metrics.`]})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:[(0,m.jsx)(A,{label:`Concurrency`,value:String(e.suite.concurrency??1)}),(0,m.jsx)(A,{label:`Status`,value:e.enabled?e.runState:`Unavailable`})]})]})}function w(e){let t=P(e.result.result),n=Array.isArray(t.results)?t.results:[];return(0,m.jsxs)(`article`,{className:`grid gap-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Run summary`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[e.result.runId,` / `,new Date(e.result.startedAt).toLocaleTimeString()]})]}),(0,m.jsx)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.suite.name})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-4`,children:[(0,m.jsx)(o,{label:`Passed`,value:String(t.passed??0)}),(0,m.jsx)(o,{label:`Failed`,value:String(t.failed??0)}),(0,m.jsx)(o,{label:`Invalid`,value:String(t.invalid??0)}),(0,m.jsx)(o,{label:`Duration`,value:`${t.durationMs??e.result.durationMs}ms`})]})]}),(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Case results`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:`Each case shows the prompt, expected answer, model output, then metric judgments.`})]}),(0,m.jsxs)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground`,children:[n.length,` cases`]})]}),n.length===0?(0,m.jsx)(j,{children:`No per-case results were returned by this eval run.`}):(0,m.jsx)(`div`,{className:`grid gap-4`,children:n.map((e,t)=>(0,m.jsx)(T,{index:t,result:e},F(e,t)))})]}),(0,m.jsx)(N,{title:`Raw result`,value:e.result.result})]})}function T(e){let t=V(e.result.case)?e.result.case:{},n=Array.isArray(e.result.metrics)?e.result.metrics:[],r=typeof t.id==`string`?t.id:`case-${e.index+1}`,i=I(n),a=L(i);return(0,m.jsxs)(`article`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card/35`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-4 border-b border-border/70 bg-background/35 px-4 py-4`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,m.jsx)(`span`,{className:`flex h-7 min-w-7 items-center justify-center rounded-lg border border-border/80 bg-card/70 text-xs font-semibold text-muted-foreground`,children:e.index+1}),(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`h3`,{className:`m-0 truncate text-base font-semibold text-foreground`,children:r}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[n.length,` metric outcomes / `,i.passed,` pass / `,i.failed,` fail /`,` `,i.invalid,` invalid`]})]})]}),(0,m.jsx)(D,{children:a})]}),(0,m.jsxs)(`div`,{className:`grid gap-4 p-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-3`,children:[(0,m.jsx)(M,{children:`Test case`}),(0,m.jsxs)(`div`,{className:`grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,0.85fr)]`,children:[(0,m.jsx)(k,{label:`Input`,value:t.input,emptyText:`No input`}),(0,m.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 xl:grid-cols-1`,children:[(0,m.jsx)(k,{label:`Expected`,value:t.expected,emptyText:`No expected value`}),(0,m.jsx)(k,{label:`Output`,value:e.result.output,emptyText:`No output`})]})]})]}),e.result.targetError===void 0?null:(0,m.jsx)(k,{label:`Target error`,value:e.result.targetError,emptyText:`No target error`}),(0,m.jsxs)(`section`,{className:`grid gap-3`,children:[(0,m.jsx)(M,{children:`Metric judgments`}),n.length===0?(0,m.jsx)(j,{children:`No metric results were returned for this case.`}):(0,m.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border/70 bg-background/45`,children:[(0,m.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/70 px-3 py-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:[(0,m.jsx)(`span`,{children:`Metric`}),(0,m.jsx)(`span`,{children:`Score`}),(0,m.jsx)(`span`,{className:`text-right`,children:`Status`})]}),(0,m.jsx)(`div`,{className:`grid`,children:n.map((e,t)=>(0,m.jsx)(E,{index:t,metric:e},R(e)))})]})]})]})]})}function E(e){let t=V(e.metric.outcome)?e.metric.outcome:{},n=typeof t.outcome==`string`?t.outcome:`unknown`,r=Array.isArray(e.metric.reporterErrors)?e.metric.reporterErrors:[];return(0,m.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/60 px-3 py-3 last:border-b-0`,children:[(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e.metric.metricName??`metric-${e.index+1}`}),(0,m.jsx)(`div`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:typeof t.comment==`string`?t.comment:typeof t.reason==`string`?t.reason:`No comment`}),r.length>0?(0,m.jsx)(`pre`,{className:`m-0 mt-2 whitespace-pre-wrap break-words rounded-md border border-border/70 bg-card/45 p-2 text-xs leading-5 text-muted-foreground`,children:B(r)}):null]}),(0,m.jsx)(`div`,{className:` text-xs leading-6 text-foreground`,children:`score`in t?B(t.score):`n/a`}),(0,m.jsx)(`div`,{className:`flex justify-end`,children:(0,m.jsx)(D,{children:n})})]})}function D(e){return(0,m.jsx)(c,{className:`h-7 rounded-md bg-card/70 text-foreground`,children:e.children})}function O(e){let t=V(e.metadata)?Object.entries(e.metadata):[];return t.length===0?(0,m.jsx)(j,{children:`No suite metadata was provided.`}):(0,m.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/70 bg-card/35 p-4`,children:[(0,m.jsx)(M,{children:`Suite metadata`}),(0,m.jsx)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:t.map(([e,t])=>(0,m.jsx)(A,{label:e,value:B(t)},e))})]})}function k(e){let t=e.value!==void 0;return(0,m.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/45 p-3`,children:[(0,m.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,m.jsx)(`pre`,{className:`m-0 mt-2 whitespace-pre-wrap break-words text-xs leading-5 text-foreground`,children:t?B(e.value):e.emptyText})]})}function A(e){return(0,m.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,m.jsx)(`span`,{className:`shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.label}),(0,m.jsx)(`span`,{className:`min-w-0 break-words text-right text-xs text-foreground`,children:e.value})]})}function j(e){return(0,m.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-card/35 p-3 text-sm leading-6 text-muted-foreground`,children:e.children})}function M(e){return(0,m.jsx)(`h2`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.children})}function N(e){return(0,m.jsxs)(`details`,{className:`rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsx)(`summary`,{className:`cursor-pointer text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.title}),(0,m.jsx)(`pre`,{className:`mt-3 max-h-[45vh] overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border/70 bg-card/35 p-3 text-xs leading-5 text-foreground`,children:B(e.value)})]})}function P(e){return V(e)?e:{}}function F(e,t){let n=V(e.case)?e.case:{};return typeof n.id==`string`?n.id:`case-${t+1}`}function I(e){return e.reduce((e,t)=>{let n=V(t.outcome)?t.outcome.outcome:void 0;return n===`pass`&&(e.passed+=1),n===`fail`&&(e.failed+=1),n===`invalid`&&(e.invalid+=1),e},{passed:0,failed:0,invalid:0})}function L(e){return e.failed>0?`fail`:e.invalid>0?`invalid`:e.passed>0?`pass`:`unknown`}function R(e){return typeof e.metricName==`string`&&e.metricName.length>0?e.metricName:B(e)}function z(e){return V(e)?Object.keys(e).filter(t=>e[t]!==void 0):[]}function B(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function V(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{h as EvalsPage};
2
+ //# sourceMappingURL=evals-page-C2joY2Qr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evals-page-DkyqKUak.js","names":[],"sources":["../../../src/ui/app/modules/evals/evals-page.tsx"],"sourcesContent":["import { PlayIcon } from \"@hugeicons/core-free-icons\";\nimport type React from \"react\";\nimport type {\n StudioEvalCasePreview,\n StudioEvalMetricSummary,\n StudioEvalRunResponse,\n StudioEvalSuiteConfig,\n} from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport {\n StudioEmptyState,\n StudioMetric,\n StudioPageShell,\n StudioStatusBadge,\n StudioSurface,\n} from \"../../components/ui/studio\";\n\nexport function EvalsPage(props: {\n evals: StudioEvalSuiteConfig[];\n selectedEvalId: string;\n enabled: boolean;\n runState: \"idle\" | \"running\";\n result: StudioEvalRunResponse | undefined;\n onSelectEval: (evalId: string) => void;\n onRun: () => void;\n}) {\n const selected = props.evals.find((suite) => suite.id === props.selectedEvalId) ?? props.evals[0];\n\n return (\n <StudioPageShell>\n <div className=\"grid min-h-0 min-w-0 pb-6 pr-6\">\n <StudioSurface className=\"grid content-start gap-5 overflow-auto p-6\">\n <header className=\"flex min-w-0 items-start justify-between gap-4 border-b border-border/80 pb-5\">\n <div className=\"min-w-0\">\n <p className=\"m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Evals\n </p>\n <h1 className=\"m-0 mt-2 text-2xl font-semibold tracking-tight text-foreground\">\n {selected?.name ?? \"Eval suite\"}\n </h1>\n <p className=\"m-0 mt-2 max-w-2xl text-sm leading-6 text-muted-foreground\">\n {selected?.description ??\n \"Inspect eval datasets, metrics, run configuration, and per-case outcomes.\"}\n </p>\n </div>\n <RunButton\n disabled={!props.enabled || selected === undefined || props.runState === \"running\"}\n label={props.runState === \"running\" ? \"Running\" : \"Run\"}\n onRun={props.onRun}\n />\n </header>\n\n <div className=\"grid gap-5 lg:grid-cols-[340px_minmax(0,1fr)]\">\n <aside className=\"grid content-start gap-4 border-r border-border/80 pr-5 max-lg:border-b max-lg:border-r-0 max-lg:pb-5 max-lg:pr-0\">\n <label className=\"grid gap-2\" htmlFor=\"eval-suite-select\">\n <span className=\" text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n Suite\n </span>\n <Select value={selected?.id ?? \"\"} onValueChange={props.onSelectEval}>\n <SelectTrigger\n id=\"eval-suite-select\"\n className=\"h-9 w-full rounded-lg border-border/80 bg-background text-xs hover:border-muted-foreground/60 focus:border-muted-foreground/70 focus:ring-muted-foreground/20\"\n >\n <SelectValue placeholder=\"Select eval\" />\n </SelectTrigger>\n <SelectContent>\n {props.evals.map((suite) => (\n <SelectItem key={suite.id} value={suite.id}>\n {suite.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n\n {selected === undefined ? null : (\n <SuiteOverview suite={selected} enabled={props.enabled} />\n )}\n </aside>\n\n <main className=\"min-w-0\">\n {selected === undefined ? (\n <StudioEmptyState\n className=\"min-h-0\"\n title=\"No eval suites\"\n text=\"0 eval suite records are available in this Studio runtime.\"\n />\n ) : props.result === undefined ? (\n <BeforeRun suite={selected} enabled={props.enabled} runState={props.runState} />\n ) : (\n <EvalResult result={props.result} suite={selected} />\n )}\n </main>\n </div>\n </StudioSurface>\n </div>\n </StudioPageShell>\n );\n}\n\nfunction RunButton(props: { disabled: boolean; label: string; onRun: () => void }) {\n return (\n <Button\n className=\"h-9 shrink-0 gap-1.5 rounded-lg border border-white bg-white px-3 text-sm font-semibold text-black shadow-none hover:border-white hover:bg-white/90 hover:text-black disabled:border-border disabled:bg-muted disabled:text-muted-foreground [&_svg]:!size-3\"\n disabled={props.disabled}\n onClick={props.onRun}\n variant=\"ghost\"\n >\n <StudioIcon icon={PlayIcon} aria-hidden=\"true\" />\n {props.label}\n </Button>\n );\n}\n\nfunction SuiteOverview(props: { suite: StudioEvalSuiteConfig; enabled: boolean }) {\n const metadataKeys = objectKeys(props.suite.metadata);\n const previewCount = props.suite.casePreviewCount ?? props.suite.casePreviews?.length ?? 0;\n\n return (\n <div className=\"grid gap-4\">\n <div className=\"grid grid-cols-2 gap-2\">\n <StudioMetric label=\"Cases\" value={String(props.suite.caseCount)} />\n <StudioMetric label=\"Metrics\" value={String(props.suite.metricNames.length)} />\n <StudioMetric label=\"Concurrency\" value={String(props.suite.concurrency ?? 1)} />\n <StudioMetric label=\"Previewed\" value={`${previewCount}/${props.suite.caseCount}`} />\n </div>\n\n <section className=\"grid gap-3 rounded-xl border border-border/70 bg-background/45 p-4\">\n <div>\n <h2 className=\"m-0 text-sm font-semibold text-foreground\">Run readiness</h2>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n {props.enabled\n ? \"This suite is available in the current Studio runtime.\"\n : \"Eval routes are not available in the current Studio runtime.\"}\n </p>\n </div>\n <div className=\"grid gap-2 text-xs text-muted-foreground\">\n <KeyValue label=\"Suite id\" value={props.suite.id} />\n <KeyValue\n label=\"Metadata keys\"\n value={metadataKeys.length > 0 ? metadataKeys.join(\", \") : \"None\"}\n />\n </div>\n </section>\n </div>\n );\n}\n\nfunction BeforeRun(props: {\n suite: StudioEvalSuiteConfig;\n enabled: boolean;\n runState: \"idle\" | \"running\";\n}) {\n return (\n <div className=\"grid gap-4\">\n <section className=\"grid gap-4 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"grid gap-1\">\n <SectionLabel>What this eval tests</SectionLabel>\n <p className=\"m-0 max-w-3xl text-sm leading-6 text-foreground\">\n {props.suite.description ??\n \"This suite has no description. Use the dataset and metric definitions below to inspect coverage before running it.\"}\n </p>\n </div>\n <MetadataBlock metadata={props.suite.metadata} />\n </section>\n\n <div className=\"grid gap-4 xl:grid-cols-[minmax(0,1.35fr)_minmax(320px,0.65fr)]\">\n <DatasetPreview suite={props.suite} />\n <div className=\"grid content-start gap-4\">\n <MetricsPanel\n metrics={props.suite.metricSummaries}\n metricNames={props.suite.metricNames}\n />\n <RunSetup suite={props.suite} enabled={props.enabled} runState={props.runState} />\n </div>\n </div>\n </div>\n );\n}\n\nfunction DatasetPreview(props: { suite: StudioEvalSuiteConfig }) {\n const previews = props.suite.casePreviews ?? [];\n\n return (\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <SectionLabel>Dataset preview</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n Showing {previews.length} of {props.suite.caseCount} cases.\n </p>\n </div>\n <span className=\"rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground\">\n {props.suite.caseCount} cases\n </span>\n </div>\n\n {previews.length === 0 ? (\n <MutedPanel>No dataset preview is available for this suite.</MutedPanel>\n ) : (\n <div className=\"grid gap-3\">\n {previews.map((testCase) => (\n <CasePreviewCard key={testCase.id} testCase={testCase} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction CasePreviewCard(props: { testCase: StudioEvalCasePreview }) {\n return (\n <article className=\"grid gap-3 rounded-xl border border-border/70 bg-card/35 p-4\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <h3 className=\"m-0 truncate text-sm font-semibold text-foreground\">{props.testCase.id}</h3>\n {props.testCase.metadataKeys === undefined ? null : (\n <span className=\"shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.testCase.metadataKeys.length} metadata\n </span>\n )}\n </div>\n <div className=\"grid gap-3 md:grid-cols-2\">\n <ValuePanel label=\"Input\" value={props.testCase.input} emptyText=\"No input preview\" />\n <ValuePanel\n label=\"Expected\"\n value={props.testCase.expected}\n emptyText=\"No expected value\"\n />\n </div>\n </article>\n );\n}\n\nfunction MetricsPanel(props: {\n metrics: StudioEvalMetricSummary[] | undefined;\n metricNames: string[];\n}) {\n const metrics =\n props.metrics ??\n props.metricNames.map(\n (name): StudioEvalMetricSummary => ({\n name,\n }),\n );\n\n return (\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div>\n <SectionLabel>Metrics</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n Scoring functions that evaluate every case output.\n </p>\n </div>\n {metrics.length === 0 ? (\n <MutedPanel>No metrics are configured for this suite.</MutedPanel>\n ) : (\n <div className=\"grid gap-2\">\n {metrics.map((metric) => (\n <MetricSummaryRow key={metric.name} metric={metric} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction MetricSummaryRow(props: { metric: StudioEvalMetricSummary }) {\n const details = [\n props.metric.dataType,\n props.metric.configId === undefined ? undefined : `config ${props.metric.configId}`,\n props.metric.scoreConfigId === undefined ? undefined : `score ${props.metric.scoreConfigId}`,\n props.metric.metadataKeys === undefined\n ? undefined\n : `${props.metric.metadataKeys.length} metadata`,\n ].filter(Boolean);\n\n return (\n <div className=\"rounded-lg border border-border/70 bg-card/35 px-3 py-3\">\n <div className=\" text-sm font-semibold text-foreground\">{props.metric.name}</div>\n <div className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {details.length > 0 ? details.join(\" / \") : \"No metric metadata\"}\n </div>\n </div>\n );\n}\n\nfunction RunSetup(props: {\n suite: StudioEvalSuiteConfig;\n enabled: boolean;\n runState: \"idle\" | \"running\";\n}) {\n return (\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div>\n <SectionLabel>Run configuration</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n This run will execute {props.suite.caseCount} cases across{\" \"}\n {props.suite.metricNames.length} metrics.\n </p>\n </div>\n <div className=\"grid gap-2 text-xs text-muted-foreground\">\n <KeyValue label=\"Concurrency\" value={String(props.suite.concurrency ?? 1)} />\n <KeyValue label=\"Status\" value={props.enabled ? props.runState : \"Unavailable\"} />\n </div>\n </section>\n );\n}\n\nfunction EvalResult(props: { result: StudioEvalRunResponse; suite: StudioEvalSuiteConfig }) {\n const result = runResult(props.result.result);\n const cases = Array.isArray(result.results) ? result.results : [];\n\n return (\n <article className=\"grid gap-4\">\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-3\">\n <div>\n <SectionLabel>Run summary</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n {props.result.runId} / {new Date(props.result.startedAt).toLocaleTimeString()}\n </p>\n </div>\n <span className=\"rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.suite.name}\n </span>\n </div>\n <div className=\"grid gap-2 sm:grid-cols-4\">\n <StudioMetric label=\"Passed\" value={String(result.passed ?? 0)} />\n <StudioMetric label=\"Failed\" value={String(result.failed ?? 0)} />\n <StudioMetric label=\"Invalid\" value={String(result.invalid ?? 0)} />\n <StudioMetric\n label=\"Duration\"\n value={`${result.durationMs ?? props.result.durationMs}ms`}\n />\n </div>\n </section>\n\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-3\">\n <div>\n <SectionLabel>Case results</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n Each case shows the prompt, expected answer, model output, then metric judgments.\n </p>\n </div>\n <span className=\"rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground\">\n {cases.length} cases\n </span>\n </div>\n {cases.length === 0 ? (\n <MutedPanel>No per-case results were returned by this eval run.</MutedPanel>\n ) : (\n <div className=\"grid gap-4\">\n {cases.map((testCase, index) => (\n <CaseResultCard\n index={index}\n key={caseResultKey(testCase, index)}\n result={testCase}\n />\n ))}\n </div>\n )}\n </section>\n\n <RawDetails title=\"Raw result\" value={props.result.result} />\n </article>\n );\n}\n\nfunction CaseResultCard(props: { index: number; result: EvalCaseRunResult }) {\n const testCase = isRecord(props.result.case) ? props.result.case : {};\n const metrics = Array.isArray(props.result.metrics) ? props.result.metrics : [];\n const caseId = typeof testCase.id === \"string\" ? testCase.id : `case-${props.index + 1}`;\n const counts = metricOutcomeCounts(metrics);\n const primaryStatus = casePrimaryStatus(counts);\n\n return (\n <article className=\"overflow-hidden rounded-xl border border-border/70 bg-card/35\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-4 border-b border-border/70 bg-background/35 px-4 py-4\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <span className=\"flex h-7 min-w-7 items-center justify-center rounded-lg border border-border/80 bg-card/70 text-xs font-semibold text-muted-foreground\">\n {props.index + 1}\n </span>\n <div className=\"min-w-0\">\n <h3 className=\"m-0 truncate text-base font-semibold text-foreground\">{caseId}</h3>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n {metrics.length} metric outcomes / {counts.passed} pass / {counts.failed} fail /{\" \"}\n {counts.invalid} invalid\n </p>\n </div>\n </div>\n <StatusBadge>{primaryStatus}</StatusBadge>\n </div>\n\n <div className=\"grid gap-4 p-4\">\n <section className=\"grid gap-3\">\n <SectionLabel>Test case</SectionLabel>\n <div className=\"grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,0.85fr)]\">\n <ValuePanel label=\"Input\" value={testCase.input} emptyText=\"No input\" />\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-1\">\n <ValuePanel\n label=\"Expected\"\n value={testCase.expected}\n emptyText=\"No expected value\"\n />\n <ValuePanel label=\"Output\" value={props.result.output} emptyText=\"No output\" />\n </div>\n </div>\n </section>\n\n {props.result.targetError === undefined ? null : (\n <ValuePanel\n label=\"Target error\"\n value={props.result.targetError}\n emptyText=\"No target error\"\n />\n )}\n\n <section className=\"grid gap-3\">\n <SectionLabel>Metric judgments</SectionLabel>\n {metrics.length === 0 ? (\n <MutedPanel>No metric results were returned for this case.</MutedPanel>\n ) : (\n <div className=\"overflow-hidden rounded-lg border border-border/70 bg-background/45\">\n <div className=\"grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/70 px-3 py-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n <span>Metric</span>\n <span>Score</span>\n <span className=\"text-right\">Status</span>\n </div>\n <div className=\"grid\">\n {metrics.map((metric, index) => (\n <MetricOutcomeRow index={index} key={metricOutcomeKey(metric)} metric={metric} />\n ))}\n </div>\n </div>\n )}\n </section>\n </div>\n </article>\n );\n}\n\nfunction MetricOutcomeRow(props: { index: number; metric: EvalMetricRunResult }) {\n const outcome = isRecord(props.metric.outcome) ? props.metric.outcome : {};\n const status = typeof outcome.outcome === \"string\" ? outcome.outcome : \"unknown\";\n const reporterErrors = Array.isArray(props.metric.reporterErrors)\n ? props.metric.reporterErrors\n : [];\n\n return (\n <div className=\"grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/60 px-3 py-3 last:border-b-0\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-foreground\">\n {props.metric.metricName ?? `metric-${props.index + 1}`}\n </div>\n <div className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {typeof outcome.comment === \"string\"\n ? outcome.comment\n : typeof outcome.reason === \"string\"\n ? outcome.reason\n : \"No comment\"}\n </div>\n {reporterErrors.length > 0 ? (\n <pre className=\"m-0 mt-2 whitespace-pre-wrap break-words rounded-md border border-border/70 bg-card/45 p-2 text-xs leading-5 text-muted-foreground\">\n {formatValue(reporterErrors)}\n </pre>\n ) : null}\n </div>\n <div className=\" text-xs leading-6 text-foreground\">\n {\"score\" in outcome ? formatValue(outcome.score) : \"n/a\"}\n </div>\n <div className=\"flex justify-end\">\n <StatusBadge>{status}</StatusBadge>\n </div>\n </div>\n );\n}\n\nfunction StatusBadge(props: { children: React.ReactNode }) {\n return (\n <StudioStatusBadge className=\"h-7 rounded-md bg-card/70 text-foreground\">\n {props.children}\n </StudioStatusBadge>\n );\n}\n\nfunction MetadataBlock(props: { metadata: unknown }) {\n const entries = isRecord(props.metadata) ? Object.entries(props.metadata) : [];\n if (entries.length === 0) {\n return <MutedPanel>No suite metadata was provided.</MutedPanel>;\n }\n\n return (\n <div className=\"grid gap-2 rounded-xl border border-border/70 bg-card/35 p-4\">\n <SectionLabel>Suite metadata</SectionLabel>\n <div className=\"grid gap-2 text-xs text-muted-foreground\">\n {entries.map(([key, value]) => (\n <KeyValue key={key} label={key} value={formatValue(value)} />\n ))}\n </div>\n </div>\n );\n}\n\nfunction ValuePanel(props: { label: string; value: unknown; emptyText: string }) {\n const hasValue = props.value !== undefined;\n\n return (\n <div className=\"min-w-0 rounded-lg border border-border/70 bg-background/45 p-3\">\n <div className=\" text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.label}\n </div>\n <pre className=\"m-0 mt-2 whitespace-pre-wrap break-words text-xs leading-5 text-foreground\">\n {hasValue ? formatValue(props.value) : props.emptyText}\n </pre>\n </div>\n );\n}\n\nfunction KeyValue(props: { label: string; value: string }) {\n return (\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <span className=\"shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"min-w-0 break-words text-right text-xs text-foreground\">{props.value}</span>\n </div>\n );\n}\n\nfunction MutedPanel(props: { children: React.ReactNode }) {\n return (\n <div className=\"rounded-lg border border-border/70 bg-card/35 p-3 text-sm leading-6 text-muted-foreground\">\n {props.children}\n </div>\n );\n}\n\nfunction SectionLabel(props: { children: React.ReactNode }) {\n return (\n <h2 className=\"m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.children}\n </h2>\n );\n}\n\nfunction RawDetails(props: { title: string; value: unknown }) {\n return (\n <details className=\"rounded-xl border border-border/80 bg-background/45 p-5\">\n <summary className=\"cursor-pointer text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.title}\n </summary>\n <pre className=\"mt-3 max-h-[45vh] overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border/70 bg-card/35 p-3 text-xs leading-5 text-foreground\">\n {formatValue(props.value)}\n </pre>\n </details>\n );\n}\n\ntype EvalSuiteRunResult = {\n passed?: number;\n failed?: number;\n invalid?: number;\n durationMs?: number;\n results?: EvalCaseRunResult[];\n};\n\ntype EvalCaseRunResult = {\n case?: unknown;\n output?: unknown;\n targetError?: unknown;\n metrics?: EvalMetricRunResult[];\n};\n\ntype EvalMetricRunResult = {\n metricName?: string;\n outcome?: unknown;\n reporterErrors?: unknown[];\n};\n\nfunction runResult(value: unknown): EvalSuiteRunResult {\n return isRecord(value) ? (value as EvalSuiteRunResult) : {};\n}\n\nfunction caseResultKey(result: EvalCaseRunResult, index: number): string {\n const testCase = isRecord(result.case) ? result.case : {};\n return typeof testCase.id === \"string\" ? testCase.id : `case-${index + 1}`;\n}\n\nfunction metricOutcomeCounts(metrics: EvalMetricRunResult[]): {\n passed: number;\n failed: number;\n invalid: number;\n} {\n return metrics.reduce(\n (counts, metric) => {\n const outcome = isRecord(metric.outcome) ? metric.outcome.outcome : undefined;\n if (outcome === \"pass\") {\n counts.passed += 1;\n }\n if (outcome === \"fail\") {\n counts.failed += 1;\n }\n if (outcome === \"invalid\") {\n counts.invalid += 1;\n }\n return counts;\n },\n { passed: 0, failed: 0, invalid: 0 },\n );\n}\n\nfunction casePrimaryStatus(counts: { passed: number; failed: number; invalid: number }): string {\n if (counts.failed > 0) {\n return \"fail\";\n }\n if (counts.invalid > 0) {\n return \"invalid\";\n }\n if (counts.passed > 0) {\n return \"pass\";\n }\n return \"unknown\";\n}\n\nfunction metricOutcomeKey(result: EvalMetricRunResult): string {\n if (typeof result.metricName === \"string\" && result.metricName.length > 0) {\n return result.metricName;\n }\n return formatValue(result);\n}\n\nfunction objectKeys(value: unknown): string[] {\n return isRecord(value) ? Object.keys(value).filter((key) => value[key] !== undefined) : [];\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"evals-page-C2joY2Qr.js","names":[],"sources":["../../../src/ui/app/modules/evals/evals-page.tsx"],"sourcesContent":["import { PlayIcon } from \"@hugeicons/core-free-icons\";\nimport type React from \"react\";\nimport type {\n StudioEvalCasePreview,\n StudioEvalMetricSummary,\n StudioEvalRunResponse,\n StudioEvalSuiteConfig,\n} from \"../../../../types\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../components/ui/select\";\nimport {\n StudioEmptyState,\n StudioMetric,\n StudioPageShell,\n StudioStatusBadge,\n StudioSurface,\n} from \"../../components/ui/studio\";\n\nexport function EvalsPage(props: {\n evals: StudioEvalSuiteConfig[];\n selectedEvalId: string;\n enabled: boolean;\n runState: \"idle\" | \"running\";\n result: StudioEvalRunResponse | undefined;\n onSelectEval: (evalId: string) => void;\n onRun: () => void;\n}) {\n const selected = props.evals.find((suite) => suite.id === props.selectedEvalId) ?? props.evals[0];\n\n return (\n <StudioPageShell>\n <div className=\"grid min-h-0 min-w-0 pb-6 pr-6\">\n <StudioSurface className=\"grid content-start gap-5 overflow-auto p-6\">\n <header className=\"flex min-w-0 items-start justify-between gap-4 border-b border-border/80 pb-5\">\n <div className=\"min-w-0\">\n <p className=\"m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n Evals\n </p>\n <h1 className=\"m-0 mt-2 text-2xl font-semibold tracking-tight text-foreground\">\n {selected?.name ?? \"Eval suite\"}\n </h1>\n <p className=\"m-0 mt-2 max-w-2xl text-sm leading-6 text-muted-foreground\">\n {selected?.description ??\n \"Inspect eval datasets, metrics, run configuration, and per-case outcomes.\"}\n </p>\n </div>\n <RunButton\n disabled={!props.enabled || selected === undefined || props.runState === \"running\"}\n label={props.runState === \"running\" ? \"Running\" : \"Run\"}\n onRun={props.onRun}\n />\n </header>\n\n <div className=\"grid gap-5 lg:grid-cols-[340px_minmax(0,1fr)]\">\n <aside className=\"grid content-start gap-4 border-r border-border/80 pr-5 max-lg:border-b max-lg:border-r-0 max-lg:pb-5 max-lg:pr-0\">\n <label className=\"grid gap-2\" htmlFor=\"eval-suite-select\">\n <span className=\" text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n Suite\n </span>\n <Select value={selected?.id ?? \"\"} onValueChange={props.onSelectEval}>\n <SelectTrigger\n id=\"eval-suite-select\"\n className=\"h-9 w-full rounded-lg border-border/80 bg-background text-xs hover:border-muted-foreground/60 focus:border-muted-foreground/70 focus:ring-muted-foreground/20\"\n >\n <SelectValue placeholder=\"Select eval\" />\n </SelectTrigger>\n <SelectContent>\n {props.evals.map((suite) => (\n <SelectItem key={suite.id} value={suite.id}>\n {suite.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </label>\n\n {selected === undefined ? null : (\n <SuiteOverview suite={selected} enabled={props.enabled} />\n )}\n </aside>\n\n <main className=\"min-w-0\">\n {selected === undefined ? (\n <StudioEmptyState\n className=\"min-h-0\"\n title=\"No eval suites\"\n text=\"0 eval suite records are available in this Studio runtime.\"\n />\n ) : props.result === undefined ? (\n <BeforeRun suite={selected} enabled={props.enabled} runState={props.runState} />\n ) : (\n <EvalResult result={props.result} suite={selected} />\n )}\n </main>\n </div>\n </StudioSurface>\n </div>\n </StudioPageShell>\n );\n}\n\nfunction RunButton(props: { disabled: boolean; label: string; onRun: () => void }) {\n return (\n <Button\n className=\"h-9 shrink-0 gap-1.5 rounded-lg border border-white bg-white px-3 text-sm font-semibold text-black shadow-none hover:border-white hover:bg-white/90 hover:text-black disabled:border-border disabled:bg-muted disabled:text-muted-foreground [&_svg]:!size-3\"\n disabled={props.disabled}\n onClick={props.onRun}\n variant=\"ghost\"\n >\n <StudioIcon icon={PlayIcon} aria-hidden=\"true\" />\n {props.label}\n </Button>\n );\n}\n\nfunction SuiteOverview(props: { suite: StudioEvalSuiteConfig; enabled: boolean }) {\n const metadataKeys = objectKeys(props.suite.metadata);\n const previewCount = props.suite.casePreviewCount ?? props.suite.casePreviews?.length ?? 0;\n\n return (\n <div className=\"grid gap-4\">\n <div className=\"grid grid-cols-2 gap-2\">\n <StudioMetric label=\"Cases\" value={String(props.suite.caseCount)} />\n <StudioMetric label=\"Metrics\" value={String(props.suite.metricNames.length)} />\n <StudioMetric label=\"Concurrency\" value={String(props.suite.concurrency ?? 1)} />\n <StudioMetric label=\"Previewed\" value={`${previewCount}/${props.suite.caseCount}`} />\n </div>\n\n <section className=\"grid gap-3 rounded-xl border border-border/70 bg-background/45 p-4\">\n <div>\n <h2 className=\"m-0 text-sm font-semibold text-foreground\">Run readiness</h2>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n {props.enabled\n ? \"This suite is available in the current Studio runtime.\"\n : \"Eval routes are not available in the current Studio runtime.\"}\n </p>\n </div>\n <div className=\"grid gap-2 text-xs text-muted-foreground\">\n <KeyValue label=\"Suite id\" value={props.suite.id} />\n <KeyValue\n label=\"Metadata keys\"\n value={metadataKeys.length > 0 ? metadataKeys.join(\", \") : \"None\"}\n />\n </div>\n </section>\n </div>\n );\n}\n\nfunction BeforeRun(props: {\n suite: StudioEvalSuiteConfig;\n enabled: boolean;\n runState: \"idle\" | \"running\";\n}) {\n return (\n <div className=\"grid gap-4\">\n <section className=\"grid gap-4 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"grid gap-1\">\n <SectionLabel>What this eval tests</SectionLabel>\n <p className=\"m-0 max-w-3xl text-sm leading-6 text-foreground\">\n {props.suite.description ??\n \"This suite has no description. Use the dataset and metric definitions below to inspect coverage before running it.\"}\n </p>\n </div>\n <MetadataBlock metadata={props.suite.metadata} />\n </section>\n\n <div className=\"grid gap-4 xl:grid-cols-[minmax(0,1.35fr)_minmax(320px,0.65fr)]\">\n <DatasetPreview suite={props.suite} />\n <div className=\"grid content-start gap-4\">\n <MetricsPanel\n metrics={props.suite.metricSummaries}\n metricNames={props.suite.metricNames}\n />\n <RunSetup suite={props.suite} enabled={props.enabled} runState={props.runState} />\n </div>\n </div>\n </div>\n );\n}\n\nfunction DatasetPreview(props: { suite: StudioEvalSuiteConfig }) {\n const previews = props.suite.casePreviews ?? [];\n\n return (\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <SectionLabel>Dataset preview</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n Showing {previews.length} of {props.suite.caseCount} cases.\n </p>\n </div>\n <span className=\"rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground\">\n {props.suite.caseCount} cases\n </span>\n </div>\n\n {previews.length === 0 ? (\n <MutedPanel>No dataset preview is available for this suite.</MutedPanel>\n ) : (\n <div className=\"grid gap-3\">\n {previews.map((testCase) => (\n <CasePreviewCard key={testCase.id} testCase={testCase} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction CasePreviewCard(props: { testCase: StudioEvalCasePreview }) {\n return (\n <article className=\"grid gap-3 rounded-xl border border-border/70 bg-card/35 p-4\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <h3 className=\"m-0 truncate text-sm font-semibold text-foreground\">{props.testCase.id}</h3>\n {props.testCase.metadataKeys === undefined ? null : (\n <span className=\"shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.testCase.metadataKeys.length} metadata\n </span>\n )}\n </div>\n <div className=\"grid gap-3 md:grid-cols-2\">\n <ValuePanel label=\"Input\" value={props.testCase.input} emptyText=\"No input preview\" />\n <ValuePanel\n label=\"Expected\"\n value={props.testCase.expected}\n emptyText=\"No expected value\"\n />\n </div>\n </article>\n );\n}\n\nfunction MetricsPanel(props: {\n metrics: StudioEvalMetricSummary[] | undefined;\n metricNames: string[];\n}) {\n const metrics =\n props.metrics ??\n props.metricNames.map(\n (name): StudioEvalMetricSummary => ({\n name,\n }),\n );\n\n return (\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div>\n <SectionLabel>Metrics</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n Scoring functions that evaluate every case output.\n </p>\n </div>\n {metrics.length === 0 ? (\n <MutedPanel>No metrics are configured for this suite.</MutedPanel>\n ) : (\n <div className=\"grid gap-2\">\n {metrics.map((metric) => (\n <MetricSummaryRow key={metric.name} metric={metric} />\n ))}\n </div>\n )}\n </section>\n );\n}\n\nfunction MetricSummaryRow(props: { metric: StudioEvalMetricSummary }) {\n const details = [\n props.metric.dataType,\n props.metric.configId === undefined ? undefined : `config ${props.metric.configId}`,\n props.metric.scoreConfigId === undefined ? undefined : `score ${props.metric.scoreConfigId}`,\n props.metric.metadataKeys === undefined\n ? undefined\n : `${props.metric.metadataKeys.length} metadata`,\n ].filter(Boolean);\n\n return (\n <div className=\"rounded-lg border border-border/70 bg-card/35 px-3 py-3\">\n <div className=\" text-sm font-semibold text-foreground\">{props.metric.name}</div>\n <div className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {details.length > 0 ? details.join(\" / \") : \"No metric metadata\"}\n </div>\n </div>\n );\n}\n\nfunction RunSetup(props: {\n suite: StudioEvalSuiteConfig;\n enabled: boolean;\n runState: \"idle\" | \"running\";\n}) {\n return (\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div>\n <SectionLabel>Run configuration</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n This run will execute {props.suite.caseCount} cases across{\" \"}\n {props.suite.metricNames.length} metrics.\n </p>\n </div>\n <div className=\"grid gap-2 text-xs text-muted-foreground\">\n <KeyValue label=\"Concurrency\" value={String(props.suite.concurrency ?? 1)} />\n <KeyValue label=\"Status\" value={props.enabled ? props.runState : \"Unavailable\"} />\n </div>\n </section>\n );\n}\n\nfunction EvalResult(props: { result: StudioEvalRunResponse; suite: StudioEvalSuiteConfig }) {\n const result = runResult(props.result.result);\n const cases = Array.isArray(result.results) ? result.results : [];\n\n return (\n <article className=\"grid gap-4\">\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-3\">\n <div>\n <SectionLabel>Run summary</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n {props.result.runId} / {new Date(props.result.startedAt).toLocaleTimeString()}\n </p>\n </div>\n <span className=\"rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.suite.name}\n </span>\n </div>\n <div className=\"grid gap-2 sm:grid-cols-4\">\n <StudioMetric label=\"Passed\" value={String(result.passed ?? 0)} />\n <StudioMetric label=\"Failed\" value={String(result.failed ?? 0)} />\n <StudioMetric label=\"Invalid\" value={String(result.invalid ?? 0)} />\n <StudioMetric\n label=\"Duration\"\n value={`${result.durationMs ?? props.result.durationMs}ms`}\n />\n </div>\n </section>\n\n <section className=\"grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-3\">\n <div>\n <SectionLabel>Case results</SectionLabel>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n Each case shows the prompt, expected answer, model output, then metric judgments.\n </p>\n </div>\n <span className=\"rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground\">\n {cases.length} cases\n </span>\n </div>\n {cases.length === 0 ? (\n <MutedPanel>No per-case results were returned by this eval run.</MutedPanel>\n ) : (\n <div className=\"grid gap-4\">\n {cases.map((testCase, index) => (\n <CaseResultCard\n index={index}\n key={caseResultKey(testCase, index)}\n result={testCase}\n />\n ))}\n </div>\n )}\n </section>\n\n <RawDetails title=\"Raw result\" value={props.result.result} />\n </article>\n );\n}\n\nfunction CaseResultCard(props: { index: number; result: EvalCaseRunResult }) {\n const testCase = isRecord(props.result.case) ? props.result.case : {};\n const metrics = Array.isArray(props.result.metrics) ? props.result.metrics : [];\n const caseId = typeof testCase.id === \"string\" ? testCase.id : `case-${props.index + 1}`;\n const counts = metricOutcomeCounts(metrics);\n const primaryStatus = casePrimaryStatus(counts);\n\n return (\n <article className=\"overflow-hidden rounded-xl border border-border/70 bg-card/35\">\n <div className=\"flex min-w-0 flex-wrap items-start justify-between gap-4 border-b border-border/70 bg-background/35 px-4 py-4\">\n <div className=\"flex min-w-0 items-start gap-3\">\n <span className=\"flex h-7 min-w-7 items-center justify-center rounded-lg border border-border/80 bg-card/70 text-xs font-semibold text-muted-foreground\">\n {props.index + 1}\n </span>\n <div className=\"min-w-0\">\n <h3 className=\"m-0 truncate text-base font-semibold text-foreground\">{caseId}</h3>\n <p className=\"m-0 mt-1 text-xs leading-5 text-muted-foreground\">\n {metrics.length} metric outcomes / {counts.passed} pass / {counts.failed} fail /{\" \"}\n {counts.invalid} invalid\n </p>\n </div>\n </div>\n <StatusBadge>{primaryStatus}</StatusBadge>\n </div>\n\n <div className=\"grid gap-4 p-4\">\n <section className=\"grid gap-3\">\n <SectionLabel>Test case</SectionLabel>\n <div className=\"grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,0.85fr)]\">\n <ValuePanel label=\"Input\" value={testCase.input} emptyText=\"No input\" />\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-1\">\n <ValuePanel\n label=\"Expected\"\n value={testCase.expected}\n emptyText=\"No expected value\"\n />\n <ValuePanel label=\"Output\" value={props.result.output} emptyText=\"No output\" />\n </div>\n </div>\n </section>\n\n {props.result.targetError === undefined ? null : (\n <ValuePanel\n label=\"Target error\"\n value={props.result.targetError}\n emptyText=\"No target error\"\n />\n )}\n\n <section className=\"grid gap-3\">\n <SectionLabel>Metric judgments</SectionLabel>\n {metrics.length === 0 ? (\n <MutedPanel>No metric results were returned for this case.</MutedPanel>\n ) : (\n <div className=\"overflow-hidden rounded-lg border border-border/70 bg-background/45\">\n <div className=\"grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/70 px-3 py-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n <span>Metric</span>\n <span>Score</span>\n <span className=\"text-right\">Status</span>\n </div>\n <div className=\"grid\">\n {metrics.map((metric, index) => (\n <MetricOutcomeRow index={index} key={metricOutcomeKey(metric)} metric={metric} />\n ))}\n </div>\n </div>\n )}\n </section>\n </div>\n </article>\n );\n}\n\nfunction MetricOutcomeRow(props: { index: number; metric: EvalMetricRunResult }) {\n const outcome = isRecord(props.metric.outcome) ? props.metric.outcome : {};\n const status = typeof outcome.outcome === \"string\" ? outcome.outcome : \"unknown\";\n const reporterErrors = Array.isArray(props.metric.reporterErrors)\n ? props.metric.reporterErrors\n : [];\n\n return (\n <div className=\"grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/60 px-3 py-3 last:border-b-0\">\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold text-foreground\">\n {props.metric.metricName ?? `metric-${props.index + 1}`}\n </div>\n <div className=\"mt-1 text-xs leading-5 text-muted-foreground\">\n {typeof outcome.comment === \"string\"\n ? outcome.comment\n : typeof outcome.reason === \"string\"\n ? outcome.reason\n : \"No comment\"}\n </div>\n {reporterErrors.length > 0 ? (\n <pre className=\"m-0 mt-2 whitespace-pre-wrap break-words rounded-md border border-border/70 bg-card/45 p-2 text-xs leading-5 text-muted-foreground\">\n {formatValue(reporterErrors)}\n </pre>\n ) : null}\n </div>\n <div className=\" text-xs leading-6 text-foreground\">\n {\"score\" in outcome ? formatValue(outcome.score) : \"n/a\"}\n </div>\n <div className=\"flex justify-end\">\n <StatusBadge>{status}</StatusBadge>\n </div>\n </div>\n );\n}\n\nfunction StatusBadge(props: { children: React.ReactNode }) {\n return (\n <StudioStatusBadge className=\"h-7 rounded-md bg-card/70 text-foreground\">\n {props.children}\n </StudioStatusBadge>\n );\n}\n\nfunction MetadataBlock(props: { metadata: unknown }) {\n const entries = isRecord(props.metadata) ? Object.entries(props.metadata) : [];\n if (entries.length === 0) {\n return <MutedPanel>No suite metadata was provided.</MutedPanel>;\n }\n\n return (\n <div className=\"grid gap-2 rounded-xl border border-border/70 bg-card/35 p-4\">\n <SectionLabel>Suite metadata</SectionLabel>\n <div className=\"grid gap-2 text-xs text-muted-foreground\">\n {entries.map(([key, value]) => (\n <KeyValue key={key} label={key} value={formatValue(value)} />\n ))}\n </div>\n </div>\n );\n}\n\nfunction ValuePanel(props: { label: string; value: unknown; emptyText: string }) {\n const hasValue = props.value !== undefined;\n\n return (\n <div className=\"min-w-0 rounded-lg border border-border/70 bg-background/45 p-3\">\n <div className=\" text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground\">\n {props.label}\n </div>\n <pre className=\"m-0 mt-2 whitespace-pre-wrap break-words text-xs leading-5 text-foreground\">\n {hasValue ? formatValue(props.value) : props.emptyText}\n </pre>\n </div>\n );\n}\n\nfunction KeyValue(props: { label: string; value: string }) {\n return (\n <div className=\"flex min-w-0 items-start justify-between gap-3\">\n <span className=\"shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\"min-w-0 break-words text-right text-xs text-foreground\">{props.value}</span>\n </div>\n );\n}\n\nfunction MutedPanel(props: { children: React.ReactNode }) {\n return (\n <div className=\"rounded-lg border border-border/70 bg-card/35 p-3 text-sm leading-6 text-muted-foreground\">\n {props.children}\n </div>\n );\n}\n\nfunction SectionLabel(props: { children: React.ReactNode }) {\n return (\n <h2 className=\"m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.children}\n </h2>\n );\n}\n\nfunction RawDetails(props: { title: string; value: unknown }) {\n return (\n <details className=\"rounded-xl border border-border/80 bg-background/45 p-5\">\n <summary className=\"cursor-pointer text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground\">\n {props.title}\n </summary>\n <pre className=\"mt-3 max-h-[45vh] overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border/70 bg-card/35 p-3 text-xs leading-5 text-foreground\">\n {formatValue(props.value)}\n </pre>\n </details>\n );\n}\n\ntype EvalSuiteRunResult = {\n passed?: number;\n failed?: number;\n invalid?: number;\n durationMs?: number;\n results?: EvalCaseRunResult[];\n};\n\ntype EvalCaseRunResult = {\n case?: unknown;\n output?: unknown;\n targetError?: unknown;\n metrics?: EvalMetricRunResult[];\n};\n\ntype EvalMetricRunResult = {\n metricName?: string;\n outcome?: unknown;\n reporterErrors?: unknown[];\n};\n\nfunction runResult(value: unknown): EvalSuiteRunResult {\n return isRecord(value) ? (value as EvalSuiteRunResult) : {};\n}\n\nfunction caseResultKey(result: EvalCaseRunResult, index: number): string {\n const testCase = isRecord(result.case) ? result.case : {};\n return typeof testCase.id === \"string\" ? testCase.id : `case-${index + 1}`;\n}\n\nfunction metricOutcomeCounts(metrics: EvalMetricRunResult[]): {\n passed: number;\n failed: number;\n invalid: number;\n} {\n return metrics.reduce(\n (counts, metric) => {\n const outcome = isRecord(metric.outcome) ? metric.outcome.outcome : undefined;\n if (outcome === \"pass\") {\n counts.passed += 1;\n }\n if (outcome === \"fail\") {\n counts.failed += 1;\n }\n if (outcome === \"invalid\") {\n counts.invalid += 1;\n }\n return counts;\n },\n { passed: 0, failed: 0, invalid: 0 },\n );\n}\n\nfunction casePrimaryStatus(counts: { passed: number; failed: number; invalid: number }): string {\n if (counts.failed > 0) {\n return \"fail\";\n }\n if (counts.invalid > 0) {\n return \"invalid\";\n }\n if (counts.passed > 0) {\n return \"pass\";\n }\n return \"unknown\";\n}\n\nfunction metricOutcomeKey(result: EvalMetricRunResult): string {\n if (typeof result.metricName === \"string\" && result.metricName.length > 0) {\n return result.metricName;\n }\n return formatValue(result);\n}\n\nfunction objectKeys(value: unknown): string[] {\n return isRecord(value) ? Object.keys(value).filter((key) => value[key] !== undefined) : [];\n}\n\nfunction formatValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ @import "https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700;800&display=swap";@keyframes anvia-stream-gradient-settle{to{opacity:1}}[data-anvia-stream-reveal]{opacity:var(--anvia-stream-reveal-opacity,1);animation:anvia-stream-gradient-settle var(--anvia-stream-reveal-duration,.18s) linear both}@media (prefers-reduced-motion:reduce){[data-anvia-stream-reveal]{opacity:1;animation:none}}@layer components;@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-divide-x-reverse:0;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-serif:var(--font-serif);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-yellow-500:oklch(79.5% .184 86.047);--color-zinc-100:oklch(96.7% .001 286.375);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--leading-tight:1.25;--radius-2xl:1rem;--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--shadow:var(--shadow)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--muted-foreground) transparent}@supports (color:color-mix(in lab, red, red)){*{scrollbar-color:color-mix(in oklch, var(--muted-foreground) 38%, transparent) transparent}}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--background);max-width:100%;height:100%;font-size:16px;overflow:hidden}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background-color:var(--background);color:var(--foreground);background:radial-gradient(circle at 20% -10%, #ffffff0a, transparent 30rem), radial-gradient(circle at 88% 8%, #ffffff08, transparent 28rem), var(--background);width:100%;min-width:320px;max-width:100%;height:100%;font-family:var(--font-sans);font-feature-settings:"cv02", "cv03", "cv04", "cv11";font-variant-numeric:tabular-nums;letter-spacing:0;text-rendering:geometricprecision;margin:0;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}body:before{z-index:0;pointer-events:none;content:"";opacity:.22;background-image:linear-gradient(#e4e8ec08 1px,#0000 1px),linear-gradient(90deg,#e4e8ec06 1px,#0000 1px),radial-gradient(circle at 25% 15%,#ffffff0d,#0000 18rem);background-size:84px 84px,84px 84px,auto;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 88%);mask-image:linear-gradient(#000,#0000 88%)}#anvia-ui{isolation:isolate;z-index:1;width:100%;max-width:100%;height:100dvh;position:relative;overflow:hidden}::selection{background:#ffffff3d}.shell-loading{background:linear-gradient(#ffffff0e 1px, transparent 1px), linear-gradient(90deg, #ffffff0e 1px, transparent 1px), var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);background-size:84px 84px,84px 84px,auto;place-items:center;display:grid}.studio-logo-lockup{justify-content:center;align-items:center;gap:.5rem;max-width:100%;display:inline-flex}.studio-logo-image{object-fit:contain;width:10rem;max-width:52vw;height:auto;display:block}.studio-logo-badge{border:1px solid var(--foreground);align-items:center;min-height:1.375rem;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.studio-logo-badge{border:1px solid color-mix(in oklch, var(--foreground) 18%, transparent)}}.studio-logo-badge{background:var(--foreground);border-radius:.5rem;padding:.1875rem .5rem}@supports (color:color-mix(in lab, red, red)){.studio-logo-badge{background:color-mix(in oklch, var(--foreground) 8%, transparent)}}.studio-logo-badge{color:var(--foreground);font-family:var(--font-heading);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;font-size:.6875rem;font-weight:700;line-height:1;box-shadow:inset 0 0 0 1px #ffffff1f}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb{background-color:color-mix(in oklch, var(--muted-foreground) 30%, transparent)}}::-webkit-scrollbar-thumb{border-radius:.5rem}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch, var(--muted-foreground) 52%, transparent)}}.xterm .xterm-viewport{scrollbar-width:none}.xterm .xterm-viewport::-webkit-scrollbar{width:0;height:0}.pipeline-flow .react-flow__edge.pipeline-flow-edge .react-flow__edge-path{stroke:var(--muted-foreground);stroke-width:1.6px;opacity:.78}.pipeline-flow .react-flow__edges marker path{fill:var(--muted-foreground);stroke:var(--muted-foreground)}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-full{top:100%}.right-1{right:calc(var(--spacing) * 1)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.col-span-4{grid-column:span 4/span 4}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing) * 4)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-0\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.\!h-0{height:calc(var(--spacing) * 0)!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-15{height:calc(var(--spacing) * 15)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[100dvh\]{height:100dvh}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[45vh\]{max-height:45vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-13{min-height:calc(var(--spacing) * 13)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-36{min-height:calc(var(--spacing) * 36)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-48{min-height:calc(var(--spacing) * 48)}.min-h-64{min-height:calc(var(--spacing) * 64)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-96{min-height:calc(var(--spacing) * 96)}.min-h-\[74px\]{min-height:74px}.min-h-full{min-height:100%}.\!w-0{width:calc(var(--spacing) * 0)!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-\[92px\]{width:92px}.w-\[210px\]{width:210px}.w-\[min\(420px\,calc\(100vw-32px\)\)\]{width:min(420px,100vw - 32px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-205{max-width:calc(var(--spacing) * 205)}.max-w-235{max-width:calc(var(--spacing) * 235)}.max-w-\[42vw\]{max-width:42vw}.max-w-\[62ch\]{max-width:62ch}.max-w-\[64ch\]{max-width:64ch}.max-w-\[68ch\]{max-width:68ch}.max-w-\[72ch\]{max-width:72ch}.max-w-\[260px\]{max-width:260px}.max-w-\[280px\]{max-width:280px}.max-w-\[min\(64ch\,82\%\)\]{max-width:min(64ch,82%)}.max-w-\[min\(82ch\,100\%\)\]{max-width:min(82ch,100%)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-225{min-width:calc(var(--spacing) * 225)}.min-w-280{min-width:calc(var(--spacing) * 280)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[980px\]{min-width:980px}.min-w-\[1040px\]{min-width:1040px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing) * 0);--tw-border-spacing-y:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[16px_auto\]{grid-template-columns:16px auto}.grid-cols-\[18px_minmax\(0\,1fr\)_auto\]{grid-template-columns:18px minmax(0,1fr) auto}.grid-cols-\[20px_minmax\(0\,1fr\)\]{grid-template-columns:20px minmax(0,1fr)}.grid-cols-\[82px_minmax\(0\,1fr\)\]{grid-template-columns:82px minmax(0,1fr)}.grid-cols-\[90px_minmax\(0\,1fr\)\]{grid-template-columns:90px minmax(0,1fr)}.grid-cols-\[150px_minmax\(0\,1fr\)\]{grid-template-columns:150px minmax(0,1fr)}.grid-cols-\[250px_minmax\(300px\,0\.8fr\)_minmax\(400px\,1\.2fr\)\]{grid-template-columns:250px minmax(300px,.8fr) minmax(400px,1.2fr)}.grid-cols-\[260px_minmax\(320px\,0\.78fr\)_minmax\(0\,1\.22fr\)\]{grid-template-columns:260px minmax(320px,.78fr) minmax(0,1.22fr)}.grid-cols-\[320px_minmax\(0\,1fr\)\]{grid-template-columns:320px minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_96px_96px\]{grid-template-columns:minmax(0,1fr) 96px 96px}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,460px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,460px)}.grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid-cols-\[minmax\(92px\,max-content\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(92px,max-content) minmax(0,1fr)}.grid-cols-\[minmax\(120px\,0\.5fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(120px,.5fr) minmax(0,1fr)}.grid-cols-\[minmax\(140px\,0\.24fr\)_minmax\(96px\,0\.14fr\)_minmax\(96px\,0\.14fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(140px,.24fr) minmax(96px,.14fr) minmax(96px,.14fr) minmax(0,1fr)}.grid-cols-\[minmax\(220px\,1\.3fr\)_150px_120px_120px_120px_120px_110px_90px\]{grid-template-columns:minmax(220px,1.3fr) 150px 120px 120px 120px 120px 110px 90px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px_72px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px 72px}.grid-cols-\[minmax\(270px\,0\.34fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(270px,.34fr) minmax(0,1fr)}.grid-cols-\[minmax\(300px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(300px,.75fr) minmax(0,1fr)}.grid-cols-\[repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.grid-rows-\[52px_minmax\(0\,1fr\)\]{grid-template-rows:52px minmax(0,1fr)}.grid-rows-\[auto_auto_minmax\(0\,1fr\)\]{grid-template-rows:auto auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr)}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border\/70>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.divide-border\/70>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[5px\]{border-radius:5px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.\!border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/\[0\.06\]{border-color:#0000000f}@supports (color:color-mix(in lab, red, red)){.border-black\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-black) 6%, transparent)}}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\/65{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/65{border-color:color-mix(in oklab, var(--border) 65%, transparent)}}.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-border\/90{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/90{border-color:color-mix(in oklab, var(--border) 90%, transparent)}}.border-destructive,.border-destructive\/25{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/25{border-color:color-mix(in oklab, var(--destructive) 25%, transparent)}}.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/30{border-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-foreground,.border-foreground\/45{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/45{border-color:color-mix(in oklab, var(--foreground) 45%, transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/70{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/70{border-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.\!bg-transparent{background-color:#0000!important}.bg-accent{background-color:var(--accent)}.bg-background,.bg-background\/25{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/25{background-color:color-mix(in oklab, var(--background) 25%, transparent)}}.bg-background\/30{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/30{background-color:color-mix(in oklab, var(--background) 30%, transparent)}}.bg-background\/35{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/35{background-color:color-mix(in oklab, var(--background) 35%, transparent)}}.bg-background\/40{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/40{background-color:color-mix(in oklab, var(--background) 40%, transparent)}}.bg-background\/45{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/45{background-color:color-mix(in oklab, var(--background) 45%, transparent)}}.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/55{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/55{background-color:color-mix(in oklab, var(--background) 55%, transparent)}}.bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/60{background-color:color-mix(in oklab, var(--background) 60%, transparent)}}.bg-background\/65{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/65{background-color:color-mix(in oklab, var(--background) 65%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-background\/88{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/88{background-color:color-mix(in oklab, var(--background) 88%, transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--background) 95%, transparent)}}.bg-black\/\[0\.03\]{background-color:#00000008}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-black) 3%, transparent)}}.bg-border,.bg-border\/80{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/80{background-color:color-mix(in oklab, var(--border) 80%, transparent)}}.bg-card,.bg-card\/25{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/25{background-color:color-mix(in oklab, var(--card) 25%, transparent)}}.bg-card\/30{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/30{background-color:color-mix(in oklab, var(--card) 30%, transparent)}}.bg-card\/35{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/35{background-color:color-mix(in oklab, var(--card) 35%, transparent)}}.bg-card\/45{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/45{background-color:color-mix(in oklab, var(--card) 45%, transparent)}}.bg-card\/55{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/55{background-color:color-mix(in oklab, var(--card) 55%, transparent)}}.bg-card\/60{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/60{background-color:color-mix(in oklab, var(--card) 60%, transparent)}}.bg-card\/70{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/70{background-color:color-mix(in oklab, var(--card) 70%, transparent)}}.bg-card\/80{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/80{background-color:color-mix(in oklab, var(--card) 80%, transparent)}}.bg-card\/85{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/85{background-color:color-mix(in oklab, var(--card) 85%, transparent)}}.bg-card\/90{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/90{background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-chart-4{background-color:var(--chart-4)}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/5{background-color:color-mix(in oklab, var(--destructive) 5%, transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-foreground,.bg-foreground\/15{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/15{background-color:color-mix(in oklab, var(--foreground) 15%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.bg-muted-foreground\/35{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/35{background-color:color-mix(in oklab, var(--muted-foreground) 35%, transparent)}}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/10{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/10{background-color:color-mix(in oklab, var(--muted) 10%, transparent)}}.bg-muted\/15{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/15{background-color:color-mix(in oklab, var(--muted) 15%, transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/25{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/25{background-color:color-mix(in oklab, var(--muted) 25%, transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/30{background-color:color-mix(in oklab, var(--muted) 30%, transparent)}}.bg-muted\/35{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/35{background-color:color-mix(in oklab, var(--muted) 35%, transparent)}}.bg-muted\/45{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/45{background-color:color-mix(in oklab, var(--muted) 45%, transparent)}}.bg-muted\/55{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/55{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/60{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.bg-muted\/70{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/70{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.bg-popover,.bg-popover\/98{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\/98{background-color:color-mix(in oklab, var(--popover) 98%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-card{--tw-gradient-from:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-card\/95{--tw-gradient-via:var(--card)}@supports (color:color-mix(in lab, red, red)){.via-card\/95{--tw-gradient-via:color-mix(in oklab, var(--card) 95%, transparent)}}.via-card\/95{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-card\/0{--tw-gradient-to:var(--card)}@supports (color:color-mix(in lab, red, red)){.to-card\/0{--tw-gradient-to:color-mix(in oklab, var(--card) 0%, transparent)}}.to-card\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-9{padding-right:calc(var(--spacing) * 9)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-card-foreground{color:var(--card-foreground)}.text-chart-4{color:var(--chart-4)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-destructive\/85{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/85{color:color-mix(in oklab, var(--destructive) 85%, transparent)}}.text-foreground{color:var(--foreground)}.text-inherit{color:inherit}.text-muted-foreground,.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/60{color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-muted-foreground\/85{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/85{color:color-mix(in oklab, var(--muted-foreground) 85%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/62{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/62{color:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.accent-foreground{accent-color:var(--foreground)}.\!opacity-0{opacity:0!important}.opacity-35{opacity:.35}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:var(--shadow-2xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_hsl\(var\(--foreground\)\/0\.06\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,hsl(var(--foreground)/.06));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:var(--shadow-xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\[box-shadow\:none\]{box-shadow:none}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/25{--tw-shadow-color:#00000040}@supports (color:color-mix(in lab, red, red)){.shadow-black\/25{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 25%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/40{--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.shadow-black\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/45{--tw-shadow-color:#00000073}@supports (color:color-mix(in lab, red, red)){.shadow-black\/45{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 45%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/\[0\.04\]{--tw-shadow-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.shadow-black\/\[0\.04\]{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 4%, transparent) var(--tw-shadow-alpha), transparent)}}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.\[overflow-anchor\:none\]{overflow-anchor:none}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.group-last\/row\:border-b-0:is(:where(.group\/row):last-child *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:inline:is(:where(.group):is([open],:popover-open,:open) *){display:inline}.group-open\:text-foreground:is(:where(.group):is([open],:popover-open,:open) *){color:var(--foreground)}.group-focus-within\:grid:is(:where(.group):focus-within *){display:grid}.group-focus-within\:inline-flex:is(:where(.group):focus-within *){display:inline-flex}@media (hover:hover){.group-hover\:grid:is(:where(.group):hover *){display:grid}.group-hover\:inline-flex:is(:where(.group):hover *){display:inline-flex}}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-muted-foreground\/65::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/65::placeholder{color:color-mix(in oklab, var(--muted-foreground) 65%, transparent)}}.placeholder\:text-muted-foreground\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/70::placeholder{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.first\:pt-3:first-child{padding-top:calc(var(--spacing) * 3)}.first\:pl-0:first-child{padding-left:calc(var(--spacing) * 0)}.first\:pl-5:first-child{padding-left:calc(var(--spacing) * 5)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pr-0:last-child{padding-right:calc(var(--spacing) * 0)}.last\:pr-5:last-child{padding-right:calc(var(--spacing) * 5)}@media (hover:hover){.hover\:border-border:hover,.hover\:border-border\/70:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/70:hover{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.hover\:border-border\/80:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/80:hover{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.hover\:border-foreground:hover{border-color:var(--foreground)}.hover\:border-muted-foreground\/45:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/45:hover{border-color:color-mix(in oklab, var(--muted-foreground) 45%, transparent)}}.hover\:border-muted-foreground\/60:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/60:hover{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.hover\:border-white:hover{border-color:var(--color-white)}.hover\:bg-accent:hover,.hover\:bg-accent\/45:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/45:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}.hover\:bg-accent\/70:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/70:hover{background-color:color-mix(in oklab, var(--accent) 70%, transparent)}}.hover\:bg-accent\/80:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/80:hover{background-color:color-mix(in oklab, var(--accent) 80%, transparent)}}.hover\:bg-background\/35:hover{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-background\/35:hover{background-color:color-mix(in oklab, var(--background) 35%, transparent)}}.hover\:bg-black\/\[0\.04\]:hover{background-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/\[0\.04\]:hover{background-color:color-mix(in oklab, var(--color-black) 4%, transparent)}}.hover\:bg-destructive\/10:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-foreground\/90:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/90:hover{background-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.hover\:bg-muted\/20:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/20:hover{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.hover\:bg-muted\/25:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/25:hover{background-color:color-mix(in oklab, var(--muted) 25%, transparent)}}.hover\:bg-muted\/45:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/45:hover{background-color:color-mix(in oklab, var(--muted) 45%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-muted\/55:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/55:hover{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.hover\:bg-muted\/70:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/70:hover{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/90:hover{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/90:hover{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-background:hover{color:var(--background)}.hover\:text-black:hover{color:var(--color-black)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-inherit:hover{color:inherit}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:opacity-100:hover{opacity:1}}.focus\:border-muted-foreground\/60:focus{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:border-muted-foreground\/60:focus{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.focus\:border-muted-foreground\/70:focus{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:border-muted-foreground\/70:focus{border-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-0:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-muted-foreground\/20:focus{--tw-ring-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-muted-foreground\/20:focus{--tw-ring-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/35:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/35:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 35%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:bg-white\/85:active{background-color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.active\:bg-white\/85:active{background-color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-border:disabled{border-color:var(--border)}.disabled\:bg-muted:disabled{background-color:var(--muted)}.disabled\:text-muted-foreground:disabled{color:var(--muted-foreground)}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-muted\/65[data-highlighted]{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-muted\/65[data-highlighted]{background-color:color-mix(in oklab, var(--muted) 65%, transparent)}}.data-\[highlighted\]\:text-foreground[data-highlighted]{color:var(--foreground)}@media not all and (width>=80rem){.max-xl\:col-span-2{grid-column:span 2/span 2}.max-xl\:hidden{display:none}.max-xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-xl\:grid-cols-\[240px_minmax\(0\,1fr\)\]{grid-template-columns:240px minmax(0,1fr)}.max-xl\:grid-rows-\[minmax\(240px\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(240px,.42fr) minmax(0,1fr)}.max-xl\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-xl\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-xl\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media not all and (width>=64rem){.max-lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-lg\:grid-rows-\[minmax\(220px\,0\.44fr\)_minmax\(0\,1fr\)\]{grid-template-rows:minmax(220px,.44fr) minmax(0,1fr)}.max-lg\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-lg\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-lg\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-lg\:pb-5{padding-bottom:calc(var(--spacing) * 5)}.max-lg\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media not all and (width>=48rem){.max-md\:col-span-1{grid-column:span 1/span 1}.max-md\:grid{display:grid}.max-md\:max-h-80{max-height:calc(var(--spacing) * 80)}.max-md\:w-full{width:100%}.max-md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-md\:grid-rows-\[auto_minmax\(240px\,0\.38fr\)_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(240px,.38fr) minmax(0,1fr)}.max-md\:justify-start{justify-content:flex-start}.max-md\:gap-1{gap:calc(var(--spacing) * 1)}.max-md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-md\:px-0{padding-inline:calc(var(--spacing) * 0)}.max-md\:pr-0{padding-right:calc(var(--spacing) * 0)}}@media (width>=40rem){.sm\:max-w-72{max-width:calc(var(--spacing) * 72)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:items-start{align-items:flex-start}:where(.sm\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.sm\:divide-border\/80>:not(:last-child)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){:where(.sm\:divide-border\/80>:not(:last-child)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.sm\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}@media (width>=48rem){.md\:block{display:block}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[228px_minmax\(0\,1fr\)\]{grid-template-columns:228px minmax(0,1fr)}.lg\:grid-cols-\[340px_minmax\(0\,1fr\)\]{grid-template-columns:340px minmax(0,1fr)}}@media (width>=80rem){.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-\[minmax\(0\,1\.05fr\)_minmax\(0\,0\.95fr\)\]{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.xl\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(320px\,0\.65fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr)}.xl\:grid-cols-\[minmax\(260px\,0\.42fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(260px,.42fr) minmax(0,1fr)}.xl\:grid-cols-\[minmax\(280px\,0\.58fr\)_minmax\(0\,1\.42fr\)\]{grid-template-columns:minmax(280px,.58fr) minmax(0,1.42fr)}.xl\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.xl\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.xl\:pr-5{padding-right:calc(var(--spacing) * 5)}.xl\:pb-0{padding-bottom:calc(var(--spacing) * 0)}}.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.dark\:text-destructive:is(.dark *){color:var(--destructive)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-zinc-100:is(.dark *){color:var(--color-zinc-100)}.dark\:shadow-black\/20:is(.dark *){--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-black\/20:is(.dark *){--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media (hover:hover){.dark\:hover\:bg-white\/\[0\.04\]:is(.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[0\.04\]:is(.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}}.prose-headings\:font-semibold :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-headings\:text-current :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-headings\:text-current:is(.dark *) :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-p\:leading-7 :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.prose-p\:text-current :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-p\:text-current:is(.dark *) :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-a\:text-current :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-a\:decoration-muted-foreground :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);text-decoration-color:var(--muted-foreground)}.prose-a\:underline-offset-2 :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-underline-offset:2px}.prose-blockquote\:border-border :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.prose-blockquote\:text-muted-foreground :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--muted-foreground)}.prose-strong\:text-current :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-strong\:text-current:is(.dark *) :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:rounded-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-code\:border :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-code\:border-border\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.prose-code\:border-border\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.prose-code\:bg-muted\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.prose-code\:bg-muted\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.prose-code\:px-1 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline:calc(var(--spacing) * 1)}.prose-code\:py-0\.5 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-block:calc(var(--spacing) * .5)}.prose-code\:text-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.prose-code\:font-semibold :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-code\:text-current :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:before\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose-code\:after\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:var(--tw-content);--tw-content:none;content:none}.dark\:prose-code\:text-current:is(.dark *) :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-pre\:overflow-auto :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){overflow:auto}.prose-pre\:rounded-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-pre\:border :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-pre\:border-border\/80 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.prose-pre\:border-border\/80 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.prose-pre\:bg-card\/90 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.prose-pre\:bg-card\/90 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.prose-pre\:text-current :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.dark\:prose-pre\:bg-card:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}.dark\:prose-pre\:text-current:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::-webkit-details-marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::-webkit-details-marker{color:var(--muted-foreground)}.prose-table\:m-0 :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing) * 0)}.prose-thead\:border-0 :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-tr\:border-0 :where(tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:0}.prose-th\:p-0 :where(th):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-td\:p-0 :where(td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:calc(var(--spacing) * 0)}.prose-hr\:border-border :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.\[\&_\.grid\]\:mt-2 .grid{margin-top:calc(var(--spacing) * 2)}.\[\&_\.grid\]\:border-l .grid{border-left-style:var(--tw-border-style);border-left-width:1px}.\[\&_\.grid\]\:border-border .grid{border-color:var(--border)}.\[\&_\.grid\]\:pl-3 .grid{padding-left:calc(var(--spacing) * 3)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:\!size-3 svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:h-3 svg{height:calc(var(--spacing) * 3)}.\[\&_svg\]\:h-3\.5 svg{height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing) * 4)}.\[\&_svg\]\:h-\[17px\] svg{height:17px}.\[\&_svg\]\:w-3 svg{width:calc(var(--spacing) * 3)}.\[\&_svg\]\:w-3\.5 svg{width:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing) * 4)}.\[\&_svg\]\:w-\[17px\] svg{width:17px}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:opacity-100 svg{opacity:1}}:root{--background:#f4f5f6;--foreground:#181f25;--card:#fff;--card-foreground:#181f25;--popover:#fff;--popover-foreground:#181f25;--primary:#2a2e32;--primary-foreground:#fafafa;--secondary:#e9eaec;--secondary-foreground:#212a31;--muted:#e6e7ea;--muted-foreground:#636f79;--accent:#e6e7ea;--accent-foreground:#181f25;--destructive:#c13833;--destructive-foreground:#fafafa;--border:#2a353c1f;--input:#2a353c29;--ring:#5e6d78;--chart-1:#65727b;--chart-2:#869098;--chart-3:#636f79;--chart-4:#242f38;--chart-5:#c13833;--sidebar:#f4f5f6;--sidebar-foreground:#181f25;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:#2a353c17;--sidebar-accent-foreground:#181f25;--sidebar-border:var(--border);--sidebar-ring:var(--ring);--font-sans:Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-heading:Figtree, Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--radius:.5rem;--shadow-x:0;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#1f252e;--shadow-2xs:0 1px 2px 0px #1f252e0d;--shadow-xs:0 1px 3px 0px #1f252e0f;--shadow-sm:0 1px 2px #1f252e14, 0 8px 18px -18px #1f252e42;--shadow:0 1px 2px #1f252e1a, 0 14px 34px -26px #1f252e57;--shadow-md:0 2px 4px #1f252e1f, 0 20px 44px -30px #1f252e6b;--shadow-lg:0 3px 8px #1f252e29, 0 28px 64px -38px #1f252e80;--shadow-xl:0 4px 12px #1f252e33, 0 34px 86px -44px #1f252e8f;--shadow-2xl:0 10px 32px #1f252e47, 0 48px 120px -56px #1f252ead;--tracking-normal:0em;--spacing:.25rem}.dark{--background:#131314;--foreground:#e8ece4;--card:#121212;--card-foreground:#e8ece4;--popover:#121212;--popover-foreground:#e8ece4;--primary:#e0e0e0;--primary-foreground:#0a0a0a;--secondary:#1f2123;--secondary-foreground:#e1e6db;--muted:#242629;--muted-foreground:#9fa696;--accent:#ffffff14;--accent-foreground:#ebebeb;--destructive:#db605c;--destructive-foreground:#101419;--border:#e1e7da14;--input:#e1e7da1f;--ring:#949494;--chart-1:#dbdbdb;--chart-2:#a8a8a8;--chart-3:#8a8a8a;--chart-4:#6b6b6b;--chart-5:#db605c;--sidebar:#131314;--sidebar-foreground:#e8ece4;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:#ffffff14;--sidebar-accent-foreground:#e8ece4;--sidebar-border:var(--border);--sidebar-ring:var(--ring);--font-sans:Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-heading:Figtree, Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--radius:.5rem;--shadow-x:0;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#05070a;--shadow-2xs:0 1px 2px 0px #05070a40;--shadow-xs:0 1px 3px 0px #05070a47;--shadow-sm:0 1px 2px #05070a5c, 0 10px 24px -20px #05070ab3;--shadow:0 1px 2px #05070a6b, 0 20px 54px -34px #05070adb;--shadow-md:0 2px 6px #05070a7a, 0 28px 70px -42px #05070ae6;--shadow-lg:0 4px 10px #05070a8a, 0 36px 90px -48px #05070af0;--shadow-xl:0 8px 18px #05070a9e, 0 44px 110px -54px #05070afa;--shadow-2xl:0 14px 44px #05070ab8, 0 60px 140px -64px #05070a}.studio-sidebar-nav-button{border-color:#0000;outline:2px solid #0000}.studio-sidebar-nav-button:hover{border-color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button:hover{border-color:color-mix(in oklch, var(--sidebar-foreground) 15%, transparent)}}.studio-sidebar-nav-button:hover{background:linear-gradient(180deg, var(--sidebar-accent) 0%, var(--sidebar-accent) 100%)}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button:hover{background:linear-gradient(180deg, color-mix(in oklch, var(--sidebar-accent) 98%, black) 0%, color-mix(in oklch, var(--sidebar-accent) 85%, black) 100%)}}.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{border-color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{border-color:color-mix(in oklch, var(--sidebar-foreground) 8%, transparent)}}.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{background:linear-gradient(180deg, var(--sidebar-accent) 0%, var(--sidebar-accent) 100%);outline-color:#00000094}@supports (color:color-mix(in lab, red, red)){.studio-sidebar-nav-button-active,.studio-sidebar-nav-button-active:hover{background:linear-gradient(180deg, color-mix(in oklch, var(--sidebar-accent) 88%, black) 0%, color-mix(in oklch, var(--sidebar-accent) 73%, black) 100%)}}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}