tokentracker-cli 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dashboard/dist/assets/DashboardPage-C025vDYN.js +12 -0
- package/dashboard/dist/assets/LandingExtras-BDqTHI3x.js +1 -0
- package/dashboard/dist/assets/{LeaderboardPage-ZIRnfiXX.js → LeaderboardPage-BWJsZZGo.js} +1 -1
- package/dashboard/dist/assets/{LeaderboardProfilePage-CoLDY-lR.js → LeaderboardProfilePage-Fm0S6umm.js} +1 -1
- package/dashboard/dist/assets/MatrixRain-_cKLHK44.js +1 -0
- package/dashboard/dist/assets/MatrixShell-DyMWapvD.js +1 -0
- package/dashboard/dist/assets/main-ByQlanyj.css +1 -0
- package/dashboard/dist/assets/{main-C3QpHBOP.js → main-DSjEYl46.js} +25 -25
- package/dashboard/dist/assets/vibeusage-api-B9iVLrJk.js +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist/share.html +2 -2
- package/package.json +2 -2
- package/dashboard/dist/assets/DashboardPage-DwwjNQP7.js +0 -12
- package/dashboard/dist/assets/LandingExtras-BsrCd4pK.js +0 -1
- package/dashboard/dist/assets/MatrixRain-B2DIJ0ID.js +0 -1
- package/dashboard/dist/assets/MatrixShell-Byc-iwIr.js +0 -1
- package/dashboard/dist/assets/main-DJvWJCv5.css +0 -1
- package/dashboard/dist/assets/vibeusage-api-EQ444MvB.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as d,m as e,l as n,X as g,ar as v,_ as b,as as j}from"./main-C3QpHBOP.js";function w(r){let t=0;for(let s=0;s<r.length;s+=1)t=r.charCodeAt(s)+((t<<5)-t);return t}function y({name:r="unknown",isAnon:t=!1,isTheOne:s=!1,size:i=64,className:l=""}){const a=d.useMemo(()=>w(String(r||"unknown")),[r]),c=d.useMemo(()=>{const f=[];for(let o=0;o<15;o+=1)f.push((a>>o&1)===1);return f},[a]),x=t?"#333":s?"#FFD700":"#00FF41",u=t?"none":s?"drop-shadow(0 0 8px rgba(255, 215, 0, 0.8)) drop-shadow(0 0 15px rgba(255, 255, 255, 0.5))":"drop-shadow(0 0 4px rgba(0, 255, 65, 0.6))";return t?e.jsx("div",{style:{width:i,height:i},className:`bg-matrix-panel border border-matrix-ghost flex items-center justify-center overflow-hidden ${l}`,children:e.jsx("span",{className:"text-matrix-primary font-black text-body opacity-60",children:n("shared.placeholder.anon_mark")})}):e.jsxs("div",{style:{width:i,height:i},className:`relative p-1 transition-transform duration-300 hover:scale-105 ${s?"bg-yellow-900/20 border border-yellow-500/50":"bg-matrix-panelStrong border border-matrix-dim"} ${l}`,children:[s?e.jsx("div",{className:"absolute inset-0 bg-white opacity-10 animate-pulse mix-blend-overlay"}):null,e.jsx("svg",{viewBox:"0 0 5 5",className:"w-full h-full",style:{filter:u},children:c.map((f,o)=>{if(!f)return null;const m=Math.floor(o/3),h=o%3;return e.jsxs(g.Fragment,{children:[e.jsx("rect",{x:h,y:m,width:"1",height:"1",fill:x}),h<2?e.jsx("rect",{x:4-h,y:m,width:"1",height:"1",fill:x}):null]},o)})})]})}const p=({title:r=n("signalbox.title_default"),children:t,className:s=""})=>e.jsxs("section",{className:`relative flex flex-col overflow-hidden border border-[#00FF41]/45 bg-[#04130b]/72 ${s}`,children:[e.jsx("div",{className:"pointer-events-none absolute inset-0 bg-[linear-gradient(rgba(0,255,65,0)_50%,rgba(0,255,65,0.16)_50%)] bg-[length:100%_4px] opacity-25"}),e.jsx("header",{className:"relative z-10 border-b border-[#00FF41]/25 px-5 py-3",children:e.jsx("span",{className:"font-mono text-[11px] uppercase tracking-[0.16em] text-[#00FF41]/78",children:e.jsx(v,{text:r})})}),e.jsx("div",{className:"relative z-10 flex-1 min-h-0 p-4",children:t})]});function N({prefersReducedMotion:r,screenshotMode:t}){return!(t||r)}function _(){return d.useMemo(()=>typeof window>"u"||!window.matchMedia?!1:window.matchMedia("(prefers-reduced-motion: reduce)").matches,[])}const M=()=>{const[r,t]=d.useState([n("live_sniffer.log.system"),n("live_sniffer.log.socket")]),s=_(),i=d.useMemo(()=>typeof window>"u"?!1:b(window.location.search),[]),l=N({prefersReducedMotion:s,screenshotMode:i});return d.useEffect(()=>{if(!l)return;const a=[n("live_sniffer.event.intercepted"),n("live_sniffer.event.quantifying"),n("live_sniffer.event.analysis"),n("live_sniffer.event.sync"),n("live_sniffer.event.batch"),n("live_sniffer.event.hooking"),n("live_sniffer.event.capture")];let c=0;const x=setInterval(()=>{t(u=>[...u.slice(-4),a[c%a.length]]),c++},1500);return()=>clearInterval(x)},[l]),e.jsx("div",{className:"font-matrix text-caption text-matrix-muted space-y-2 h-full flex flex-col justify-end",children:r.map((a,c)=>e.jsx("div",{className:"animate-pulse border-l-2 border-matrix-ghost pl-2 truncate",children:a},c))})};function k({handle:r,onHandleChange:t,specialHandle:s,handlePlaceholder:i,rankLabel:l}){return e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 w-full max-w-3xl",children:[e.jsx(p,{title:n("landing.signal.identity_probe"),className:"h-44",children:e.jsxs("div",{className:"flex items-center space-x-6 h-full",children:[e.jsx(y,{name:r,size:80,isTheOne:r===s}),e.jsxs("div",{className:"flex-1 text-left space-y-3",children:[e.jsxs("div",{className:"flex flex-col",children:[e.jsx("label",{className:"text-caption text-matrix-muted uppercase mb-2 font-bold",children:n("landing.handle.label")}),e.jsx(j,{type:"text",value:r,onChange:t,className:"w-full bg-transparent border-b border-matrix-dim text-matrix-bright font-black text-2xl md:text-3xl p-1 focus:outline-none focus:border-matrix-primary transition-colors",maxLength:10,placeholder:i})]}),e.jsx("div",{className:"text-caption text-matrix-muted",children:l})]})]})}),e.jsx(p,{title:n("landing.signal.live_sniffer"),className:"h-44",children:e.jsx(M,{})})]})}export{k as LandingExtras};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as b,_ as S,m as z}from"./main-C3QpHBOP.js";const L=()=>{const h=b.useRef(null);return b.useEffect(()=>{const t=h.current;if(!t)return;const e=t.getContext("2d",{alpha:!0});if(!e)return;const g=S(window.location.search),r=!!(window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches),i={scale:r?.45:.5,fps:r?3:8,baseFontSize:16,spacing:r?1.7:1.4,trailAlpha:r?.2:.12,speed:r?.5:.85,resetChance:r?.97:.985,highlightChance:.05},w="01XYZA@#$%";let s=0,a=0,f=0,o=[],c=12,u=16,d=document.visibilityState!=="hidden";const m=g?R(42):Math.random,M=()=>{t.style.width="100%",t.style.height="100%";const n=Math.max(1,Math.floor(window.innerWidth*i.scale)),l=Math.max(1,Math.floor(window.innerHeight*i.scale));t.width=n,t.height=l,c=Math.max(8,Math.round(i.baseFontSize*i.scale)),u=Math.max(10,Math.round(c*i.spacing));const E=Math.ceil(t.width/u);o=Array.from({length:E},()=>m()*-100),e.font=`${c}px monospace`,e.textBaseline="top",e.imageSmoothingEnabled=!1},x=()=>{a&&cancelAnimationFrame(a),a=requestAnimationFrame(M)},F=()=>{e.fillStyle=`rgba(5, 5, 5, ${i.trailAlpha})`,e.fillRect(0,0,t.width,t.height);for(let n=0;n<o.length;n++){const l=w.charAt(Math.floor(m()*w.length));e.fillStyle=m()<i.highlightChance?"#E8FFE9":"#00FF41",e.fillText(l,n*u,o[n]*c),o[n]*c>t.height&&m()>i.resetChance&&(o[n]=0),o[n]+=i.speed}},v=n=>{if(!d)return;const l=1e3/i.fps;n-f>=l&&(F(),f=n),s=requestAnimationFrame(v)},y=()=>{d&&(f=performance.now(),s=requestAnimationFrame(v))},p=()=>{s&&cancelAnimationFrame(s),s=0},A=()=>{d=document.visibilityState!=="hidden",d?(p(),y()):p()};return M(),g?(F(),()=>{a&&cancelAnimationFrame(a)}):(y(),window.addEventListener("resize",x),document.addEventListener("visibilitychange",A),()=>{window.removeEventListener("resize",x),document.removeEventListener("visibilitychange",A),p(),a&&cancelAnimationFrame(a)})},[]),z.jsx("canvas",{ref:h,className:"matrix-rain fixed inset-0 z-0 pointer-events-none opacity-20",style:{width:"100%",height:"100%"}})};function R(h){let t=h;return()=>{t+=1831565813;let e=Math.imul(t^t>>>15,1|t);return e^=e+Math.imul(e^e>>>7,61|e),((e^e>>>14)>>>0)/4294967296}}export{L as MatrixRain};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{m as t,r as i,d as z,_ as U,l as g}from"./main-C3QpHBOP.js";import{p as G}from"./vibeusage-api-EQ444MvB.js";import{MatrixRain as Z}from"./MatrixRain-B2DIJ0ID.js";const S={TOP_LEFT:"┌",TOP_RIGHT:"┐",BOTTOM_LEFT:"└",BOTTOM_RIGHT:"┘",HORIZONTAL:"─",VERTICAL:"│"};function ne({title:r,subtitle:e,children:s,className:n="",bodyClassName:a=""}){return t.jsxs("div",{className:`relative flex flex-col matrix-panel ${n}`,children:[t.jsxs("div",{className:"flex items-center leading-none",children:[t.jsx("span",{className:"shrink-0 text-matrix-dim",children:S.TOP_LEFT}),t.jsx("span",{className:"mx-3 shrink-0 text-heading uppercase text-matrix-primary px-2 py-1 bg-matrix-panelStrong border border-matrix-ghost",children:r}),e?t.jsxs("span",{className:"text-caption text-matrix-muted mr-2 uppercase",children:["[",e,"]"]}):null,t.jsx("span",{className:"flex-1 overflow-hidden whitespace-nowrap text-matrix-ghost",children:S.HORIZONTAL.repeat(100)}),t.jsx("span",{className:"shrink-0 text-matrix-dim",children:S.TOP_RIGHT})]}),t.jsxs("div",{className:"flex flex-1",children:[t.jsx("div",{className:"shrink-0 w-3 flex justify-center text-matrix-ghost",children:S.VERTICAL}),t.jsx("div",{className:`flex-1 min-w-0 py-5 px-4 relative z-10 ${a}`,children:s}),t.jsx("div",{className:"shrink-0 w-3 flex justify-center text-matrix-ghost",children:S.VERTICAL})]}),t.jsxs("div",{className:"flex items-center leading-none text-matrix-ghost",children:[t.jsx("span",{className:"shrink-0",children:S.BOTTOM_LEFT}),t.jsx("span",{className:"flex-1 overflow-hidden whitespace-nowrap",children:S.HORIZONTAL.repeat(100)}),t.jsx("span",{className:"shrink-0",children:S.BOTTOM_RIGHT})]})]})}const O=12e4,B=3e5,F=1e4;function W({intervalMs:r=O,maxIntervalMs:e=B,failureRetryMs:s=F,backoffStepMs:n}={}){const a=T(r,O),c=T(e,B),f=Math.max(a,c),l=Math.max(1e3,Math.round(a*.5)),o=T(n,l),d=T(s,F),v=Math.min(a,Math.max(1e3,d));return{baseIntervalMs:a,maxIntervalMs:f,backoffStepMs:o,failureRetryMs:v}}function $(r={}){const e=W(r);let s=0,n=e.baseIntervalMs;return{onSuccess:()=>{s+=1;const o=Math.max(0,s-1);return n=L(e.baseIntervalMs+e.backoffStepMs*o,e.baseIntervalMs,e.maxIntervalMs),n},onFailure:()=>(s=0,n=L(e.failureRetryMs,1e3,e.maxIntervalMs),n),onError:()=>(s=0,n=L(e.baseIntervalMs,e.baseIntervalMs,e.maxIntervalMs),n),reset:()=>(s=0,n=e.baseIntervalMs,n),getNextDelay(){return n},getConfig(){return{...e}}}}function T(r,e){const s=Number(r);return!Number.isFinite(s)||s<=0?e:Math.floor(s)}function L(r,e,s){const n=T(r,e);return n<e?e:n>s?s:n}function X({baseUrl:r,accessToken:e,intervalMs:s=O,timeoutMs:n=2500,retryDelayMs:a=300,failureThreshold:c=2}={}){const[f,l]=i.useState("unknown"),[o,d]=i.useState(!1),[v,w]=i.useState(null),[I,k]=i.useState(null),[D,H]=i.useState(null),[V,N]=i.useState(null),_=i.useRef(!1),j=i.useRef(0),M=i.useRef($({intervalMs:s})),p=i.useRef(M.current.getNextDelay()),m=i.useRef(null),C=Number.isFinite(Number(c))?Math.max(1,Math.floor(Number(c))):2;i.useEffect(()=>{M.current=$({intervalMs:s}),p.current=M.current.getNextDelay(),m.current&&m.current(p.current)},[s]);const y=i.useCallback(x=>{const u=M.current;return u&&(x==="success"?p.current=u.onSuccess():x==="failure"?p.current=u.onFailure():p.current=u.onError()),p.current},[]),E=i.useCallback(async({reschedule:x=!0}={})=>{let u="error";if(!r){l("error"),d(!1),w(null),k(new Date().toISOString()),N("Missing baseUrl"),y(u),x&&m.current&&m.current(p.current);return}try{new URL(r)}catch{l("error"),d(!1),w(null),k(new Date().toISOString()),N("Invalid baseUrl"),y(u),x&&m.current&&m.current(p.current);return}const R=await z(e);if(!R){l("unknown"),d(!1),w(null),k(new Date().toISOString()),N(null),y(u),x&&m.current&&m.current(p.current);return}if(_.current){x&&m.current&&m.current(p.current);return}_.current=!0,d(!0),N(null);try{const b=await Y({baseUrl:r,accessToken:R,timeoutMs:n,retryDelayMs:a});if(!b.ok)throw b.error;u="success",j.current=0,w(b.status??200);const h=new Date().toISOString();k(h),l("active"),N(null),H(h)}catch(b){const h=b?.status??b?.statusCode;if(w(Number.isFinite(h)?h:null),k(new Date().toISOString()),h===401||h===403)j.current=0,l("error"),N("Unauthorized");else if(typeof h=="number"&&h<500)j.current=0,l("error"),N(`HTTP ${h}`);else{u="failure",j.current+=1;const A=j.current>=C?"down":"error";l(A),N(b?.name==="AbortError"?"Timeout":b?.message||"Fetch failed")}}finally{_.current=!1,d(!1),y(u),x&&m.current&&m.current(p.current)}},[e,y,r,a,C,n]);return i.useEffect(()=>{let x=null;const u=()=>{x!=null&&window.clearTimeout(x),x=null},R=A=>{u(),!(typeof document<"u"&&document.hidden)&&(x=window.setTimeout(()=>{E({reschedule:!0})},A))};m.current=R;const b=()=>{typeof document<"u"&&document.hidden||x||E({reschedule:!0})},h=()=>{typeof document<"u"&&document.hidden?u():b()};return b(),document?.addEventListener?.("visibilitychange",h),()=>{u(),m.current=null,document?.removeEventListener?.("visibilitychange",h)}},[E]),{status:f,checking:o,httpStatus:v,lastCheckedAt:I,lastOkAt:D,error:V,refresh:E}}async function Y({baseUrl:r,accessToken:e,timeoutMs:s,retryDelayMs:n}){const a=await P({baseUrl:r,accessToken:e,timeoutMs:s});return a.ok||!q(a.error)?a:(n>0&&await J(n),P({baseUrl:r,accessToken:e,timeoutMs:s}))}async function P({baseUrl:r,accessToken:e,timeoutMs:s}){const n=new AbortController,a=window.setTimeout(()=>n.abort(),s);try{return{ok:!0,status:(await G({baseUrl:r,accessToken:e,signal:n.signal}))?.status??200}}catch(c){return{ok:!1,error:c}}finally{window.clearTimeout(a)}}function q(r){return r?r.retryable||(r?.status??r?.statusCode)>=500?!0:r?.name==="AbortError":!1}function J(r){return!r||r<=0?Promise.resolve():new Promise(e=>setTimeout(e,r))}function K({status:r="STABLE",title:e,className:s=""}){const[n,a]=i.useState("0"),c=i.useMemo(()=>typeof window>"u"?!1:U(window.location.search),[]);i.useEffect(()=>{let o;if(r==="STABLE"){if(c){a("1");return}o=window.setInterval(()=>{a(Math.random()>.5?"1":"0")},150)}return()=>window.clearInterval(o)},[c,r]);const f={STABLE:{color:"text-matrix-primary",indicator:n},UNSTABLE:{color:"text-yellow-400",indicator:"!"},LOST:{color:"text-red-500/90",indicator:"×"}},l=f[r]||f.STABLE;return t.jsx("div",{title:e,className:["matrix-header-chip matrix-header-chip--bare font-matrix transition-all duration-700",l.color,s].filter(Boolean).join(" "),children:t.jsxs("div",{className:"flex items-center",children:[t.jsx("span",{className:"text-caption text-matrix-dim mr-1",children:"["}),t.jsx("span",{className:"text-caption w-[10px] inline-block text-center font-black",children:l.indicator}),t.jsx("span",{className:"text-caption text-matrix-dim ml-1",children:"]"})]})})}function se({baseUrl:r,accessToken:e,statusOverride:s,titleOverride:n}){const{status:a,checking:c,httpStatus:f,lastCheckedAt:l,lastOkAt:o,error:d}=X({baseUrl:r,accessToken:e}),v=i.useMemo(()=>Q(r),[r]),w=i.useMemo(()=>s||(a==="active"?"STABLE":a==="down"?"LOST":"UNSTABLE"),[a,s]),I=i.useMemo(()=>n||[`${g("backend.meta.status_label")}=${a}`,v?`${g("backend.meta.host_label")}=${v}`:null,l?`${g("backend.meta.checked_label")}=${l}`:null,o?`${g("backend.meta.ok_label")}=${o}`:null,f!=null?`${g("backend.meta.http_label")}=${f}`:null,d?`${g("backend.meta.error_label")}=${d}`:null].filter(Boolean).join(" • "),[d,v,f,l,o,a,n]);return t.jsx(K,{status:w,title:I,className:c?"opacity-80":""})}function Q(r){try{return new URL(r).host}catch{return null}}function ae({headerRight:r,headerStatus:e,children:s,footerLeft:n,footerRight:a,contentClassName:c="",rootClassName:f="",hideHeader:l=!1}){const o=g("shell.header.title"),d=String(o||"").trim().split(/\s+/),v=d[0]||o,w=d.slice(1).join(" ");return t.jsxs("div",{className:`min-h-screen bg-matrix-dark text-matrix-primary font-matrix p-4 md:p-8 flex flex-col leading-tight text-body selection:bg-matrix-primary selection:text-black overflow-hidden ${f}`,children:[t.jsx(Z,{}),t.jsx("div",{className:"matrix-scanline-overlay pointer-events-none fixed inset-0 z-50 bg-[linear-gradient(rgba(18,16,16,0)_50%,rgba(0,0,0,0.1)_50%)] bg-[length:100%_4px]"}),t.jsxs("div",{className:`relative z-10 flex flex-col min-h-screen matrix-shell-content ${c}`,children:[l?null:t.jsx("header",{className:"border-b border-matrix-primary/20 pb-3 mb-6 shrink-0",children:t.jsxs("div",{className:"flex flex-col gap-3 md:flex-row md:items-center md:justify-between",children:[t.jsxs("div",{className:"flex min-w-0 items-center gap-3 md:gap-6",children:[t.jsx("img",{src:"/icon.svg",alt:"","aria-hidden":"true",className:"w-7 h-7 sm:w-8 sm:h-8 md:w-9 md:h-9 rounded-sm bg-black border border-matrix-primary/30 shadow-[0_0_12px_rgba(0,255,65,0.35)] shrink-0"}),t.jsxs("div",{className:"flex min-w-0 items-baseline gap-2 md:gap-3 uppercase select-none",children:[t.jsx("span",{className:"text-matrix-primary font-black text-xl sm:text-2xl md:text-3xl glow-text leading-none truncate",style:{letterSpacing:"-1px"},children:v}),w?t.jsx("span",{className:"hidden sm:inline text-matrix-primary font-extralight text-xs md:text-base truncate",style:{letterSpacing:"2px"},children:w}):null]}),t.jsx("div",{className:"hidden sm:flex items-center space-x-4 text-caption text-matrix-muted uppercase font-bold shrink-0",children:e||t.jsxs("span",{className:"flex items-center",children:[t.jsx("span",{className:"w-1.5 h-1.5 bg-matrix-primary rounded-full mr-2 animate-pulse"}),g("shell.header.link_active")]})})]}),r?t.jsx("div",{className:"w-full md:w-auto md:ml-4",children:t.jsx("div",{className:"w-full md:w-auto overflow-x-auto no-scrollbar",children:r})}):null]})}),t.jsx("main",{className:"flex-1",children:s}),t.jsxs("footer",{className:"mt-6 pt-3 border-t border-matrix-ghost flex justify-between text-caption uppercase font-bold tracking-[0.3em] text-matrix-dim shrink-0",children:[t.jsx("div",{className:"flex space-x-10 items-center",children:n||t.jsx("span",{children:g("shell.footer.help")})}),t.jsx("div",{className:"flex items-center space-x-3",children:a||t.jsx("span",{className:"font-bold",children:g("shell.footer.neural_index")})})]})]})]})}export{ne as A,se as B,ae as M};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-cyrillic-400-normal-Ce5q_31Z.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-400-normal-BPBWmzPh.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-latin-ext-400-normal-Cgks_Qgx.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-400-normal-CxNRRMGd.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:Geist Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-mono-latin-400-normal-LC9RFr9I.woff2) format("woff2"),url(/assets/geist-mono-latin-400-normal-CoULgQGM.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:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-cyrillic-500-normal-CJBLNVQT.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-500-normal-mNhfPmgl.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-latin-ext-500-normal-CQcGuCNt.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-500-normal-diTenJ8L.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:Geist Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-mono-latin-500-normal-D3o2eNa9.woff2) format("woff2"),url(/assets/geist-mono-latin-500-normal-DOxI7kZ4.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:Geist Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/geist-mono-cyrillic-700-normal-VCNRadI3.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-700-normal-DH5Q319x.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/geist-mono-latin-ext-700-normal-YOllDaLV.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-700-normal-BX9f1BHp.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:Geist Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/geist-mono-latin-700-normal-D6izGJRP.woff2) format("woff2"),url(/assets/geist-mono-latin-700-normal-QGw08Lff.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:Geist Mono;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/geist-mono-cyrillic-900-normal-DdrQ8KBw.woff2) format("woff2"),url(/assets/geist-mono-cyrillic-900-normal-BKC3PZkM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/geist-mono-latin-ext-900-normal-CrmBTzU2.woff2) format("woff2"),url(/assets/geist-mono-latin-ext-900-normal-Br6WNUGb.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:Geist Mono;font-style:normal;font-display:swap;font-weight:900;src:url(/assets/geist-mono-latin-900-normal-Cu5MFKsu.woff2) format("woff2"),url(/assets/geist-mono-latin-900-normal-CmoKXrdK.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}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:SF Mono,SFMono-Regular,ui-monospace,Menlo,Monaco,Consolas,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.oai-button-ghost{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 var(--space-4);background:transparent;color:var(--oai-gray-600);border:none;border-radius:var(--radius-md);font-family:var(--oai-font-sans);font-size:var(--text-body-sm);font-weight:500;cursor:pointer;transition:color .15s ease}.oai-button-ghost:hover{color:var(--oai-black)}.oai-button-sm{height:36px;padding:0 var(--space-3)}:root.dark .oai-panel{background:linear-gradient(180deg,#1a1b1a,#151615);border-color:var(--oai-gray-800)}:root.dark .oai-panel--strong{background:linear-gradient(180deg,#282928,#1e201e);border-color:var(--oai-gray-700)}:root.dark .oai-card{background:linear-gradient(180deg,#1a1b1a,#151615);border-color:var(--oai-gray-800)}:root.dark .oai-card:hover{border-color:var(--oai-gray-700)}:root.dark .oai-card--accent{background:linear-gradient(180deg,#282928,#1e201e);border-color:var(--oai-gray-700)}:root.dark .oai-button-primary{background:var(--oai-gray-100);color:var(--oai-gray-950)}:root.dark .oai-button-primary:hover{background:var(--oai-gray-200)}:root.dark .oai-button-primary:active{background:var(--oai-gray-100)}:root.dark .oai-button-secondary{color:var(--oai-gray-100);border-color:var(--oai-gray-700)}:root.dark .oai-button-secondary:hover{background:var(--oai-gray-800)}:root.dark .oai-button-ghost{color:var(--oai-gray-500)}:root.dark .oai-button-ghost:hover{color:var(--oai-gray-100)}:root.dark .oai-input{background:var(--oai-gray-900);color:var(--oai-gray-100);border-color:var(--oai-gray-700)}:root.dark .oai-input::-moz-placeholder{color:var(--oai-gray-600)}:root.dark .oai-input::placeholder{color:var(--oai-gray-600)}:root.dark .oai-input:focus{border-color:var(--oai-blue)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-bottom-1{bottom:-4px}.-right-1{right:-4px}.bottom-0{bottom:0}.bottom-4{bottom:16px}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-4{right:16px}.right-6{right:24px}.top-0{top:0}.top-4{top:16px}.top-6{top:24px}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[101\]{z-index:101}.z-\[200\]{z-index:200}.z-\[70\]{z-index:70}.-mx-4{margin-left:-16px;margin-right:-16px}.mx-1{margin-left:4px;margin-right:4px}.mx-3{margin-left:12px;margin-right:12px}.mx-auto{margin-left:auto;margin-right:auto}.-ml-1\.5{margin-left:-.375rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:4px}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-6{margin-bottom:24px}.mb-8{margin-bottom:32px}.ml-1{margin-left:4px}.ml-1\.5{margin-left:.375rem}.ml-auto{margin-left:auto}.mr-1{margin-right:4px}.mr-2{margin-right:8px}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:4px}.mt-1\.5{margin-top:.375rem}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-1{height:4px}.h-1\.5{height:.375rem}.h-10{height:40px}.h-12{height:48px}.h-2{height:8px}.h-20{height:80px}.h-24{height:6rem}.h-3{height:12px}.h-3\.5{height:.875rem}.h-4{height:16px}.h-40{height:10rem}.h-44{height:11rem}.h-5{height:20px}.h-6{height:24px}.h-7{height:1.75rem}.h-8{height:32px}.h-\[1px\]{height:1px}.h-\[2px\]{height:2px}.h-auto{height:auto}.h-full{height:100%}.max-h-\[320px\]{max-height:320px}.max-h-\[45vh\]{max-height:45vh}.min-h-0{min-height:0}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:40px}.w-11{width:2.75rem}.w-12{width:48px}.w-2{width:8px}.w-20{width:80px}.w-3{width:12px}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:16px}.w-5{width:20px}.w-7{width:1.75rem}.w-8{width:32px}.w-\[10px\]{width:10px}.w-\[112px\]{width:112px}.w-\[72px\]{width:72px}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-0{min-width:0}.min-w-\[140px\]{min-width:140px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:32rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[18px\]{--tw-translate-x: 18px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 16px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-5{--tw-translate-y: 20px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.skew-x-\[-10deg\]{--tw-skew-x: -10deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-\[scanner_2s_linear_infinite\]{animation:scanner 2s linear infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .5s ease-out}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.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-\[72px_minmax\(0\,1fr\)_112px_112px_112px_112px\]{grid-template-columns:72px minmax(0,1fr) 112px 112px 112px 112px}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:4px}.gap-1\.5{gap:.375rem}.gap-2{gap:8px}.gap-2\.5{gap:.625rem}.gap-3{gap:12px}.gap-4{gap:16px}.gap-5{gap:20px}.gap-6{gap:24px}.gap-x-4{-moz-column-gap:16px;column-gap:16px}.gap-y-2{row-gap:8px}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(4px * var(--tw-space-x-reverse));margin-left:calc(4px * calc(1 - var(--tw-space-x-reverse)))}.space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(40px * var(--tw-space-x-reverse));margin-left:calc(40px * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(12px * var(--tw-space-x-reverse));margin-left:calc(12px * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(16px * var(--tw-space-x-reverse));margin-left:calc(16px * calc(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(24px * var(--tw-space-x-reverse));margin-left:calc(24px * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(4px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4px * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(8px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(8px * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(12px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(12px * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(16px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(16px * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(20px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(20px * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(24px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(24px * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(32px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(32px * var(--tw-space-y-reverse))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\[1px\]{border-radius:1px}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:12px}.rounded-md{border-radius:8px}.rounded-none{border-radius:0}.rounded-sm{border-radius:4px}.rounded-xl{border-radius:16px}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-none{border-style:none}.border-\[\#00FF41\]{--tw-border-opacity: 1;border-color:rgb(0 255 65 / var(--tw-border-opacity, 1))}.border-\[\#00FF41\]\/15{border-color:#00ff4126}.border-\[\#00FF41\]\/20{border-color:#00ff4133}.border-\[\#00FF41\]\/25{border-color:#00ff4140}.border-\[\#00FF41\]\/30{border-color:#00ff414d}.border-\[\#00FF41\]\/35{border-color:#00ff4159}.border-\[\#00FF41\]\/40{border-color:#00ff4166}.border-\[\#00FF41\]\/45{border-color:#00ff4173}.border-oai-error{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-oai-gray-100{--tw-border-opacity: 1;border-color:rgb(245 245 245 / var(--tw-border-opacity, 1))}.border-oai-gray-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.border-oai-gray-300{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.border-oai-gray-50{--tw-border-opacity: 1;border-color:rgb(250 250 250 / var(--tw-border-opacity, 1))}.border-red-500\/20{border-color:#ef444433}.border-transparent{border-color:transparent}.border-yellow-500\/50{border-color:#eab30880}.bg-\[\#00FF41\]{--tw-bg-opacity: 1;background-color:rgb(0 255 65 / var(--tw-bg-opacity, 1))}.bg-\[\#00FF41\]\/5{background-color:#00ff410d}.bg-\[\#00FF41\]\/60{background-color:#00ff4199}.bg-\[\#050505\]{--tw-bg-opacity: 1;background-color:rgb(5 5 5 / var(--tw-bg-opacity, 1))}.bg-\[\#0a0a0a\]{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/20{background-color:#0003}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/80{background-color:#000c}.bg-oai-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-oai-black{--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.bg-oai-brand{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity, 1))}.bg-oai-brand-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity, 1))}.bg-oai-gray-100{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.bg-oai-gray-100\/80{background-color:#f5f5f5cc}.bg-oai-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.bg-oai-gray-300{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.bg-oai-gray-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-oai-gray-50\/30{background-color:#fafafa4d}.bg-oai-white{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-900\/20{background-color:#713f1233}.bg-\[linear-gradient\(rgba\(0\,255\,65\,0\)_50\%\,rgba\(0\,255\,65\,0\.16\)_50\%\)\]{background-image:linear-gradient(#00ff4100 50%,#00ff4129 50%)}.bg-\[linear-gradient\(rgba\(0\,255\,65\,0\.03\)_1px\,transparent_1px\)\,linear-gradient\(90deg\,rgba\(0\,255\,65\,0\.03\)_1px\,transparent_1px\)\]{background-image:linear-gradient(rgba(0,255,65,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(0,255,65,.03) 1px,transparent 1px)}.bg-\[linear-gradient\(rgba\(18\,16\,16\,0\)_50\%\,rgba\(0\,0\,0\,0\.1\)_50\%\)\]{background-image:linear-gradient(#12101000 50%,#0000001a 50%)}.bg-\[linear-gradient\(rgba\(18\,16\,16\,0\)_50\%\,rgba\(0\,0\,0\,0\.12\)_50\%\)\]{background-image:linear-gradient(#12101000 50%,#0000001f 50%)}.bg-\[linear-gradient\(rgba\(18\,16\,16\,0\)_50\%\,rgba\(0\,0\,0\,0\.15\)_50\%\)\]{background-image:linear-gradient(#12101000 50%,#00000026 50%)}.bg-\[linear-gradient\(rgba\(255\,215\,0\,0\)_50\%\,rgba\(255\,215\,0\,0\.1\)_50\%\)\]{background-image:linear-gradient(#ffd70000 50%,#ffd7001a 50%)}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-\[\#00FF41\]\/10{--tw-gradient-from: rgb(0 255 65 / .1) var(--tw-gradient-from-position);--tw-gradient-to: rgb(0 255 65 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-oai-gray-100{--tw-gradient-from: #f5f5f5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(245 245 245 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-oai-gray-50{--tw-gradient-to: rgb(250 250 250 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #fafafa var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-transparent{--tw-gradient-to: rgb(0 0 0 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), transparent var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-oai-gray-100{--tw-gradient-to: #f5f5f5 var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position)}.bg-\[length\:100\%_3px\]{background-size:100% 3px}.bg-\[length\:100\%_4px\]{background-size:100% 4px}.bg-\[length\:200\%_100\%\]{background-size:200% 100%}.bg-\[size\:50px_50px\]{background-size:50px 50px}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:4px}.p-1\.5{padding:.375rem}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.p-5{padding:20px}.p-6{padding:24px}.p-8{padding:32px}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:4px;padding-right:4px}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:8px;padding-right:8px}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:12px;padding-right:12px}.px-4{padding-left:16px;padding-right:16px}.px-5{padding-left:20px;padding-right:20px}.px-6{padding-left:24px;padding-right:24px}.px-\[3px\]{padding-left:3px;padding-right:3px}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:4px;padding-bottom:4px}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:8px;padding-bottom:8px}.py-3{padding-top:12px;padding-bottom:12px}.py-4{padding-top:16px;padding-bottom:16px}.py-5{padding-top:20px;padding-bottom:20px}.py-6{padding-top:24px;padding-bottom:24px}.py-8{padding-top:32px;padding-bottom:32px}.pb-2{padding-bottom:8px}.pb-3{padding-bottom:12px}.pl-1{padding-left:4px}.pl-2{padding-left:8px}.pl-3{padding-left:12px}.pr-2{padding-right:8px}.pt-2{padding-top:8px}.pt-3{padding-top:12px}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:SF Mono,SFMono-Regular,ui-monospace,Menlo,Monaco,Consolas,monospace}.font-sans{font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-6xl{font-size:3.75rem;line-height:1}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-base{font-size:1rem;line-height:1.5rem}.text-body{font-size:16px;line-height:1.5;font-weight:400}.text-caption{font-size:12px;line-height:1.4;letter-spacing:.01em;font-weight:500}.text-display-sm{font-size:56px;line-height:1.05;letter-spacing:-.02em;font-weight:700}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extralight{font-weight:200}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.25em\]{letter-spacing:.25em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-\[0\.4em\]{letter-spacing:.4em}.tracking-\[0\.6em\]{letter-spacing:.6em}.tracking-normal{letter-spacing:0em}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-\[\#00FF41\]{--tw-text-opacity: 1;color:rgb(0 255 65 / var(--tw-text-opacity, 1))}.text-\[\#00FF41\]\/40{color:#00ff4166}.text-\[\#00FF41\]\/50{color:#00ff4180}.text-\[\#00FF41\]\/60{color:#00ff4199}.text-\[\#00FF41\]\/70{color:#00ff41b3}.text-\[\#00FF41\]\/80{color:#00ff41cc}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-oai-amber-dark{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-oai-black{--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.text-oai-brand{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.text-oai-brand-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-oai-error{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-oai-gray-300{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.text-oai-gray-400{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.text-oai-gray-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.text-oai-gray-600{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.text-oai-gray-700{--tw-text-opacity: 1;color:rgb(64 64 64 / var(--tw-text-opacity, 1))}.text-oai-gray-900{--tw-text-opacity: 1;color:rgb(23 23 23 / var(--tw-text-opacity, 1))}.text-oai-white{--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-red-500\/90{color:#ef4444e6}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.no-underline{text-decoration-line:none}.placeholder-oai-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(163 163 163 / var(--tw-placeholder-opacity, 1))}.placeholder-oai-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(163 163 163 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.mix-blend-overlay{mix-blend-mode:overlay}.shadow-\[0_0_10px_\#00FF41\]{--tw-shadow: 0 0 10px #00FF41;--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_10px_rgba\(0\,255\,65\,0\.2\)\]{--tw-shadow: 0 0 10px rgba(0,255,65,.2);--tw-shadow-colored: 0 0 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(0\,255\,65\,0\.08\)\]{--tw-shadow: 0 0 12px rgba(0,255,65,.08);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_12px_rgba\(0\,255\,65\,0\.35\)\]{--tw-shadow: 0 0 12px rgba(0,255,65,.35);--tw-shadow-colored: 0 0 12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(0\,255\,65\,0\.1\)\]{--tw-shadow: 0 0 15px rgba(0,255,65,.1);--tw-shadow-colored: 0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_20px_rgba\(255\,215\,0\,0\.1\)\]{--tw-shadow: 0 0 20px rgba(255,215,0,.1);--tw-shadow-colored: 0 0 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-oai-lg{--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity, 1))}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));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)}.drop-shadow-\[0_0_10px_rgba\(0\,255\,65\,0\.22\)\]{--tw-drop-shadow: drop-shadow(0 0 10px rgba(0,255,65,.22));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-700{transition-duration:.7s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.oai-text-body-sm{font-size:var(--text-body-sm);line-height:1.5;font-weight:400}.oai-text-caption{font-size:var(--text-caption);line-height:1.4;font-weight:500;letter-spacing:.01em}.oai-text-muted{color:var(--oai-gray-500)}.oai-bg-elevated{background:var(--oai-gray-50)}.oai-scrollbar{scrollbar-width:thin;scrollbar-color:var(--oai-gray-300) transparent;scrollbar-gutter:stable both-edges}.oai-scrollbar::-webkit-scrollbar{height:8px;width:8px}.oai-scrollbar::-webkit-scrollbar-track{background:transparent}.oai-scrollbar::-webkit-scrollbar-thumb{background:var(--oai-gray-300);border-radius:var(--radius-full)}.oai-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-400)}:root.dark .oai-text-muted{color:var(--oai-gray-500)}:root.dark .oai-text-secondary{color:var(--oai-gray-400)}:root.dark .oai-bg-surface{background:var(--oai-gray-900)}:root.dark .oai-bg-elevated{background:var(--oai-gray-100)}:root.dark .oai-scrollbar{scrollbar-color:var(--oai-gray-400) transparent}:root.dark .oai-scrollbar::-webkit-scrollbar-thumb{background:var(--oai-gray-400)}:root.dark .oai-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-500)}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}@keyframes countPulse{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}.shimmer{background:linear-gradient(90deg,var(--oai-gray-100) 25%,var(--oai-gray-50) 50%,var(--oai-gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}:root.dark .shimmer{background:linear-gradient(90deg,var(--oai-gray-800) 25%,var(--oai-gray-700) 50%,var(--oai-gray-800) 75%);background-size:200% 100%}:root.dark .hover-lift:hover{box-shadow:0 12px 32px -8px #0006}.cost-modal-backdrop{position:fixed;inset:0;z-index:100;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:costBackdropIn .2s ease-out forwards}.cost-modal-popup{animation:costPopupIn .25s cubic-bezier(.16,1,.3,1) forwards}@keyframes costBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes costPopupIn{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}:root.dark .cost-modal-backdrop{background:#0009}:root{color-scheme:light;--oai-black: #0a0a0a;--oai-white: #fafafa;--oai-gray-50: oklch(98% .005 145);--oai-gray-100: oklch(96% .01 145);--oai-gray-200: oklch(90% .015 145);--oai-gray-300: oklch(83% .02 145);--oai-gray-400: oklch(70% .025 145);--oai-gray-500: oklch(55% .03 145);--oai-gray-600: oklch(45% .025 145);--oai-gray-700: oklch(35% .02 145);--oai-gray-800: oklch(25% .015 145);--oai-gray-900: oklch(18% .01 145);--oai-gray-950: oklch(12% .005 145);--brand-primary: #059669;--brand-primary-dark: #047857;--brand-primary-light: #10b981;--brand-50: #ecfdf5;--brand-100: #d1fae5;--brand-200: #a7f3d0;--brand-300: #6ee7b7;--brand-400: #34d399;--brand-500: #10b981;--brand-600: #059669;--brand-700: #047857;--brand-800: #065f46;--brand-900: #064e3b;--brand-950: #022c22;--forest: #10b981;--forest-dark: #059669;--forest-light: #34d399;--amber: #f59e0b;--amber-dark: #d97706;--amber-light: #fbbf24;--oai-blue: #059669;--oai-blue-dark: #047857;--oai-blue-light: #10b981;--oai-success: #10b981;--oai-warning: #f59e0b;--oai-error: #ef4444;--oai-info: #059669;--oai-font-sans: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, sans-serif;--oai-font-mono: "SF Mono", sfmono-regular, ui-monospace, menlo, monaco, consolas, monospace;--text-hero: 48px;--text-h1: 36px;--text-h2: 28px;--text-h3: 22px;--text-h4: 18px;--text-body: 16px;--text-body-sm: 14px;--text-caption: 12px;--text-label: 11px;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px}:root.dark{color-scheme:dark;--oai-black: #fafafa;--oai-white: #0a0a0a;--oai-gray-50: oklch(20% .002 145);--oai-gray-100: oklch(24% .003 145);--oai-gray-200: oklch(30% .004 145);--oai-gray-300: oklch(40% .005 145);--oai-gray-400: oklch(55% .006 145);--oai-gray-500: oklch(65% .005 145);--oai-gray-600: oklch(75% .004 145);--oai-gray-700: oklch(85% .003 145);--oai-gray-800: oklch(92% .002 145);--oai-gray-900: oklch(96% .001 145);--oai-gray-950: oklch(98% .001 145);--brand-primary: #10b981;--brand-primary-dark: #059669;--brand-primary-light: #34d399;--forest: #34d399;--forest-dark: #10b981;--forest-light: #6ee7b7;--oai-blue: #10b981;--oai-blue-dark: #059669;--oai-blue-light: #34d399;--oai-success: #34d399;--oai-warning: #fbbf24;--oai-error: #f87171;--oai-info: #10b981}html,body{height:100%}body{margin:0;background:var(--oai-white);color:var(--oai-black);font-family:var(--oai-font-sans);font-size:var(--text-body);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.heatmap-scroll-thin{scrollbar-width:thin;scrollbar-color:var(--oai-gray-200) transparent}.heatmap-scroll-thin::-webkit-scrollbar{height:4px}.heatmap-scroll-thin::-webkit-scrollbar-track{background:transparent}.heatmap-scroll-thin::-webkit-scrollbar-thumb{background:var(--oai-gray-200);border-radius:2px}.heatmap-scroll-thin::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-400)}:root.dark .heatmap-scroll-thin{scrollbar-color:var(--oai-gray-600) transparent}:root.dark .heatmap-scroll-thin::-webkit-scrollbar-thumb{background:var(--oai-gray-600)}:root.dark .heatmap-scroll-thin::-webkit-scrollbar-thumb:hover{background:var(--oai-gray-500)}.selection\:bg-\[\#00FF41\] *::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(0 255 65 / var(--tw-bg-opacity, 1))}.selection\:bg-\[\#00FF41\] *::selection{--tw-bg-opacity: 1;background-color:rgb(0 255 65 / var(--tw-bg-opacity, 1))}.selection\:text-black *::-moz-selection{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.selection\:text-black *::selection{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.selection\:bg-\[\#00FF41\]::-moz-selection{--tw-bg-opacity: 1;background-color:rgb(0 255 65 / var(--tw-bg-opacity, 1))}.selection\:bg-\[\#00FF41\]::selection{--tw-bg-opacity: 1;background-color:rgb(0 255 65 / var(--tw-bg-opacity, 1))}.selection\:text-black::-moz-selection{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.selection\:text-black::selection{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:z-10:hover{z-index:10}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-125:hover{--tw-scale-x: 1.25;--tw-scale-y: 1.25;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-oai-brand:hover{--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.hover\:border-oai-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity, 1))}.hover\:border-white:hover{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.hover\:bg-\[\#00FF41\]:hover{--tw-bg-opacity: 1;background-color:rgb(0 255 65 / var(--tw-bg-opacity, 1))}.hover\:bg-\[\#00FF41\]\/10:hover{background-color:#00ff411a}.hover\:bg-oai-brand-50\/50:hover{background-color:#ecfdf580}.hover\:bg-oai-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.hover\:bg-oai-gray-50\/50:hover{background-color:#fafafa80}.hover\:bg-oai-gray-800:hover{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:text-\[\#00FF41\]:hover{--tw-text-opacity: 1;color:rgb(0 255 65 / var(--tw-text-opacity, 1))}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.hover\:text-oai-black:hover{--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.hover\:text-oai-brand:hover{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity, 1))}.hover\:text-oai-brand-dark:hover{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.hover\:text-oai-gray-600:hover{--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.hover\:opacity-80:hover{opacity:.8}.hover\:oai-bg-elevated:hover{background:var(--oai-gray-50)}:root.dark .hover\:oai-bg-elevated:hover{background:var(--oai-gray-100)}.focus\:border-oai-brand:focus{--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.focus\:border-oai-error:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-oai-blue\/30:focus{--tw-ring-color: rgb(5 150 105 / .3)}.focus\:ring-oai-brand\/30:focus{--tw-ring-color: rgb(5 150 105 / .3)}.focus\:ring-oai-error\/30:focus{--tw-ring-color: rgb(239 68 68 / .3)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.active\:scale-\[0\.98\]:active{--tw-scale-x: .98;--tw-scale-y: .98;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.active\:border-oai-brand-dark:active{--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity, 1))}.active\:bg-oai-brand-50:active{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.active\:bg-oai-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.active\:bg-oai-gray-900:active{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.active\:duration-100:active{transition-duration:.1s}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-oai-gray-200:disabled{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}.disabled\:bg-oai-gray-300:disabled{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.disabled\:text-oai-gray-300:disabled{--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.disabled\:text-oai-gray-400:disabled{--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.disabled\:text-oai-gray-500:disabled{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:scale-110{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-oai-black{--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:brightness-110{--tw-brightness: brightness(1.1);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)}.group:hover .group-hover\:drop-shadow-\[0_0_8px_rgba\(0\,255\,65\,0\.8\)\]{--tw-drop-shadow: drop-shadow(0 0 8px rgba(0,255,65,.8));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)}.dark\:border-oai-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.dark\:border-oai-gray-700:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:border-oai-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(38 38 38 / var(--tw-border-opacity, 1))}.dark\:bg-oai-brand-900\/30:is(.dark *){background-color:#064e3b4d}.dark\:bg-oai-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(82 82 82 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-800\/30:is(.dark *){background-color:#2626264d}.dark\:bg-oai-gray-800\/80:is(.dark *){background-color:#262626cc}.dark\:bg-oai-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(10 10 10 / var(--tw-bg-opacity, 1))}.dark\:bg-oai-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity, 1))}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:text-oai-black:is(.dark *){--tw-text-opacity: 1;color:rgb(10 10 10 / var(--tw-text-opacity, 1))}.dark\:text-oai-brand-400:is(.dark *){--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.dark\:text-oai-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.dark\:text-oai-white:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:placeholder-oai-gray-500:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(115 115 115 / var(--tw-placeholder-opacity, 1))}.dark\:placeholder-oai-gray-500:is(.dark *)::placeholder{--tw-placeholder-opacity: 1;color:rgb(115 115 115 / var(--tw-placeholder-opacity, 1))}.dark\:ring-oai-gray-900:is(.dark *){--tw-ring-opacity: 1;--tw-ring-color: rgb(23 23 23 / var(--tw-ring-opacity, 1))}.dark\:hover\:border-oai-gray-600:hover:is(.dark *){--tw-border-opacity: 1;border-color:rgb(82 82 82 / var(--tw-border-opacity, 1))}.dark\:hover\:bg-oai-brand-950\/30:hover:is(.dark *){background-color:#022c224d}.dark\:hover\:bg-oai-gray-200:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(229 229 229 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-oai-gray-800\/50:hover:is(.dark *){background-color:#26262680}.dark\:hover\:text-oai-brand-light:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-gray-300:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(212 212 212 / var(--tw-text-opacity, 1))}.dark\:hover\:text-oai-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}.dark\:focus\:border-oai-brand:focus:is(.dark *){--tw-border-opacity: 1;border-color:rgb(5 150 105 / var(--tw-border-opacity, 1))}.dark\:active\:bg-oai-brand-900\/50:active:is(.dark *){background-color:#064e3b80}.dark\:active\:bg-oai-gray-300:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity, 1))}.dark\:active\:bg-oai-gray-800:active:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity, 1))}.dark\:disabled\:border-oai-gray-700:disabled:is(.dark *){--tw-border-opacity: 1;border-color:rgb(64 64 64 / var(--tw-border-opacity, 1))}.dark\:disabled\:bg-oai-gray-700:disabled:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity, 1))}.dark\:disabled\:text-oai-gray-400:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(163 163 163 / var(--tw-text-opacity, 1))}.dark\:disabled\:text-oai-gray-500:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity, 1))}.dark\:disabled\:text-oai-gray-600:disabled:is(.dark *){--tw-text-opacity: 1;color:rgb(82 82 82 / var(--tw-text-opacity, 1))}.group:hover .dark\:group-hover\:text-oai-white:is(.dark *){--tw-text-opacity: 1;color:rgb(250 250 250 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:right-6{right:24px}.sm\:top-6{top:24px}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:h-8{height:32px}.sm\:w-8{width:32px}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:gap-3{gap:12px}.sm\:space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(48px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(48px * var(--tw-space-y-reverse))}.sm\:p-6{padding:24px}.sm\:py-12{padding-top:48px;padding-bottom:48px}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-6xl{font-size:3.75rem;line-height:1}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media(min-width:768px){.md\:col-span-2{grid-column:span 2 / span 2}.md\:ml-4{margin-left:16px}.md\:h-9{height:2.25rem}.md\:w-9{width:2.25rem}.md\:w-auto{width:auto}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-3{gap:12px}.md\:gap-4{gap:16px}.md\:gap-6{gap:24px}.md\:p-8{padding:32px}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-7xl{font-size:4.5rem;line-height:1}.md\:text-8xl{font-size:6rem;line-height:1}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-display{font-size:72px;line-height:1;letter-spacing:-.03em;font-weight:700}}@media(min-width:1024px){.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as p,ae as G,d as ie,af as j,ag as U,ah as ce,ai as ue,aj as le,ak as fe,al as de,am as ge,an as ke,$ as pe,ao as me,ap as ye,aq as he}from"./main-C3QpHBOP.js";const be="Backend runtime unavailable (InsForge). Please retry later.",g={usageSummary:"vibeusage-usage-summary",usageDaily:"vibeusage-usage-daily",usageHourly:"vibeusage-usage-hourly",usageMonthly:"vibeusage-usage-monthly",usageHeatmap:"vibeusage-usage-heatmap",usageModelBreakdown:"vibeusage-usage-model-breakdown",projectUsageSummary:"vibeusage-project-usage-summary",leaderboard:"vibeusage-leaderboard",leaderboardProfile:"vibeusage-leaderboard-profile",userStatus:"vibeusage-user-status",linkCodeInit:"vibeusage-link-code-init",publicViewProfile:"vibeusage-public-view-profile",publicVisibility:"vibeusage-public-visibility"},J="/functions",we="/api/functions",y={business:"business",probe:"probe"};let z=null;async function d(e){return await ie(e)}async function xe({baseUrl:e,accessToken:t,signal:s}={}){const a=await d(t),n=he(new Date);return await m({baseUrl:e,accessToken:a,slug:g.usageSummary,params:{from:n,to:n},fetchOptions:{cache:"no-store",signal:s},retry:!1,requestKind:y.probe}),{status:200}}async function Ee({baseUrl:e,accessToken:t,from:s,to:a,source:n,model:r,timeZone:l,tzOffsetMinutes:o,rolling:c=!1}={}){const u=await d(t);if(p())return ue({from:s,to:a,seed:u,rolling:c});const i=M({timeZone:l,tzOffsetMinutes:o}),f=A({source:n,model:r}),_=c?{rolling:"1"}:{};return m({baseUrl:e,accessToken:u,slug:g.usageSummary,params:{from:s,to:a,...f,...i,..._}})}async function Re({baseUrl:e,accessToken:t,from:s,to:a,source:n,limit:r,timeZone:l,tzOffsetMinutes:o}={}){const c=await d(t);if(p())return fe({seed:c,limit:r});const u=M({timeZone:l,tzOffsetMinutes:o}),f={...A({source:n}),...u};return s&&(f.from=s),a&&(f.to=a),r!=null&&(f.limit=String(r)),m({baseUrl:e,accessToken:c,slug:g.projectUsageSummary,params:f})}async function Ce({baseUrl:e,accessToken:t,period:s,metric:a,limit:n,offset:r}={}){const l=await d(t);if(p())return G({seed:l,period:s,metric:a,limit:n,offset:r});const c=(typeof s=="string"?s:"week").trim().toLowerCase(),i={period:c==="month"||c==="total"||c==="week"?c:"week"};return a&&(i.metric=String(a)),n!=null&&(i.limit=String(n)),r!=null&&(i.offset=String(r)),m({baseUrl:e,accessToken:l,slug:g.leaderboard,params:i})}async function De({baseUrl:e,accessToken:t}={}){const s=await d(t);return p()?{enabled:!1,updated_at:null,share_token:null}:m({baseUrl:e,accessToken:s,slug:g.publicVisibility})}async function ze({baseUrl:e,accessToken:t,enabled:s}={}){const a=await d(t);return p()?{enabled:!!s,updated_at:new Date().toISOString(),share_token:s?"pv1-mock-token":null}:X({baseUrl:e,accessToken:a,slug:g.publicVisibility,body:{enabled:!!s}})}async function Ue({baseUrl:e,accessToken:t,userId:s,period:a}={}){const n=await d(t);if(p()){const r=G({seed:n,period:a,metric:"all",limit:250,offset:0}),o=(Array.isArray(r?.entries)?r.entries:[]).find(c=>c?.user_id===s)||null;return{period:r?.period??"week",from:r?.from??null,to:r?.to??null,generated_at:r?.generated_at??new Date().toISOString(),entry:o?{user_id:o.user_id??null,display_name:o.display_name??null,avatar_url:o.avatar_url??null,rank:o.rank??null,gpt_tokens:o.gpt_tokens??"0",claude_tokens:o.claude_tokens??"0",other_tokens:o.other_tokens??"0",total_tokens:o.total_tokens??"0"}:null}}return m({baseUrl:e,accessToken:n,slug:g.leaderboardProfile,params:{user_id:String(s||""),period:String(a||"")}})}async function Ie({baseUrl:e,accessToken:t}={}){const s=await d(t);if(p()){const a=new Date().toISOString();return{user_id:"mock-user",created_at:a,pro:{active:!0,sources:["mock"],expires_at:null,partial:!1,as_of:a},subscriptions:{partial:!1,as_of:a,items:[{tool:"codex",provider:"openai",product:"chatgpt",plan_type:"pro",updated_at:a},{tool:"claude",provider:"anthropic",product:"subscription",plan_type:"max",rate_limit_tier:"default_claude_max_5x",updated_at:a}]},install:{partial:!1,as_of:a,has_active_device_token:!1,has_active_device:!1,active_device_tokens:0,active_devices:0,latest_token_activity_at:null,latest_device_seen_at:null}}}return m({baseUrl:e,accessToken:s,slug:g.userStatus})}async function je({signal:e}={}){const t=await fetch("/functions/vibeusage-local-sync",{method:"POST",headers:{Accept:"application/json"},cache:"no-store",signal:e}),s=await t.json().catch(()=>({ok:!1,error:`Local sync request failed with HTTP ${t.status}`}));if(!t.ok||s?.ok===!1){const a=s?.error||s?.message||`Local sync request failed with HTTP ${t.status}`,n=new Error(a);throw n.status=t.status,n.statusCode=t.status,n.payload=s,n}return s}async function He({baseUrl:e,accessToken:t,from:s,to:a,source:n,timeZone:r,tzOffsetMinutes:l}={}){const o=await d(t);if(p())return le({from:s,to:a,seed:o});const c=M({timeZone:r,tzOffsetMinutes:l}),u=A({source:n});return m({baseUrl:e,accessToken:o,slug:g.usageModelBreakdown,params:{from:s,to:a,...u,...c}})}async function Le({baseUrl:e,accessToken:t,from:s,to:a,source:n,model:r,timeZone:l,tzOffsetMinutes:o}={}){const c=await d(t);if(p())return ce({from:s,to:a,seed:c});const u=M({timeZone:l,tzOffsetMinutes:o}),i=A({source:n,model:r});return m({baseUrl:e,accessToken:c,slug:g.usageDaily,params:{from:s,to:a,...i,...u}})}async function qe({baseUrl:e,accessToken:t,day:s,source:a,model:n,timeZone:r,tzOffsetMinutes:l}={}){const o=await d(t);if(p())return de({day:s,seed:o});const c=M({timeZone:r,tzOffsetMinutes:l}),u=A({source:a,model:n});return m({baseUrl:e,accessToken:o,slug:g.usageHourly,params:s?{day:s,...u,...c}:{...u,...c}})}async function Be({baseUrl:e,accessToken:t,months:s,to:a,source:n,model:r,timeZone:l,tzOffsetMinutes:o}={}){const c=await d(t);if(p())return ge({months:s,to:a,seed:c});const u=M({timeZone:l,tzOffsetMinutes:o}),i=A({source:n,model:r});return m({baseUrl:e,accessToken:c,slug:g.usageMonthly,params:{...s?{months:String(s)}:{},...a?{to:a}:{},...i,...u}})}async function Fe({baseUrl:e,accessToken:t,weeks:s,to:a,weekStartsOn:n,source:r,model:l,timeZone:o,tzOffsetMinutes:c}={}){const u=await d(t);if(p())return ke({weeks:s,to:a,weekStartsOn:n,seed:u});const i=M({timeZone:o,tzOffsetMinutes:c}),f=A({source:r,model:l});return m({baseUrl:e,accessToken:u,slug:g.usageHeatmap,params:{weeks:String(s),to:a,week_starts_on:n,...f,...i}})}async function Ne({baseUrl:e,accessToken:t}={}){const s=await d(t);return p()?{link_code:"mock_link_code",expires_at:new Date(Date.now()+10*6e4).toISOString()}:X({baseUrl:e,accessToken:s,slug:g.linkCodeInit,body:{}})}async function $e({baseUrl:e,accessToken:t}={}){const s=await d(t);return m({baseUrl:e,accessToken:s,slug:g.publicViewProfile})}function M({timeZone:e,tzOffsetMinutes:t}={}){const s={},a=typeof e=="string"?e.trim():"";return a&&(s.tz=a),Number.isFinite(t)&&(s.tz_offset_minutes=String(Math.trunc(t))),s}function A({source:e,model:t}={}){const s={},a=typeof e=="string"?e.trim().toLowerCase():"";a&&(s.source=a);const n=typeof t=="string"?t.trim():"";return n&&(s.model=n),s}async function m({baseUrl:e,accessToken:t,slug:s,params:a,fetchOptions:n,errorPrefix:r,retry:l,requestKind:o=y.business,skipSessionExpiry:c=!1,allowRefresh:u=!0}={}){let i=await d(t),f=x(i),_=j({baseUrl:e,accessToken:i??void 0}).getHttpClient();const E=te(l,"GET"),T=c?y.probe:o;let v=0;const{primaryPath:R,fallbackPath:C}=O(s);for(;;)try{const S=await V({http:_,primaryPath:R,fallbackPath:C,params:a,fetchOptions:n});return H({hadAccessToken:f,accessToken:i}),S}catch(S){const h=S;if(h?.name==="AbortError")throw S;let b=null;const L=h?.statusCode??h?.status;if(u&&Z({status:L,requestKind:T,hadAccessToken:f,accessToken:i})){const k=(await ee())?.accessToken??null;if(x(k)){const D=j({baseUrl:e,accessToken:k}).getHttpClient();i=k,f=!0,_=D;try{const w=await V({http:D,primaryPath:R,fallbackPath:C,params:a,fetchOptions:n});return H({hadAccessToken:!0,accessToken:k}),w}catch(w){const B=w?.statusCode??w?.status;$({status:B,hadAccessToken:!0,accessToken:k,skipSessionExpiry:T===y.probe})&&U(),b=P(w,{errorPrefix:r,hadAccessToken:!0,accessToken:k,skipSessionExpiry:!0})}}else I({hadAccessToken:f,accessToken:i,skipSessionExpiry:T===y.probe})&&U();b??=P(h,{errorPrefix:r,hadAccessToken:f,accessToken:i,skipSessionExpiry:!0})}if(b??=P(h,{errorPrefix:r,hadAccessToken:f,accessToken:i,skipSessionExpiry:T===y.probe}),!se({err:b,attempt:v,retryOptions:E}))throw b;const q=ae({retryOptions:E,attempt:v});await ne(q),v+=1}}async function X({baseUrl:e,accessToken:t,slug:s,body:a,fetchOptions:n,errorPrefix:r,retry:l,requestKind:o=y.business,skipSessionExpiry:c=!1,allowRefresh:u=!0}={}){let i=await d(t),f=x(i),_=j({baseUrl:e,accessToken:i??void 0}).getHttpClient();const E=te(l,"POST"),T=c?y.probe:o;let v=0;const{primaryPath:R,fallbackPath:C}=O(s);for(;;)try{const S=await K({http:_,primaryPath:R,fallbackPath:C,body:a,fetchOptions:n});return H({hadAccessToken:f,accessToken:i}),S}catch(S){const h=S;if(h?.name==="AbortError")throw S;let b=null;const L=h?.statusCode??h?.status;if(u&&Z({status:L,requestKind:T,hadAccessToken:f,accessToken:i})){const k=(await ee())?.accessToken??null;if(x(k)){const D=j({baseUrl:e,accessToken:k}).getHttpClient();i=k,f=!0,_=D;try{const w=await K({http:D,primaryPath:R,fallbackPath:C,body:a,fetchOptions:n});return H({hadAccessToken:!0,accessToken:k}),w}catch(w){const B=w?.statusCode??w?.status;$({status:B,hadAccessToken:!0,accessToken:k,skipSessionExpiry:T===y.probe})&&U(),b=P(w,{errorPrefix:r,hadAccessToken:!0,accessToken:k,skipSessionExpiry:!0})}}else I({hadAccessToken:f,accessToken:i,skipSessionExpiry:T===y.probe})&&U();b??=P(h,{errorPrefix:r,hadAccessToken:f,accessToken:i,skipSessionExpiry:!0})}if(b??=P(h,{errorPrefix:r,hadAccessToken:f,accessToken:i,skipSessionExpiry:T===y.probe}),!se({err:b,attempt:v,retryOptions:E}))throw b;const q=ae({retryOptions:E,attempt:v});await ne(q),v+=1}}function O(e){const t=Te(e),s=`${N(J)}/${t}`,a=`${N(we)}/${t}`;return{primaryPath:s,fallbackPath:a}}function Te(e){return(typeof e=="string"?e.trim():"").replace(/^\/+/,"")}function N(e){const t=typeof e=="string"?e.trim():"";return t.endsWith("/")?t.slice(0,-1):t}async function V({http:e,primaryPath:t,fallbackPath:s,params:a,fetchOptions:n}={}){try{return await e.get(t,{params:a,...n||{}})}catch(r){if(!Q(r,t))throw r;return await e.get(s,{params:a,...n||{}})}}async function K({http:e,primaryPath:t,fallbackPath:s,body:a,fetchOptions:n}={}){try{return await W({http:e,path:t,body:a,fetchOptions:n})}catch(r){if(!Q(r,t))throw r;return await W({http:e,path:s,body:a,fetchOptions:n})}}async function W({http:e,path:t,body:s,fetchOptions:a}={}){return await e.post(t,s,{...a||{}})}function Q(e,t){return!t||!t.startsWith(`${N(J)}/`)?!1:(e?.statusCode??e?.status)===404}function P(e,{errorPrefix:t,hadAccessToken:s,accessToken:a,skipSessionExpiry:n}={}){const r=typeof e?.message=="string"?e.message.trim():"",l=typeof e?.error=="string"?e.error.trim():"",o=r||l||String(e||"Unknown error"),c=_e(o),u=new Error(t?`${t}: ${c}`:c);u.cause=e;const i=e?.statusCode??e?.status;return $({status:i,hadAccessToken:s,accessToken:a,skipSessionExpiry:n})&&U(),typeof i=="number"&&(u.status=i,u.statusCode=i),u.retryable=ve(i)||Me(o),c!==o&&(u.originalMessage=o),e?.nextActions&&(u.nextActions=e.nextActions),e?.error&&(u.error=e.error),u}function I({hadAccessToken:e,accessToken:t,skipSessionExpiry:s}={}){return s||!e||!x(t)?!1:Ae(t)}function $({status:e,hadAccessToken:t,accessToken:s,skipSessionExpiry:a}={}){return e!==401?!1:I({hadAccessToken:t,accessToken:s,skipSessionExpiry:a})}function Se({hadAccessToken:e,accessToken:t}={}){return I({hadAccessToken:e,accessToken:t})}function H({hadAccessToken:e,accessToken:t}={}){Se({hadAccessToken:e,accessToken:t})&&me()}function _e(e){return Y(e)?be:String(e||"Unknown error")}function Y(e){const t=String(e||"").toLowerCase();return t?!!(t.includes("deno:")||t.includes("deno")||t.includes("econnreset")||t.includes("econnrefused")||t.includes("etimedout")||t.includes("timeout")&&t.includes("request")||t.includes("upstream")&&(t.includes("deno")||t.includes("connect"))):!1}function Z({status:e,requestKind:t,hadAccessToken:s,accessToken:a}={}){return e!==401||t!==y.business?!1:I({hadAccessToken:s,accessToken:a})}async function ee(){return z||(z=ye.auth.getCurrentSession().then(({data:e})=>e?.session??null).catch(()=>null).finally(()=>{z=null}),z)}function ve(e){return e===502||e===503||e===504}function Me(e){const t=String(e||"").toLowerCase();return t?!!(Y(t)||t.includes("econnreset")||t.includes("econnrefused")||t.includes("etimedout")||t.includes("timeout")||t.includes("networkerror")||t.includes("failed to fetch")||t.includes("socket hang up")||t.includes("connection reset")):!1}function te(e,t){const a=(t||"GET").toUpperCase()==="GET"?{maxRetries:2,baseDelayMs:300,maxDelayMs:1500,jitterRatio:.2}:{maxRetries:0,baseDelayMs:0,maxDelayMs:0,jitterRatio:0};if(e==null)return a;if(e===!1)return{maxRetries:0,baseDelayMs:0,maxDelayMs:0,jitterRatio:0};const n=F(e.maxRetries??a.maxRetries,0,10),r=F(e.baseDelayMs??a.baseDelayMs,50,6e4),l=F(e.maxDelayMs??a.maxDelayMs,r,12e4),o=typeof e.jitterRatio=="number"?Math.max(0,Math.min(.5,e.jitterRatio)):a.jitterRatio;return{maxRetries:n,baseDelayMs:r,maxDelayMs:l,jitterRatio:o}}function x(e){return!!pe(e)}function Ae(e){if(!x(e))return!1;const t=e.split(".");return t.length!==3?!1:t.every(s=>/^[A-Za-z0-9_-]+$/.test(s))}function se({err:e,attempt:t,retryOptions:s}={}){return!s||s.maxRetries<=0||t>=s.maxRetries?!1:!!(e&&e.retryable)}function ae({retryOptions:e,attempt:t}={}){if(!e||e.maxRetries<=0)return 0;const s=e.baseDelayMs*Math.pow(2,t),a=Math.min(e.maxDelayMs,s),n=a*e.jitterRatio*Math.random();return Math.round(a+n)}function F(e,t,s){const a=Number(e);return Number.isFinite(a)?Math.min(s,Math.max(t,Math.floor(a))):t}function ne(e){return!e||e<=0?Promise.resolve():new Promise(t=>setTimeout(t,e))}export{Le as a,Re as b,qe as c,Be as d,Ee as e,He as f,Fe as g,De as h,$e as i,Ie as j,Ce as k,Ue as l,xe as p,Ne as r,ze as s,je as t};
|