llmxray 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +265 -265
  2. package/dist/assets/{AITrainingPage-VU-Nu5i0.js → AITrainingPage-DEU4UAR7.js} +1 -1
  3. package/dist/assets/AnalyticsPage-C7mNUAil.js +1 -0
  4. package/dist/assets/{BenchmarkPage-CQUTAU0c.js → BenchmarkPage-jiUqdHmg.js} +2 -2
  5. package/dist/assets/{ComparisonPage-DSO_-JZF.js → ComparisonPage-BoBWSObY.js} +3 -3
  6. package/dist/assets/CostDashboardPage-BKQDsZhx.js +1 -0
  7. package/dist/assets/{DashboardPage-lqAFJvOo.js → DashboardPage-CV8Ejgxv.js} +43 -43
  8. package/dist/assets/{EmbeddingsPage-DDBfFe8z.js → EmbeddingsPage-DXjVT4eU.js} +1 -1
  9. package/dist/assets/{GoogleCallbackPage-H8X6YDz9.js → GoogleCallbackPage-BUIkYpZv.js} +1 -1
  10. package/dist/assets/{JsonTreeNode-DQ_R5Euc.js → JsonTreeNode-C0UNUwZm.js} +1 -1
  11. package/dist/assets/{ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-CV939MUZ.js → ModelCapabilityIcons.vue_vue_type_script_setup_true_lang-vQNvYFzV.js} +1 -1
  12. package/dist/assets/{RAGPage-DbZxWHmi.js → RAGPage-Dv4UDEyz.js} +1 -1
  13. package/dist/assets/SessionPage-B0fMQGSB.js +15 -0
  14. package/dist/assets/{SettingsPage-fmgr8zF9.js → SettingsPage-DTJP-4xU.js} +1 -1
  15. package/dist/assets/{StatusBadge.vue_vue_type_script_setup_true_lang-BbHpA7hy.js → StatusBadge.vue_vue_type_script_setup_true_lang-BiB0M6lv.js} +1 -1
  16. package/dist/assets/{StorageGauge.vue_vue_type_style_index_0_lang-Dd3BsCg6.js → StorageGauge.vue_vue_type_style_index_0_lang-DToi3R0q.js} +1 -1
  17. package/dist/assets/{SystemPage-Bd3SBsWI.js → SystemPage-BPK15qwe.js} +2 -2
  18. package/dist/assets/{TabBar.vue_vue_type_script_setup_true_lang-DlSEPHs6.js → TabBar.vue_vue_type_script_setup_true_lang-BtGCdMZK.js} +1 -1
  19. package/dist/assets/{TokenStreamDisplay.vue_vue_type_script_setup_true_lang-P-I0kJTd.js → TokenStreamDisplay.vue_vue_type_script_setup_true_lang-B6juPZsY.js} +1 -1
  20. package/dist/assets/{ToolWorkshopPage-D9doB8PF.js → ToolWorkshopPage-DmpoHHaD.js} +3 -3
  21. package/dist/assets/{agent-store-CuCtjbhV.js → agent-store-C6w1zV86.js} +1 -1
  22. package/dist/assets/{canvas-ai-db-DBUT-nyD.js → canvas-ai-db-BpqhUp6k.js} +1 -1
  23. package/dist/assets/{download-C3s6K1NW.js → download-pCIjWOn5.js} +1 -1
  24. package/dist/assets/{generate-service-DrRYe_-5.js → generate-service-DmtXqq_h.js} +1 -1
  25. package/dist/assets/{google-auth-store-B0WvuFWG.js → google-auth-store-Dgv2FihL.js} +1 -1
  26. package/dist/assets/index-534TcCbY.js +8 -0
  27. package/dist/assets/index-B72Sw9uL.css +1 -0
  28. package/dist/assets/{index-CUNpOQX9.js → index-ClITfJ3t.js} +1 -1
  29. package/dist/assets/{index-DoMyvAkM.js → index-DHuj6tKB.js} +1 -1
  30. package/dist/assets/{info-D-oZIv7P.js → info-Eg1tUw1x.js} +1 -1
  31. package/dist/assets/{metrics-store-DRErjO4D.js → metrics-store-7m97Sb7w.js} +1 -1
  32. package/dist/assets/{papaparse.min-DJzuA_ek.js → papaparse.min-3FeAYh4d.js} +1 -1
  33. package/dist/assets/{pencil-MO2uWQbW.js → pencil-CZp68oBU.js} +1 -1
  34. package/dist/assets/{rag-store-CBWvD3Va.js → rag-store-Bm0nxdec.js} +3 -3
  35. package/dist/assets/session-store-BQ0TF24S.js +1 -0
  36. package/dist/assets/{share-2-CnM5sBDm.js → share-2-CJJGZsZO.js} +1 -1
  37. package/dist/assets/{storage-store-cx_2Hb_J.js → storage-store-6qFwk_C5.js} +1 -1
  38. package/dist/assets/stream-handler-BM5egg14.js +4 -0
  39. package/dist/assets/{tool-workshop-store-Cb4eb3e4.js → tool-workshop-store-9_FKfdnT.js} +1 -1
  40. package/dist/assets/toolcall-store-C4Trr01T.js +1 -0
  41. package/dist/assets/{trash-2-Cj-NOsVZ.js → trash-2-DjfJXqVK.js} +1 -1
  42. package/dist/index.html +2 -2
  43. package/package.json +88 -88
  44. package/dist/assets/CostDashboardPage-BLzCE-bT.js +0 -1
  45. package/dist/assets/SessionPage-DvtFE4GS.js +0 -15
  46. package/dist/assets/index-Bawj8X2v.css +0 -1
  47. package/dist/assets/index-DYHBy1xj.js +0 -8
  48. package/dist/assets/stream-handler-CXdBM2li.js +0 -4
  49. package/dist/assets/toolcall-store-xQEQUq5f.js +0 -1
@@ -1,15 +0,0 @@
1
- import{a as xe,u as fe}from"./toolcall-store-xQEQUq5f.js";import{u as be}from"./metrics-store-DRErjO4D.js";import{b as ve,a as te,u as ge}from"./agent-store-CuCtjbhV.js";import{d as ye,a as he,b as ke}from"./download-WPaeALA4.js";import{_ as _e}from"./TabBar.vue_vue_type_script_setup_true_lang-DlSEPHs6.js";import{b as $e,_ as se,n as we,s as O,u as Ce}from"./StatusBadge.vue_vue_type_script_setup_true_lang-BbHpA7hy.js";import{_ as Te}from"./TokenStreamDisplay.vue_vue_type_script_setup_true_lang-P-I0kJTd.js";import{c as B,a as Me,f as Y,e as Se}from"./format-BqVZ9rwM.js";import{C as J,a as K,L as U,P as ze,b as Ne,p as oe,c as Q,d as ne,i as Le,e as Ae,B as re,f as ae}from"./index-CUNpOQX9.js";import{b as N,e as l,f as e,t as c,p as w,u as C,a as $,j as s,F as L,k as A,q as P,g as F,h as M,d as Ie,r as S,A as le,i as y,K as Pe,l as H,L as je,M as De,B as X,w as V,C as W,G as Fe,v as ie,T as Re,X as Oe,D as Z,H as Be,z as qe}from"./index-DYHBy1xj.js";import{I as j}from"./info-D-oZIv7P.js";import{u as He}from"./tool-workshop-store-Cb4eb3e4.js";import{s as Ee,J as Ve,g as We}from"./JsonTreeNode-DQ_R5Euc.js";import{D as Ge}from"./download-C3s6K1NW.js";import"./_plugin-vue_export-helper-DlAUqK2U.js";const Je={class:"rounded-lg border border-border-default bg-surface-raised p-4"},Ke={class:"mb-3 text-sm font-medium text-text-secondary"},Ue={class:"h-40"},Qe=N({__name:"LatencyChart",props:{tokenLatencies:{},title:{}},setup(t){J.register(K,U,ze,Ne,oe,Q,ne,Le);const a=t,r=$(()=>({labels:a.tokenLatencies.map((m,d)=>`${d}`),datasets:[{label:"Token Latency (ms)",data:a.tokenLatencies,borderColor:"#a855f7",backgroundColor:"rgba(168, 85, 247, 0.1)",borderWidth:1.5,pointRadius:0,fill:!0,tension:.3}]})),n={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},title:{display:!1}},scales:{x:{display:!1},y:{ticks:{color:"#94a3b8",font:{size:10}},grid:{color:"rgba(71, 85, 105, 0.3)"}}}};return(m,d)=>(s(),l("div",Je,[e("h3",Ke,c(t.title??"Token Latency"),1),e("div",Ue,[w(C(Ae),{data:r.value,options:n},null,8,["data"])])]))}}),Xe={class:"rounded-lg border border-border-default bg-surface-raised p-4"},Ye={class:"h-20"},Ze={class:"mt-2 flex gap-4 text-xs text-text-muted"},et=N({__name:"TokenCountBar",props:{promptTokens:{},completionTokens:{}},setup(t){J.register(K,U,re,oe,Q,ne);const a=t,r=$(()=>({labels:["Tokens"],datasets:[{label:"Prompt",data:[a.promptTokens],backgroundColor:"#818cf8"},{label:"Completion",data:[a.completionTokens],backgroundColor:"#a855f7"}]})),n={indexAxis:"y",responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"bottom",labels:{color:"#94a3b8",font:{size:11}}}},scales:{x:{stacked:!0,ticks:{color:"#94a3b8",font:{size:10}},grid:{color:"rgba(71, 85, 105, 0.3)"}},y:{stacked:!0,display:!1}}};return(m,d)=>(s(),l("div",Xe,[d[0]||(d[0]=e("h3",{class:"mb-3 text-sm font-medium text-text-secondary"},"Token Distribution",-1)),e("div",Ye,[w(C(ae),{data:r.value,options:n},null,8,["data"])]),e("div",Ze,[e("span",null,"Total: "+c(t.promptTokens+t.completionTokens),1)])]))}}),tt={key:0,class:"space-y-4"},st={class:"grid grid-cols-2 gap-3 lg:grid-cols-3 xl:grid-cols-6"},ot={class:"grid grid-cols-1 gap-3 lg:grid-cols-2"},nt={key:1,class:"rounded-lg border border-border-default bg-surface-raised p-8 text-center text-sm text-text-muted"},rt=N({__name:"MetricsDashboard",props:{metrics:{}},setup(t){const a=t,r=$(()=>{const n=a.metrics;return n?[{label:"Time to First Token",value:B(n.ttftMs),unit:""},{label:"Tokens/Second",value:Me(n.tokensPerSecond),unit:""},{label:"Total Duration",value:B(n.totalDurationMs),unit:""},{label:"Prompt Tokens",value:Y(n.promptTokenCount),unit:"tok"},{label:"Completion Tokens",value:Y(n.completionTokenCount),unit:"tok"},{label:"Model Load",value:B(n.loadDurationMs),unit:""}]:[]});return(n,m)=>t.metrics?(s(),l("div",tt,[e("div",st,[(s(!0),l(L,null,A(r.value,d=>(s(),P($e,{key:d.label,label:d.label,value:d.value,unit:d.unit},null,8,["label","value","unit"]))),128))]),e("div",ot,[w(Qe,{"token-latencies":t.metrics.tokenLatencies},null,8,["token-latencies"]),w(et,{"prompt-tokens":t.metrics.promptTokenCount,"completion-tokens":t.metrics.completionTokenCount},null,8,["prompt-tokens","completion-tokens"])])])):(s(),l("div",nt," Metrics will appear after generation completes. "))}}),at={class:"flex gap-3"},lt={class:"flex flex-col items-center"},it={class:"flex h-8 w-8 items-center justify-center rounded-full bg-surface-overlay text-sm"},dt={class:"flex-1 pb-4"},ut={class:"flex items-center gap-2 mb-1"},ct={class:"text-xs text-text-muted"},mt={class:"rounded-lg border border-border-default bg-surface p-3 text-sm text-text-primary leading-relaxed"},pt=N({__name:"ReasoningStep",props:{step:{}},setup(t){const a={thought:{color:"text-accent",icon:"💭"},observation:{color:"text-success",icon:"👁"},action:{color:"text-warning",icon:"⚡"},conclusion:{color:"text-[#a78bfa]",icon:"✓"},reflection:{color:"text-[#f472b6]",icon:"↻"}};return(r,n)=>(s(),l("div",at,[e("div",lt,[e("div",it,c(a[t.step.type]?.icon??"•"),1),n[0]||(n[0]=e("div",{class:"flex-1 w-px bg-border-default"},null,-1))]),e("div",dt,[e("div",ut,[e("span",{class:F(["text-xs font-semibold uppercase tracking-wide",a[t.step.type]?.color??"text-text-secondary"])},c(t.step.type),3),e("span",ct," Step "+c(t.step.index+1)+" · "+c(C(B)(t.step.durationMs)),1)]),e("div",mt,c(t.step.content),1)])]))}}),xt={class:"space-y-4"},ft={class:"flex items-center gap-4 rounded-lg border border-border-default bg-surface-raised p-4"},bt={class:"text-sm text-text-secondary"},vt={class:"font-semibold text-text-primary"},gt={class:"flex gap-2"},yt={key:0,class:"space-y-0"},ht={key:1,class:"rounded-lg border border-border-default bg-surface-raised p-8 text-center text-sm text-text-muted"},kt=N({__name:"ReasoningViewer",props:{sessionId:{}},setup(t){const a=t,r=ve(),n=$(()=>r.getSteps(a.sessionId)),m=$(()=>{const d={};for(const p of n.value)d[p.type]=(d[p.type]??0)+1;return d});return(d,p)=>(s(),l("div",xt,[e("div",ft,[e("div",bt,[e("span",vt,c(n.value.length),1),p[0]||(p[0]=M(" reasoning steps detected ",-1))]),e("div",gt,[(s(!0),l(L,null,A(m.value,(i,u)=>(s(),l("span",{key:u,class:"rounded-full bg-surface-overlay px-2.5 py-0.5 text-xs text-text-secondary"},c(u)+": "+c(i),1))),128))])]),n.value.length>0?(s(),l("div",yt,[(s(!0),l(L,null,A(n.value,i=>(s(),P(pt,{key:i.id,step:i},null,8,["step"]))),128))])):(s(),l("div",ht,[...p[1]||(p[1]=[e("p",null,"No reasoning steps detected.",-1),e("p",{class:"mt-1"},"Use a model with chain-of-thought support (e.g., DeepSeek-R1) or structured reasoning patterns.",-1)])]))]))}}),de=Ie("introspection",()=>{const t=S(new Map),a=S(new Map),r=S(new Map);function n(x){return t.value.get(x)??null}function m(x,b){t.value.set(x,b)}function d(x){return a.value.get(x)??[]}function p(x,b){a.value.set(x,b)}function i(x){return r.value.get(x)??[]}function u(x,b){r.value.set(x,b)}return{architectureByModel:t,attentionPatterns:a,layerActivations:r,getArchitecture:n,setArchitecture:m,getAttentionPatterns:d,setAttentionPatterns:p,getLayerActivations:i,setLayerActivations:u}});function _t(t,a){const r=a.model_info,n=a.details.family||"unknown",m=R(r,"block_count")??32,d=R(r,"embedding_length")??4096,p=R(r,"attention.head_count")??32,i=R(r,"attention.head_count_kv")??p,u=R(r,"context_length")??4096,x=R(r,"feed_forward_length")??d*4,b=a.details.parameter_size||"0",g=Ct(b),v=Tt(m);return{family:n,blockCount:m,embeddingLength:d,attentionHeadCount:p,kvHeadCount:i,contextLength:u,feedForwardLength:x,layers:v,totalParameters:g,quantization:a.details.quantization_level||"unknown"}}function $t(t,a,r){const n=[],m=t.length,d=Math.min(a,2),p=Math.min(r,2);for(let i=0;i<p;i++)for(let u=0;u<d;u++){const x=[];for(let b=0;b<m;b++){const g=[];for(let k=0;k<m;k++)if(k>b)g.push(0);else{const T=b-k,o=Math.exp(-T*(.1+i*.05)),f=Math.random()*.15,h=k===b?.3:0;g.push(Math.min(1,o+f+h))}const v=g.reduce((k,T)=>k+T,0);x.push(v>0?g.map(k=>k/v):g)}n.push({tokenLabels:t,matrix:x,headIndex:u,layerIndex:i})}return n}function wt(t){const a=[];for(const r of t.layers){const n=Math.sqrt(t.embeddingLength)*(1+Math.random()*.5),m=r.type==="attention"?1:r.type==="feed_forward"?1.3:.8;a.push({layerIndex:r.index,layerName:r.name,meanActivation:(.5+Math.random()*.5)*m,maxActivation:(2+Math.random()*3)*m,norm:n*m*(.8+Math.random()*.4)})}return a}function R(t,a){for(const[r,n]of Object.entries(t))if(r.endsWith(a)&&typeof n=="number")return n}function Ct(t){const a=t.match(/([\d.]+)\s*([BMK])?/i);if(!a)return 0;const r=parseFloat(a[1]),n=(a[2]??"").toUpperCase();return n==="B"?r*1e9:n==="M"?r*1e6:n==="K"?r*1e3:r}function Tt(t){const a=[];let r=0;a.push({index:r++,name:"token_embedding",type:"embedding",parameterCount:0});for(let n=0;n<t;n++)a.push({index:r++,name:`block_${n}_attention`,type:"attention",parameterCount:0}),a.push({index:r++,name:`block_${n}_ffn`,type:"feed_forward",parameterCount:0}),a.push({index:r++,name:`block_${n}_norm`,type:"norm",parameterCount:0});return a.push({index:r++,name:"output",type:"output",parameterCount:0}),a}async function Mt(t){const a=le(),r=de();await a.fetchModelInfo(t);const n=a.getModelDetails(t);if(n){const m=_t(t,n);r.setArchitecture(t,m)}}const St={class:"space-y-4"},zt={key:0,class:"rounded-lg bg-surface p-4"},Nt={class:"flex items-center gap-2 flex-wrap"},Lt=["onMouseenter"],At={key:1,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-56 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},It={class:"grid grid-cols-2 gap-3 lg:grid-cols-4"},Pt={class:"flex items-center gap-1 text-xs text-text-muted"},jt={class:"text-sm font-medium text-text-primary"},Dt={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-56 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},Ft={class:"flex items-center gap-1 text-xs text-text-muted"},Rt={class:"text-sm font-medium text-text-primary"},Ot={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-56 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},Bt={class:"flex items-center gap-1 text-xs text-text-muted"},qt={class:"text-sm font-medium text-text-primary"},Ht={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-64 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},Et={class:"flex items-center gap-1 text-xs text-text-muted"},Vt={class:"text-sm font-medium text-text-primary"},Wt={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-64 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},Gt={class:"rounded-lg bg-surface p-4"},Jt={class:"flex items-center gap-1 mb-3"},Kt={class:"text-xs font-medium text-text-muted uppercase tracking-wide"},Ut={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-64 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},Qt={class:"flex items-center gap-2 flex-wrap"},Xt=["onMouseenter"],Yt={class:"text-xs text-text-primary"},Zt={class:"text-xs text-text-muted"},es={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-60 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},ts={class:"grid grid-cols-2 gap-3 text-xs"},ss={class:"ms-1 text-text-primary"},os={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-60 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},ns={class:"ms-1 text-text-primary"},rs={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-64 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},as={class:"ms-1 text-text-primary"},ls={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-60 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},is={class:"ms-1 text-text-primary"},ds={key:0,class:"absolute top-full left-1/2 -translate-x-1/2 mt-2 w-64 rounded-lg border border-border-default bg-surface-overlay px-3 py-2 text-xs text-text-secondary shadow-lg z-10"},us={key:1,class:"rounded-lg bg-surface"},cs={key:0,class:"border-t border-border-default px-4 pb-4 pt-2"},ms={class:"w-full text-xs"},ps={class:"py-1.5 pe-4 text-text-muted font-mono"},xs={class:"py-1.5 text-text-primary font-mono"},fs={key:2,class:"rounded-lg bg-surface"},bs={key:0,class:"border-t border-border-default px-4 pb-4 pt-2"},vs={class:"overflow-auto rounded-lg bg-surface-raised p-3 text-xs text-text-secondary font-mono leading-relaxed"},gs=N({__name:"ModelArchitectureDiagram",props:{architecture:{},modelName:{}},setup(t){const a=t,r=le(),n=$(()=>a.modelName?r.getModelDetails(a.modelName)??null:null),m=$(()=>{if(!n.value?.parameters)return null;const T=je(n.value.parameters);return Object.keys(T).length>0?T:null}),d=$(()=>n.value?.template??null),p=S(!1),i=S(!1),u=$(()=>a.modelName?De(r.getCapabilities(a.modelName)):[]),x={embedding:"#818cf8",attention:"#a855f7",feed_forward:"#fb923c",norm:"#94a3b8",output:"#4ade80"},b=$(()=>{const T=a.architecture;return[{label:"Embedding",color:x.embedding,count:1,desc:"Converts input tokens into dense numerical vectors the model can process"},{label:"Attention",color:x.attention,count:T.blockCount,desc:"Lets each token attend to every other token to capture relationships and context"},{label:"FFN",color:x.feed_forward,count:T.blockCount,desc:"Feed-Forward Network — applies non-linear transformations to refine representations"},{label:"LayerNorm",color:x.norm,count:T.blockCount,desc:"Normalizes activations between layers to stabilize and speed up training"},{label:"Output",color:x.output,count:1,desc:"Projects the final hidden state back to vocabulary size to predict the next token"}]}),g=S(null);function v(T){g.value=T}function k(){g.value=null}return(T,o)=>(s(),l("div",St,[u.value.length>0?(s(),l("div",zt,[o[12]||(o[12]=e("h4",{class:"text-xs font-medium text-text-muted uppercase tracking-wide mb-3"},"Capabilities",-1)),e("div",Nt,[(s(!0),l(L,null,A(u.value,f=>(s(),l("div",{key:f.key,class:"relative flex items-center gap-1.5 rounded-lg border border-border-default px-3 py-1.5",onMouseenter:h=>v("cap-"+f.key),onMouseleave:k},[f.icon?(s(),P(Pe(f.icon),{key:0,class:F(["h-3.5 w-3.5 shrink-0",f.color])},null,8,["class"])):y("",!0),e("span",{class:F(["text-xs font-medium",f.color])},c(f.label),3),g.value==="cap-"+f.key?(s(),l("div",At,[M(c(f.desc)+" ",1),o[11]||(o[11]=e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1))])):y("",!0)],40,Lt))),128))])])):y("",!0),e("div",It,[e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[0]||(o[0]=f=>v("family")),onMouseleave:k},[e("div",Pt,[o[13]||(o[13]=M(" Family ",-1)),w(C(j),{class:"h-3 w-3"})]),e("div",jt,c(t.architecture.family),1),g.value==="family"?(s(),l("div",Dt,[...o[14]||(o[14]=[M(" The base model architecture family (e.g. llama, qwen). Models in the same family share the same neural network design. ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32),e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[1]||(o[1]=f=>v("params")),onMouseleave:k},[e("div",Ft,[o[15]||(o[15]=M(" Parameters ",-1)),w(C(j),{class:"h-3 w-3"})]),e("div",Rt,c(C(Se)(t.architecture.totalParameters)),1),g.value==="params"?(s(),l("div",Ot,[...o[16]||(o[16]=[M(" Total number of trainable weights in the model. More parameters generally means greater capability but requires more memory and compute. ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32),e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[2]||(o[2]=f=>v("ctx")),onMouseleave:k},[e("div",Bt,[o[17]||(o[17]=M(" Context Length ",-1)),w(C(j),{class:"h-3 w-3"})]),e("div",qt,c(t.architecture.contextLength.toLocaleString()),1),g.value==="ctx"?(s(),l("div",Ht,[...o[18]||(o[18]=[M(" Maximum number of tokens (prompt + response) the model can process in a single conversation. Longer context allows more detailed instructions and longer conversations. ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32),e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[3]||(o[3]=f=>v("quant")),onMouseleave:k},[e("div",Et,[o[19]||(o[19]=M(" Quantization ",-1)),w(C(j),{class:"h-3 w-3"})]),e("div",Vt,c(t.architecture.quantization),1),g.value==="quant"?(s(),l("div",Wt,[...o[20]||(o[20]=[M(" How model weights are compressed. Q4_K_M means 4-bit quantization with K-quant medium quality — smaller file size and faster inference with a small quality trade-off vs full precision (F16/F32). ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32)]),e("div",Gt,[e("div",Jt,[e("h4",Kt,"Layer Structure ("+c(t.architecture.blockCount)+" blocks)",1),e("div",{class:"relative",onMouseenter:o[4]||(o[4]=f=>v("layers")),onMouseleave:k},[w(C(j),{class:"h-3 w-3 text-text-muted"}),g.value==="layers"?(s(),l("div",Ut,[...o[21]||(o[21]=[M(" Transformer models are built from repeated blocks. Each block contains attention, feed-forward, and normalization layers. More blocks = deeper model. ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32)]),e("div",Qt,[(s(!0),l(L,null,A(b.value,f=>(s(),l("div",{key:f.label,class:"relative flex items-center gap-2 rounded-lg border border-border-default px-3 py-2",onMouseenter:h=>v("block-"+f.label),onMouseleave:k},[e("div",{class:"h-3 w-3 rounded-sm",style:H({backgroundColor:f.color})},null,4),e("span",Yt,c(f.label),1),e("span",Zt,"×"+c(f.count),1),g.value==="block-"+f.label?(s(),l("div",es,[M(c(f.desc)+" ",1),o[22]||(o[22]=e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1))])):y("",!0)],40,Xt))),128))])]),e("div",ts,[e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[5]||(o[5]=f=>v("aheads")),onMouseleave:k},[o[24]||(o[24]=e("span",{class:"text-text-muted"},"Attention Heads",-1)),w(C(j),{class:"inline ms-1 h-3 w-3 text-text-muted align-text-top"}),e("span",ss,c(t.architecture.attentionHeadCount),1),g.value==="aheads"?(s(),l("div",os,[...o[23]||(o[23]=[M(" Number of parallel attention computations per layer. Each head learns to focus on different patterns (syntax, semantics, position, etc.). ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32),e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[6]||(o[6]=f=>v("kvheads")),onMouseleave:k},[o[26]||(o[26]=e("span",{class:"text-text-muted"},"KV Heads",-1)),w(C(j),{class:"inline ms-1 h-3 w-3 text-text-muted align-text-top"}),e("span",ns,c(t.architecture.kvHeadCount),1),g.value==="kvheads"?(s(),l("div",rs,[...o[25]||(o[25]=[M(" Key-Value heads used in Grouped Query Attention (GQA). Fewer KV heads than attention heads means memory savings — multiple query heads share the same key/value projections. ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32),e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[7]||(o[7]=f=>v("embdim")),onMouseleave:k},[o[28]||(o[28]=e("span",{class:"text-text-muted"},"Embedding Dim",-1)),w(C(j),{class:"inline ms-1 h-3 w-3 text-text-muted align-text-top"}),e("span",as,c(t.architecture.embeddingLength),1),g.value==="embdim"?(s(),l("div",ls,[...o[27]||(o[27]=[M(" Size of the vector representing each token inside the model. Larger dimensions can capture richer semantic information but increase memory and compute. ",-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32),e("div",{class:"relative rounded-lg bg-surface p-3",onMouseenter:o[8]||(o[8]=f=>v("ffndim")),onMouseleave:k},[o[30]||(o[30]=e("span",{class:"text-text-muted"},"FFN Dim",-1)),w(C(j),{class:"inline ms-1 h-3 w-3 text-text-muted align-text-top"}),e("span",is,c(t.architecture.feedForwardLength),1),g.value==="ffndim"?(s(),l("div",ds,[...o[29]||(o[29]=[M(` Width of the feed-forward network's hidden layer. Typically 2-4x the embedding dimension. This is where much of the model's "knowledge" is stored as learned patterns. `,-1),e("div",{class:"absolute bottom-full left-1/2 -translate-x-1/2 -mb-px border-4 border-transparent border-b-surface-overlay"},null,-1)])])):y("",!0)],32)]),m.value?(s(),l("div",us,[e("button",{class:"flex w-full items-center justify-between p-4 text-start",onClick:o[9]||(o[9]=f=>p.value=!p.value)},[o[32]||(o[32]=e("h4",{class:"text-xs font-medium text-text-muted uppercase tracking-wide"},"Model Defaults",-1)),(s(),l("svg",{class:F(["h-4 w-4 text-text-muted transition-transform",p.value?"rotate-180":""]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[...o[31]||(o[31]=[e("path",{d:"M6 9l6 6 6-6"},null,-1)])],2))]),p.value?(s(),l("div",cs,[e("table",ms,[(s(!0),l(L,null,A(m.value,(f,h)=>(s(),l("tr",{key:h,class:"border-b border-border-default/50 last:border-0"},[e("td",ps,c(h),1),e("td",xs,c(f),1)]))),128))])])):y("",!0)])):y("",!0),d.value?(s(),l("div",fs,[e("button",{class:"flex w-full items-center justify-between p-4 text-start",onClick:o[10]||(o[10]=f=>i.value=!i.value)},[o[34]||(o[34]=e("h4",{class:"text-xs font-medium text-text-muted uppercase tracking-wide"},"Chat Template",-1)),(s(),l("svg",{class:F(["h-4 w-4 text-text-muted transition-transform",i.value?"rotate-180":""]),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[...o[33]||(o[33]=[e("path",{d:"M6 9l6 6 6-6"},null,-1)])],2))]),i.value?(s(),l("div",bs,[e("pre",vs,c(d.value),1)])):y("",!0)])):y("",!0)]))}}),ys={class:"space-y-3"},hs={class:"flex items-center justify-between"},ks=["value"],_s={key:0,class:"overflow-auto rounded-lg border border-border-default bg-surface p-2"},$s=N({__name:"AttentionHeatmap",props:{patterns:{}},setup(t){const a=t,r=S(0),n=S(null),m=$(()=>a.patterns[r.value]??null);function d(){const p=n.value,i=m.value;if(!p||!i)return;const u=p.getContext("2d");if(!u)return;const x=i.matrix.length,b=Math.min(Math.floor(400/x),20),g=x*b;p.width=g,p.height=g;for(let v=0;v<x;v++)for(let k=0;k<x;k++){const T=i.matrix[v]?.[k]??0,o=Math.floor(T*255);u.fillStyle=`rgb(${Math.floor(56+T*100)}, ${Math.floor(100+o*.5)}, ${o})`,u.fillRect(k*b,v*b,b,b)}}return X(d),V([m],d),(p,i)=>(s(),l("div",ys,[e("div",hs,[i[1]||(i[1]=e("div",{class:"flex items-center gap-2"},[e("h4",{class:"text-sm font-medium text-text-secondary"},"Attention Pattern"),e("span",{class:"rounded-full bg-warning/20 px-2 py-0.5 text-xs text-warning"},"Illustrative")],-1)),t.patterns.length>1?W((s(),l("select",{key:0,"onUpdate:modelValue":i[0]||(i[0]=u=>r.value=u),class:"rounded border border-border-default bg-surface px-2 py-1 text-xs text-text-primary"},[(s(!0),l(L,null,A(t.patterns,(u,x)=>(s(),l("option",{key:x,value:x}," Layer "+c(u.layerIndex)+" / Head "+c(u.headIndex),9,ks))),128))],512)),[[Fe,r.value,void 0,{number:!0}]]):y("",!0)]),m.value?(s(),l("div",_s,[e("canvas",{ref_key:"canvasRef",ref:n,class:"max-w-full"},null,512)])):y("",!0),i[2]||(i[2]=e("p",{class:"text-xs text-text-muted leading-relaxed"},[M(" This is a "),e("strong",{class:"text-warning"},"synthetic illustration"),M(" of how attention patterns work in transformer models — it shows causal masking (tokens can only attend to previous tokens) and positional decay (nearby tokens get more attention). Real attention weights are not available through the Ollama API, so this visualization demonstrates the concept rather than reflecting actual model behavior. ")],-1))]))}}),ws={class:"space-y-3"},Cs={class:"h-48 rounded-lg border border-border-default bg-surface-raised p-4"},Ts=N({__name:"LayerActivationChart",props:{activations:{}},setup(t){J.register(K,U,re,Q);const a=t,r=$(()=>({labels:a.activations.map(m=>m.layerName.replace(/^block_\d+_/,"")),datasets:[{label:"Norm",data:a.activations.map(m=>m.norm),backgroundColor:"#a855f7"}]})),n={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1}},scales:{x:{display:!1},y:{ticks:{color:"#94a3b8",font:{size:10}},grid:{color:"rgba(71, 85, 105, 0.3)"}}}};return(m,d)=>(s(),l("div",ws,[d[0]||(d[0]=e("div",{class:"flex items-center gap-2"},[e("h4",{class:"text-sm font-medium text-text-secondary"},"Layer Activation Norms"),e("span",{class:"rounded-full bg-warning/20 px-2 py-0.5 text-xs text-warning"},"Simulated")],-1)),e("div",Cs,[w(C(ae),{data:r.value,options:n},null,8,["data"])]),d[1]||(d[1]=e("p",{class:"text-xs text-text-muted leading-relaxed"},[M(" This is a "),e("strong",{class:"text-warning"},"simulated visualization"),M(" of activation norms across the model's layers. In a real model, these norms reveal how much each layer contributes to the output — unusually high norms can indicate exploding gradients or bottleneck layers, while low norms may suggest underutilized capacity. Actual activation data requires hooking into the inference engine, which the Ollama API does not expose. ")],-1))]))}}),Ms={class:"space-y-6"},Ss={key:0},zs={key:1},Ns={key:2},Ls={key:3,class:"rounded-lg border border-border-default bg-surface-raised p-8 text-center text-sm text-text-muted"},As=N({__name:"IntrospectionPanel",props:{sessionId:{},modelName:{}},setup(t){const a=t,r=de(),n=te(),m=$(()=>r.getArchitecture(a.modelName)),d=$(()=>r.getAttentionPatterns(a.sessionId)),p=$(()=>r.getLayerActivations(a.sessionId));return X(async()=>{m.value||await Mt(a.modelName);const i=m.value;if(i){if(d.value.length===0){const x=n.getTokens(a.sessionId).slice(0,30).map(b=>b.text);if(x.length>0){const b=$t(x,i.attentionHeadCount,i.blockCount);r.setAttentionPatterns(a.sessionId,b)}}if(p.value.length===0){const u=wt(i);r.setLayerActivations(a.sessionId,u)}}}),(i,u)=>(s(),l("div",Ms,[m.value?(s(),l("div",Ss,[u[0]||(u[0]=e("h3",{class:"mb-3 text-sm font-medium text-text-secondary"},"Model Architecture",-1)),w(gs,{architecture:m.value,"model-name":t.modelName},null,8,["architecture","model-name"])])):y("",!0),d.value.length>0?(s(),l("div",zs,[w($s,{patterns:d.value},null,8,["patterns"])])):y("",!0),p.value.length>0?(s(),l("div",Ns,[w(Ts,{activations:p.value},null,8,["activations"])])):y("",!0),m.value?y("",!0):(s(),l("div",Ls," Loading model introspection data... "))]))}}),Is={class:"overflow-auto rounded-lg bg-surface p-3 text-xs text-text-secondary font-mono max-h-80"},G=N({__name:"JsonViewer",props:{data:{},maxDepth:{}},setup(t){const a=t,r=$(()=>{try{return JSON.stringify(a.data,null,2)}catch{return String(a.data)}});return(n,m)=>(s(),l("pre",Is,c(r.value),1))}}),Ps={class:"rounded-lg border border-border-default bg-surface-raised"},js={class:"flex items-center gap-3"},Ds={class:"text-sm font-medium text-text-primary"},Fs={class:"ms-2 text-xs text-text-muted"},Rs={class:"flex items-center gap-2"},Os={key:0,class:"border-t border-border-default p-4 space-y-3"},Bs={key:0},qs={key:1},Hs={class:"rounded-lg bg-error/10 p-3 text-xs text-error"},Es=N({__name:"ToolCallCard",props:{entry:{}},emits:["optimize"],setup(t,{emit:a}){const r=t,n=a,m=$(()=>r.entry.status==="completed"&&r.entry.result!=null&&typeof r.entry.result=="object"),d=S(!1);return(p,i)=>(s(),l("div",Ps,[e("button",{class:"flex w-full items-center justify-between px-4 py-3 text-start hover:bg-surface-overlay transition-colors",onClick:i[0]||(i[0]=u=>d.value=!d.value)},[e("div",js,[i[2]||(i[2]=e("span",{class:"text-base"},"⚡",-1)),e("div",null,[e("span",Ds,c(t.entry.functionName),1),e("span",Fs,c(t.entry.durationMs!=null?C(B)(t.entry.durationMs):"pending"),1)])]),e("div",Rs,[w(se,{status:t.entry.status},null,8,["status"]),e("span",{class:F(["text-text-muted transition-transform text-xs",{"rotate-180":d.value}])},"▾",2)])]),d.value?(s(),l("div",Os,[e("div",null,[i[3]||(i[3]=e("div",{class:"text-xs font-medium text-text-muted uppercase tracking-wide mb-1"},"Arguments",-1)),w(G,{data:t.entry.arguments},null,8,["data"])]),t.entry.result!==void 0?(s(),l("div",Bs,[i[4]||(i[4]=e("div",{class:"text-xs font-medium text-text-muted uppercase tracking-wide mb-1"},"Result",-1)),w(G,{data:t.entry.result},null,8,["data"])])):y("",!0),t.entry.error?(s(),l("div",qs,[i[5]||(i[5]=e("div",{class:"text-xs font-medium text-error uppercase tracking-wide mb-1"},"Error",-1)),e("pre",Hs,c(t.entry.error),1)])):y("",!0),m.value?(s(),l("button",{key:2,class:"mt-1 rounded-md border border-border-default px-3 py-1.5 text-xs font-medium text-accent hover:bg-surface-overlay transition-colors",onClick:i[1]||(i[1]=ie(u=>n("optimize",t.entry),["stop"]))}," Optimize this Tool ")):y("",!0)])):y("",!0)]))}}),Vs={class:"space-y-4"},Ws={class:"flex items-center gap-4 rounded-lg border border-border-default bg-surface-raised p-4"},Gs={class:"text-sm text-text-secondary"},Js={class:"font-semibold text-text-primary"},Ks={key:0,class:"text-sm text-text-secondary"},Us={class:"text-text-primary"},Qs={key:0,class:"space-y-3"},Xs={key:1,class:"rounded-lg border border-border-default bg-surface-raised p-8 text-center text-sm text-text-muted"},Ys=N({__name:"ToolCallTimeline",props:{sessionId:{}},emits:["optimize"],setup(t,{emit:a}){const r=t,n=a,m=xe(),d=$(()=>m.getToolCalls(r.sessionId)),p=$(()=>d.value.reduce((i,u)=>i+(u.durationMs??0),0));return(i,u)=>(s(),l("div",Vs,[e("div",Ws,[e("div",Gs,[e("span",Js,c(d.value.length),1),u[1]||(u[1]=M(" tool calls ",-1))]),p.value>0?(s(),l("div",Ks,[u[2]||(u[2]=M(" Total: ",-1)),e("span",Us,c(C(B)(p.value)),1)])):y("",!0)]),d.value.length>0?(s(),l("div",Qs,[(s(!0),l(L,null,A(d.value,x=>(s(),P(Es,{key:x.id,entry:x,onOptimize:u[0]||(u[0]=b=>n("optimize",b))},null,8,["entry"]))),128))])):(s(),l("div",Xs,[...u[3]||(u[3]=[e("p",null,"No tool calls in this session.",-1),e("p",{class:"mt-1"},"Use chat mode with tool definitions to see tool call activity.",-1)])]))]))}});function Zs(t){const a=ge(),r=$(()=>a.getGraph(t.value)),n=S(800),m=S(400),d=$(()=>{const i=r.value?.nodes??[];if(i.length===0)return[];const u=180,x=60,b=60,g=m.value/2,v=i.length*(u+b);return n.value=Math.max(800,v+100),i.map((k,T)=>({...k,x:50+T*(u+b),y:g-x/2}))}),p=$(()=>{const i=r.value?.edges??[],u=new Map(d.value.map(x=>[x.id,x]));return i.map(x=>{const b=u.get(x.source),g=u.get(x.target);return!b||!g?null:{...x,x1:b.x+180,y1:b.y+30,x2:g.x,y2:g.y+30}}).filter(x=>x!==null)});return{graph:r,layoutNodes:d,layoutEdges:p,svgWidth:n,svgHeight:m}}const eo=["transform"],to=["stroke"],so={x:"12",y:"24",class:"fill-text-primary text-xs font-medium","font-size":"12"},oo={x:"12",y:"44",class:"fill-text-secondary text-xs","font-size":"11"},no=N({__name:"AgentNode",props:{node:{},selected:{type:Boolean}},emits:["select"],setup(t){const a=t,r=$(()=>we[a.node.type]??"#94a3b8"),n={start:"▶",llm_call:"◈",tool_call:"⚡",decision:"◇",output:"■",error:"✕"};return(m,d)=>(s(),l("g",{transform:`translate(${t.node.x}, ${t.node.y})`,class:"cursor-pointer",onClick:d[0]||(d[0]=p=>m.$emit("select",t.node.id))},[e("rect",{width:"180",height:"60",rx:"8",class:F(["fill-surface-raised stroke-2",{"stroke-[3]":t.selected}]),stroke:r.value},null,10,to),e("text",so,c(n[t.node.type]??"•")+" "+c(t.node.type),1),e("text",oo,c(t.node.label.slice(0,22))+c(t.node.label.length>22?"...":""),1)],8,eo))}}),ro={key:0,class:"rounded-lg border border-border-default bg-surface-raised p-4 space-y-3"},ao={class:"text-sm font-medium text-text-primary"},lo={class:"grid grid-cols-2 gap-2 text-xs text-text-secondary"},io={class:"text-text-primary"},uo={class:"text-text-primary"},co={key:0},mo=N({__name:"AgentStateDiff",props:{node:{}},setup(t){return(a,r)=>t.node?(s(),l("div",ro,[e("h4",ao,c(t.node.label),1),e("div",lo,[e("div",null,[r[0]||(r[0]=M("Type: ",-1)),e("span",io,c(t.node.type),1)]),e("div",null,[r[1]||(r[1]=M("Step: ",-1)),e("span",uo,c(t.node.stepIndex),1)])]),Object.keys(t.node.state).length>0?(s(),l("div",co,[r[2]||(r[2]=e("div",{class:"text-xs font-medium text-text-muted uppercase tracking-wide mb-1"},"State",-1)),w(G,{data:t.node.state},null,8,["data"])])):y("",!0)])):y("",!0)}}),po={class:"space-y-4"},xo={key:0,class:"flex gap-4"},fo={class:"flex-1 overflow-auto rounded-lg border border-border-default bg-surface"},bo=["width","height"],vo=["x1","y1","x2","y2"],go={class:"w-72 shrink-0"},yo={key:0,class:"rounded-lg border border-border-default bg-surface-raised p-4 text-center text-sm text-text-muted"},ho={key:1,class:"rounded-lg border border-border-default bg-surface-raised p-8 text-center text-sm text-text-muted"},ko=N({__name:"AgentGraphView",props:{sessionId:{}},setup(t){const a=t,r=$(()=>a.sessionId),{layoutNodes:n,layoutEdges:m,svgWidth:d,svgHeight:p}=Zs(r),i=S(null),u=$(()=>i.value?n.value.find(x=>x.id===i.value)??null:null);return(x,b)=>(s(),l("div",po,[C(n).length>0?(s(),l("div",xo,[e("div",fo,[(s(),l("svg",{width:C(d),height:C(p),class:"min-w-full"},[(s(!0),l(L,null,A(C(m),g=>(s(),l("line",{key:g.id,x1:g.x1,y1:g.y1,x2:g.x2,y2:g.y2,class:"stroke-border-default","stroke-width":"2","marker-end":"url(#arrowhead)"},null,8,vo))),128)),b[1]||(b[1]=e("defs",null,[e("marker",{id:"arrowhead",markerWidth:"10",markerHeight:"7",refX:"10",refY:"3.5",orient:"auto"},[e("polygon",{points:"0 0, 10 3.5, 0 7",class:"fill-border-default"})])],-1)),(s(!0),l(L,null,A(C(n),g=>(s(),P(no,{key:g.id,node:g,selected:i.value===g.id,onSelect:b[0]||(b[0]=v=>i.value=v)},null,8,["node","selected"]))),128))],8,bo))]),e("div",go,[w(mo,{node:u.value},null,8,["node"]),u.value?y("",!0):(s(),l("div",yo," Click a node to inspect its state. "))])])):(s(),l("div",ho,[...b[2]||(b[2]=[e("p",null,"No agent graph data for this session.",-1),e("p",{class:"mt-1"},"Agent graph nodes are created during generation.",-1)])]))]))}}),_o={class:"rounded-lg border border-border-default bg-surface-raised overflow-hidden"},$o={class:"flex items-center justify-between px-4 py-2 border-b border-border-default"},wo={class:"flex items-center gap-2"},Co={class:"text-sm font-medium text-text-primary"},To={class:"rounded-full bg-surface-overlay px-2 py-0.5 text-xs text-text-muted"},Mo={class:"flex items-center gap-3 text-xs text-text-secondary"},So={class:"text-text-muted"},zo={class:"h-1 bg-surface"},No={class:"px-4 py-3 text-xs text-text-secondary font-mono whitespace-pre-wrap max-h-40 overflow-auto"},Lo=N({__name:"PromptSection",props:{section:{},totalTokens:{}},setup(t){const r=O[t.section.type]??O.unknown;return(n,m)=>(s(),l("div",_o,[e("div",$o,[e("div",wo,[e("div",{class:"h-3 w-3 rounded-sm",style:H({backgroundColor:C(r)})},null,4),e("span",Co,c(t.section.label),1),e("span",To,c(t.section.type),1)]),e("div",Mo,[e("span",null,"~"+c(t.section.tokenCount)+" tokens",1),e("span",So,c(t.section.percentage.toFixed(1))+"%",1)])]),e("div",zo,[e("div",{class:"h-full transition-all",style:H({width:`${t.section.percentage}%`,backgroundColor:C(r)})},null,4)]),e("pre",No,c(t.section.content),1)]))}}),Ao={class:"rounded-lg border border-border-default bg-surface-raised p-4"},Io={class:"text-xs font-medium text-text-muted uppercase tracking-wide mb-3"},Po={class:"flex h-6 overflow-hidden rounded-lg"},jo=["title"],Do={class:"mt-3 flex flex-wrap gap-3 text-xs"},Fo={class:"text-text-secondary"},Ro={class:"text-text-muted"},Oo=N({__name:"PromptTokenCount",props:{sections:{},totalTokens:{}},setup(t){return(a,r)=>(s(),l("div",Ao,[e("h4",Io," Token Distribution (~"+c(t.totalTokens)+" total) ",1),e("div",Po,[(s(!0),l(L,null,A(t.sections,n=>(s(),l("div",{key:n.id,class:"transition-all",style:H({width:`${n.percentage}%`,backgroundColor:C(O)[n.type]??C(O).unknown,minWidth:n.percentage>0?"2px":"0"}),title:`${n.label}: ~${n.tokenCount} tokens (${n.percentage.toFixed(1)}%)`},null,12,jo))),128))]),e("div",Do,[(s(!0),l(L,null,A(t.sections,n=>(s(),l("div",{key:n.id,class:"flex items-center gap-1.5"},[e("div",{class:"h-2.5 w-2.5 rounded-sm",style:H({backgroundColor:C(O)[n.type]??C(O).unknown})},null,4),e("span",Fo,c(n.label),1),e("span",Ro,"("+c(n.percentage.toFixed(0))+"%)",1)]))),128))])]))}}),Bo={key:0,class:"space-y-4"},qo={class:"space-y-3"},Ho={key:0,class:"rounded-lg border border-border-default bg-surface-raised p-4"},Eo={class:"space-y-2"},Vo={class:"flex items-center gap-2"},Wo={class:"rounded-full bg-surface-overlay px-2 py-0.5 text-xs text-text-muted"},Go={class:"text-text-secondary truncate max-w-md"},Jo={class:"text-xs text-text-muted"},Ko={key:1,class:"rounded-lg border border-border-default bg-surface-raised p-8 text-center text-sm text-text-muted"},Uo=N({__name:"PromptInspector",props:{sessionId:{}},setup(t){const a=t,r=Ce(),n=$(()=>r.getAnatomy(a.sessionId)),m=$(()=>r.getSections(a.sessionId));return(d,p)=>n.value?(s(),l("div",Bo,[w(Oo,{sections:m.value,"total-tokens":n.value.totalTokenCount},null,8,["sections","total-tokens"]),e("div",qo,[(s(!0),l(L,null,A(m.value,i=>(s(),P(Lo,{key:i.id,section:i,"total-tokens":n.value.totalTokenCount},null,8,["section","total-tokens"]))),128))]),n.value.messages&&n.value.messages.length>0?(s(),l("div",Ho,[p[0]||(p[0]=e("h4",{class:"text-xs font-medium text-text-muted uppercase tracking-wide mb-3"},"Message Breakdown",-1)),e("div",Eo,[(s(!0),l(L,null,A(n.value.messages,(i,u)=>(s(),l("div",{key:u,class:"flex items-center justify-between rounded-lg bg-surface px-3 py-2 text-sm"},[e("div",Vo,[e("span",Wo,c(i.role),1),e("span",Go,c(i.content.slice(0,80))+c(i.content.length>80?"...":""),1)]),e("span",Jo,"~"+c(i.tokenCount)+" tok",1)]))),128))])])):y("",!0)])):(s(),l("div",Ko," No prompt anatomy data available. "))}});function Qo(t,a){if(a.length===0)return t;const r=Ee(a,"__raw"),n=t.split(`
2
- `);let m=-1;for(let v=n.length-1;v>=0;v--)if(/^\s*return\s+/.test(n[v]??"")){m=v;break}if(m===-1)return`${t}
3
-
4
- // Optimized: return selected fields only
5
- const __raw = args
6
- ${r}`;const d=n[m],i=d.match(/^(\s*)return\s+/)?.[1]??" ";let u=d.replace(/^\s*return\s+/,"").trim(),x=m;if(u.includes("{")&&!ee(u))for(let v=m+1;v<n.length&&(u+=`
7
- `+n[v],x=v,!ee(u));v++);const b=[`${i}const __raw = ${u.trim()}`,`${i}${r}`].join(`
8
- `);return[...n.slice(0,m),"",`${i}// Optimized: return selected fields only`,b,...n.slice(x+1)].join(`
9
- `)}function ee(t){let a=0;for(const r of t)if(r==="{"&&a++,r==="}"&&a--,a<0)return!1;return a===0}const Xo={class:"relative flex h-full w-full max-w-2xl flex-col border-s border-border-default bg-bg-base shadow-xl"},Yo={class:"flex items-center justify-between border-b border-border-default px-5 py-4"},Zo={class:"text-base font-semibold text-text-primary"},en={key:0,class:"flex flex-1 flex-col items-center justify-center gap-4 p-8"},tn={class:"text-sm text-text-secondary"},sn={class:"font-mono text-accent"},on={class:"flex-1 overflow-y-auto"},nn={class:"grid grid-cols-3 gap-0 border-b border-border-default"},rn={class:"col-span-2 border-e border-border-default p-4"},an={class:"max-h-64 overflow-auto rounded-lg border border-border-default bg-surface-raised p-3"},ln={class:"p-4"},dn={class:"mb-2 text-xs font-medium uppercase tracking-wide text-text-muted"},un={key:0,class:"text-xs text-text-muted italic"},cn={key:1,class:"space-y-1"},mn=["title"],pn=["onClick"],xn={class:"border-b border-border-default p-4"},fn={class:"mb-2 flex items-center justify-between"},bn=["value"],vn={class:"space-y-3 p-4"},gn={key:0,class:"rounded-lg bg-warning/10 p-3 text-xs text-warning"},yn={class:"flex items-center justify-end gap-3 border-t border-border-default px-5 py-4"},hn=["disabled"],kn=N({__name:"ResponseOptimizerDrawer",props:{entry:{}},emits:["close"],setup(t,{emit:a}){const r=t,n=a,m=Be(),d=He(),p=S(new Set),i=S(`${r.entry.functionName}_optimized`),u=S(""),x=S(""),b=S(!1),g=S(!1),v=S(null),k=$(()=>d.findByFunctionName(r.entry.functionName)),T=$(()=>k.value?.implementation.code??""),o=$(()=>Array.from(p.value));V(o,z=>{if(z.length>0){const _=z.map(I=>I.split(".").pop()??I).join(", ");u.value=`Optimized ${r.entry.functionName} returning only: ${_}`}else u.value=""}),V(o,z=>{b.value||(x.value=f(z))});function f(z){return z.length===0?T.value:T.value?Qo(T.value,z):` // No original code found — filtering raw result
10
- const fullResult = await args
11
- return {
12
- ${We(z).map(E=>` ${E.returnKey}: args.${E.jsonPath}`).join(`,
13
- `)}
14
- }`}function h(z){const _=new Set(p.value);_.has(z)?_.delete(z):_.add(z),p.value=_}function D(z){const _=new Set(p.value);_.delete(z),p.value=_}function ue(z){x.value=z.target.value,b.value=!0}function ce(){x.value=f(o.value),b.value=!1}function me(){const z=k.value,_=z?JSON.parse(JSON.stringify(z.definition)):{type:"function",function:{name:i.value,description:u.value,parameters:{type:"object",properties:{},required:[]}}};_.function.name=i.value,_.function.description=u.value;const I=d.addTool({definition:_,implementation:{mode:"code",blocks:[],code:x.value},category:z?.category??"custom",optimizedFrom:{originalToolName:r.entry.functionName,selectedPaths:o.value,sampleResponse:r.entry.result}});v.value=I,g.value=!0}function pe(){v.value&&d.selectTool(v.value),m.push("/tools"),n("close")}function q(){n("close")}return(z,_)=>(s(),P(Re,{to:"body"},[e("div",{class:"fixed inset-0 z-50 flex justify-end",onClick:ie(q,["self"])},[e("div",{class:"absolute inset-0 bg-black/50",onClick:q}),e("div",Xo,[e("div",Yo,[e("h3",Zo," Optimize: "+c(t.entry.functionName),1),e("button",{class:"rounded p-1 text-text-muted hover:bg-surface-overlay hover:text-text-primary transition-colors",onClick:q},[w(C(Oe),{class:"h-5 w-5"})])]),g.value?(s(),l("div",en,[_[3]||(_[3]=e("div",{class:"text-4xl"},"✓",-1)),_[4]||(_[4]=e("p",{class:"text-lg font-medium text-text-primary"},"Tool created successfully",-1)),e("p",tn,[e("span",sn,c(i.value),1),_[2]||(_[2]=M(" has been added to your workshop. ",-1))]),e("div",{class:"mt-4 flex gap-3"},[e("button",{class:"rounded-lg border border-border-default px-4 py-2 text-sm text-text-secondary hover:bg-surface-overlay transition-colors",onClick:q}," Stay Here "),e("button",{class:"rounded-lg bg-accent px-4 py-2 text-sm font-medium text-white hover:bg-accent-hover transition-colors",onClick:pe}," Go to Workshop ")])])):(s(),l(L,{key:1},[e("div",on,[e("div",nn,[e("div",rn,[_[5]||(_[5]=e("div",{class:"mb-2 text-xs font-medium uppercase tracking-wide text-text-muted"}," Response (click fields to select) ",-1)),e("div",an,[w(Ve,{label:"result",value:t.entry.result,path:"","selected-paths":p.value,onTogglePath:h},null,8,["value","selected-paths"])])]),e("div",ln,[e("div",dn," Selected ("+c(p.value.size)+") ",1),p.value.size===0?(s(),l("div",un," Click fields in the tree to select them ")):(s(),l("div",cn,[(s(!0),l(L,null,A(o.value,I=>(s(),l("div",{key:I,class:"flex items-center justify-between rounded px-2 py-1 text-xs font-mono bg-surface-raised"},[e("span",{class:"truncate text-text-secondary",title:I},c(I),9,mn),e("button",{class:"ms-2 flex-shrink-0 text-text-muted hover:text-error transition-colors",onClick:E=>D(I)}," × ",8,pn)]))),128))]))])]),e("div",xn,[e("div",fn,[_[6]||(_[6]=e("span",{class:"text-xs font-medium uppercase tracking-wide text-text-muted"}," Code (editable) ",-1)),b.value?(s(),l("button",{key:0,class:"rounded px-2 py-0.5 text-xs text-accent hover:bg-surface-overlay transition-colors",onClick:ce}," Regenerate ")):y("",!0)]),e("textarea",{value:x.value,onInput:ue,class:"w-full rounded-lg border border-border-default bg-surface-raised p-3 font-mono text-xs text-text-primary placeholder-text-muted focus:border-accent focus:outline-none resize-y",rows:"10",spellcheck:"false",placeholder:"Select fields above to generate code..."},null,40,bn)]),e("div",vn,[e("div",null,[_[7]||(_[7]=e("label",{class:"mb-1 block text-xs font-medium text-text-muted"},"Tool Name",-1)),W(e("input",{"onUpdate:modelValue":_[0]||(_[0]=I=>i.value=I),class:"w-full rounded-lg border border-border-default bg-surface-raised px-3 py-2 text-sm text-text-primary placeholder-text-muted focus:border-accent focus:outline-none"},null,512),[[Z,i.value]])]),e("div",null,[_[8]||(_[8]=e("label",{class:"mb-1 block text-xs font-medium text-text-muted"},"Description",-1)),W(e("input",{"onUpdate:modelValue":_[1]||(_[1]=I=>u.value=I),class:"w-full rounded-lg border border-border-default bg-surface-raised px-3 py-2 text-sm text-text-primary placeholder-text-muted focus:border-accent focus:outline-none",placeholder:"What does this optimized tool return?"},null,512),[[Z,u.value]])]),k.value?y("",!0):(s(),l("div",gn,' Original tool "'+c(t.entry.functionName)+'" not found in workshop. The optimized tool will be created with a blank parameter schema. ',1))])]),e("div",yn,[e("button",{class:"rounded-lg border border-border-default px-4 py-2 text-sm text-text-secondary hover:bg-surface-overlay transition-colors",onClick:q}," Cancel "),e("button",{class:"rounded-lg bg-accent px-4 py-2 text-sm font-medium text-white hover:bg-accent-hover transition-colors disabled:opacity-50 disabled:cursor-not-allowed",disabled:p.value.size===0||!i.value.trim(),onClick:me}," Create Optimized Tool ",8,hn)])],64))])])]))}}),_n={key:0,class:"space-y-4"},$n={class:"flex items-center justify-between"},wn={class:"flex items-center gap-3"},Cn={class:"text-lg font-semibold"},Tn={class:"text-xs text-text-muted"},Mn={class:"flex items-center justify-between"},Sn={class:"relative"},zn={key:1,class:"absolute end-0 top-full z-20 mt-1 w-56 rounded-lg border border-border-default bg-surface-raised shadow-lg py-1"},Nn={class:"mt-4"},Ln={key:0,class:"space-y-4"},An={key:1,class:"flex items-center justify-center py-20 text-text-muted"},Kn=N({__name:"SessionPage",props:{id:{}},setup(t){const a=t,r=fe(),n=be(),m=te(),{t:d}=qe(),p=S("stream"),i=S(!1);function u(){const o=v.value;if(!o)return;const f={session:o,metrics:k.value,tokens:m.getTokens(a.id)};ye(f,`session-${o.id.slice(0,8)}.json`),i.value=!1}function x(){const o=v.value;if(!o)return;const f=k.value,h=["# Session Report — LLMxRay","",`**Model:** ${o.model}`,`**Session ID:** ${o.id}`,`**Status:** ${o.status}`,`**Created:** ${new Date(o.createdAt).toLocaleString()}`];f&&(h.push(""),h.push("## Metrics"),h.push(""),f.tokensPerSecond&&h.push(`- **Speed:** ${f.tokensPerSecond.toFixed(1)} tok/s`),f.ttftMs&&h.push(`- **TTFT:** ${f.ttftMs.toFixed(0)} ms`),f.completionTokenCount&&h.push(`- **Tokens generated:** ${f.completionTokenCount}`),f.promptTokenCount&&h.push(`- **Prompt tokens:** ${f.promptTokenCount}`)),o.prompt&&(h.push(""),h.push("## Prompt"),h.push(""),h.push(o.prompt)),o.outputText&&(h.push(""),h.push("## Response"),h.push(""),h.push(o.outputText)),h.push(""),h.push("---"),h.push("*Generated by LLMxRay — Local LLM Observatory*"),he(h.join(`
15
- `),`session-${o.id.slice(0,8)}.md`),i.value=!1}function b(){const o=m.getTokens(a.id);if(o.length===0)return;const f=["Index","Token","Timestamp","Confidence","Logprob","InterTokenLatencyMs"],h=o.map(D=>[String(D.index),D.text,String(D.timestamp),String(D.confidence),String(D.logprob??""),String(D.interTokenLatencyMs)]);ke(f,h,`token-stream-${a.id.slice(0,8)}.csv`),i.value=!1}const g=$(()=>[{key:"stream",label:d("session.tabs.stream")},{key:"reasoning",label:d("session.tabs.reasoning")},{key:"introspection",label:d("session.tabs.introspection")},{key:"tools",label:d("session.tabs.tools")},{key:"agent",label:d("session.tabs.agent")},{key:"prompt",label:d("session.tabs.prompt")}]),v=$(()=>r.sessionById(a.id)??null),k=$(()=>n.getMetrics(a.id)),T=S(null);return X(()=>{r.setActiveSession(a.id)}),(o,f)=>(s(),l(L,null,[v.value?(s(),l("div",_n,[e("div",$n,[e("div",wn,[e("h2",Cn,c(v.value.model),1),w(se,{status:v.value.status},null,8,["status"])]),e("div",Tn,c(o.$t("session.sessionId",{id:v.value.id.slice(0,8)})),1)]),e("div",Mn,[w(_e,{tabs:g.value,"active-tab":p.value,"onUpdate:activeTab":f[0]||(f[0]=h=>p.value=h)},null,8,["tabs","active-tab"]),e("div",Sn,[e("button",{class:"flex items-center gap-1 rounded-lg border border-border-default px-2.5 py-1 text-xs text-text-secondary hover:text-text-primary transition-colors",onClick:f[1]||(f[1]=h=>i.value=!i.value)},[w(C(Ge),{class:"h-3.5 w-3.5"}),M(" "+c(o.$t("session.export.title")),1)]),i.value?(s(),l("div",{key:0,class:"fixed inset-0 z-10",onClick:f[2]||(f[2]=h=>i.value=!1)})):y("",!0),i.value?(s(),l("div",zn,[e("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:u},c(o.$t("session.export.downloadJson")),1),e("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:x},c(o.$t("session.export.downloadMarkdown")),1),e("button",{class:"w-full px-3 py-2 text-start text-xs text-text-secondary hover:bg-surface-overlay",onClick:b},c(o.$t("session.export.downloadTokenCsv")),1)])):y("",!0)])]),e("div",Nn,[p.value==="stream"?(s(),l("div",Ln,[w(Te,{"session-id":t.id},null,8,["session-id"]),w(rt,{metrics:k.value},null,8,["metrics"])])):p.value==="reasoning"?(s(),P(kt,{key:1,"session-id":t.id},null,8,["session-id"])):p.value==="introspection"?(s(),P(As,{key:2,"session-id":t.id,"model-name":v.value.model},null,8,["session-id","model-name"])):p.value==="tools"?(s(),P(Ys,{key:3,"session-id":t.id,onOptimize:f[3]||(f[3]=h=>T.value=h)},null,8,["session-id"])):p.value==="agent"?(s(),P(ko,{key:4,"session-id":t.id},null,8,["session-id"])):p.value==="prompt"?(s(),P(Uo,{key:5,"session-id":t.id},null,8,["session-id"])):y("",!0)])])):(s(),l("div",An,c(o.$t("session.notFound")),1)),T.value?(s(),P(kn,{key:2,entry:T.value,onClose:f[4]||(f[4]=h=>T.value=null)},null,8,["entry"])):y("",!0)],64))}});export{Kn as default};
@@ -1 +0,0 @@
1
- @font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2) format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2) format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2) format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2) format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2) format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2) format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2) format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2) format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2) format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2) format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2) format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2) format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2) format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2) format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2) format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2) format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2) format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2) format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2) format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2) format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2) format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2) format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-cyrillic-ext-400-normal-txZ9Fk_1.woff2) format("woff2"),url(/assets/fira-code-cyrillic-ext-400-normal-Buh61xzB.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-cyrillic-400-normal-UC0NFL4U.woff2) format("woff2"),url(/assets/fira-code-cyrillic-400-normal-dc1q3VD7.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-greek-ext-400-normal-DR7mBgIM.woff2) format("woff2"),url(/assets/fira-code-greek-ext-400-normal-DSPUheWg.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-greek-400-normal-B2Gh_Y8s.woff2) format("woff2"),url(/assets/fira-code-greek-400-normal-DobhaxvF.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/fira-code-symbols2-400-normal-_QEZCEwe.woff) format("woff");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-latin-ext-400-normal-KSMg0QLl.woff2) format("woff2"),url(/assets/fira-code-latin-ext-400-normal-DG73JjOf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fira-code-latin-400-normal-DGosTW8U.woff2) format("woff2"),url(/assets/fira-code-latin-400-normal-C-QZfXAs.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fira-code-cyrillic-ext-500-normal-CYRspHgm.woff2) format("woff2"),url(/assets/fira-code-cyrillic-ext-500-normal-CwtLmSFD.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fira-code-cyrillic-500-normal-CX35h3Mg.woff2) format("woff2"),url(/assets/fira-code-cyrillic-500-normal-Bu7VCL72.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fira-code-greek-ext-500-normal-BO3iq16n.woff2) format("woff2"),url(/assets/fira-code-greek-ext-500-normal-CMiNLXER.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fira-code-greek-500-normal-CVO0IRNt.woff2) format("woff2"),url(/assets/fira-code-greek-500-normal-DEXIWiey.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/fira-code-symbols2-500-normal-DwsgbIjQ.woff) format("woff");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fira-code-latin-ext-500-normal-Crd9e_oI.woff2) format("woff2"),url(/assets/fira-code-latin-ext-500-normal-CaANqXjI.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fira Code;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fira-code-latin-500-normal-B6gioGu8.woff2) format("woff2"),url(/assets/fira-code-latin-500-normal-aMLC2AMm.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-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-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-green-500:oklch(72.3% .219 149.579);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--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-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-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);--color-surface:#0f172a;--color-surface-raised:#1e293b;--color-surface-overlay:#334155;--color-border-default:#475569;--color-text-primary:#f1f5f9;--color-text-secondary:#94a3b8;--color-text-muted:#64748b;--color-accent:#a855f7;--color-accent-hover:#c084fc;--color-success:#4ade80;--color-warning:#fbbf24;--color-error:#f87171}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.start-0{inset-inline-start:calc(var(--spacing) * 0)}.end{inset-inline-end:var(--spacing)}.end-0{inset-inline-end:calc(var(--spacing) * 0)}.-top-0\.5{top:calc(var(--spacing) * -.5)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-4{top:calc(var(--spacing) * 4)}.top-16{top:calc(var(--spacing) * 16)}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing) * -.5)}.right-0{right:calc(var(--spacing) * 0)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-full{left:100%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[9999\]{z-index:9999}.col-span-2{grid-column:span 2/span 2}.\!container{width:100%!important}@media(min-width:40rem){.\!container{max-width:40rem!important}}@media(min-width:48rem){.\!container{max-width:48rem!important}}@media(min-width:64rem){.\!container{max-width:64rem!important}}@media(min-width:80rem){.\!container{max-width:80rem!important}}@media(min-width:96rem){.\!container{max-width:96rem!important}}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing) * 1)}.my-2{margin-block:calc(var(--spacing) * 2)}.ms-1{margin-inline-start:calc(var(--spacing) * 1)}.ms-1\.5{margin-inline-start:calc(var(--spacing) * 1.5)}.ms-2{margin-inline-start:calc(var(--spacing) * 2)}.ms-3{margin-inline-start:calc(var(--spacing) * 3)}.ms-7{margin-inline-start:calc(var(--spacing) * 7)}.ms-auto{margin-inline-start:auto}.me-1{margin-inline-end:calc(var(--spacing) * 1)}.me-1\.5{margin-inline-end:calc(var(--spacing) * 1.5)}.-mt-3{margin-top:calc(var(--spacing) * -3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.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-6{margin-top:calc(var(--spacing) * 6)}.mt-auto{margin-top:auto}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:calc(var(--spacing) * 1)}.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-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-full{height:100%}.h-screen{height:100vh}.max-h-24{max-height:calc(var(--spacing) * 24)}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[150px\]{max-height:150px}.max-h-\[200px\]{max-height:200px}.max-h-\[400px\]{max-height:400px}.max-h-\[500px\]{max-height:500px}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-\[200px\]{min-height:200px}.min-h-full{min-height:100%}.w-1{width:calc(var(--spacing) * 1)}.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-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-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-48{width:calc(var(--spacing) * 48)}.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-72{width:calc(var(--spacing) * 72)}.w-\[280px\]{width:280px}.w-\[400px\]{width:400px}.w-\[440px\]{width:440px}.w-\[480px\]{width:480px}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[80\%\]{max-width:80%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[100px\]{max-width:100px}.max-w-\[120px\]{max-width:120px}.max-w-\[200px\]{max-width:200px}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[150px\]{min-width:150px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-\[15\]{flex:15}.flex-\[20\]{flex:20}.flex-\[25\]{flex:25}.flex-\[40\]{flex:40}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-3\.5{--tw-translate-x:calc(var(--spacing) * 3.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1{--tw-translate-y:calc(var(--spacing) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-2{--tw-translate-y:calc(var(--spacing) * -2);translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-90{rotate:-90deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-crosshair{cursor:crosshair}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.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-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.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}.gap-0{gap:calc(var(--spacing) * 0)}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-px{gap:1px}:where(.space-y-0>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 0) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 0) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-br-md{border-bottom-right-radius:var(--radius-md)}.rounded-bl-md{border-bottom-left-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-\[\#a78bfa\]\/30{border-color:#a78bfa4d}.border-accent{border-color:var(--color-accent)}.border-accent\/20{border-color:#a855f733}@supports (color:color-mix(in lab,red,red)){.border-accent\/20{border-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.border-accent\/30{border-color:#a855f74d}@supports (color:color-mix(in lab,red,red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.border-accent\/40{border-color:#a855f766}@supports (color:color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.border-accent\/50{border-color:#a855f780}@supports (color:color-mix(in lab,red,red)){.border-accent\/50{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500) 30%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.border-border-default{border-color:var(--color-border-default)}.border-border-default\/30{border-color:#4755694d}@supports (color:color-mix(in lab,red,red)){.border-border-default\/30{border-color:color-mix(in oklab,var(--color-border-default) 30%,transparent)}}.border-border-default\/50{border-color:#47556980}@supports (color:color-mix(in lab,red,red)){.border-border-default\/50{border-color:color-mix(in oklab,var(--color-border-default) 50%,transparent)}}.border-current{border-color:currentColor}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500) 30%,transparent)}}.border-error{border-color:var(--color-error)}.border-error\/30{border-color:#f871714d}@supports (color:color-mix(in lab,red,red)){.border-error\/30{border-color:color-mix(in oklab,var(--color-error) 30%,transparent)}}.border-error\/50{border-color:#f8717180}@supports (color:color-mix(in lab,red,red)){.border-error\/50{border-color:color-mix(in oklab,var(--color-error) 50%,transparent)}}.border-green-500\/50{border-color:#00c75880}@supports (color:color-mix(in lab,red,red)){.border-green-500\/50{border-color:color-mix(in oklab,var(--color-green-500) 50%,transparent)}}.border-purple-500\/30{border-color:#ac4bff4d}@supports (color:color-mix(in lab,red,red)){.border-purple-500\/30{border-color:color-mix(in oklab,var(--color-purple-500) 30%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500) 30%,transparent)}}.border-success{border-color:var(--color-success)}.border-success\/30{border-color:#4ade804d}@supports (color:color-mix(in lab,red,red)){.border-success\/30{border-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.border-transparent{border-color:#0000}.border-warning\/20{border-color:#fbbf2433}@supports (color:color-mix(in lab,red,red)){.border-warning\/20{border-color:color-mix(in oklab,var(--color-warning) 20%,transparent)}}.border-warning\/30{border-color:#fbbf244d}@supports (color:color-mix(in lab,red,red)){.border-warning\/30{border-color:color-mix(in oklab,var(--color-warning) 30%,transparent)}}.border-t-\[\#a78bfa\]{border-top-color:#a78bfa}.border-t-transparent{border-top-color:#0000}.border-t-warning{border-top-color:var(--color-warning)}.border-b-surface-overlay{border-bottom-color:var(--color-surface-overlay)}.bg-\[\#a78bfa\]{background-color:#a78bfa}.bg-\[\#a78bfa\]\/10{background-color:#a78bfa1a}.bg-\[rgb\(139\,92\,246\)\]{background-color:#8b5cf6}.bg-\[rgb\(251\,146\,60\)\]{background-color:#fb923c}.bg-accent{background-color:var(--color-accent)}.bg-accent\/5{background-color:#a855f70d}@supports (color:color-mix(in lab,red,red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent) 5%,transparent)}}.bg-accent\/10{background-color:#a855f71a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/15{background-color:#a855f726}@supports (color:color-mix(in lab,red,red)){.bg-accent\/15{background-color:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.bg-accent\/20{background-color:#a855f733}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-accent\/60{background-color:#a855f799}@supports (color:color-mix(in lab,red,red)){.bg-accent\/60{background-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.bg-accent\/90{background-color:#a855f7e6}@supports (color:color-mix(in lab,red,red)){.bg-accent\/90{background-color:color-mix(in oklab,var(--color-accent) 90%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500) 15%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500) 20%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black) 80%,transparent)}}.bg-blue-500\/15{background-color:#3080ff26}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/15{background-color:color-mix(in oklab,var(--color-blue-500) 15%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-border-default{background-color:var(--color-border-default)}.bg-border-default\/30{background-color:#4755694d}@supports (color:color-mix(in lab,red,red)){.bg-border-default\/30{background-color:color-mix(in oklab,var(--color-border-default) 30%,transparent)}}.bg-current{background-color:currentColor}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500) 15%,transparent)}}.bg-emerald-500\/20{background-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/20{background-color:color-mix(in oklab,var(--color-emerald-500) 20%,transparent)}}.bg-error{background-color:var(--color-error)}.bg-error\/5{background-color:#f871710d}@supports (color:color-mix(in lab,red,red)){.bg-error\/5{background-color:color-mix(in oklab,var(--color-error) 5%,transparent)}}.bg-error\/10{background-color:#f871711a}@supports (color:color-mix(in lab,red,red)){.bg-error\/10{background-color:color-mix(in oklab,var(--color-error) 10%,transparent)}}.bg-error\/15{background-color:#f8717126}@supports (color:color-mix(in lab,red,red)){.bg-error\/15{background-color:color-mix(in oklab,var(--color-error) 15%,transparent)}}.bg-error\/20{background-color:#f8717133}@supports (color:color-mix(in lab,red,red)){.bg-error\/20{background-color:color-mix(in oklab,var(--color-error) 20%,transparent)}}.bg-error\/30{background-color:#f871714d}@supports (color:color-mix(in lab,red,red)){.bg-error\/30{background-color:color-mix(in oklab,var(--color-error) 30%,transparent)}}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-purple-500\/15{background-color:#ac4bff26}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/15{background-color:color-mix(in oklab,var(--color-purple-500) 15%,transparent)}}.bg-rose-500\/15{background-color:#ff235726}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/15{background-color:color-mix(in oklab,var(--color-rose-500) 15%,transparent)}}.bg-rose-500\/20{background-color:#ff235733}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/20{background-color:color-mix(in oklab,var(--color-rose-500) 20%,transparent)}}.bg-success{background-color:var(--color-success)}.bg-success\/5{background-color:#4ade800d}@supports (color:color-mix(in lab,red,red)){.bg-success\/5{background-color:color-mix(in oklab,var(--color-success) 5%,transparent)}}.bg-success\/10{background-color:#4ade801a}@supports (color:color-mix(in lab,red,red)){.bg-success\/10{background-color:color-mix(in oklab,var(--color-success) 10%,transparent)}}.bg-success\/20{background-color:#4ade8033}@supports (color:color-mix(in lab,red,red)){.bg-success\/20{background-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.bg-success\/30{background-color:#4ade804d}@supports (color:color-mix(in lab,red,red)){.bg-success\/30{background-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.bg-surface{background-color:var(--color-surface)}.bg-surface-overlay{background-color:var(--color-surface-overlay)}.bg-surface-overlay\/30{background-color:#3341554d}@supports (color:color-mix(in lab,red,red)){.bg-surface-overlay\/30{background-color:color-mix(in oklab,var(--color-surface-overlay) 30%,transparent)}}.bg-surface-overlay\/90{background-color:#334155e6}@supports (color:color-mix(in lab,red,red)){.bg-surface-overlay\/90{background-color:color-mix(in oklab,var(--color-surface-overlay) 90%,transparent)}}.bg-surface-raised{background-color:var(--color-surface-raised)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning\/5{background-color:#fbbf240d}@supports (color:color-mix(in lab,red,red)){.bg-warning\/5{background-color:color-mix(in oklab,var(--color-warning) 5%,transparent)}}.bg-warning\/10{background-color:#fbbf241a}@supports (color:color-mix(in lab,red,red)){.bg-warning\/10{background-color:color-mix(in oklab,var(--color-warning) 10%,transparent)}}.bg-warning\/15{background-color:#fbbf2426}@supports (color:color-mix(in lab,red,red)){.bg-warning\/15{background-color:color-mix(in oklab,var(--color-warning) 15%,transparent)}}.bg-warning\/20{background-color:#fbbf2433}@supports (color:color-mix(in lab,red,red)){.bg-warning\/20{background-color:color-mix(in oklab,var(--color-warning) 20%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.fill-border-default{fill:var(--color-border-default)}.fill-surface-raised{fill:var(--color-surface-raised)}.fill-text-primary{fill:var(--color-text-primary)}.fill-text-secondary{fill:var(--color-text-secondary)}.stroke-border-default{stroke:var(--color-border-default)}.stroke-surface-overlay{stroke:var(--color-surface-overlay)}.stroke-2{stroke-width:2px}.stroke-\[3\]{stroke-width:3px}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-px{padding-inline:1px}.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-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.py-\[16px\]{padding-block:16px}.py-px{padding-block:1px}.ps-1{padding-inline-start:calc(var(--spacing) * 1)}.ps-4{padding-inline-start:calc(var(--spacing) * 4)}.pe-3{padding-inline-end:calc(var(--spacing) * 3)}.pe-4{padding-inline-end:calc(var(--spacing) * 4)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-12{padding-bottom:calc(var(--spacing) * 12)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-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-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--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-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.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-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-words{overflow-wrap:break-word}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#a78bfa\]{color:#a78bfa}.text-\[\#f472b6\]{color:#f472b6}.text-accent{color:var(--color-accent)}.text-accent\/60{color:#a855f799}@supports (color:color-mix(in lab,red,red)){.text-accent\/60{color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.text-accent\/70{color:#a855f7b3}@supports (color:color-mix(in lab,red,red)){.text-accent\/70{color:color-mix(in oklab,var(--color-accent) 70%,transparent)}}.text-amber-400{color:var(--color-amber-400)}.text-blue-400{color:var(--color-blue-400)}.text-emerald-400{color:var(--color-emerald-400)}.text-error{color:var(--color-error)}.text-error\/80{color:#f87171cc}@supports (color:color-mix(in lab,red,red)){.text-error\/80{color:color-mix(in oklab,var(--color-error) 80%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-purple-400{color:var(--color-purple-400)}.text-rose-400{color:var(--color-rose-400)}.text-success{color:var(--color-success)}.text-success\/80{color:#4ade80cc}@supports (color:color-mix(in lab,red,red)){.text-success\/80{color:color-mix(in oklab,var(--color-success) 80%,transparent)}}.text-surface{color:var(--color-surface)}.text-text-muted{color:var(--color-text-muted)}.text-text-muted\/20{color:#64748b33}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/20{color:color-mix(in oklab,var(--color-text-muted) 20%,transparent)}}.text-text-muted\/50{color:#64748b80}@supports (color:color-mix(in lab,red,red)){.text-text-muted\/50{color:color-mix(in oklab,var(--color-text-muted) 50%,transparent)}}.text-text-primary{color:var(--color-text-primary)}.text-text-secondary{color:var(--color-text-secondary)}.text-warning{color:var(--color-warning)}.text-warning\/80{color:#fbbf24cc}@supports (color:color-mix(in lab,red,red)){.text-warning\/80{color:color-mix(in oklab,var(--color-warning) 80%,transparent)}}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.underline{text-decoration-line:underline}.decoration-error\/30{text-decoration-color:#f871714d}@supports (color:color-mix(in lab,red,red)){.decoration-error\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-error) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-error) 30%,transparent)}}.decoration-success\/30{text-decoration-color:#4ade804d}@supports (color:color-mix(in lab,red,red)){.decoration-success\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-success) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-success) 30%,transparent)}}.decoration-text-muted\/30{text-decoration-color:#64748b4d}@supports (color:color-mix(in lab,red,red)){.decoration-text-muted\/30{-webkit-text-decoration-color:color-mix(in oklab,var(--color-text-muted) 30%,transparent);text-decoration-color:color-mix(in oklab,var(--color-text-muted) 30%,transparent)}}.decoration-dotted{text-decoration-style:dotted}.placeholder-text-muted::placeholder{color:var(--color-text-muted)}.accent-accent{accent-color:var(--color-accent)}.accent-green-500{accent-color:var(--color-green-500)}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-90{opacity:.9}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-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,)}.backdrop-filter{-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-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:pointer-events-auto:is(:where(.group):hover *){pointer-events:auto}.group-hover\:flex:is(:where(.group):hover *){display:flex}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\:text-text-muted::placeholder{color:var(--color-text-muted)}.first\:rounded-s-full:first-child{border-start-start-radius:3.40282e38px;border-end-start-radius:3.40282e38px}.last\:rounded-e-full:last-child{border-start-end-radius:3.40282e38px;border-end-end-radius:3.40282e38px}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.focus-within\:border-accent:focus-within{border-color:var(--color-accent)}@media(hover:hover){.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/20:hover{border-color:#a855f733}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/20:hover{border-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:border-accent\/30:hover{border-color:#a855f74d}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/30:hover{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.hover\:border-accent\/50:hover{border-color:#a855f780}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.hover\:border-border-default:hover{border-color:var(--color-border-default)}.hover\:border-error:hover{border-color:var(--color-error)}.hover\:bg-accent:hover{background-color:var(--color-accent)}.hover\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\:bg-accent\/10:hover{background-color:#a855f71a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.hover\:bg-accent\/20:hover{background-color:#a855f733}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-border-default:hover{background-color:var(--color-border-default)}.hover\:bg-error\/10:hover{background-color:#f871711a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-error\/10:hover{background-color:color-mix(in oklab,var(--color-error) 10%,transparent)}}.hover\:bg-error\/20:hover{background-color:#f8717133}@supports (color:color-mix(in lab,red,red)){.hover\:bg-error\/20:hover{background-color:color-mix(in oklab,var(--color-error) 20%,transparent)}}.hover\:bg-error\/30:hover{background-color:#f871714d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-error\/30:hover{background-color:color-mix(in oklab,var(--color-error) 30%,transparent)}}.hover\:bg-error\/80:hover{background-color:#f87171cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-error\/80:hover{background-color:color-mix(in oklab,var(--color-error) 80%,transparent)}}.hover\:bg-success\/20:hover{background-color:#4ade8033}@supports (color:color-mix(in lab,red,red)){.hover\:bg-success\/20:hover{background-color:color-mix(in oklab,var(--color-success) 20%,transparent)}}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-surface-overlay:hover{background-color:var(--color-surface-overlay)}.hover\:bg-surface-overlay\/20:hover{background-color:#33415533}@supports (color:color-mix(in lab,red,red)){.hover\:bg-surface-overlay\/20:hover{background-color:color-mix(in oklab,var(--color-surface-overlay) 20%,transparent)}}.hover\:bg-surface-raised:hover{background-color:var(--color-surface-raised)}.hover\:bg-white\/20:hover{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/20:hover{background-color:color-mix(in oklab,var(--color-white) 20%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent-hover:hover{color:var(--color-accent-hover)}.hover\:text-error:hover{color:var(--color-error)}.hover\:text-text-primary:hover{color:var(--color-text-primary)}.hover\:text-text-secondary:hover{color:var(--color-text-secondary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:justify-center{justify-content:center}}@media(min-width:80rem){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}.rtl\:-scale-x-100:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-scale-x: -100% ;scale:var(--tw-scale-x) var(--tw-scale-y)}}html{color-scheme:dark}html.light{color-scheme:light;--color-surface:#f8fafc;--color-surface-raised:#fff;--color-surface-overlay:#e2e8f0;--color-border-default:#cbd5e1;--color-text-primary:#0f172a;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--color-accent:#9333ea;--color-accent-hover:#7e22ce;--color-success:#16a34a;--color-warning:#d97706;--color-error:#dc2626;--color-confidence-high:#16a34a;--color-confidence-mid:#d97706;--color-confidence-low:#dc2626}@keyframes typing-bounce{0%,80%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-6px)}}@keyframes ripple{0%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(2.2)}}@keyframes glow-in{0%{box-shadow:0 0 #a855f766}50%{box-shadow:0 0 8px 2px #a855f733}to{box-shadow:0 0 #a855f700}}@keyframes thinking-orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}body{background-color:var(--color-surface);color:var(--color-text-primary);margin:0;font-family:Inter,Noto Sans SC,Noto Sans JP,Noto Sans KR,Noto Sans Arabic,Noto Sans Hebrew,Microsoft YaHei,Hiragino Sans,Meiryo,system-ui,-apple-system,sans-serif}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-surface-overlay);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-default)}.markdown-prose{color:var(--color-text-primary);font-size:.875rem;line-height:1.625}.markdown-prose p{margin:.5em 0}.markdown-prose p:first-child{margin-top:0}.markdown-prose p:last-child{margin-bottom:0}.markdown-prose h1,.markdown-prose h2,.markdown-prose h3,.markdown-prose h4{color:var(--color-text-primary);margin:1em 0 .5em;font-weight:600}.markdown-prose h1{font-size:1.25em}.markdown-prose h2{font-size:1.125em}.markdown-prose h3{font-size:1em}.markdown-prose h1:first-child,.markdown-prose h2:first-child,.markdown-prose h3:first-child{margin-top:0}.markdown-prose strong{color:var(--color-text-primary);font-weight:600}.markdown-prose em{font-style:italic}.markdown-prose code{background:var(--color-surface-overlay);color:var(--color-accent);border-radius:4px;padding:.15em .35em;font-family:Fira Code,Cascadia Code,JetBrains Mono,monospace;font-size:.85em}.markdown-prose pre{background:var(--color-surface);border:1px solid var(--color-border-default);border-radius:8px;margin:.75em 0;padding:.75em 1em;overflow-x:auto}.markdown-prose pre code{color:var(--color-text-primary);background:0 0;border-radius:0;padding:0;font-size:.8em}.markdown-prose ul,.markdown-prose ol{margin:.5em 0;padding-inline-start:1.5em}.markdown-prose ul{list-style-type:disc}.markdown-prose ol{list-style-type:decimal}.markdown-prose li,.markdown-prose li>ul,.markdown-prose li>ol{margin:.25em 0}.markdown-prose blockquote{border-inline-start:3px solid var(--color-accent);background:var(--color-surface);color:var(--color-text-secondary);border-start-end-radius:6px;border-end-end-radius:6px;margin:.75em 0;padding:.5em 1em}.markdown-prose hr{border:none;border-top:1px solid var(--color-border-default);margin:1em 0}.markdown-prose a{color:var(--color-accent);text-decoration:underline}.markdown-prose table{border-collapse:collapse;width:100%;margin:.75em 0;font-size:.85em}.markdown-prose th,.markdown-prose td{border:1px solid var(--color-border-default);text-align:start;padding:.4em .75em}.markdown-prose th{background:var(--color-surface);font-weight:600}html[lang=zh],html[lang=ja],html[lang=ko]{word-break:break-all;overflow-wrap:anywhere}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-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-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}