Spaces:
Running
Running
Remove token input and use public model access
Browse files- assets/benchmark-BN7H8VBF.js +0 -2
- assets/benchmark-DDIcBhXB.js +2 -0
- assets/{benchmark.worker-CyeU09oA.js → benchmark.worker-CeZNTj8H.js} +0 -0
- assets/{main-DsavZx-1.js → main-BTOsMrG3.js} +6 -6
- assets/styles-Bkf0-SEk.css +0 -1
- assets/{styles-CXecqZ76.js → styles-CqhvA02s.js} +0 -0
- assets/styles-vgcZZwOh.css +1 -0
- benchmark.html +3 -3
- index.html +3 -3
assets/benchmark-BN7H8VBF.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
import{c as F,j as e,a as $e,d as _e,u as Re,r as n,D as Ce,s as ee,b as We,p as Be,e as Pe,f as ze,B as C,g as W,S as Ee,M as Te,h as B,I as U,L as se,Z as Ae,C as Le,i as Ue,w as Fe,k as Ie,l as De}from"./styles-CXecqZ76.js";const qe=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],Oe=F("copy",qe);const Ge=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],He=F("play",Ge);const Ze=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Qe=F("square",Ze);function te({className:t,...o}){return e.jsx("select",{className:$e("h-10 w-full rounded-md border border-input bg-card px-3 text-sm text-foreground outline-none transition focus:border-ring focus:ring-2 focus:ring-ring/40",t),...o})}const ie=[1e3,1e4,1e5],re=64,ae=1e3,ne=_e(),Ke="".trim()??"";function oe(t){const o=typeof window>"u"?"":window.location.search;return`${t}${o}`}function Ve(){const{theme:t,toggle:o}=Re(),[c,b]=n.useState(Ce),[a,z]=n.useState("full"),[E,I]=n.useState([1e3]),[D,q]=n.useState(re),[O,G]=n.useState(()=>ee()),[H,le]=n.useState(Ke),[h,ue]=n.useState(ne.webgpu),[j,p]=n.useState("idle"),[me,x]=n.useState("Ready to load NQ Parquet and benchmark browser encoding."),[Z,he]=n.useState(null),[M,Q]=n.useState([]),[K,V]=n.useState([]),[xe,T]=n.useState(new Map),[l,v]=n.useState(null),[pe,A]=n.useState(0),J=n.useRef(!1),$=n.useRef(null),N=n.useRef(null),be=B[c],ge=We(xe),g=["loading-data","loading-model","warming","running"].includes(j),fe=Math.max(...E,ae);n.useMemo(()=>ce(a,h),[a,h]);const _=n.useMemo(()=>Xe(M,c,Z),[M,c,Z]),we=h?"":Fe({...ne,webgpu:h});n.useEffect(()=>{let s=!1;return Be().then(r=>{s||(ue(r),r||z(d=>d==="webgpu"?"wasm":d))}),()=>{s=!0,f()}},[]),n.useEffect(()=>{if(J.current)return;const s=new URLSearchParams(window.location.search);if(s.get("autorun")!=="1")return;J.current=!0;const r=s.get("runtime");(r==="wasm"||r==="webgpu"||r==="full")&&z(r);const d=Je(s.get("sizes"));d.length>0&&I(d);const i=Number(s.get("bs"));Number.isFinite(i)&&i>0&&q(Math.floor(i));const u=Number(s.get("wasm_threads"));Number.isFinite(u)&&u>0&&G(Math.floor(u)),window.setTimeout(()=>{X({overrideMode:r==="wasm"||r==="webgpu"||r==="full"?r:void 0,overrideSizes:d.length>0?d:void 0,overrideBatchSize:Number.isFinite(i)&&i>0?Math.floor(i):void 0,overrideWasmThreads:Number.isFinite(u)&&u>0?Math.floor(u):void 0})},0)},[]),n.useEffect(()=>{if(!g){A(0);return}const s=performance.now();A(0);const r=window.setInterval(()=>{A(performance.now()-s)},1e3);return()=>window.clearInterval(r)},[g]);function y(s,r="neutral"){V(d=>[...d.slice(-160),{id:`${Date.now()}:${Math.random()}`,tone:r,text:s}])}function je(s){I(r=>{const d=r.includes(s)?r.filter(i=>i!==s):[...r,s];return d.length===0?r:d.sort((i,u)=>i-u)})}function ve(){Q([]),V([]),T(new Map),v(null)}function Ne(){const s=$.current,r=N.current;s&&r&&s.postMessage({type:"cancel",id:r}),x("Stopping after the current batch finishes."),y("Cancel requested; current model call will finish first.","warn")}async function X(s={}){f(),ve();const r=s.overrideMode??a,d=[...s.overrideSizes??E].sort((w,Me)=>w-Me),i=s.overrideBatchSize??D,u=s.overrideWasmThreads??O,Y=ce(r,h);if(Y.length===0){p("error"),x("No runtime selected. WebGPU is unavailable, and WASM was not selected.");return}if(i<1){p("error"),x("Batch size must be at least 1.");return}if(u<1){p("error"),x("WASM threads must be at least 1.");return}const L=`${Date.now()}:${Math.random()}`;N.current=L;const R=new Worker(new URL("/assets/benchmark.worker-CyeU09oA.js",import.meta.url),{type:"module"});$.current=R,R.onmessage=w=>ye(w.data),R.onerror=w=>{N.current===L&&(p("error"),x(w.message||"Benchmark worker failed."),y(w.message||"Benchmark worker failed.","warn"),window.dispatchEvent(new CustomEvent("bekko-benchmark-error")),f())},R.postMessage({type:"start",job:{id:L,modelId:c,accessToken:H,runtimes:Y,sizes:d,batchSize:i,warmupRows:ae,wasmThreads:u}})}function ye(s){if(s.id===N.current)switch(s.type){case"status":p(s.status),x(s.message),s.status==="loading-model"&&T(new Map);break;case"log":y(s.text,s.tone??"neutral");break;case"dataset":he(s.dataset);break;case"model-progress":T(r=>Pe(r,s.event));break;case"active-progress":v(s.progress);break;case"result":Q(r=>[...r,s.result]);break;case"complete":p("complete"),x("Benchmark complete. Results are ready to copy."),v(null),f(),window.dispatchEvent(new CustomEvent("bekko-benchmark-complete"));break;case"cancelled":p("idle"),x("Benchmark stopped."),v(null),f();break;case"error":p("error"),x(s.message),y(s.message,"warn"),v(null),f(),window.dispatchEvent(new CustomEvent("bekko-benchmark-error"));break}}function f(){$.current?.terminate(),$.current=null,N.current=null}async function ke(){_&&(await navigator.clipboard.writeText(_),y("Copied benchmark results to clipboard.","good"))}const Se=j==="error"?"amber":j==="complete"?"green":"neutral";return e.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[e.jsx("header",{className:"sticky top-0 z-10 border-b border-border bg-background/85 backdrop-blur",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-6xl items-center justify-between gap-4 px-4 py-2.5 md:px-6",children:[e.jsxs("a",{href:oe("index.html"),className:"flex items-center gap-2.5 text-sm font-semibold hover:text-primary",children:[e.jsx("span",{className:"flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground",children:e.jsx(ze,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),"bekko-embedding ",e.jsx("span",{className:"hidden font-normal text-muted-foreground sm:inline",children:"· benchmark"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C,{tone:Se,children:j}),e.jsx("a",{href:oe("index.html"),className:"hidden rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground sm:inline-flex",children:"demo"}),e.jsx(W,{variant:"ghost",size:"icon","aria-label":"Toggle theme",onClick:o,children:t==="dark"?e.jsx(Ee,{className:"h-4 w-4"}):e.jsx(Te,{className:"h-4 w-4"})})]})]})}),e.jsxs("main",{className:"mx-auto grid w-full max-w-6xl gap-5 px-4 py-6 md:px-6",children:[e.jsxs("section",{className:"space-y-2",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Browser encoding benchmark"}),e.jsx("p",{className:"max-w-4xl text-sm leading-6 text-muted-foreground",children:"Loads Natural Questions from Hugging Face Parquet, keeps the requested rows in memory, warms up with 1,000 document encodes, then measures batch-by-batch encoding throughput in WebGPU and/or WASM."})]}),e.jsxs("section",{className:"rounded-xl border border-border bg-card px-4 py-4",children:[e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[1fr_auto] lg:items-end",children:[e.jsxs("div",{className:"grid gap-3 md:grid-cols-5",children:[e.jsx(k,{label:"Model",children:e.jsx(te,{value:c,onChange:s=>b(s.target.value),children:Object.values(B).map(s=>e.jsx("option",{value:s.id,children:s.label},s.id))})}),e.jsx(k,{label:"Runtime",children:e.jsxs(te,{value:a,onChange:s=>z(s.target.value),children:[e.jsx("option",{value:"full",children:"Full: WebGPU + WASM"}),e.jsx("option",{value:"webgpu",disabled:!h,children:"WebGPU only"}),e.jsx("option",{value:"wasm",children:"WASM CPU only"})]})}),e.jsx(k,{label:"Batch size",children:e.jsx(U,{type:"number",min:1,step:1,value:D,onChange:s=>q(Math.max(1,Number(s.target.value)||re))})}),e.jsx(k,{label:"WASM threads",children:e.jsx(U,{type:"number",min:1,step:1,value:O,onChange:s=>G(Math.max(1,Number(s.target.value)||ee()))})}),e.jsx(k,{label:"HF token",children:e.jsx(U,{type:"password",value:H,autoComplete:"off",spellCheck:!1,placeholder:"optional",onChange:s=>le(s.target.value)})})]}),e.jsxs("div",{className:"flex flex-wrap items-end gap-2",children:[e.jsxs(W,{onClick:()=>{X()},disabled:g,children:[g?e.jsx(se,{className:"h-4 w-4 animate-spin"}):e.jsx(He,{className:"h-4 w-4"}),"Run"]}),e.jsxs(W,{variant:"secondary",onClick:Ne,disabled:!g,children:[e.jsx(Qe,{className:"h-4 w-4"}),"Stop"]})]})]}),e.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[ie.map(s=>e.jsxs("label",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm",children:[e.jsx("input",{type:"checkbox",checked:E.includes(s),onChange:()=>je(s),disabled:g}),S(s)]},s)),e.jsxs(C,{tone:h?"green":"amber",children:[h?e.jsx(Ae,{className:"h-3 w-3"}):e.jsx(Le,{className:"h-3 w-3"}),h?"WebGPU available":we||"WebGPU unavailable"]}),e.jsxs(C,{tone:"blue",children:["max load ",S(fe)," rows"]})]})]}),e.jsxs("section",{className:"grid gap-4 lg:grid-cols-[1.1fr_0.9fr]",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-xl border border-border bg-card px-4 py-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold",children:"Progress"}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:me})]}),l?e.jsxs(C,{tone:l.runtime==="webgpu"?"green":"blue",children:[P(l.runtime)," batch ",l.batch,"/",l.totalBatches]}):null]}),g?e.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 rounded-md border border-border bg-background px-3 py-2 text-sm",children:[e.jsx(se,{className:"h-4 w-4 animate-spin text-primary","aria-hidden":"true"}),e.jsx("span",{className:"font-medium",children:"Benchmark still running"}),e.jsxs("span",{className:"text-muted-foreground",children:["elapsed ",es(pe)]}),l?.runtime==="wasm"?e.jsx("span",{className:"text-muted-foreground",children:"WASM CPU can take a long time to finish each batch."}):null]}):null,l?e.jsxs("div",{className:"mt-4 space-y-2",children:[e.jsx("div",{className:"h-2 overflow-hidden rounded-full bg-muted",children:e.jsx("div",{className:"h-full bg-primary transition-all",style:{width:`${l.encoded/l.rows*100}%`}})}),e.jsxs("p",{className:"text-xs tabular-nums text-muted-foreground",children:[S(l.encoded)," / ",S(l.rows)," rows"]})]}):null,j==="loading-model"?e.jsx("div",{className:"mt-4",children:e.jsx(Ue,{progress:ge,label:`Loading ${be.label}`})}):null]}),e.jsxs("div",{className:"rounded-xl border border-border bg-card",children:[e.jsx("div",{className:"border-b border-border px-4 py-3",children:e.jsx("h2",{className:"text-sm font-semibold",children:"Batch log"})}),e.jsx("div",{className:"max-h-80 overflow-auto px-4 py-3 font-mono text-xs leading-5",children:K.length===0?e.jsx("p",{className:"font-sans text-sm text-muted-foreground",children:"No batches yet."}):K.map(s=>e.jsx("div",{className:s.tone==="good"?"text-success":s.tone==="warn"?"text-amber-700 dark:text-amber-300":"text-muted-foreground",children:s.text},s.id))})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-xl border border-border bg-card",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-border px-4 py-3",children:[e.jsx("h2",{className:"text-sm font-semibold",children:"Results"}),e.jsxs(W,{variant:"secondary",size:"sm",onClick:()=>{ke()},disabled:!_,children:[e.jsx(Oe,{className:"h-3.5 w-3.5"}),"Copy"]})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[620px] text-left text-sm",children:[e.jsx("thead",{className:"bg-muted/60 text-xs uppercase text-muted-foreground",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-3 py-2",children:"Runtime"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Rows"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"BS"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Encode"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Texts/s"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Warmup"})]})}),e.jsx("tbody",{children:M.length===0?e.jsx("tr",{children:e.jsx("td",{className:"px-3 py-4 text-muted-foreground",colSpan:6,children:"Results will appear after each measured size finishes."})}):M.map(s=>e.jsxs("tr",{className:"border-t border-border",children:[e.jsx("td",{className:"px-3 py-2",children:P(s.runtime)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:S(s.rows)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:s.batchSize}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:de(s.encodeMs)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:Ye(s.textsPerSecond)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:de(s.warmupMs)})]},`${s.runtime}:${s.rows}`))})]})})]}),e.jsx("textarea",{className:"min-h-72 w-full resize-y rounded-xl border border-input bg-card p-3 font-mono text-xs text-foreground outline-none focus:border-ring focus:ring-2 focus:ring-ring/40",readOnly:!0,value:_,placeholder:"Copy-ready Markdown/TSV results will appear here.","data-testid":"benchmark-results"})]})]})]})]})}function k({label:t,children:o}){return e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(Ie,{children:t}),o]})}function ce(t,o){return t==="full"?o?["webgpu","wasm"]:["wasm"]:t==="webgpu"&&!o?[]:[t]}function Je(t){if(!t)return[];const o=new Set(ie);return t.split(",").map(c=>Number(c.trim())).filter(c=>o.has(c)).sort((c,b)=>c-b)}function Xe(t,o,c){return t.length===0?"":["# bekko browser NQ document encoding benchmark","",`date_utc: ${new Date().toISOString()}`,`model: ${B[o].modelId}`,`revision: ${B[o].revision}`,"dataset: sentence-transformers/natural-questions pair/train answer",`parquet: ${c?.parquetUrl??"unknown"}`,`loaded_rows: ${c?.loadedRows??"unknown"}`,`user_agent: ${navigator.userAgent}`,`hardware_concurrency: ${navigator.hardwareConcurrency??"unknown"}`,`device_memory_gb: ${ss()}`,"","| runtime | rows | batch_size | batches | encode_seconds | texts_per_second | warmup_seconds | model_load_seconds | dataset_load_seconds | wall_seconds |","|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|",...t.map(a=>`| ${P(a.runtime)} | ${a.rows} | ${a.batchSize} | ${a.batches} | ${m(a.encodeMs)} | ${a.textsPerSecond.toFixed(2)} | ${m(a.warmupMs)} | ${m(a.modelLoadMs)} | ${m(a.datasetLoadMs)} | ${m(a.wallMs)} |`),"","tsv:","runtime rows batch_size batches encode_seconds texts_per_second warmup_seconds model_load_seconds dataset_load_seconds wall_seconds",...t.map(a=>`${P(a.runtime)} ${a.rows} ${a.batchSize} ${a.batches} ${m(a.encodeMs)} ${a.textsPerSecond.toFixed(2)} ${m(a.warmupMs)} ${m(a.modelLoadMs)} ${m(a.datasetLoadMs)} ${m(a.wallMs)}`)].join(`
|
| 2 |
-
`)}function P(t){return t==="webgpu"?"WebGPU":"WASM CPU"}function S(t){return new Intl.NumberFormat("en-US").format(t)}function Ye(t){return new Intl.NumberFormat("en-US",{maximumFractionDigits:1}).format(t)}function de(t){return`${m(t)} s`}function es(t){const o=Math.max(0,Math.floor(t/1e3)),c=Math.floor(o/60),b=o%60;return c>0?`${c}m ${b.toString().padStart(2,"0")}s`:`${b}s`}function m(t){return(t/1e3).toFixed(3)}function ss(){const t=navigator;return t.deviceMemory===void 0?"unknown":String(t.deviceMemory)}De.createRoot(document.getElementById("root")).render(e.jsx(n.StrictMode,{children:e.jsx(Ve,{})}));
|
|
|
|
|
|
|
|
|
assets/benchmark-DDIcBhXB.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import{c as A,j as e,a as Se,d as Me,u as $e,r as n,D as _e,s as X,b as Re,p as We,e as Ce,f as Be,B as R,g as W,S as Pe,M as ze,h as B,I as Y,L as ee,Z as Ee,C as Te,i as Le,w as Ue,k as Ae,l as Fe}from"./styles-CqhvA02s.js";const Ie=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],De=A("copy",Ie);const qe=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],Oe=A("play",qe);const Ge=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Ze=A("square",Ge);function se({className:t,...o}){return e.jsx("select",{className:Se("h-10 w-full rounded-md border border-input bg-card px-3 text-sm text-foreground outline-none transition focus:border-ring focus:ring-2 focus:ring-ring/40",t),...o})}const ce=[1e3,1e4,1e5],te=64,re=1e3,ae=Me();function ne(t){const o=typeof window>"u"?"":window.location.search;return`${t}${o}`}function He(){const{theme:t,toggle:o}=$e(),[d,b]=n.useState(_e),[a,z]=n.useState("full"),[E,F]=n.useState([1e3]),[I,D]=n.useState(te),[q,O]=n.useState(()=>X()),[h,ie]=n.useState(ae.webgpu),[j,p]=n.useState("idle"),[le,x]=n.useState("Ready to load NQ Parquet and benchmark browser encoding."),[G,ue]=n.useState(null),[S,Z]=n.useState([]),[H,Q]=n.useState([]),[me,T]=n.useState(new Map),[l,v]=n.useState(null),[he,L]=n.useState(0),K=n.useRef(!1),M=n.useRef(null),N=n.useRef(null),xe=B[d],pe=Re(me),g=["loading-data","loading-model","warming","running"].includes(j),be=Math.max(...E,re);n.useMemo(()=>oe(a,h),[a,h]);const $=n.useMemo(()=>Ke(S,d,G),[S,d,G]),ge=h?"":Ue({...ae,webgpu:h});n.useEffect(()=>{let s=!1;return We().then(r=>{s||(ie(r),r||z(c=>c==="webgpu"?"wasm":c))}),()=>{s=!0,f()}},[]),n.useEffect(()=>{if(K.current)return;const s=new URLSearchParams(window.location.search);if(s.get("autorun")!=="1")return;K.current=!0;const r=s.get("runtime");(r==="wasm"||r==="webgpu"||r==="full")&&z(r);const c=Qe(s.get("sizes"));c.length>0&&F(c);const i=Number(s.get("bs"));Number.isFinite(i)&&i>0&&D(Math.floor(i));const u=Number(s.get("wasm_threads"));Number.isFinite(u)&&u>0&&O(Math.floor(u)),window.setTimeout(()=>{V({overrideMode:r==="wasm"||r==="webgpu"||r==="full"?r:void 0,overrideSizes:c.length>0?c:void 0,overrideBatchSize:Number.isFinite(i)&&i>0?Math.floor(i):void 0,overrideWasmThreads:Number.isFinite(u)&&u>0?Math.floor(u):void 0})},0)},[]),n.useEffect(()=>{if(!g){L(0);return}const s=performance.now();L(0);const r=window.setInterval(()=>{L(performance.now()-s)},1e3);return()=>window.clearInterval(r)},[g]);function y(s,r="neutral"){Q(c=>[...c.slice(-160),{id:`${Date.now()}:${Math.random()}`,tone:r,text:s}])}function fe(s){F(r=>{const c=r.includes(s)?r.filter(i=>i!==s):[...r,s];return c.length===0?r:c.sort((i,u)=>i-u)})}function we(){Z([]),Q([]),T(new Map),v(null)}function je(){const s=M.current,r=N.current;s&&r&&s.postMessage({type:"cancel",id:r}),x("Stopping after the current batch finishes."),y("Cancel requested; current model call will finish first.","warn")}async function V(s={}){f(),we();const r=s.overrideMode??a,c=[...s.overrideSizes??E].sort((w,ke)=>w-ke),i=s.overrideBatchSize??I,u=s.overrideWasmThreads??q,J=oe(r,h);if(J.length===0){p("error"),x("No runtime selected. WebGPU is unavailable, and WASM was not selected.");return}if(i<1){p("error"),x("Batch size must be at least 1.");return}if(u<1){p("error"),x("WASM threads must be at least 1.");return}const U=`${Date.now()}:${Math.random()}`;N.current=U;const _=new Worker(new URL("/assets/benchmark.worker-CeZNTj8H.js",import.meta.url),{type:"module"});M.current=_,_.onmessage=w=>ve(w.data),_.onerror=w=>{N.current===U&&(p("error"),x(w.message||"Benchmark worker failed."),y(w.message||"Benchmark worker failed.","warn"),window.dispatchEvent(new CustomEvent("bekko-benchmark-error")),f())},_.postMessage({type:"start",job:{id:U,modelId:d,runtimes:J,sizes:c,batchSize:i,warmupRows:re,wasmThreads:u}})}function ve(s){if(s.id===N.current)switch(s.type){case"status":p(s.status),x(s.message),s.status==="loading-model"&&T(new Map);break;case"log":y(s.text,s.tone??"neutral");break;case"dataset":ue(s.dataset);break;case"model-progress":T(r=>Ce(r,s.event));break;case"active-progress":v(s.progress);break;case"result":Z(r=>[...r,s.result]);break;case"complete":p("complete"),x("Benchmark complete. Results are ready to copy."),v(null),f(),window.dispatchEvent(new CustomEvent("bekko-benchmark-complete"));break;case"cancelled":p("idle"),x("Benchmark stopped."),v(null),f();break;case"error":p("error"),x(s.message),y(s.message,"warn"),v(null),f(),window.dispatchEvent(new CustomEvent("bekko-benchmark-error"));break}}function f(){M.current?.terminate(),M.current=null,N.current=null}async function Ne(){$&&(await navigator.clipboard.writeText($),y("Copied benchmark results to clipboard.","good"))}const ye=j==="error"?"amber":j==="complete"?"green":"neutral";return e.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[e.jsx("header",{className:"sticky top-0 z-10 border-b border-border bg-background/85 backdrop-blur",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-6xl items-center justify-between gap-4 px-4 py-2.5 md:px-6",children:[e.jsxs("a",{href:ne("index.html"),className:"flex items-center gap-2.5 text-sm font-semibold hover:text-primary",children:[e.jsx("span",{className:"flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground",children:e.jsx(Be,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),"bekko-embedding ",e.jsx("span",{className:"hidden font-normal text-muted-foreground sm:inline",children:"· benchmark"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(R,{tone:ye,children:j}),e.jsx("a",{href:ne("index.html"),className:"hidden rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground sm:inline-flex",children:"demo"}),e.jsx(W,{variant:"ghost",size:"icon","aria-label":"Toggle theme",onClick:o,children:t==="dark"?e.jsx(Pe,{className:"h-4 w-4"}):e.jsx(ze,{className:"h-4 w-4"})})]})]})}),e.jsxs("main",{className:"mx-auto grid w-full max-w-6xl gap-5 px-4 py-6 md:px-6",children:[e.jsxs("section",{className:"space-y-2",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Browser encoding benchmark"}),e.jsx("p",{className:"max-w-4xl text-sm leading-6 text-muted-foreground",children:"Loads Natural Questions from Hugging Face Parquet, keeps the requested rows in memory, warms up with 1,000 document encodes, then measures batch-by-batch encoding throughput in WebGPU and/or WASM."})]}),e.jsxs("section",{className:"rounded-xl border border-border bg-card px-4 py-4",children:[e.jsxs("div",{className:"grid gap-4 lg:grid-cols-[1fr_auto] lg:items-end",children:[e.jsxs("div",{className:"grid gap-3 md:grid-cols-5",children:[e.jsx(C,{label:"Model",children:e.jsx(se,{value:d,onChange:s=>b(s.target.value),children:Object.values(B).map(s=>e.jsx("option",{value:s.id,children:s.label},s.id))})}),e.jsx(C,{label:"Runtime",children:e.jsxs(se,{value:a,onChange:s=>z(s.target.value),children:[e.jsx("option",{value:"full",children:"Full: WebGPU + WASM"}),e.jsx("option",{value:"webgpu",disabled:!h,children:"WebGPU only"}),e.jsx("option",{value:"wasm",children:"WASM CPU only"})]})}),e.jsx(C,{label:"Batch size",children:e.jsx(Y,{type:"number",min:1,step:1,value:I,onChange:s=>D(Math.max(1,Number(s.target.value)||te))})}),e.jsx(C,{label:"WASM threads",children:e.jsx(Y,{type:"number",min:1,step:1,value:q,onChange:s=>O(Math.max(1,Number(s.target.value)||X()))})})]}),e.jsxs("div",{className:"flex flex-wrap items-end gap-2",children:[e.jsxs(W,{onClick:()=>{V()},disabled:g,children:[g?e.jsx(ee,{className:"h-4 w-4 animate-spin"}):e.jsx(Oe,{className:"h-4 w-4"}),"Run"]}),e.jsxs(W,{variant:"secondary",onClick:je,disabled:!g,children:[e.jsx(Ze,{className:"h-4 w-4"}),"Stop"]})]})]}),e.jsxs("div",{className:"mt-4 flex flex-wrap items-center gap-2",children:[ce.map(s=>e.jsxs("label",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm",children:[e.jsx("input",{type:"checkbox",checked:E.includes(s),onChange:()=>fe(s),disabled:g}),k(s)]},s)),e.jsxs(R,{tone:h?"green":"amber",children:[h?e.jsx(Ee,{className:"h-3 w-3"}):e.jsx(Te,{className:"h-3 w-3"}),h?"WebGPU available":ge||"WebGPU unavailable"]}),e.jsxs(R,{tone:"blue",children:["max load ",k(be)," rows"]})]})]}),e.jsxs("section",{className:"grid gap-4 lg:grid-cols-[1.1fr_0.9fr]",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-xl border border-border bg-card px-4 py-4",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-sm font-semibold",children:"Progress"}),e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:le})]}),l?e.jsxs(R,{tone:l.runtime==="webgpu"?"green":"blue",children:[P(l.runtime)," batch ",l.batch,"/",l.totalBatches]}):null]}),g?e.jsxs("div",{className:"mt-3 flex flex-wrap items-center gap-2 rounded-md border border-border bg-background px-3 py-2 text-sm",children:[e.jsx(ee,{className:"h-4 w-4 animate-spin text-primary","aria-hidden":"true"}),e.jsx("span",{className:"font-medium",children:"Benchmark still running"}),e.jsxs("span",{className:"text-muted-foreground",children:["elapsed ",Je(he)]}),l?.runtime==="wasm"?e.jsx("span",{className:"text-muted-foreground",children:"WASM CPU can take a long time to finish each batch."}):null]}):null,l?e.jsxs("div",{className:"mt-4 space-y-2",children:[e.jsx("div",{className:"h-2 overflow-hidden rounded-full bg-muted",children:e.jsx("div",{className:"h-full bg-primary transition-all",style:{width:`${l.encoded/l.rows*100}%`}})}),e.jsxs("p",{className:"text-xs tabular-nums text-muted-foreground",children:[k(l.encoded)," / ",k(l.rows)," rows"]})]}):null,j==="loading-model"?e.jsx("div",{className:"mt-4",children:e.jsx(Le,{progress:pe,label:`Loading ${xe.label}`})}):null]}),e.jsxs("div",{className:"rounded-xl border border-border bg-card",children:[e.jsx("div",{className:"border-b border-border px-4 py-3",children:e.jsx("h2",{className:"text-sm font-semibold",children:"Batch log"})}),e.jsx("div",{className:"max-h-80 overflow-auto px-4 py-3 font-mono text-xs leading-5",children:H.length===0?e.jsx("p",{className:"font-sans text-sm text-muted-foreground",children:"No batches yet."}):H.map(s=>e.jsx("div",{className:s.tone==="good"?"text-success":s.tone==="warn"?"text-amber-700 dark:text-amber-300":"text-muted-foreground",children:s.text},s.id))})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-xl border border-border bg-card",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3 border-b border-border px-4 py-3",children:[e.jsx("h2",{className:"text-sm font-semibold",children:"Results"}),e.jsxs(W,{variant:"secondary",size:"sm",onClick:()=>{Ne()},disabled:!$,children:[e.jsx(De,{className:"h-3.5 w-3.5"}),"Copy"]})]}),e.jsx("div",{className:"overflow-x-auto",children:e.jsxs("table",{className:"w-full min-w-[620px] text-left text-sm",children:[e.jsx("thead",{className:"bg-muted/60 text-xs uppercase text-muted-foreground",children:e.jsxs("tr",{children:[e.jsx("th",{className:"px-3 py-2",children:"Runtime"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Rows"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"BS"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Encode"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Texts/s"}),e.jsx("th",{className:"px-3 py-2 text-right",children:"Warmup"})]})}),e.jsx("tbody",{children:S.length===0?e.jsx("tr",{children:e.jsx("td",{className:"px-3 py-4 text-muted-foreground",colSpan:6,children:"Results will appear after each measured size finishes."})}):S.map(s=>e.jsxs("tr",{className:"border-t border-border",children:[e.jsx("td",{className:"px-3 py-2",children:P(s.runtime)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:k(s.rows)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:s.batchSize}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:de(s.encodeMs)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:Ve(s.textsPerSecond)}),e.jsx("td",{className:"px-3 py-2 text-right tabular-nums",children:de(s.warmupMs)})]},`${s.runtime}:${s.rows}`))})]})})]}),e.jsx("textarea",{className:"min-h-72 w-full resize-y rounded-xl border border-input bg-card p-3 font-mono text-xs text-foreground outline-none focus:border-ring focus:ring-2 focus:ring-ring/40",readOnly:!0,value:$,placeholder:"Copy-ready Markdown/TSV results will appear here.","data-testid":"benchmark-results"})]})]})]})]})}function C({label:t,children:o}){return e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(Ae,{children:t}),o]})}function oe(t,o){return t==="full"?o?["webgpu","wasm"]:["wasm"]:t==="webgpu"&&!o?[]:[t]}function Qe(t){if(!t)return[];const o=new Set(ce);return t.split(",").map(d=>Number(d.trim())).filter(d=>o.has(d)).sort((d,b)=>d-b)}function Ke(t,o,d){return t.length===0?"":["# bekko browser NQ document encoding benchmark","",`date_utc: ${new Date().toISOString()}`,`model: ${B[o].modelId}`,`revision: ${B[o].revision}`,"dataset: sentence-transformers/natural-questions pair/train answer",`parquet: ${d?.parquetUrl??"unknown"}`,`loaded_rows: ${d?.loadedRows??"unknown"}`,`user_agent: ${navigator.userAgent}`,`hardware_concurrency: ${navigator.hardwareConcurrency??"unknown"}`,`device_memory_gb: ${Xe()}`,"","| runtime | rows | batch_size | batches | encode_seconds | texts_per_second | warmup_seconds | model_load_seconds | dataset_load_seconds | wall_seconds |","|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|",...t.map(a=>`| ${P(a.runtime)} | ${a.rows} | ${a.batchSize} | ${a.batches} | ${m(a.encodeMs)} | ${a.textsPerSecond.toFixed(2)} | ${m(a.warmupMs)} | ${m(a.modelLoadMs)} | ${m(a.datasetLoadMs)} | ${m(a.wallMs)} |`),"","tsv:","runtime rows batch_size batches encode_seconds texts_per_second warmup_seconds model_load_seconds dataset_load_seconds wall_seconds",...t.map(a=>`${P(a.runtime)} ${a.rows} ${a.batchSize} ${a.batches} ${m(a.encodeMs)} ${a.textsPerSecond.toFixed(2)} ${m(a.warmupMs)} ${m(a.modelLoadMs)} ${m(a.datasetLoadMs)} ${m(a.wallMs)}`)].join(`
|
| 2 |
+
`)}function P(t){return t==="webgpu"?"WebGPU":"WASM CPU"}function k(t){return new Intl.NumberFormat("en-US").format(t)}function Ve(t){return new Intl.NumberFormat("en-US",{maximumFractionDigits:1}).format(t)}function de(t){return`${m(t)} s`}function Je(t){const o=Math.max(0,Math.floor(t/1e3)),d=Math.floor(o/60),b=o%60;return d>0?`${d}m ${b.toString().padStart(2,"0")}s`:`${b}s`}function m(t){return(t/1e3).toFixed(3)}function Xe(){const t=navigator;return t.deviceMemory===void 0?"unknown":String(t.deviceMemory)}Fe.createRoot(document.getElementById("root")).render(e.jsx(n.StrictMode,{children:e.jsx(He,{})}));
|
assets/{benchmark.worker-CyeU09oA.js → benchmark.worker-CeZNTj8H.js}
RENAMED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/{main-DsavZx-1.js → main-BTOsMrG3.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
| 1 |
-
import{c as S,m as
|
| 2 |
-
`).forEach((c,d)=>{
|
| 3 |
-
`)}function
|
| 4 |
`)},{id:"sushi-multilingual",label:"Sushi",hint:"Multilingual — straight from the model card. An English query matches a description across four languages.",query:"What are the characteristics of sushi?",document:["A warm noodle soup served in broth with sliced toppings.","天ぷらは魚や野菜に衣をつけて揚げた料理です。","Une fine crêpe garnie de sucre, de beurre ou de fruits.","A Japanese dish made with vinegared rice, often shaped with seafood, vegetables, or egg."].join(`
|
| 5 |
`)},{id:"space",label:"Space",hint:"The query targets the passages about launch cost and rocket reuse, not the off-topic ones.",query:"Why have reusable rockets made spaceflight cheaper?",document:["SpaceX's Falcon 9 popularized reusable boosters that land upright and fly again, lowering the cost of reaching orbit.","NASA's Artemis program aims to return astronauts to the surface of the Moon and build a lasting presence there.","The stock market rose today, led by gains in semiconductor and technology shares.","Reusing rocket hardware across many flights spreads out manufacturing costs and shortens the time between launches.","A balanced breakfast often includes whole grains, fruit, and a good source of protein.","Launching hundreds of small satellites on a single rocket drives down the cost per spacecraft."].join(`
|
| 6 |
-
`)},{id:"empty",label:"Empty",hint:"Type your own query, then one passage per line below.",query:"",document:""}],
|
| 7 |
-
`).map((a,N)=>({index:N,text:a.trim()})).filter(a=>a.text.length>0);if(r.length===0){j("error"),b("Add at least one document line.");return}const o=await
|
| 8 |
-
`).filter(r=>r.trim().length>0).length,
|
|
|
|
| 1 |
+
import{c as S,m as De,r as i,j as e,f as _e,h as z,a as V,Z as xe,C as pe,d as Le,u as Ie,D as Pe,n as ze,o as Ue,w as Be,p as We,b as Fe,B as re,g as ae,S as Oe,M as Ge,I as He,L as Qe,i as Ve,k as fe,Q as Xe,q as Ke,t as oe,e as Ze,l as Je}from"./styles-CqhvA02s.js";const Ye=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],et=S("arrow-right",Ye);const tt=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],nt=S("circle-question-mark",tt);const st=[["path",{d:"M12.67 19a2 2 0 0 0 1.416-.588l6.154-6.172a6 6 0 0 0-8.49-8.49L5.586 9.914A2 2 0 0 0 5 11.328V18a1 1 0 0 0 1 1z",key:"18jl4k"}],["path",{d:"M16 8 2 22",key:"vp34q"}],["path",{d:"M17.5 15H9",key:"1oz8nu"}]],rt=S("feather",st);const at=[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]],ot=S("github",at);const it=[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]],lt=S("languages",it);const ct=[["path",{d:"M21.3 15.3a2.4 2.4 0 0 1 0 3.4l-2.6 2.6a2.4 2.4 0 0 1-3.4 0L2.7 8.7a2.41 2.41 0 0 1 0-3.4l2.6-2.6a2.41 2.41 0 0 1 3.4 0Z",key:"icamh8"}],["path",{d:"m14.5 12.5 2-2",key:"inckbg"}],["path",{d:"m11.5 9.5 2-2",key:"fmmyf7"}],["path",{d:"m8.5 6.5 2-2",key:"vc6u1g"}],["path",{d:"m17.5 15.5 2-2",key:"wo5hmg"}]],dt=S("ruler",ct);const ut=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],H=S("search",ut);const mt=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],ht=S("x",mt);var xt=De();function pt({open:n,onClose:t,title:s,children:l}){return i.useEffect(()=>{if(!n)return;const c=d=>{d.key==="Escape"&&t()};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[n,t]),!n||typeof document>"u"?null:xt.createPortal(e.jsxs("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",children:[e.jsx("div",{className:"absolute inset-0 bg-black/50 backdrop-blur-sm",onClick:t,"aria-hidden":"true"}),e.jsxs("div",{role:"dialog","aria-modal":"true",className:"relative z-10 w-full max-w-lg rounded-xl border border-border bg-card p-5 text-card-foreground shadow-xl",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsx("h2",{className:"text-base font-semibold tracking-tight",children:s}),e.jsx("button",{type:"button",onClick:t,"aria-label":"Close",className:"rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",children:e.jsx(ht,{className:"h-4 w-4","aria-hidden":"true"})})]}),e.jsx("div",{className:"mt-3 space-y-3 text-sm leading-6 text-muted-foreground",children:l})]})]}),document.body)}const ie=[{icon:rt,value:"8M / 25M",label:"active params"},{icon:lt,value:"100+",label:"languages"},{icon:dt,value:"384-dim",label:"Matryoshka · 8k ctx"}],ft=z.a8m.modelSize.replace(/[~\s]|MB/g,""),gt=z.a25m.modelSize.replace(/[~\s]|MB/g,"");function le({icon:n,value:t,label:s}){return e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(n,{className:"h-4 w-4 shrink-0 text-primary","aria-hidden":"true"}),e.jsx("span",{className:"text-sm font-semibold text-foreground",children:t}),e.jsx("span",{className:"text-xs text-muted-foreground",children:s})]})}function bt(){const[n,t]=i.useState(!1);return e.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-2",children:[e.jsx(le,{...ie[0]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(_e,{className:"h-4 w-4 shrink-0 text-primary","aria-hidden":"true"}),e.jsxs("span",{className:"text-sm font-semibold text-foreground",children:[ft," / ",gt," MB"]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"model size"}),e.jsx("button",{type:"button",onClick:()=>t(!0),"aria-label":"Why is the model this size?",className:"rounded-full text-muted-foreground transition-colors hover:text-foreground",children:e.jsx(nt,{className:"h-4 w-4","aria-hidden":"true"})})]}),ie.slice(1).map(s=>e.jsx(le,{...s},s.label)),e.jsxs(pt,{open:n,onClose:()=>t(!1),title:"Why is the model a few hundred MB?",children:[e.jsxs("p",{children:["bekko is ",e.jsx("span",{className:"font-medium text-foreground",children:"multilingual"})," — it covers 100+ languages, which needs a large vocabulary. The bulk of the file is the"," ",e.jsx("span",{className:"font-medium text-foreground",children:"token-embedding table"}),": a static lookup that maps each of those many tokens to a vector."]}),e.jsxs("p",{children:["That table is ",e.jsx("span",{className:"font-medium text-foreground",children:"not computed"})," at inference time — it is just a lookup. The parameters that actually run on every token, the"," ",e.jsx("span",{className:"font-medium text-foreground",children:"active parameters"}),", are tiny: 7.7M for a8m and 25M for a25m. That is why inference stays fast and cheap, even on a CPU."]}),e.jsxs("p",{children:["So the trade-off is honest: bekko is small and fast to ",e.jsx("span",{className:"italic",children:"run"}),", but a moderately large file to ",e.jsx("span",{className:"italic",children:"download"})," because of those multilingual static embeddings. The browser artifact stores the table in row-wise int8 with fp32 scales."]}),e.jsxs("p",{className:"text-xs",children:["The model file (onnx/model.onnx) is ",e.jsx("span",{className:"font-medium text-foreground",children:"130 MB"})," for a8m and"," ",e.jsx("span",{className:"font-medium text-foreground",children:"199 MB"})," for a25m. With the ~34 MB multilingual tokenizer, the first load is about 164 / 233 MB — then everything is cached, so later runs don't re-download."]})]})]})}function yt(n,t){return ge(n,t),n.reduce((s,l,c)=>s+l*t[c],0)}function ce(n){return Math.sqrt(n.reduce((t,s)=>t+s*s,0))}function jt(n,t){ge(n,t);const s=ce(n)*ce(t);return s===0?0:yt(n,t)/s}function ge(n,t){if(n.length!==t.length)throw new Error(`Vector length mismatch: ${n.length} !== ${t.length}`)}function de(n,t,s){const l=t.map((m,y)=>({index:m.index,text:m.text,score:jt(n,s[y])})),c=l.map(m=>m.score),d=Math.min(...c),p=Math.max(...c)-d,E=[...l].sort((m,y)=>y.score-m.score),w=new Map(E.map((m,y)=>[m.index,y+1]));return l.map(m=>({...m,intensity:p>1e-9?(m.score-d)/p:1,rank:w.get(m.index)??0}))}function wt(n){const t=Math.max(0,Math.min(1,n));return{background:`rgba(22, 163, 74, ${(.06+t*.42).toFixed(3)})`,borderColor:`rgba(22, 163, 74, ${(.15+t*.5).toFixed(3)})`}}const X="";function kt({value:n,scores:t,syncKey:s,onChange:l,onStale:c,placeholder:d,className:u}){const p=i.useRef(null),E=i.useRef(null),w=i.useRef(!1);i.useEffect(()=>{const f=p.current;!f||E.current===s||(E.current=s,vt(f,n,t),w.current=!!(t&&t.size>0))},[s,n,t]);function m(){const f=p.current;f&&(w.current&&(Mt(f),w.current=!1,c()),l(St(f)))}const y=n.trim().length===0;return e.jsxs("div",{className:V("relative",u),children:[e.jsx("div",{ref:p,contentEditable:!0,suppressContentEditableWarning:!0,spellCheck:!1,role:"textbox","aria-multiline":"true","aria-label":"Document",onInput:m,className:"live-doc min-h-72 w-full overflow-auto rounded-md border border-input bg-card px-2 py-2 text-sm leading-6 text-foreground outline-none focus:border-ring focus:ring-2 focus:ring-ring/40"}),y&&d?e.jsx("span",{className:"pointer-events-none absolute left-4 top-3 text-sm text-muted-foreground",children:d}):null]})}function vt(n,t,s){n.replaceChildren(),t.split(`
|
| 2 |
+
`).forEach((c,d)=>{n.appendChild(Nt(c,s?.get(d)??null))})}function Nt(n,t){const s=document.createElement("div");if(s.className="doc-line",t&&n.trim()){const c=wt(t.intensity);s.dataset.scored="true",s.style.background=c.background,s.style.borderColor=c.borderColor;const d=document.createElement("span");d.className="doc-score",d.contentEditable="false",d.textContent=t.score.toFixed(3);const u=document.createElement("span");u.className="doc-rank",u.textContent=t.rank===1?"top":`#${t.rank}`,d.appendChild(u),s.appendChild(d)}const l=document.createElement("span");return l.className="doc-text",l.textContent=n.length>0?n:X,s.appendChild(l),s}function Mt(n){n.querySelectorAll(".doc-line[data-scored='true']").forEach(t=>{t.removeAttribute("data-scored"),t.style.background="",t.style.borderColor="",t.querySelectorAll(".doc-score").forEach(s=>s.remove())})}function St(n){const t=Array.from(n.querySelectorAll(".doc-line"));return t.length===0?n.innerText.replaceAll(X,""):t.map(s=>{const l=s.querySelector(".doc-text");return(l?l.textContent??"":Et(s)).replaceAll(X,"")}).join(`
|
| 3 |
+
`)}function Et(n){const t=n.cloneNode(!0);return t.querySelectorAll(".doc-score").forEach(s=>s.remove()),t.textContent??""}function P({name:n,value:t,options:s,onChange:l,className:c,fluid:d}){return e.jsx("div",{role:"radiogroup",className:V("gap-1 rounded-lg border border-border bg-muted p-1",d?"flex w-full sm:inline-flex sm:w-auto":"inline-flex",c),children:s.map(u=>{const p=u.value===t;return e.jsxs("label",{title:u.description,className:V("relative flex cursor-pointer select-none items-center justify-center gap-1.5 rounded-md px-3 py-2 text-sm font-medium transition-colors sm:py-1.5",d&&"flex-1 sm:flex-none",p?"bg-card text-foreground shadow-sm":"text-muted-foreground hover:text-foreground",u.disabled&&"cursor-not-allowed opacity-40 hover:text-muted-foreground"),children:[e.jsx("input",{type:"radio",name:n,value:u.value,checked:p,disabled:u.disabled,onChange:()=>l(u.value),className:"sr-only"}),u.label]},u.value)})})}function Ct({value:n,webgpuAvailable:t,webgpuReason:s,onChange:l}){const c=[{value:"webgpu",label:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(xe,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"WebGPU"]}),description:t?"GPU accelerated":s||"Not available in this browser",disabled:!t},{value:"wasm",label:e.jsxs("span",{className:"flex items-center gap-1.5",children:[e.jsx(pe,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"CPU"]}),description:"WASM on the CPU"}];return e.jsx(P,{name:"runtime",value:n,options:c,onChange:l,fluid:!0})}const q=[{id:"information-retrieval",label:"IR",hint:"Every passage is about search engines — but only a few actually answer how search can match meaning instead of keywords.",query:"How can search match meaning, not just keywords?",document:["Dense retrieval matches on meaning rather than keywords: it encodes the query and each passage into a vector, so texts about the same idea score as similar even when they share no words.","An embedding model is trained so a query and a relevant passage get similar vectors, letting search match on meaning instead of exact terms.","Semantic search helps with vocabulary mismatch — when the query and the document express the same idea using different words.","Classic keyword search with BM25 ranks pages by how often the query's exact words appear, so it can miss synonyms and paraphrases.","An inverted index maps each term to the documents that contain it, which is how traditional search engines look up matches quickly.","A web crawler revisits known pages on a schedule so the search index stays fresh as sites add and remove content.","To keep response times low, large search engines shard the index across many servers and answer each query in parallel.","Query autocomplete suggests popular completions as you type, and a spell checker quietly fixes obvious typos before the search runs.","Search quality is usually measured on a labeled set of queries with metrics such as precision, recall, and NDCG."].join(`
|
| 4 |
`)},{id:"sushi-multilingual",label:"Sushi",hint:"Multilingual — straight from the model card. An English query matches a description across four languages.",query:"What are the characteristics of sushi?",document:["A warm noodle soup served in broth with sliced toppings.","天ぷらは魚や野菜に衣をつけて揚げた料理です。","Une fine crêpe garnie de sucre, de beurre ou de fruits.","A Japanese dish made with vinegared rice, often shaped with seafood, vegetables, or egg."].join(`
|
| 5 |
`)},{id:"space",label:"Space",hint:"The query targets the passages about launch cost and rocket reuse, not the off-topic ones.",query:"Why have reusable rockets made spaceflight cheaper?",document:["SpaceX's Falcon 9 popularized reusable boosters that land upright and fly again, lowering the cost of reaching orbit.","NASA's Artemis program aims to return astronauts to the surface of the Moon and build a lasting presence there.","The stock market rose today, led by gains in semiconductor and technology shares.","Reusing rocket hardware across many flights spreads out manufacturing costs and shortens the time between launches.","A balanced breakfast often includes whole grains, fruit, and a good source of protein.","Launching hundreds of small satellites on a single rocket drives down the cost per spacecraft."].join(`
|
| 6 |
+
`)},{id:"empty",label:"Empty",hint:"Type your own query, then one passage per line below.",query:"",document:""}],qt=q[0].id,At="https://github.com/huggingface/transformers.js",ue=[384,256,128,64];function D(n,t){return t>=n.length?Array.from(n):n.slice(0,t)}const _=Le(),Q=q.find(n=>n.id===qt)??q[0];function Rt(n){const t=typeof window>"u"?"":window.location.search;return`${n}${t}`}function $t(){const{theme:n,toggle:t}=Ie(),[s,l]=i.useState(Pe),[c,d]=i.useState(ue[0]),[u,p]=i.useState(()=>ze(_)),[E,w]=i.useState(_.webgpu),[m,y]=i.useState(Q.id),[f,K]=i.useState(Q.query),[U,Z]=i.useState(Q.document),[g,j]=i.useState("idle"),[be,b]=i.useState("Run the model to score each line."),[B,W]=i.useState(null),[k,F]=i.useState(null),[ye,O]=i.useState(new Map),[je,G]=i.useState(0),C=i.useRef(null),A=i.useRef(null),$=i.useRef(null),h=z[s],v=Ue(u),J=`${h.modelId}:${h.revision}:${v.device}`,Y=g==="loading"||g==="running",we=_.secureContext?E?"":"No usable WebGPU adapter in this browser.":Be(_);i.useEffect(()=>{let r=!1;return We().then(o=>{r||o||(w(!1),p(a=>a==="webgpu"?"wasm":a))}),()=>{r=!0}},[]);function ee(r,o){W(null),F(null),$.current=null,j(r),b(o)}function ke(r){const o=$.current;if(!o)return;const a=Math.min(r,o.query.length),N=D(o.query,a),R=o.docs.map(x=>D(x,a)),T=de(N,o.lines,R);W(new Map(T.map(x=>[x.index,x]))),F(x=>x&&{...x,dimensions:a}),G(x=>x+1)}function ve(r){d(r),$.current&&ke(r)}function Ne(r){const o=q.find(a=>a.id===r);o&&(y(r),K(o.query),Z(o.document),ee("idle","Example loaded. Run the model to score each line."),G(a=>a+1))}async function Me(){if(C.current&&A.current===J)return C.current;j("loading"),O(new Map),b(`Loading ${h.label} on ${v.label}…`);const r=o=>O(a=>Ze(a,o));try{const o=await oe({model:h,device:v.device,progressCallback:r});return C.current=o,A.current=J,o}catch(o){if(v.device==="webgpu"){w(!1),p("wasm"),b("WebGPU was unavailable — retrying on CPU…"),O(new Map);try{const a=await oe({model:h,device:"wasm",progressCallback:r});return C.current=a,A.current=`${h.modelId}:${h.revision}:wasm`,a}catch(a){return C.current=null,A.current=null,j("error"),b(a instanceof Error?a.message:String(a)),null}}return C.current=null,A.current=null,j("error"),b(o instanceof Error?o.message:String(o)),null}}async function te(){if(!f.trim()){j("error"),b("Enter a query first.");return}const r=U.split(`
|
| 7 |
+
`).map((a,N)=>({index:N,text:a.trim()})).filter(a=>a.text.length>0);if(r.length===0){j("error"),b("Add at least one document line.");return}const o=await Me();if(o){j("running"),b("Embedding query and document lines…");try{const a=[Xe+f,...r.map(M=>Ke+M.text)],N=await o.embed(a),[R,...T]=N.rows;$.current={query:R,lines:r,docs:T};const x=Math.min(c,R.length),Re=D(R,x),$e=T.map(M=>D(M,x)),Te=de(Re,r,$e);W(new Map(Te.map(M=>[M.index,M]))),F({dimensions:x,tokenizeMs:N.tokenizeMs,inferMs:N.inferMs,tokenCount:N.tokenCount}),j("ready"),b(`Scored ${r.length} lines on ${v.label}.`),G(M=>M+1)}catch(a){j("error"),b(a instanceof Error?a.message:String(a))}}}const Se=Fe(ye),Ee=g==="error"?"amber":g==="ready"?"green":"neutral",ne=U.split(`
|
| 8 |
+
`).filter(r=>r.trim().length>0).length,Ce=q.map(r=>({value:r.id,label:r.label})),qe=ue.map(r=>({value:String(r),label:String(r),description:"Matryoshka: truncate the embedding to this length"})),Ae=Object.values(z).map(r=>({value:r.id,label:r.id,description:`${r.label} — ${r.tagline}`})),se=q.find(r=>r.id===m);return e.jsxs("div",{className:"min-h-screen bg-background text-foreground",children:[e.jsx("header",{className:"sticky top-0 z-10 border-b border-border bg-background/85 backdrop-blur",children:e.jsxs("div",{className:"mx-auto flex w-full max-w-5xl items-center justify-between gap-4 px-4 py-2.5 md:px-6",children:[e.jsxs("a",{href:h.hubUrl,target:"_blank",rel:"noreferrer",className:"group flex items-center gap-2.5",title:`Open ${h.modelId} on Hugging Face`,children:[e.jsx("span",{className:"flex h-7 w-7 items-center justify-center rounded-lg bg-primary text-primary-foreground",children:e.jsx(H,{className:"h-3.5 w-3.5","aria-hidden":"true"})}),e.jsxs("div",{className:"whitespace-nowrap text-sm font-semibold tracking-tight group-hover:text-primary",children:["bekko-embedding ",e.jsx("span",{className:"hidden font-normal text-muted-foreground sm:inline",children:"· browser demo"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(re,{tone:Ee,children:g}),e.jsx("a",{href:Rt("benchmark.html"),className:"hidden items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground sm:inline-flex",children:"benchmark"}),e.jsxs("a",{href:h.hubUrl,target:"_blank",rel:"noreferrer",className:"hidden items-center gap-1.5 rounded-md border border-border px-2.5 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:text-foreground sm:inline-flex",children:[h.label,e.jsx(et,{className:"h-3 w-3","aria-hidden":"true"})]}),e.jsx(ae,{variant:"ghost",size:"icon","aria-label":"Toggle theme",onClick:t,children:n==="dark"?e.jsx(Oe,{className:"h-4 w-4"}):e.jsx(Ge,{className:"h-4 w-4"})})]})]})}),e.jsxs("main",{className:"mx-auto flex w-full max-w-5xl flex-col gap-5 px-4 py-6 md:px-6",children:[e.jsxs("section",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("h1",{className:"text-2xl font-semibold tracking-tight",children:"Try bekko-embedding in your browser"}),e.jsxs("p",{className:"max-w-3xl text-sm leading-6 text-foreground",children:[e.jsx(me,{href:h.hubUrl,children:"bekko-embedding"})," is an ultra-small multilingual embedding model. It runs entirely in your browser with ",e.jsx(me,{href:At,children:"Transformers.js"})," — no server, and your text never leaves your device."]})]}),e.jsx(bt,{})]}),e.jsxs("div",{className:"flex flex-col gap-3 rounded-xl border border-border bg-card px-4 py-3 sm:flex-row sm:flex-wrap sm:items-end sm:gap-x-5 sm:gap-y-3",children:[e.jsx(L,{label:"Model",children:e.jsx(P,{name:"model",value:s,options:Ae,onChange:l,fluid:!0})}),e.jsx(L,{label:"Dims",children:e.jsx(P,{name:"dims",value:String(c),options:qe,onChange:r=>ve(Number(r)),fluid:!0})}),e.jsx(L,{label:"Runtime",children:e.jsx(Ct,{value:u,webgpuAvailable:E,webgpuReason:we,onChange:p})}),e.jsx(L,{label:"Example",children:e.jsx(P,{name:"example",value:m,options:Ce,onChange:Ne,fluid:!0})})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(H,{className:"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx(He,{id:"query","aria-label":"Query",value:f,onChange:r=>K(r.target.value),onKeyDown:r=>{r.key==="Enter"&&(r.preventDefault(),te())},placeholder:"What are you searching for?",className:"h-11 pl-9 text-base"})]}),e.jsxs(ae,{onClick:te,disabled:Y,className:"h-11 min-w-28",children:[Y?e.jsx(Qe,{className:"h-4 w-4 animate-spin","aria-hidden":"true"}):e.jsx(H,{className:"h-4 w-4","aria-hidden":"true"}),g==="loading"?"Loading…":g==="running"?"Scoring…":"Search"]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[se?`${se.hint} `:"","Encoded as entered, without a query prefix."]})]}),k||g==="loading"?e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsxs(re,{tone:v.device==="webgpu"?"green":"blue",children:[v.device==="webgpu"?e.jsx(xe,{className:"h-3 w-3"}):e.jsx(pe,{className:"h-3 w-3"}),v.label]}),k?e.jsxs(e.Fragment,{children:[e.jsx(I,{label:"Inference",value:he(k.inferMs)}),e.jsx(I,{label:"Tokenize",value:k.tokenizeMs===null?"—":he(k.tokenizeMs)}),e.jsx(I,{label:"Tokens",value:k.tokenCount===null?"—":String(k.tokenCount)}),e.jsx(I,{label:"Dim",value:String(k.dimensions)})]}):e.jsx("span",{className:"text-xs text-muted-foreground",children:"Loading model…"})]}):null,g==="loading"?e.jsx(Ve,{progress:Se,label:`Loading ${h.label}`}):null,e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-2",children:[e.jsxs(fe,{children:["Document ",B?"· scored in place":""]}),B?e.jsxs("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[e.jsx("span",{children:"weaker"}),e.jsx("div",{className:"h-1.5 w-24 rounded-full",style:{background:"linear-gradient(to right, rgba(22,163,74,0.10), rgba(22,163,74,0.85))"}}),e.jsx("span",{children:"stronger"})]}):null]}),e.jsx(kt,{value:U,scores:B,syncKey:`${m}:${je}`,onChange:Z,onStale:()=>ee("idle","Edited — run again to re-score."),placeholder:"One passage per line…"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[ne," line",ne===1?"":"s"," · each embedded without a document prefix and scored independently (original order kept)."]}),g==="error"?e.jsx("p",{className:"rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-sm text-amber-700 dark:text-amber-300",children:be}):null]}),e.jsx("div",{className:"border-t border-border pt-5",children:e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsx("span",{className:"font-medium text-foreground",children:h.label})," · ",h.activeParams," active params ·"," ",h.dimensions,"-dim · ",h.modelSize," model (cached after first run)"]})}),e.jsxs("footer",{className:"flex flex-col items-center gap-1.5 pt-2 text-xs text-muted-foreground",children:[e.jsx("p",{children:"Transformers.js · WebGPU when available, WASM CPU otherwise · MIT licensed weights."}),e.jsxs("a",{href:"https://github.com/hotchpotch",target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1.5 transition-colors hover:text-foreground",children:[e.jsx(ot,{className:"h-3.5 w-3.5","aria-hidden":"true"}),"@hotchpotch"]})]})]})]})}function me({href:n,children:t}){return e.jsx("a",{href:n,target:"_blank",rel:"noreferrer",className:"font-medium text-foreground underline decoration-border underline-offset-2 hover:text-primary",children:t})}function L({label:n,children:t}){return e.jsxs("div",{className:"w-full space-y-1 sm:w-auto",children:[e.jsx(fe,{children:n}),e.jsx("div",{children:t})]})}function I({label:n,value:t}){return e.jsxs("div",{className:"flex items-baseline gap-1.5 rounded-md border border-border bg-muted/40 px-2.5 py-1",children:[e.jsx("span",{className:"text-[10px] font-medium uppercase tracking-wide text-muted-foreground",children:n}),e.jsx("span",{className:"text-sm font-semibold tabular-nums text-foreground",children:t})]})}function he(n){return n<10?`${n.toFixed(1)} ms`:`${Math.round(n)} ms`}Je.createRoot(document.getElementById("root")).render(e.jsx(i.StrictMode,{children:e.jsx($t,{})}));
|
assets/styles-Bkf0-SEk.css
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--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-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--default-mono-font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}}@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-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-24{width:calc(var(--spacing) * 24)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-lg{max-width:var(--container-lg)}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-\[620px\]{min-width:620px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.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}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-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-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-border{border-color:var(--border)}.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-input{border-color:var(--input)}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-background,.bg-background\/85{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/85{background-color:color-mix(in oklab,var(--background) 85%,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-card{background-color:var(--card)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-muted,.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/60{background-color:color-mix(in oklab,var(--muted) 60%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-0{padding-inline:0}.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)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.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-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}.font-sans{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.whitespace-nowrap{white-space:nowrap}.text-amber-700{color:var(--color-amber-700)}.text-card-foreground{color:var(--card-foreground)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-sky-700{color:var(--color-sky-700)}.text-success{color:var(--success)}.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,)}.underline{text-decoration-line:underline}.decoration-border{-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border)}.underline-offset-2{text-underline-offset:2px}.opacity-40{opacity:.4}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-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)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;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))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.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\:text-primary:is(:where(.group):hover *){color:var(--primary)}}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media(hover:hover){.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring\/40:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-ring\/40:focus{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-end{align-items:flex-end}.sm\:gap-x-5{column-gap:calc(var(--spacing) * 5)}.sm\:gap-y-3{row-gap:calc(var(--spacing) * 3)}.sm\:justify-self-end{justify-self:flex-end}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}}@media(min-width:48rem){.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(min-width:64rem){.lg\:grid-cols-\[1\.1fr_0\.9fr\]{grid-template-columns:1.1fr .9fr}.lg\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.lg\:items-end{align-items:flex-end}}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-sky-300:where(.dark,.dark *){color:var(--color-sky-300)}}:root{--background:#f6f5f1;--foreground:#1f1d1a;--card:#fff;--card-foreground:#1f1d1a;--muted:#efece6;--muted-foreground:#6d685f;--border:#e4e0d8;--input:#dcd8cf;--ring:#d9a441;--primary:#b45309;--primary-foreground:#fff;--accent:#f3ede1;--accent-foreground:#7c4a0c;--success:#16a34a;--warning:#b45309;color-scheme:light}.dark{--background:#14130f;--foreground:#ece9e3;--card:#1d1b16;--card-foreground:#ece9e3;--muted:#272420;--muted-foreground:#a39c8f;--border:#33302a;--input:#3a362f;--ring:#e0a83f;--primary:#f59e0b;--primary-foreground:#1a1812;--accent:#2a251c;--accent-foreground:#f0c980;--success:#34d399;--warning:#f59e0b;color-scheme:dark}*{box-sizing:border-box}html{font-family:var(--font-sans)}body{background:var(--background);min-width:320px;min-height:100vh;color:var(--foreground);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,select,textarea,input{font:inherit}#root{min-height:100vh}.live-doc{white-space:pre-wrap;word-break:break-word}.live-doc .doc-line{border:1px solid #0000;border-radius:6px;min-height:1.6em;padding:3px 8px;transition:background-color .2s;position:relative}.live-doc .doc-line+.doc-line{margin-top:4px}.live-doc .doc-line[data-scored=true]{padding-left:4.5rem}.live-doc .doc-score{font-variant-numeric:tabular-nums;color:var(--foreground);-webkit-user-select:none;user-select:none;cursor:default;align-items:baseline;gap:3px;font-size:.78rem;font-weight:600;display:inline-flex;position:absolute;top:3px;left:8px}.live-doc .doc-rank{color:var(--muted-foreground);font-size:.6rem;font-weight:600}@keyframes fadeInUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-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-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
|
|
|
|
assets/{styles-CXecqZ76.js → styles-CqhvA02s.js}
RENAMED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/styles-vgcZZwOh.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--color-amber-300:oklch(87.9% .169 91.605);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-700:oklch(50% .134 242.749);--color-black:#000;--spacing:.25rem;--container-lg:32rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--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-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--default-mono-font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace}}@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-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing) * 80)}.min-h-28{min-height:calc(var(--spacing) * 28)}.min-h-72{min-height:calc(var(--spacing) * 72)}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-24{width:calc(var(--spacing) * 24)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-lg{max-width:var(--container-lg)}.min-w-28{min-width:calc(var(--spacing) * 28)}.min-w-\[620px\]{min-width:620px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.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}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-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-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-border{border-color:var(--border)}.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-input{border-color:var(--input)}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500) 30%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500) 10%,transparent)}}.bg-background,.bg-background\/85{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/85{background-color:color-mix(in oklab,var(--background) 85%,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-card{background-color:var(--card)}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500) 10%,transparent)}}.bg-muted,.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/60{background-color:color-mix(in oklab,var(--muted) 60%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500) 10%,transparent)}}.p-1{padding:var(--spacing)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-0{padding-inline:0}.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)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.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-5{padding-block:calc(var(--spacing) * 5)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}.font-sans{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.whitespace-nowrap{white-space:nowrap}.text-amber-700{color:var(--color-amber-700)}.text-card-foreground{color:var(--card-foreground)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-sky-700{color:var(--color-sky-700)}.text-success{color:var(--success)}.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,)}.underline{text-decoration-line:underline}.decoration-border{-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border)}.underline-offset-2{text-underline-offset:2px}.opacity-40{opacity:.4}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-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)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;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))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.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\:text-primary:is(:where(.group):hover *){color:var(--primary)}}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}@media(hover:hover){.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:opacity-90:hover{opacity:.9}}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring\/40:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-ring\/40:focus{--tw-ring-color:color-mix(in oklab, var(--ring) 40%, transparent)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:w-auto{width:auto}.sm\:flex-none{flex:none}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-end{align-items:flex-end}.sm\:gap-x-5{column-gap:calc(var(--spacing) * 5)}.sm\:gap-y-3{row-gap:calc(var(--spacing) * 3)}.sm\:py-1\.5{padding-block:calc(var(--spacing) * 1.5)}}@media(min-width:48rem){.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media(min-width:64rem){.lg\:grid-cols-\[1\.1fr_0\.9fr\]{grid-template-columns:1.1fr .9fr}.lg\:grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.lg\:items-end{align-items:flex-end}}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-sky-300:where(.dark,.dark *){color:var(--color-sky-300)}}:root{--background:#f6f5f1;--foreground:#1f1d1a;--card:#fff;--card-foreground:#1f1d1a;--muted:#efece6;--muted-foreground:#6d685f;--border:#e4e0d8;--input:#dcd8cf;--ring:#d9a441;--primary:#b45309;--primary-foreground:#fff;--accent:#f3ede1;--accent-foreground:#7c4a0c;--success:#16a34a;--warning:#b45309;color-scheme:light}.dark{--background:#14130f;--foreground:#ece9e3;--card:#1d1b16;--card-foreground:#ece9e3;--muted:#272420;--muted-foreground:#a39c8f;--border:#33302a;--input:#3a362f;--ring:#e0a83f;--primary:#f59e0b;--primary-foreground:#1a1812;--accent:#2a251c;--accent-foreground:#f0c980;--success:#34d399;--warning:#f59e0b;color-scheme:dark}*{box-sizing:border-box}html{font-family:var(--font-sans)}body{background:var(--background);min-width:320px;min-height:100vh;color:var(--foreground);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}button,select,textarea,input{font:inherit}#root{min-height:100vh}.live-doc{white-space:pre-wrap;word-break:break-word}.live-doc .doc-line{border:1px solid #0000;border-radius:6px;min-height:1.6em;padding:3px 8px;transition:background-color .2s;position:relative}.live-doc .doc-line+.doc-line{margin-top:4px}.live-doc .doc-line[data-scored=true]{padding-left:4.5rem}.live-doc .doc-score{font-variant-numeric:tabular-nums;color:var(--foreground);-webkit-user-select:none;user-select:none;cursor:default;align-items:baseline;gap:3px;font-size:.78rem;font-weight:600;display:inline-flex;position:absolute;top:3px;left:8px}.live-doc .doc-rank{color:var(--muted-foreground);font-size:.6rem;font-weight:600}@keyframes fadeInUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-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-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
benchmark.html
CHANGED
|
@@ -18,9 +18,9 @@
|
|
| 18 |
} catch (e) {}
|
| 19 |
})();
|
| 20 |
</script>
|
| 21 |
-
<script type="module" crossorigin src="/assets/benchmark-
|
| 22 |
-
<link rel="modulepreload" crossorigin href="/assets/styles-
|
| 23 |
-
<link rel="stylesheet" crossorigin href="/assets/styles-
|
| 24 |
</head>
|
| 25 |
<body>
|
| 26 |
<div id="root"></div>
|
|
|
|
| 18 |
} catch (e) {}
|
| 19 |
})();
|
| 20 |
</script>
|
| 21 |
+
<script type="module" crossorigin src="/assets/benchmark-DDIcBhXB.js"></script>
|
| 22 |
+
<link rel="modulepreload" crossorigin href="/assets/styles-CqhvA02s.js">
|
| 23 |
+
<link rel="stylesheet" crossorigin href="/assets/styles-vgcZZwOh.css">
|
| 24 |
</head>
|
| 25 |
<body>
|
| 26 |
<div id="root"></div>
|
index.html
CHANGED
|
@@ -18,9 +18,9 @@
|
|
| 18 |
} catch (e) {}
|
| 19 |
})();
|
| 20 |
</script>
|
| 21 |
-
<script type="module" crossorigin src="/assets/main-
|
| 22 |
-
<link rel="modulepreload" crossorigin href="/assets/styles-
|
| 23 |
-
<link rel="stylesheet" crossorigin href="/assets/styles-
|
| 24 |
</head>
|
| 25 |
<body>
|
| 26 |
<div id="root"></div>
|
|
|
|
| 18 |
} catch (e) {}
|
| 19 |
})();
|
| 20 |
</script>
|
| 21 |
+
<script type="module" crossorigin src="/assets/main-BTOsMrG3.js"></script>
|
| 22 |
+
<link rel="modulepreload" crossorigin href="/assets/styles-CqhvA02s.js">
|
| 23 |
+
<link rel="stylesheet" crossorigin href="/assets/styles-vgcZZwOh.css">
|
| 24 |
</head>
|
| 25 |
<body>
|
| 26 |
<div id="root"></div>
|