1<!DOCTYPE html><html lang="en" class="dark"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><style data-precedence="next" data-href="/_next/static/chunks/dba071b1790c78cf.css /_next/static/chunks/a45942dbe8084622.css">*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}:root{--background:0 0% 100%;--foreground:0 0% 3.9%;--card:0 0% 100%;--card-foreground:0 0% 3.9%;--popover:0 0% 100%;--popover-foreground:0 0% 3.9%;--primary:0 0% 9%;--primary-foreground:0 0% 98%;--secondary:0 0% 96.1%;--secondary-foreground:0 0% 9%;--muted:0 0% 96.1%;--muted-foreground:0 0% 45.1%;--accent:0 0% 96.1%;--accent-foreground:0 0% 9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:0 0% 89.8%;--input:0 0% 89.8%;--ring:0 0% 3.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius:.5rem}.dark{--background:0 0% 3.9%;--foreground:0 0% 98%;--card:0 0% 3.9%;--card-foreground:0 0% 98%;--popover:0 0% 3.9%;--popover-foreground:0 0% 98%;--primary:188 86% 53%;--primary-foreground:0 0% 9%;--secondary:0 0% 14.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--accent:0 0% 14.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:0 0% 14.9%;--input:0 0% 14.9%;--ring:0 0% 83.1%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}
1.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.left-0{left:0}.left-3{left:.75rem}.left-4{left:1rem}.left-\[-9999px\]{left:-9999px}.left-\[50\%\]{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-16{top:4rem}.top-2{top:.5rem}.top-4{top:1rem}.top-8{top:2rem}.top-\[1px\]{top:1px}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-auto{top:auto}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.order-1{order:1}.order-2{order:2}.order-3{order:3}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-ml-2{margin-left:-.5rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-8{margin-right:2rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[15px\]{height:15px}.h-\[18px\]{height:18px}.h-\[1px\]{height:1px}.h-\[300px\]{height:300px}.h-\[340px\]{height:340px}.h-\[360px\]{height:360px}.h-\[3px\]{height:3px}.h-\[600px\]{height:600px}.h-\[85vh\]{height:85vh}.h-\[var\(--radix-navigation-menu-viewport-height\)\]{height:var(--radix-navigation-menu-viewport-height)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-64{max-height:16rem}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(100dvh-4rem\)\]{max-height:calc(100dvh - 4rem)}.max-h-\[calc\(100vh-6rem\)\]{max-height:calc(100vh - 6rem)}.min-h-0{min-height:0}.min-h-\[100px\]{min-height:100px}.min-h-\[100svh\]{min-height:100svh}.min-h-\[160px\]{min-height:160px}.min-h-\[180px\]{min-height:180px}.min-h-\[7rem\]{min-height:7rem}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.6667%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[140px\]{width:140px}.w-\[15px\]{width:15px}.w-\[160px\]{width:160px}.w-\[180px\]{width:180px}.w-\[18px\]{width:18px}.w-\[1px\]{width:1px}.w-\[220px\]{width:220px}.w-\[240px\]{width:240px}.w-\[260px\]{width:260px}.w-\[280px\]{width:280px}.w-\[320px\]{width:320px}.w-\[3px\]{width:3px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[12rem\]{min-width:12rem}.min-w-\[160px\]{min-width:160px}.min-w-\[16rem\]{min-width:16rem}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[1220px\]{max-width:1220px}.max-w-\[14rem\]{max-width:14rem}.max-w-\[260px\]{max-width:260px}.max-w-\[7rem\]{max-width:7rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-\[2\]{flex:2}.shrink-0{flex-shrink:0}.grow{flex-grow:1}
1.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.resize-y{resize:vertical}.scroll-mt-20{scroll-margin-top:5rem}.scroll-mt-8{scroll-margin-top:2rem}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-flow-dense{grid-auto-flow:dense}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr)}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\[2px\]{gap:2px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-\[\#262626\]>:not([hidden])~:not([hidden]),.divide-neutral-800>
1:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(38 38 38/var(--tw-divide-opacity,1))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overscroll-contain{overscroll-behavior:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[\#262626\]{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity,1))}.border-\[\#374151\]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-amber-400\/35{border-color:#fbbf2459}.border-amber-500\/30{border-color:#f59e0b4d}.border-amber-500\/40{border-color:#f59e0b66}.border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity,1))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity,1))}.border-blue-500\/30{border-color:#3b82f64d}.border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity,1))}.border-border{border-color:hsl(var(--border))}.border-border\/40{border-color:hsl(var(--border)/.4)}.border-cyan-400\/35{border-color:#22d3ee59}.border-cyan-500\/30{border-color:#06b6d44d}.border-destructive\/50{border-color:hsl(var(--destructive)/.5)}.border-emerald-500\/30{border-color:#10b9814d}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity,1))}.border-green-400\/35{border-color:#4ade8059}.border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\/40{border-color:hsl(var(--muted-foreground)/.4)}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity,1))}.border-neutral-500\/30{border-color:#7373734d}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity,1))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity,1))}.border-neutral-800\/60{border-color:#26262699}.border-neutral-800\/70{border-color:#262626b3}.border-primary{border-color:hsl(var(--primary))}.border-primary\/30{border-color:hsl(var(--primary)/.3)}.border-primary\/35{border-color:hsl(var(--primary)/.35)}.border-primary\/40{border-color:hsl(var(--primary)/.4)}.border-primary\/50{border-color:hsl(var(--primary)/.5)}.border-primary\/60{border-color:hsl(var(--primary)/.6)}.border-purple-500\/30{border-color:#a855f74d}.border-red-400\/30{border-color:#f871714d}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-red-500\/30{border-color:#ef44444d}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-rose-500\/30{border-color:#f43f5e4d}.border-transparent{border-color:#0000}.border-violet-400\/35{border-color:#a78bfa59}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-white\/10{border-color:#ffffff1a}.border-white\/20{border-color:#fff3}.border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.border-l-transparent{border-left-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-\[\#0d1117\]{--tw-bg-opacity:1;background-color:rgb(13 17 23/var(--tw-bg-opacity,1))}.bg-\[\#111827\]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-\[\#fafafa\]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-400\/10{background-color:#fbbf241a}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-amber-500\/15{background-color:#f59e0b26}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-amber-900\/40{background-color:#78350f66}.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-500\/15{background-color:#3b82f626}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-500\/10{background-color:#06b6d41a}.bg-cyan-500\/15{background-color:#06b6d426}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive)/.1)}.bg-emerald-500\/15{background-color:#10b98126}.bg-emerald-900\/40{background-color:#064e3b66}.bg-emerald-950\/60{background-color:#022c2299}.bg-foreground{background-color:hsl(var(--foreground))}.bg-green-400\/10{background-color:#4ade801a}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.bg-green-900\/20{background-color:#14532d33}.bg-green-900\/30{background-color:#14532d4d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\/40{background-color:hsl(var(--muted)/.4)}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-neutral-500\/15{background-color:#73737326}.bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity,1))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.bg-neutral-800\/70{background-color:#262626b3}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.bg-neutral-900\/40{background-color:#17171766}.bg-neutral-900\/50{background-color:#17171780}.bg-neutral-900\/60{background-color:#17171799}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity,1))}.bg-neutral-950\/50{background-color:#0a0a0a80}.bg-neutral-950\/60{background-color:#0a0a0a99}.bg-neutral-950\/85{background-color:#0a0a0ad9}.bg-neutral-950\/90{background-color:#0a0a0ae6}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary)/.1)}.bg-primary\/15{background-color:hsl(var(--primary)/.15)}.bg-primary\/20{background-color:hsl(var(--primary)/.2)}.bg-primary\/5{background-color:hsl(var(--primary)/.05)}.bg-primary\/\[0\.06\]{background-color:hsl(var(--primary)/.06)}.bg-purple-500\/15{background-color:#a855f726}.bg-red-400\/10{background-color:#f871711a}.bg-red-500\/15{background-color:#ef444426}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-rose-500\/15{background-color:#f43f5e26}.bg-rose-950\/60{background-color:#4c051999}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/40{background-color:hsl(var(--secondary)/.4)}.bg-transparent{background-color:#0000}.bg-violet-400\/10{background-color:#a78bfa1a}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/15{background-color:#ffffff26}.bg-white\/\[\.04\]{background-color:#ffffff0a}.bg-yellow-900\/30{background-color:#713f124d}.bg-yellow-900\/50{background-color:#713f1280}.bg-\[url\(\'\/landing\/hero-convergence\.webp\'\)\]{background-image:url(/landing/hero-convergence.webp)}.bg-\[url\(\'\/landing\/hero-hexgrid\.webp\'\)\]{background-image:url(/landing/hero-hexgrid.webp)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-\[\#0c111b\]{--tw-gradient-from:#0c111b var(--tw-gradient-from-position);--tw-gradient-to:#0c111b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-\[\#0e1420\]{--tw-gradient-from:#0e1420 var(--tw-gradient-from-position);--tw-gradient-to:#0e142000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-\[\#161d29\]{--tw-gradient-from:#161d29 var(--tw-gradient-from-position);--tw-gradient-to:#161d2900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-background{--tw-gradient-from:hsl(var(--background))var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--background)/0)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-neutral-900{--tw-gradient-from:#171717 var(--tw-gradient-from-position);--tw-gradient-to:#17171700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary\/40{--tw-gradient-from:hsl(var(--primary)/.4)var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary)/0)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-40\%{--tw-gradient-from-position:40%}.via-background\/95{--tw-gradient-to:hsl(var(--background)/0)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--background)/.95)var(--tw-gradient-via-p
1osition),var(--tw-gradient-to)}.to-\[\#0a0a0a\]{--tw-gradient-to:#0a0a0a var(--tw-gradient-to-position)}.to-\[\#0a0e16\]{--tw-gradient-to:#0a0e16 var(--tw-gradient-to-position)}.to-\[\#0b0f18\]{--tw-gradient-to:#0b0f18 var(--tw-gradient-to-position)}.to-\[\#2b3444\]{--tw-gradient-to:#2b3444 var(--tw-gradient-to-position)}.to-neutral-950{--tw-gradient-to:#0a0a0a var(--tw-gradient-to-position)}.to-primary{--tw-gradient-to:hsl(var(--primary))var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.stroke-muted{stroke:hsl(var(--muted))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-28{padding-top:7rem;padding-bottom:7rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-24{padding-bottom:6rem}.pb-28{padding-bottom:7rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-28{padding-top:7rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!text-5xl{font-size:3rem!important;line-height:1!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-\[0\.9em\]{font-size:.9em}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[22px\]{font-size:22px}.text-\[30px\]{font-size:30px}.text-\[clamp\(1\.7rem\,3\.4vw\,2\.7rem\)\]{font-size:clamp(1.7rem,3.4vw,2.7rem)}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal)var(--tw-slashed-zero)var(--tw-numeric-figure)var(--tw-numeric-spacing)var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-6{line-height:1.5rem}.leading-8{line-height:2rem}.leading-\[1\.02\]{line-height:1.02}.leading-\[1\.14\]{line-height:1.14}.leading-\[1\.1\]{line-height:1.1}.leading-\[1\.22\]{line-height:1.22}.leading-\[1\.75\]{line-height:1.75}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[-0\.025em\]{letter-spacing:-.025em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-\[-0\.035em\]{letter-spacing:-.035em}.tracking-\[-0\.03em\]{letter-spacing:-.03em}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#171717\]{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.text-\[\#5b6675\]{--tw-text-opacity:1;color:rgb(91 102 117/var(--tw-text-opacity,1))}.text-\[\#8b93a1\]{--tw-text-opacity:1;color:rgb(139 147 161/var(--tw-text-opacity,1))}.text-\[\#8b93a1\]\/70{color:#8b93a1b3}.text-\[\#9ca3af\]{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-\[\#c7cdd6\]{--tw-text-opacity:1;color:rgb(199 205 214/var(--tw-text-opacity,1))}.text-\[\#e6ebf1\]{--tw-text-opacity:1;color:rgb(230 235 241/var(--tw-text-opacity,1))}.text-\[\#fafafa\]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}
1.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity,1))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/80{color:hsl(var(--foreground)/.8)}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/70{color:hsl(var(--muted-foreground)/.7)}.text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity,1))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity,1))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity,1))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity,1))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-\[hsl\(var\(--primary\)\)\],.accent-primary{accent-color:hsl(var(--primary))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;
1--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
1dow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-border{--tw-ring-color:hsl(var(--border))}.ring-cyan-500\/20{--tw-ring-color:#06b6d433}.ring-destructive\/20{--tw-ring-color:hsl(var(--destructive)/.2)}.ring-primary{--tw-ring-color:hsl(var(--primary))}.ring-primary\/20{--tw-ring-color:hsl(var(--primary)/.2)}.ring-white\/20{--tw-ring-color:#fff3}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.contrast-125{--tw-contrast:contrast(1.25);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.grayscale-\[\.2\]{--tw-grayscale:grayscale(.2);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.will-change-transform{will-change:transform}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-700{animation-duration:.7s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}.paused{animation-play-state:paused}.\[background\:radial-gradient\(60\%_54\%_at_50\%_46\%\,rgba\(10\,10\,10\,\.82\)\,rgba\(10\,10\,10\,\.42\)_76\%\,transparent_100\%\)\]{background:radial-gradient(60% 54% at 50% 46%,#0a0a0ad1,#0a0a0a6b 76%,#0000 100%)}.\[scrollbar-color\:\#404040_transparent\]{scrollbar-color:#404040 transparent}.\[scrollbar-width\:none\]{scrollbar-width:none}.\[scrollbar-width\:thin\]{scrollbar-width:thin}.fm-js .fm-reveal{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transform:translateY(18px)}.fm-js .fm-reveal.fm-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.fm-js .fm-reveal{opacity:1;transition:none;transform:none}}.marker\:content-none ::marker{--tw-content:none;content:var(--tw-content)}.marker\:content-none::marker{--tw-content:none;content:var(--tw-content)}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-neutral-400::placeholder{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.first\:border-t-0:first-child{border-top-width:0}.last\:mb-0:last-child{margin-bottom:0}.last\:border-0:last-child{border-width:0}.last\:border-b-0:last-child{border-bottom-width:0}.open\:border-neutral-700[open]{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.open\:bg-neutral-900[open]{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.open\:bg-neutral-900\/40[open]{background-color:#17171766}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.hover\:border-neutral-500:hover{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity,1))}.hover\:border-neutral-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity,1))}.hover\:border-neutral-700:hover{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.hover\:border-primary\/40:hover{border-color:hsl(var(--primary)/.4)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary)/.5)}.hover\:border-primary\/60:hover{border-color:hsl(var(--primary)/.6)}.hover\:border-white\/40:hover{border-color:#fff6}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent)/.5)}.hover\:bg-amber-600\/10:hover{background-color:#d977061a}
1.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\:bg-muted\/60:hover{background-color:hsl(var(--muted)/.6)}.hover\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.hover\:bg-neutral-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity,1))}.hover\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1))}.hover\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.hover\:bg-neutral-800\/30:hover{background-color:#2626264d}.hover\:bg-neutral-800\/40:hover{background-color:#26262666}.hover\:bg-neutral-800\/50:hover{background-color:#26262680}.hover\:bg-neutral-900\/50:hover{background-color:#17171780}.hover\:bg-neutral-900\/60:hover{background-color:#17171799}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-white\/90:hover{background-color:#ffffffe6}.hover\:bg-white\/\[\.015\]:hover{background-color:#ffffff04}.hover\:text-\[\#fafafa\]:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity,1))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:no-underline:hover{text-decoration-line:none}.hover\:opacity-100:hover{opacity:1}.hover\:ring-2:hover{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
1dow,0 0 #0000)}.hover\:ring-neutral-600:hover{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity,1))}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.focus\:border-primary:focus{border-color:hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-neutral-800:focus{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-red-300:focus{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.focus\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
1dow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-neutral-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity,1))}.focus\:ring-primary:focus{--tw-ring-color:hsl(var(--primary))}.focus\:ring-primary\/20:focus{--tw-ring-color:hsl(var(--primary)/.2)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-offset-neutral-950:focus{--tw-ring-offset-color:#0a0a0a}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-primary:focus-visible{outline-color:hsl(var(--primary))}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
1dow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-neutral-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(115 115 115/var(--tw-ring-opacity,1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:inline{display:inline}.group[open] .group-open\:hidden{display:none}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group[open] .group-open\:rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group[open] .group-open\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group[open] .group-open\:text-primary{color:hsl(var(--primary))}.group:hover .group-hover\:translate-x-1{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\:border-primary{border-color:hsl(var(--primary))}.group:hover .group-hover\:text-primary{color:hsl(var(--primary))}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:opacity-35{opacity:.35}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:hsl(var(--accent)/.5)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;
1--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[state\=closed\]\:duration-300[data-state=closed]{transition-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{transition-duration:.5s}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-],.data-\[state\=open\]\:animate-in[data-state=open],.data-\[state\=visible\]\:animate-in[data-state=visible]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-],.data-\[state\=closed\]\:animate-out[data-state=closed],.data-\[state\=hidden\]\:animate-out[data-state=hidden]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-],.data-\[state\=closed\]\:fade-out-0[data-state=closed],.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open],.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:13rem}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:-13rem}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:13rem}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:-13rem}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}.data-\[state\=closed\]\:duration-300[data-state=closed]{animation-duration:.3s}.data-\[state\=open\]\:duration-500[data-state=open]{animation-duration:.5s}.data-\[state\=open\]\:hover\:bg-accent:hover[data-state=open],.data-\[state\=open\]\:focus\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.group[data-state=open] .group-data-\[state\=open\]\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:bottom-auto{bottom:auto}.sm\:top-1\/2{top:50%}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:hidden{display:none}.sm\:h-9{height:2.25rem}.sm\:h-\[min\(700px\,86vh\)\]{height:min(700px,86vh)}.sm\:w-36{width:9rem}.sm\:w-40{width:10rem}.sm\:w-52{width:13rem}.sm\:w-64{width:16rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:shrink-0{flex-shrink:0}.sm\:-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[150px_1fr\]{grid-template-columns:150px 1fr}.sm\:grid-cols-\[max-content_1fr\]{grid-template-columns:max-content 1fr}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-10{gap:2.5rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\:pt-0\.5{padding-top:.125rem}.sm\:pt-1{padding-top:.25rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\:absolute{position:absolute}.md\:order-1{order:1}.md\:order-2{order:2}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-3{grid-column-start:3}.md\:mx-2{margin-left:.5rem;margin-right:.5rem}.md\:ml-auto{margin-left:auto}.md\:block{display:block}.md\:inline{display:inline}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-\[420px\]{height:420px}.md\:w-28{width:7rem}.md\:w-\[var\(--radix-navigation-menu-viewport-width\)\]{width:var(--radix-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:min-w-0{min-width:0}.md\:max-w-\[240px\]{max-width:240px}.md\:flex-1{flex:1}.md\:flex-none{flex:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1\.6fr\)_minmax\(0\,1\.2fr\)_10rem_10rem\]{grid-template-columns:minmax(0,1.6fr) minmax(0,1.2fr) 10rem 10rem}.md\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,3fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}
1.md\:justify-end{justify-content:flex-end}.md\:justify-between{justify-content:space-between}.md\:gap-4{gap:1rem}.md\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.md\:p-8{padding:2rem}.md\:px-7{padding-left:1.75rem;padding-right:1.75rem}.md\:py-40{padding-top:10rem;padding-bottom:10rem}.md\:py-48{padding-top:12rem;padding-bottom:12rem}.md\:pb-40{padding-bottom:10rem}.md\:pl-\[3\.65rem\]{padding-left:3.65rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-\[13px\]{font-size:13px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:row-span-2{grid-row:span 2/span 2}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:hidden{display:none}.lg\:w-56{width:14rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,5fr\)_minmax\(0\,6fr\)\]{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pl-10{padding-left:2.5rem}}@media (min-width:1280px){.xl\:block{display:block}.xl\:inline{display:inline}}.\[\&\:\:-moz-range-thumb\]\:pointer-events-auto::-moz-range-thumb{pointer-events:auto}.\[\&\:\:-moz-range-thumb\]\:h-4::-moz-range-thumb{height:1rem}.\[\&\:\:-moz-range-thumb\]\:w-4::-moz-range-thumb{width:1rem}.\[\&\:\:-moz-range-thumb\]\:cursor-pointer::-moz-range-thumb{cursor:pointer}.\[\&\:\:-moz-range-thumb\]\:rounded-full::-moz-range-thumb{border-radius:9999px}.\[\&\:\:-moz-range-thumb\]\:border-2::-moz-range-thumb{border-width:2px}.\[\&\:\:-moz-range-thumb\]\:border-blue-500::-moz-range-thumb{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.\[\&\:\:-moz-range-thumb\]\:bg-white::-moz-range-thumb{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded::-webkit-scrollbar-thumb{border-radius:.25rem}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-neutral-700::-webkit-scrollbar-thumb{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1))}.\[\&\:\:-webkit-scrollbar-track\]\:bg-transparent::-webkit-scrollbar-track{background-color:#0000}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\:\:-webkit-scrollbar\]\:h-1::-webkit-scrollbar{height:.25rem}.\[\&\:\:-webkit-slider-thumb\]\:pointer-events-auto::-webkit-slider-thumb{pointer-events:auto}.\[\&\:\:-webkit-slider-thumb\]\:h-4::-webkit-slider-thumb{height:1rem}.\[\&\:\:-webkit-slider-thumb\]\:w-4::-webkit-slider-thumb{width:1rem}.\[\&\:\:-webkit-slider-thumb\]\:cursor-pointer::-webkit-slider-thumb{cursor:pointer}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\:\:-webkit-slider-thumb\]\:rounded-full::-webkit-slider-thumb{border-radius:9999px}.\[\&\:\:-webkit-slider-thumb\]\:border-2::-webkit-slider-thumb{border-width:2px}.\[\&\:\:-webkit-slider-thumb\]\:border-blue-500::-webkit-slider-thumb{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.\[\&\:\:-webkit-slider-thumb\]\:bg-white::-webkit-slider-thumb{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.\[\&\:\:-webkit-slider-thumb\]\:shadow-md::-webkit-slider-thumb{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;
1--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-white>svg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.\[\&\>svg\~\*\]\:pl-0>svg~*{padding-left:0}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0}.\[\&_\.mdxeditor\]\:min-h-\[400px\] .mdxeditor{min-height:400px}.\[\&_\.mdxeditor\]\:bg-white .mdxeditor{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.\[\&_\.mdxeditor\]\:text-black .mdxeditor{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px} 2.impeccable-module__CfFcga__page{--primary:#fafafa;--on-primary:#171717;--ink:#fff;--text:#fafafa;--muted:#9ca3af;--muted-soft:#8b93a1;--canvas:#0a0a0a;--surface:#111827;--surface-raised:#1f2937;--surface-chip:#262626;--border:#262626;--border-strong:#374151;--cta:#22d3ee;--cta-hover:#67e8f9;--on-cta:#171717;--sans:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:"SFMono-Regular",ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;--maxw:1220px;background:var(--canvas);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;line-height:1.6;overflow-x:hidden}.impeccable-module__CfFcga__page *{box-sizing:border-box}.impeccable-module__CfFcga__page a{color:inherit;text-decoration:none}.impeccable-module__CfFcga__page ::selection{color:#0a0a0a;background:#fafafa}.impeccable-module__CfFcga__wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}.impeccable-module__CfFcga__mono{font-family:var(--mono)}.impeccable-module__CfFcga__page a:focus-visible,.impeccable-module__CfFcga__page button:focus-visible{outline-offset:2px;border-radius:6px;outline:2px solid #fafafa}.impeccable-module__CfFcga__nav{z-index:50;-webkit-backdrop-filter:saturate(140%)blur(10px);backdrop-filter:saturate(140%)blur(10px);border-bottom:1px solid var(--border);background:#0a0a0ab8;height:64px;transition:background .3s,border-color .3s;position:sticky;top:0}.impeccable-module__CfFcga__navScrolled{border-bottom-color:var(--border-strong);background:#080808eb}.impeccable-module__CfFcga__nav .impeccable-module__CfFcga__wrap{align-items:center;gap:28px;height:64px;display:flex}.impeccable-module__CfFcga__wordmark{letter-spacing:-.02em;color:var(--ink);align-items:center;gap:9px;font-size:18px;font-weight:700;display:flex}.impeccable-module__CfFcga__glyph{width:18px;height:20px;display:inline-block}.impeccable-module__CfFcga__navlinks{gap:26px;margin-left:8px;display:flex}.impeccable-module__CfFcga__navlinks a{color:var(--muted);font-size:15px;transition:color .18s}.impeccable-module__CfFcga__navlinks a:hover{color:var(--text)}.impeccable-module__CfFcga__navRight{align-items:center;gap:14px;margin-left:auto;display:flex}.impeccable-module__CfFcga__btn{font-family:var(--sans);cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:500;
2transition:transform .15s,background .18s,border-color .18s,color .18s;display:inline-flex}.impeccable-module__CfFcga__btn:active{transform:translateY(1px)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPrimary{background:var(--cta);color:var(--on-cta);height:40px;padding:0 20px;box-shadow:0 1px 3px #0006,0 1px 2px -1px #0000004d}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPrimary:hover{background:var(--cta-hover)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPill{background:var(--cta);height:34px;color:var(--on-cta);padding:0 16px}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPill:hover{background:var(--cta-hover)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnSecondary{color:var(--text);border-color:var(--border-strong);background:0 0;height:40px;padding:0 20px}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnSecondary:hover{background:#0f1115;border-color:#4b5563}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnGhost{color:var(--muted);background:0 0;height:40px;padding:0 14px}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnGhost:hover{color:var(--text)}.impeccable-module__CfFcga__btnLg{height:48px;padding:0 26px;font-size:15px}.impeccable-module__CfFcga__hero{border-bottom:1px solid var(--border);padding:84px 0 64px;position:relative;overflow:hidden}.impeccable-module__CfFcga__heroBg{z-index:0;opacity:.9;background:radial-gradient(120% 90% at 78% 8%,#3d6f9e1a,#0000 55%),url(/landing/hero-hexgrid.webp) 50% 40%/cover no-repeat;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 55%,#0000 100%);mask-image:linear-gradient(#000 55%,#0000 100%)}.impeccable-module__CfFcga__heroBg:after{content:"";background:linear-gradient(90deg,var(--canvas)22%,transparent 62%);position:absolute;inset:0}.impeccable-module__CfFcga__hero .impeccable-module__CfFcga__wrap{z-index:1;grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);align-items:center;gap:52px;display:grid;position:relative}.impeccable-module__CfFcga__eyebrow{font-family:var(--mono);letter-spacing:.06em;color:var(--muted);align-items:center;gap:10px;margin-bottom:22px;font-size:12.5px;display:inline-flex}.impeccable-module__CfFcga__eyebrow .impeccable-module__CfFcga__dot{background:var(--muted);border-radius:50%;outline:3px solid #9ca3af24;width:6px;height:6px}.impeccable-module__CfFcga__page h1{letter-spacing:-.03em;color:var(--ink);margin:0 0 20px;font-size:clamp(38px,5.2vw,60px);font-weight:700;line-height:1.04}.impeccable-module__CfFcga__page h1 .impeccable-module__CfFcga__em{color:var(--muted)}.impeccable-module__CfFcga__lede{color:var(--muted);max-width:38ch;margin:0 0 30px;font-size:20px;line-height:1.55}.impeccable-module__CfFcga__ctaRow{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.impeccable-module__CfFcga__reassure{font-family:var(--mono);color:var(--muted-soft);flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;font-size:12.5px;display:flex}.impeccable-module__CfFcga__reassure .impeccable-module__CfFcga__sep{opacity:.4}.impeccable-module__CfFcga__trust{border-top:1px solid var(--border);flex-wrap:wrap;gap:10px 22px;margin-top:34px;padding-top:22px;display:flex}.impeccable-module__CfFcga__trust span{font-family:var(--mono);color:var(--muted);align-items:center;gap:8px;font-size:12.5px;display:inline-flex}.impeccable-module__CfFcga__trust span:before{content:"";background:var(--muted-soft);border-radius:1px;width:5px;height:5px;transform:rotate(45deg)}.impeccable-module__CfFcga__console{border:1px solid var(--border-strong);background:linear-gradient(#0e1420,#0b0f18);border-radius:12px;overflow:hidden;box-shadow:0 24px 60px -30px #000000e6}.impeccable-module__CfFcga__consoleBar{border-bottom:1px solid var(--border);background:#0c111b;align-items:center;gap:8px;height:40px;padding:0 14px;display:flex}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__dot{background:#20262f;border-radius:50%;width:11px;height:11px}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__path{font-family:var(--mono);color:var(--muted-soft);white-space:nowrap;text-overflow:ellipsis;margin-left:10px;font-size:12px;overflow:hidden}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__live{font-family:var(--mono);color:var(--muted);align-items:center;gap:7px;margin-left:auto;font-size:11px;display:flex}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__live b{background:var(--text);border-radius:50%;outline:3px solid #fafafa1a;width:6px;height:6px;display:inline-block}.impeccable-module__CfFcga__code{font-family:var(--mono);color:#c7cdd6;white-space:pre;margin:0;padding:18px 18px 6px;font-size:13px;line-height:1.75;overflow-x:auto}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__k{color:#9aa4b2}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__s{color:#e6ebf1}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__c{color:#5b6675}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__hl{color:#fafafa;background:#3d6f9e29;border-radius:3px;padding:0 3px;transition:background .3s}.impeccable-module__CfFcga__copyable{cursor:pointer;font:inherit;color:inherit;background:0 0;border:0;border-radius:3px;padding:0 2px;transition:background .18s}.impeccable-module__CfFcga__copyable:hover{background:#ffffff14}.impeccable-module__CfFcga__copied{background:#ffffff24}.impeccable-module__CfFcga__tabs{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:6px 16px 0;display:flex}.impeccable-module__CfFcga__tab{font-family:var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;padding:7px 10px;font-size:11.5px;transition:color .18s,background .18s}.impeccable-module__CfFcga__tab[aria-selected=true]{color:var(--ink);border-color:var(--border);background:#0c111b}.impeccable-module__CfFcga__response{border-top:1px solid var(--border);background:#0c111b;min-height:132px;padding:16px 18px}
2.impeccable-module__CfFcga__respMeta{font-family:var(--mono);color:var(--muted-soft);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;font-size:11.5px;display:flex}.impeccable-module__CfFcga__respMeta .impeccable-module__CfFcga__rank{color:var(--ink);margin-left:auto;font-weight:700}.impeccable-module__CfFcga__respBody{font-family:var(--mono);color:#dfe4ea;min-height:44px;font-size:12.5px;line-height:1.7}.impeccable-module__CfFcga__cursor{vertical-align:-2px;background:#fafafa;width:7px;height:15px;margin-left:1px;animation:1s step-end infinite impeccable-module__CfFcga__blink;display:inline-block}@keyframes impeccable-module__CfFcga__blink{50%{opacity:0}}.impeccable-module__CfFcga__band{border-bottom:1px solid var(--border);padding:88px 0;position:relative}.impeccable-module__CfFcga__bandHead{max-width:720px;margin-bottom:44px}.impeccable-module__CfFcga__page h2{letter-spacing:-.025em;color:var(--ink);margin:0 0 14px;font-size:clamp(27px,3.4vw,34px);font-weight:700;line-height:1.15}.impeccable-module__CfFcga__bandHead p{color:var(--muted);max-width:60ch;margin:0;font-size:18px}.impeccable-module__CfFcga__prob{grid-template-columns:1.1fr .9fr;align-items:start;gap:48px;display:grid}.impeccable-module__CfFcga__prob h2{max-width:18ch}.impeccable-module__CfFcga__probBig{color:var(--muted);margin:0;font-size:19px;line-height:1.6}.impeccable-module__CfFcga__painlist{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.impeccable-module__CfFcga__painlist li{border-top:1px solid var(--border);align-items:flex-start;gap:16px;padding:18px 0;display:flex}.impeccable-module__CfFcga__painlist li:last-child{border-bottom:1px solid var(--border)}.impeccable-module__CfFcga__painlist .impeccable-module__CfFcga__n{font-family:var(--mono);color:var(--muted-soft);min-width:26px;padding-top:3px;font-size:12px}.impeccable-module__CfFcga__painlist .impeccable-module__CfFcga__t{color:var(--text);font-size:15.5px;line-height:1.55}.impeccable-module__CfFcga__steps{border:1px solid var(--border);border-radius:12px;grid-template-columns:repeat(3,1fr);gap:0;display:grid;overflow:hidden}.impeccable-module__CfFcga__step{border-right:1px solid var(--border);padding:32px 28px;position:relative}.impeccable-module__CfFcga__step:last-child{border-right:none}.impeccable-module__CfFcga__step .impeccable-module__CfFcga__badge{background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:22px;display:flex}.impeccable-module__CfFcga__step .impeccable-module__CfFcga__badge svg{width:24px;height:24px;stroke:var(--text);fill:none;stroke-width:1.6px}.impeccable-module__CfFcga__step .impeccable-module__CfFcga__sn{font-family:var(--mono);color:var(--muted-soft);font-size:12px;position:absolute;top:26px;right:28px}.impeccable-module__CfFcga__step h3{color:var(--ink);margin:0 0 8px;font-size:18px;font-weight:600}.impeccable-module__CfFcga__step p{color:var(--muted);margin:0;font-size:15px;line-height:1.55}.impeccable-module__CfFcga__feat{grid-template-columns:1.4fr 1fr;grid-auto-rows:auto;gap:16px;display:grid}.impeccable-module__CfFcga__card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:26px;transition:border-color .2s,transform .2s}.impeccable-module__CfFcga__card:hover{border-color:var(--border-strong)}.impeccable-module__CfFcga__card .impeccable-module__CfFcga__ic{width:26px;height:26px;stroke:var(--text);fill:none;stroke-width:1.5px;margin-bottom:16px}.impeccable-module__CfFcga__card h3{color:var(--ink);margin:0 0 8px;font-size:18px;font-weight:600}.impeccable-module__CfFcga__card p{color:var(--muted);margin:0;font-size:15px;line-height:1.58}.impeccable-module__CfFcga__cardWide{flex-direction:column;grid-column:1;display:flex}.impeccable-module__CfFcga__cardTall{grid-area:1/2/span 2}.impeccable-module__CfFcga__usagebars{align-items:flex-end;gap:7px;height:88px;margin-top:22px;display:flex}.impeccable-module__CfFcga__usagebars i{border-top:1px solid var(--border-strong);background:linear-gradient(#2b3444,#161d29);border-radius:3px 3px 0 0;flex:1;display:block}.impeccable-module__CfFcga__catmini{border-top:1px solid var(--border);flex-direction:column;gap:12px;margin-top:20px;padding-top:14px;display:flex}.impeccable-module__CfFcga__catmini .impeccable-module__CfFcga__r{font-family:var(--mono);color:var(--muted);align-items:center;gap:12px;font-size:12px;display:flex}.impeccable-module__CfFcga__catmini .impeccable-module__CfFcga__r .impeccable-module__CfFcga__id{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.impeccable-module__CfFcga__catmini .impeccable-module__CfFcga__r .impeccable-module__CfFcga__rk{color:var(--ink);font-weight:700;font-family:var(--sans);margin-left:auto;font-size:16px}.impeccable-module__CfFcga__cat{border:1px solid var(--border);background:linear-gradient(#0c111b,#0a0e16);border-radius:12px;overflow:hidden}.impeccable-module__CfFcga__catTop{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;display:flex}.impeccable-module__CfFcga__search{background:var(--surface-raised);border:1px solid var(--border-strong);
2min-width:200px;height:38px;color:var(--muted-soft);border-radius:8px;flex:1;align-items:center;gap:9px;padding:0 12px;font-size:13px;display:flex}.impeccable-module__CfFcga__search:focus-within{border-color:#4b5563}.impeccable-module__CfFcga__search svg{width:15px;height:15px;stroke:var(--muted-soft);fill:none;stroke-width:1.8px;flex:none}.impeccable-module__CfFcga__searchInput{min-width:0;height:100%;color:var(--text);font-family:var(--sans);background:0 0;border:0;outline:none;flex:1;font-size:13px}.impeccable-module__CfFcga__searchInput::placeholder{color:var(--muted-soft)}.impeccable-module__CfFcga__searchInput::-webkit-search-cancel-button{filter:grayscale()opacity(.6)}.impeccable-module__CfFcga__filters{flex-wrap:wrap;gap:7px;display:flex}.impeccable-module__CfFcga__chip{font-family:var(--mono);color:var(--muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;padding:6px 11px;font-size:11.5px;transition:color .18s,border-color .18s,background .18s}.impeccable-module__CfFcga__chip:hover{color:var(--text);border-color:var(--border-strong)}.impeccable-module__CfFcga__chip[aria-pressed=true]{color:var(--ink);border-color:var(--border-strong);background:var(--surface-chip)}.impeccable-module__CfFcga__crow{border-top:1px solid var(--border);grid-template-columns:1fr auto;align-items:center;gap:16px;padding:20px 18px;transition:background .18s;display:grid}.impeccable-module__CfFcga__crow:first-child{border-top:none}.impeccable-module__CfFcga__crow:hover{background:#ffffff04}.impeccable-module__CfFcga__crow[hidden]{display:none}.impeccable-module__CfFcga__cmain{min-width:0}.impeccable-module__CfFcga__cname{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.impeccable-module__CfFcga__cname b{color:var(--ink);font-size:16px;font-weight:600}.impeccable-module__CfFcga__cname .impeccable-module__CfFcga__id{font-family:var(--mono);color:var(--muted);font-size:12.5px}.impeccable-module__CfFcga__copy{cursor:pointer;width:22px;height:22px;color:var(--muted-soft);background:0 0;border:0;border-radius:5px;place-items:center;padding:0;display:inline-grid}.impeccable-module__CfFcga__copy svg{stroke:currentColor;fill:none;stroke-width:1.6px;width:13px;height:13px}.impeccable-module__CfFcga__copy:hover{color:var(--text)}.impeccable-module__CfFcga__copyDone{color:#7fca9f;font-size:12px;line-height:1}.impeccable-module__CfFcga__cmeta{font-family:var(--mono);color:var(--muted-soft);flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12px;display:flex}.impeccable-module__CfFcga__cmeta .impeccable-module__CfFcga__price{color:var(--muted)}.impeccable-module__CfFcga__crank{text-align:right;flex-direction:column;align-items:flex-end;gap:2px;display:flex}.impeccable-module__CfFcga__crank .impeccable-module__CfFcga__lbl{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted-soft);font-size:10.5px}.impeccable-module__CfFcga__crank .impeccable-module__CfFcga__num{letter-spacing:-.03em;color:var(--ink);font-size:30px;font-weight:700;line-height:1}.impeccable-module__CfFcga__crank .impeccable-module__CfFcga__unranked{color:var(--muted);font-size:15px;font-weight:600;line-height:1.4}.impeccable-module__CfFcga__catFoot{border-top:1px solid var(--border);font-family:var(--mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:15px 18px;font-size:12.5px;display:flex}.impeccable-module__CfFcga__catFoot a{color:var(--text);border-bottom:1px solid var(--border-strong);padding-bottom:2px}.impeccable-module__CfFcga__catEmpty{border-top:1px solid var(--border);text-align:center;color:var(--muted);padding:34px 18px;font-size:14px;display:none}.impeccable-module__CfFcga__catEmptyShow{display:block}.impeccable-module__CfFcga__diff{border:1px solid var(--border);background:#0c111b;border-radius:12px;grid-template-columns:1fr;gap:0;max-width:760px;margin-top:40px;display:grid;overflow:hidden}.impeccable-module__CfFcga__diffline{font-family:var(--mono);border-top:1px solid var(--border);align-items:center;gap:14px;padding:11px 18px;font-size:13px;display:flex}.impeccable-module__CfFcga__diffline:first-child{border-top:none}.impeccable-module__CfFcga__diffRem{background:#78282824}.impeccable-module__CfFcga__diffRem .impeccable-module__CfFcga__mk{color:#c98b8b}.impeccable-module__CfFcga__diffAdd{background:#285a4629}.impeccable-module__CfFcga__diffAdd .impeccable-module__CfFcga__mk{color:#7fca9f}.impeccable-module__CfFcga__diffline .impeccable-module__CfFcga__mk{width:14px;color:var(--muted-soft)}.impeccable-module__CfFcga__diffline .impeccable-module__CfFcga__txt{color:#dfe4ea;white-space:pre;overflow-x:auto}.impeccable-module__CfFcga__diffNote{border-top:1px solid var(--border);color:var(--muted);padding:14px 18px;font-size:14px}.impeccable-module__CfFcga__conv{border-bottom:1px solid var(--border);align-items:center;min-height:520px;
2display:flex;position:relative;overflow:hidden}.impeccable-module__CfFcga__convBg{z-index:0;background:url(/landing/hero-convergence.webp) 100%/cover no-repeat;position:absolute;inset:0}.impeccable-module__CfFcga__convScrim{z-index:1;background:linear-gradient(90deg,var(--canvas)30%,#0a0a0ab8 55%,#0a0a0a26 100%);position:absolute;inset:0}.impeccable-module__CfFcga__convScrim:after{content:"";background:linear-gradient(180deg,var(--canvas),transparent 22%,transparent 78%,var(--canvas));position:absolute;inset:0}.impeccable-module__CfFcga__conv .impeccable-module__CfFcga__wrap{z-index:2;padding:80px 24px;position:relative}.impeccable-module__CfFcga__convInner{max-width:560px}.impeccable-module__CfFcga__conv h2{margin-bottom:16px;font-size:clamp(28px,3.8vw,40px)}.impeccable-module__CfFcga__conv p{color:var(--muted);max-width:48ch;margin:0 0 30px;font-size:19px}.impeccable-module__CfFcga__convStats{border-top:1px solid var(--border-strong);flex-wrap:wrap;gap:28px;padding-top:26px;display:flex}.impeccable-module__CfFcga__convStats .impeccable-module__CfFcga__st{flex-direction:column;gap:5px;display:flex}.impeccable-module__CfFcga__convStats .impeccable-module__CfFcga__st .impeccable-module__CfFcga__v{letter-spacing:-.03em;color:var(--ink);font-size:30px;font-weight:700;line-height:1}.impeccable-module__CfFcga__convStats .impeccable-module__CfFcga__st .impeccable-module__CfFcga__l{font-family:var(--mono);letter-spacing:.03em;color:var(--muted-soft);font-size:11.5px}.impeccable-module__CfFcga__faq{max-width:820px}.impeccable-module__CfFcga__qa{border-top:1px solid var(--border)}.impeccable-module__CfFcga__qa:last-child{border-bottom:1px solid var(--border)}.impeccable-module__CfFcga__qa summary{cursor:pointer;color:var(--ink);align-items:center;gap:16px;padding:22px 0;font-size:17px;font-weight:600;list-style:none;display:flex}.impeccable-module__CfFcga__qa summary::-webkit-details-marker{display:none}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus{flex:none;width:20px;height:20px;margin-left:auto;transition:transform .25s;position:relative}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:before,.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:after{content:"";background:var(--muted);border-radius:2px;transition:opacity .2s;position:absolute}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:before{height:1.5px;top:9px;left:2px;right:2px}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:after{width:1.5px;top:2px;bottom:2px;left:9px}.impeccable-module__CfFcga__qa[open] summary .impeccable-module__CfFcga__plus{transform:rotate(45deg)}.impeccable-module__CfFcga__qa .impeccable-module__CfFcga__ans{color:var(--muted);max-width:68ch;padding:0 0 24px;font-size:15.5px;line-height:1.65}.impeccable-module__CfFcga__qa .impeccable-module__CfFcga__ans code{font-family:var(--mono);color:var(--text);background:var(--surface-chip);border-radius:4px;padding:2px 6px;font-size:13px}.impeccable-module__CfFcga__final{text-align:center;border-bottom:1px solid var(--border);padding:110px 0;position:relative;overflow:hidden}.impeccable-module__CfFcga__finalBg{z-index:0;opacity:.55;background:url(/landing/section-texture.webp) 50%/cover no-repeat;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 120%,#000,#0000 78%);mask-image:radial-gradient(70% 120%,#000,#0000 78%)}.impeccable-module__CfFcga__final .impeccable-module__CfFcga__wrap{z-index:1;position:relative}.impeccable-module__CfFcga__finalMark{opacity:.9;width:44px;height:48px;margin-bottom:26px;display:inline-flex}.impeccable-module__CfFcga__finalMark svg{width:44px;height:48px}.impeccable-module__CfFcga__final h2{letter-spacing:-.035em;margin-bottom:16px;font-size:clamp(32px,4.8vw,52px)}.impeccable-module__CfFcga__final p{color:var(--muted);max-width:56ch;margin:0 auto 34px;font-size:19px}.impeccable-module__CfFcga__finalCta{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.impeccable-module__CfFcga__finalCta .impeccable-module__CfFcga__btnPrimary{height:52px;padding:0 32px;font-size:16px}.impeccable-module__CfFcga__final .impeccable-module__CfFcga__reassure{justify-content:center;margin-top:22px}.impeccable-module__CfFcga__footer{padding:56px 0 40px}.impeccable-module__CfFcga__foot{grid-template-columns:2fr 1fr 1fr 1fr;gap:32px;display:grid}.impeccable-module__CfFcga__foot .impeccable-module__CfFcga__brand .impeccable-module__CfFcga__wordmark{margin-bottom:12px}.impeccable-module__CfFcga__foot .impeccable-module__CfFcga__brand p{color:var(--muted-soft);max-width:36ch;margin:0;font-size:14px}.impeccable-module__CfFcga__foot h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted-soft);margin:0 0 16px;font-size:12px;font-weight:600}.impeccable-module__CfFcga__foot ul{flex-direction:column;gap:11px;margin:0;padding:0;list-style:none;display:flex}.impeccable-module__CfFcga__foot ul a{color:var(--muted);font-size:14px;transition:color .18s}.impeccable-module__CfFcga__foot ul a:hover{color:var(--text)}.impeccable-module__CfFcga__footBot{border-top:1px solid var(--border);color:var(--muted-soft);font-size:13px;font-family:var(--mono);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:44px;padding-top:22px;display:flex}@media (max-width:960px){.impeccable-module__CfFcga__hero .impeccable-module__CfFcga__wrap{grid-template-columns:minmax(0,1fr);gap:40px}.impeccable-module__CfFcga__heroBg:after{background:linear-gradient(180deg,transparent,var(--canvas))}.impeccable-module__CfFcga__prob{grid-template-columns:1fr;gap:28px}.impeccable-module__CfFcga__feat{grid-template-columns:1fr}.impeccable-module__CfFcga__cardTall{grid-area:auto/1}.impeccable-module__CfFcga__foot{grid-template-columns:1fr 1fr}}@media (max-width:640px){.impeccable-module__CfFcga__navlinks{display:none}.impeccable-module__CfFcga__band{padding:64px 0}.impeccable-module__CfFcga__steps{grid-template-columns:1fr}.impeccable-module__CfFcga__step{border-right:none;border-bottom:1px solid var(--border)}.impeccable-module__CfFcga__step:last-child{border-bottom:none}.impeccable-module__CfFcga__lede{max-width:none}.impeccable-module__CfFcga__foot{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.impeccable-module__CfFcga__page *{transition:none!important;animation:none!important}}.impeccable-module__CfFcga__pageJa h1{font-size:clamp(30px,3.9vw,44px);line-height:1.25}.impeccable-module__CfFcga__pageJa .impeccable-module__CfFcga__final h2{font-size:clamp(26px,3.6vw,40px);line-height:1.3}.impeccable-module__CfFcga__pageJa .impeccable-module__CfFcga__lede{max-width:30em}.impeccable-module__CfFcga__consoleGroup{flex-direction:column;gap:12px;display:flex}.impeccable-module__CfFcga__modes{gap:6px;display:flex}
2.impeccable-module__CfFcga__page .impeccable-module__CfFcga__modeBtn{font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:5px 14px;font-size:12px;transition:color .18s,border-color .18s,background .18s}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__modeBtn:hover{color:var(--text);border-color:var(--border-strong)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__modeBtn[aria-pressed=true]{color:#7fe7f7;background:#22d3ee1a;border-color:#22d3ee73}.impeccable-module__CfFcga__respMedia{-o-object-fit:cover;object-fit:cover;background:#0c111b;border-radius:8px;width:100%;height:216px;display:block}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__wrapStr{white-space:pre-wrap;word-break:break-all}.impeccable-module__CfFcga__mcp{grid-template-columns:1.2fr 1fr;align-items:center;gap:32px;display:grid}.impeccable-module__CfFcga__mcpTerm{border:1px solid var(--border-strong);color:var(--text);background:#0c111b;border-radius:12px;margin:0;padding:20px 22px;font-size:13px;line-height:1.75;overflow-x:auto}.impeccable-module__CfFcga__mcpPrompt{color:var(--muted-soft)}.impeccable-module__CfFcga__mcpRight{flex-direction:column;gap:18px;display:flex}.impeccable-module__CfFcga__mcpTools{flex-wrap:wrap;gap:8px;display:flex}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__mcpChip{border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:5px 12px;font-size:12.5px}.impeccable-module__CfFcga__page a.impeccable-module__CfFcga__mcpDocs{color:var(--text);font-size:14.5px}.impeccable-module__CfFcga__page a.impeccable-module__CfFcga__mcpDocs:hover{color:#7fe7f7}@media (max-width:860px){.impeccable-module__CfFcga__mcp{grid-template-columns:1fr}}.impeccable-module__CfFcga__consoleGroup .impeccable-module__CfFcga__console{flex-direction:column;height:480px;display:flex}.impeccable-module__CfFcga__consoleGroup .impeccable-module__CfFcga__response{flex-direction:column;flex:1;min-height:0;display:flex}.impeccable-module__CfFcga__consoleGroup .impeccable-module__CfFcga__respMedia{flex:1;height:auto;min-height:0}.impeccable-module__CfFcga__providerBand{border-bottom:1px solid var(--border);padding:30px 0}.impeccable-module__CfFcga__marqueeClip{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.impeccable-module__CfFcga__marqueeTrack{white-space:nowrap;align-items:center;width:max-content;animation:110s linear infinite impeccable-module__CfFcga__fmMarquee;display:flex}.impeccable-module__CfFcga__marqueeGroup{align-items:center;gap:60px;padding-right:60px;display:flex}.impeccable-module__CfFcga__marqueeItem{letter-spacing:-.01em;color:#8b93a1d9;align-items:center;gap:12px;font-size:21px;font-weight:600;display:inline-flex}.impeccable-module__CfFcga__marqueeItem img{opacity:.85}@keyframes impeccable-module__CfFcga__fmMarquee{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.impeccable-module__CfFcga__marqueeTrack{animation:none}}.impeccable-module__CfFcga__procureGrid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid} 3.home-module__aUD9Yq__heroHex{z-index:0;opacity:.9;position:absolute;inset:0}@media (min-width:768px){.home-module__aUD9Yq__heroHex{background:url(/landing/hex-background.webp) 50%/cover no-repeat}}.home-module__aUD9Yq__heroHex:after{content:"";background:radial-gradient(120% 90% at 78% 8%,#3d6f9e14,#0000 55%),linear-gradient(90deg,#0a0a0a 20%,#0a0a0a73 55%,#0000 75%);position:absolute;inset:0}.home-module__aUD9Yq__creditNote{color:#22d3ee}.home-module__aUD9Yq__procureGrid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.home-module__aUD9Yq__procureCtas{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex} 4</style><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/321b0eb47aa7e579.js"/>
4<script src="/_next/static/chunks/961311cbebbffb6d.js" async=""></script>
4<script src="/_next/static/chunks/e8a6be15c7b42a45.js" async=""></script>
4<script src="/_next/static/chunks/turbopack-95ba484f7edc0951.js" async=""></script>
4<script src="/_next/static/chunks/d96012bcfc98706a.js" async=""></script>
4<script src="/_next/static/chunks/73e3194f06db260e.js" async=""></script>
4<script src="/_next/static/chunks/ff163d9ea14dbaed.js" async=""></script>
4<script src="/_next/static/chunks/3073ed4e47d4d993.js" async=""></script>
4<script src="/_next/static/chunks/cc09a8d062505ab7.js" async=""></script>
4<script src="/_next/static/chunks/1afae2015e72b0fb.js" async=""></script>
4<script src="/_next/static/chunks/e22bdaa8ea66d624.js" async=""></script>
4<script src="/_next/static/chunks/bbc4a1395ae84ef7.js" async=""></script>
4<script src="/_next/static/chunks/270cac6e3a68789d.js" async=""></script>
4<script src="/_next/static/chunks/1dc42f21e0b2a78b.js" async=""></script>
4<meta name="next-size-adjust" content=""/><title>AI API Gateway â Text, Image & Video | FastMetal</title><meta name="description" content="OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL."/><link rel="canonical" href="https://fastmetal.ai"/><link rel="alternate" hrefLang="ja" href="https://fastmetal.jp"/><link rel="alternate" hrefLang="en" href="https://fastmetal.ai"/><link rel="alternate" hrefLang="x-default" href="https://fastmetal.jp"/><meta property="og:title" content="AI API Gateway â Text, Image & Video | FastMetal"/><meta property="og:description" content="OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL."/><meta property="og:site_name" content="FastMetal"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://fastmetal.ai/landing/og-preview.jpg"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="AI API Gateway â Text, Image & Video | FastMetal"/><meta name="twitter:description" content="OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL."/><meta name="twitter:image" content="https://fastmetal.ai/landing/og-preview.jpg"/>
4<script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script>
4</head><body class="min-h-screen"><div hidden=""><!--$--><!--/$--></div>
4<script type="application/ld+json">[{"@context":"https://schema.org","@type":"Organization","@id":"https://fastmetal.ai/#organization","name":"FastMetal","alternateName":["ãã¡ã¹ãã¡ã¿ã«"],"legalName":"æ ªå¼ä¼ç¤¾å½é調éæ
å ±","description":"FastMetal is a Japan-based AI gateway providing access to many LLMs and generative AI models through one OpenAI-compatible API, billed per token in Japanese yen or US dollars from a prepaid balance, with qualified invoices on yen purchases. Operated by æ ªå¼ä¼ç¤¾å½é調éæ
å ± (PSI-Japan).","url":"https://fastmetal.ai","logo":{"@type":"ImageObject","url":"https://fastmetal.ai/logo.svg"},"address":{"@type":"PostalAddress","streetAddress":"ä¸çªçº7-1 ææ¥ä¸çªçºãã©ã¶208","addressLocality":"å代ç°åº","addressRegion":"æ±äº¬é½","postalCode":"102-0075","addressCountry":"JP"},"taxID":"T5010001015990","sameAs":["https://fastmetal.jp","https://x.com/fastmetal_jp","https://psi.jp/about-jp"]},{"@context":"https://schema.org","@type":"WebSite","@id":"https://fastmetal.ai/#website","name":"FastMetal","alternateName":["ãã¡ã¹ãã¡ã¿ã«"],"url":"https://fastmetal.ai","inLanguage":"en","publisher":{"@id":"https://fastmetal.ai/#organization"}}]</script>
4<script>document.documentElement.classList.add('fm-js');setTimeout(function(){var e=document.querySelectorAll('.fm-reveal');for(var i=0;i<e.length;i++)e[i].classList.add('fm-in')},2500)</script>
4<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"Is it really OpenAI-compatible?","acceptedAnswer":{"@type":"Answer","text":"Yes. Any OpenAI SDK or HTTP client works â set base_url to https://api.fastmetal.ai/v1 and use your FastMetal key. Chat completions, streaming, tool calls, and structured outputs are supported."}},{"@type":"Question","name":"What does it cost?","acceptedAnswer":{"@type":"Answer","text":"You pay per token at each modelâs published rate, drawn from prepaid credits. No subscription, no seat fees, no minimum spend."}},{"@type":"Question","name":"Am I locked in?","acceptedAnswer":{"@type":"Answer","text":"No. Itâs the standard OpenAI request shape â point your client back at any provider whenever you want. Your code doesnât depend on us."}},{"@type":"Question","name":"How long does integration take?","acceptedAnswer":{"@type":"Answer","text":"About a minute. Change one base URL, add your key, and your existing calls route through FastMetal."}},{"@type":"Question","name":"Which providers are covered?","acceptedA
4nswer":{"@type":"Answer","text":"25 providers and counting â 94+ models in one catalog, growing as new models ship."}},{"@type":"Question","name":"How does it compare with OpenRouter or going direct?","acceptedAnswer":{"@type":"Answer","text":"We keep honest comparison pages, including the cases where the other option fits better. vs OpenRouter · vs Anthropic direct · All comparisons"}}]}</script>
4<div class="min-h-screen flex flex-col"><header class="sticky top-0 z-40 border-b border-neutral-800 bg-neutral-950/85 backdrop-blur-md"><div class="max-w-[1220px] mx-auto px-6"><div class="flex justify-between items-center h-16"><div class="flex items-center gap-8"><a class="flex items-center gap-2.5 text-xl font-bold text-white" href="/"><svg width="18" height="20" viewBox="0 0 18 20" aria-hidden="true"><path d="M9 1 16.8 5.5V14.5L9 19 1.2 14.5V5.5Z" fill="none" stroke="#fafafa" stroke-width="1.3"></path><path d="M9 6 12.5 8V12L9 14 5.5 12V8Z" fill="#fafafa" opacity=".9"></path></svg>FastMetal</a><nav class="hidden md:flex items-center gap-6"><a class="text-neutral-400 hover:text-white transition-colors" href="/pricing">Pricing</a><a class="text-neutral-400 hover:text-white transition-colors" href="/docs/api/overview">Docs</a><a class="text-neutral-400 hover:text-white transition-colors" href="/models">Models</a><a class="text-neutral-400 hover:text-white transition-colors" href="/comparison">Comparison</a><a class="text-neutral-400 hover:text-white transition-colors" href="/apps">Apps</a><a class="text-neutral-400 hover:text-white transition-colors" href="/blog">Blog</a></nav></div><div class="flex items-center gap-2 sm:gap-4"><div class="hidden lg:block"><div role="radiogroup" aria-label="Price currency" title="Show prices in Japanese yen or US dollars. Display only: you are always billed in your account's currency." class="inline-flex items-center rounded-lg border border-neutral-700 bg-neutral-800 p-0.5 text-xs "><button type="button" role="radio" aria-checked="false" class="whitespace-nowrap rounded-md px-2 py-1 font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-neutral-500 text-neutral-400 hover:text-white">Â¥ JPY</button><button type="button" role="radio" aria-checked="true" class="whitespace-nowrap rounded-md px-2 py-1 font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-neutral-500 bg-neutral-600 text-white">$ USD</button></div></div><div class="hidden sm:block"><select class="bg-neutral-800 border border-neutral-700 rounded-lg px-3 py-1.5 text-sm focus:outline-none focus:border-blue-500 cursor-pointer" aria-label="Language"><option value="ja">æ¥æ¬èª</option><option value="en" selected="">English</option></select></div><div class="hidden md:block h-9 w-9 bg-neutral-800 animate-pulse rounded-full"></div><button type="button" aria-label="Menu" aria-expanded="false" aria-controls="mobile-nav" class="md:hidden inline-flex items-center justify-center rounded-md p-2 text-neutral-400 hover:text-white hover:bg-neutral-800 transition-colors focus:outline-none focus:ring-2 focus:ring-neutral-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-5 w-5" aria-hidden="true"><path d="M4 5h16"></path><path d="M4 12h16"></path><path d="M4 19h16"></path></svg></button></div></div></div></header><main class="flex-1 impeccable-module__CfFcga__page"><header class="impeccable-module__CfFcga__hero"><div class="home-module__aUD9Yq__heroHex" aria-hidden="true"></div><div class="impeccable-module__CfFcga__wrap"><div><h1>Text. Images. Video. Decisions.<br/>One gateway<br/><span class="impeccable-module__CfFcga__em">for generative AI.</span></h1><p class="impeccable-module__CfFcga__lede">FastMetal is an OpenAI-compatible gateway to 94+ generative AI models. Point your existing code at one base URL, pay per token, and stop maintaining a different SDK for every provider.</p><div class="impeccable-module__CfFcga__ctaRow"><a class="impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnPrimary impeccable-module__CfFcga__btnLg" href="/auth/signin?mode=register">Create a free account</a><a class="impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnSecondary impeccable-module__CfFcga__btnLg" href="/pricing">View Pricing</a></div><div class="impeccable-module__CfFcga__reassure"><span>Pay as you go</span><span class="impeccable-module__CfFcga__sep">·</span><span>no subscription</span><span class="impeccable-module__CfFcga__sep">·</span><span>no lock-in</span></div><div class="impeccable-module__CfFcga__trust"><span>94+ models</span><span>OpenAI-compatible</span><span>Pay-per-token</span><span>25 providers</span><span>Card or bank transfer</span><span>Qualified invoices</span></div></div><div class="impeccable-module__CfFcga__consoleGroup"><div class="impeccable-module__CfFcga__modes"><button type="button" class="impeccable-module__CfFcga__modeBtn" aria-pressed="true">Video</button><button type="button" class="impeccable-module__CfFcga__modeBtn" aria-pressed="false">Image</button><button type="button" class="impeccable-module__CfFcga__modeBtn" aria-pressed="false">Decision</button><button type="button" class="impeccable-module__CfFcga__modeBtn" aria-pressed="false">Text</button></div><div class="impeccable-module__CfFcga__console"><div class="impeccable-module__CfFcga__consoleBar"><span class="impeccable-module__CfFcga__dot"></span><span class="impeccable-module__CfFcga__dot"></span><span class="impeccable-module__CfFcga__dot"></span><span class="impeccable-module__CfFcga__path">POST api.fastmetal.ai/v1/videos/create</span><span class="impeccable-module__CfFcga__live"><b></b>200 OK</span></div><pre class="impeccable-module__CfFcga__code">resp = requests.post( 5 <span class="impeccable-module__CfFcga__s">"https://api.fastmetal.ai/v1/videos/create"</span>, 6 json={<span class="impeccable-module__CfFcga__s">"model"</span>:<span class="impeccable-module__CfFcga__hl">"<!-- -->bytedance/seedance-2.0-fast<!-- -->"</span>,
7 <span class="impeccable-module__CfFcga__s">"prompt"</span>:<span class="impeccable-module__CfFcga__s impeccable-module__CfFcga__wrapStr">"<!-- -->éç½ãçºå ããæº¶ããéå±ãå è§å½¢ã®é³åã«æ³¨ãããç«è±ãã¹ãã¼ã¢ã¼ã·ã§ã³ã§èãæ£ãâ¦<!-- -->"</span>}, 8)</pre><div class="impeccable-module__CfFcga__response"><div class="impeccable-module__CfFcga__respMeta"><span>Seedance 2.0 Fast · 8s 720p · $1.60 per video · real output</span></div><img class="impeccable-module__CfFcga__respMedia" src="/landing/gen-metal-pour-poster.webp" alt="éç½ãçºå ããæº¶ããéå±ãå è§å½¢ã®é³åã«æ³¨ãããç«è±ãã¹ãã¼ã¢ã¼ã·ã§ã³ã§èãæ£ãâ¦" loading="lazy"/></div></div></div></div></header><section class="impeccable-module__CfFcga__providerBand" aria-hidden="true"><div class="impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__marqueeClip"><div class="impeccable-module__CfFcga__marqueeTrack"><div class="impeccable-module__CfFcga__marqueeGroup"><span class="impeccable-module__CfFcga__marqueeItem"><img alt="openai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fopenai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fopenai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fopenai.png&w=64&q=75"/>GPT-6.1 Sol</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="anthropic logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fanthropic.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fanthropic.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fanthropic.png&w=64&q=75"/>Claude Opus 5.5</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="x-ai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fx-ai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fx-ai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fx-ai.png&w=64&q=75"/>Grok 4.7</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="z-ai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fz-ai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fz-ai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fz-ai.png&w=64&q=75"/>GLM 5.3 FlashX</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="google logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" src="/logos/google.svg"/>Gemini 3.8 Flash</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="meta logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fmeta-llama.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fmeta-llama.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fmeta-llama.png&w=64&q=75"/>Muse Spark 1.3</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="qwen logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fqwen.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fqwen.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fqwen.png&w=64&q=75"/>Qwen3.8 Max</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="moonshotai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fmoonshotai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fmoonshotai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fmoonshotai.png&w=64&q=75"/>Kimi K3</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="tencent logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Ftencent.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Ftencent.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Ftencent.png&w=64&q=75"/>Hy3</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="deepseek logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fdeepseek.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fdeepseek.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fdeepseek.png&w=64&q=75"/>DeepSeek V4 Pro</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="minimax logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fminimax.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fminimax.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fminimax.png&w=64&q=75"/>MiniMax M2.7</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="nvidia logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fnvidia.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fnvidia.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fnvidia.png&w=64&q=75"/>
8Nemotron 3 Super</span></div><div class="impeccable-module__CfFcga__marqueeGroup"><span class="impeccable-module__CfFcga__marqueeItem"><img alt="openai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fopenai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fopenai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fopenai.png&w=64&q=75"/>GPT-6.1 Sol</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="anthropic logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fanthropic.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fanthropic.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fanthropic.png&w=64&q=75"/>Claude Opus 5.5</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="x-ai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fx-ai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fx-ai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fx-ai.png&w=64&q=75"/>Grok 4.7</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="z-ai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fz-ai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fz-ai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fz-ai.png&w=64&q=75"/>GLM 5.3 FlashX</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="google logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" src="/logos/google.svg"/>Gemini 3.8 Flash</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="meta logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fmeta-llama.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fmeta-llama.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fmeta-llama.png&w=64&q=75"/>Muse Spark 1.3</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="qwen logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fqwen.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fqwen.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fqwen.png&w=64&q=75"/>Qwen3.8 Max</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="moonshotai logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fmoonshotai.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fmoonshotai.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fmoonshotai.png&w=64&q=75"/>Kimi K3</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="tencent logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Ftencent.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Ftencent.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Ftencent.png&w=64&q=75"/>Hy3</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="deepseek logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fdeepseek.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fdeepseek.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fdeepseek.png&w=64&q=75"/>DeepSeek V4 Pro</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="minimax logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fminimax.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fminimax.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fminimax.png&w=64&q=75"/>MiniMax M2.7</span><span class="impeccable-module__CfFcga__marqueeItem"><img alt="nvidia logo" loading="lazy" width="26" height="26" decoding="async" data-nimg="1" class="rounded" style="color:transparent" srcSet="/_next/image?url=%2Flogos%2Fnvidia.png&w=32&q=75 1x, /_next/image?url=%2Flogos%2Fnvidia.png&w=64&q=75 2x" src="/_next/image?url=%2Flogos%2Fnvidia.png&w=64&q=75"/>
8Nemotron 3 Super</span></div></div></div></div></section><section class="impeccable-module__CfFcga__band" id="problem"><div class="fm-reveal impeccable-module__CfFcga__wrap impeccable-module__CfFcga__prob"><div><h2>Multi-provider AI is death by a thousand integrations.</h2><p class="impeccable-module__CfFcga__probBig">Every provider ships its own SDK, its own auth, its own rate limits, its own billing, and its own idea of what a âmessageâ is. Your agentâs reliability becomes a function of how many dashboards you can babysit at 3 a.m.</p></div><ul class="impeccable-module__CfFcga__painlist"><li><span class="impeccable-module__CfFcga__n impeccable-module__CfFcga__mono">01</span><span class="impeccable-module__CfFcga__t">N providers = N API keys, N SDKs, and N monthly charges to reconcile.</span></li><li><span class="impeccable-module__CfFcga__n impeccable-module__CfFcga__mono">02</span><span class="impeccable-module__CfFcga__t">A better model ships weekly â swapping it means a code change, not a config change.</span></li><li><span class="impeccable-module__CfFcga__n impeccable-module__CfFcga__mono">03</span><span class="impeccable-module__CfFcga__t">One provider has an outage and your app goes down with it.</span></li></ul></div></section><section class="impeccable-module__CfFcga__conv"><div class="impeccable-module__CfFcga__convBg" aria-hidden="true"></div><div class="impeccable-module__CfFcga__convScrim" aria-hidden="true"></div><div class="impeccable-module__CfFcga__wrap"><div class="fm-reveal impeccable-module__CfFcga__convInner"><h2>From many providers to one endpoint.</h2><p>25 providers and 94+ models funnel through a single OpenAI-compatible URL. You integrate once and route to any of them by name.</p><div class="impeccable-module__CfFcga__convStats"><div class="impeccable-module__CfFcga__st"><span class="impeccable-module__CfFcga__v">94</span><span class="impeccable-module__CfFcga__l">models</span></div><div class="impeccable-module__CfFcga__st"><span class="impeccable-module__CfFcga__v">25</span><span class="impeccable-module__CfFcga__l">providers</span></div><div class="impeccable-module__CfFcga__st"><span class="impeccable-module__CfFcga__v">1</span><span class="impeccable-module__CfFcga__l">endpoint</span></div><div class="impeccable-module__CfFcga__st"><span class="impeccable-module__CfFcga__v">1</span><span class="impeccable-module__CfFcga__l">payment</span></div></div></div></div></section><section class="impeccable-module__CfFcga__band" id="how"><div class="fm-reveal impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__bandHead"><h2>Three steps to your first call</h2><p>From zero to a live request in about a minute. Keep the SDK you already use.</p></div><div class="impeccable-module__CfFcga__steps"><div class="impeccable-module__CfFcga__step"><span class="impeccable-module__CfFcga__sn impeccable-module__CfFcga__mono">01</span><span class="impeccable-module__CfFcga__badge"><svg viewBox="0 0 24 24"><rect x="2.5" y="5.5" width="19" height="13" rx="2.5"></rect><path d="M2.5 9.5h19"></path></svg></span><h3>Create an account</h3><p>Sign up and get an API key in under a minute.</p></div><div class="impeccable-module__CfFcga__step"><span class="impeccable-module__CfFcga__sn impeccable-module__CfFcga__mono">02</span><span class="impeccable-module__CfFcga__badge"><svg viewBox="0 0 24 24"><path d="M13 2 4 13h7l-1 9 9-11h-7z"></path></svg></span><h3>Add credit by card or bank transfer</h3><p>Card credits instantly. Bank transfer issues a qualified invoice, then credits on payment.</p></div><div class="impeccable-module__CfFcga__step"><span class="impeccable-module__CfFcga__sn impeccable-module__CfFcga__mono">03</span><span class="impeccable-module__CfFcga__badge"><svg viewBox="0 0 24 24"><path d="M8 7 3 12l5 5"></path><path d="M16 7l5 5-5 5"></path><path d="M13.5 5l-3 14"></path></svg></span><h3>Change one base URL</h3><p>Point your OpenAI client at FastMetal. Keep the rest of your code.</p></div></div></div></section><section class="impeccable-module__CfFcga__band" id="features"><div class="fm-reveal impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__bandHead"><h2>Everything you need, nothing you donât</h2><p>A gateway, not a framework. It gets out of the way of the code you already wrote.</p></div><div class="impeccable-module__CfFcga__feat"><div class="impeccable-module__CfFcga__card impeccable-module__CfFcga__cardWide">
8<svg class="impeccable-module__CfFcga__ic" viewBox="0 0 24 24"><path d="M3 7h18M3 12h18M3 17h18" stroke-linecap="round"></path><circle cx="7" cy="7" r="1.4" fill="#fafafa" stroke="none"></circle><circle cx="12" cy="12" r="1.4" fill="#fafafa" stroke="none"></circle><circle cx="17" cy="17" r="1.4" fill="#fafafa" stroke="none"></circle></svg><h3>Pay-per-token billing</h3><p>Prepaid credits metered to the token. No seats, no subscriptions, no minimums â you pay for exactly what your app calls.</p><div class="impeccable-module__CfFcga__usagebars" aria-hidden="true"><i style="height:38%"></i><i style="height:52%"></i><i style="height:44%"></i><i style="height:67%"></i><i style="height:58%"></i><i style="height:78%"></i><i style="height:71%"></i><i style="height:90%"></i><i style="height:64%"></i><i style="height:83%"></i><i style="height:97%"></i><i style="height:74%"></i></div></div><div class="impeccable-module__CfFcga__card impeccable-module__CfFcga__cardTall"><svg class="impeccable-module__CfFcga__ic" viewBox="0 0 24 24"><path d="M4 6h16v12H4z"></path><path d="M4 10h16"></path><path d="M8 14h4"></path></svg><h3>94+ models, one catalog</h3><p>Every major provider behind a single key. Compare context length and arena rank before you commit.</p><div class="impeccable-module__CfFcga__catmini"><div class="impeccable-module__CfFcga__r"><span class="impeccable-module__CfFcga__id">anthropic/claude-opus-4.6</span><span class="impeccable-module__CfFcga__rk">#7</span></div><div class="impeccable-module__CfFcga__r"><span class="impeccable-module__CfFcga__id">meta/muse-spark-1.1</span><span class="impeccable-module__CfFcga__rk">#12</span></div><div class="impeccable-module__CfFcga__r"><span class="impeccable-module__CfFcga__id">google/gemini-3.1-pro-preview</span><span class="impeccable-module__CfFcga__rk">#18</span></div><div class="impeccable-module__CfFcga__r"><span class="impeccable-module__CfFcga__id">qwen/qwen3.8-max</span><span class="impeccable-module__CfFcga__rk">#23</span></div></div></div><div class="impeccable-module__CfFcga__card"><svg class="impeccable-module__CfFcga__ic" viewBox="0 0 24 24"><path d="M8 7 3 12l5 5"></path><path d="M16 7l5 5-5 5"></path><path d="M13.5 4.5l-3 15"></path></svg><h3>OpenAI-compatible API</h3><p>Drop-in with the OpenAI SDK you already use. Chat completions, streaming, tools, and structured outputs â change the base URL, keep the rest.</p></div></div></div></section><section class="impeccable-module__CfFcga__band" id="procure"><div class="fm-reveal impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__bandHead"><h2>The questions procurement asks, answered up front.</h2><p>Using an overseas API directly means a dollar card statement and no invoice, which is where Japanese accounting stops the purchase. FastMetal is run by a Japanese company to Japanese billing requirements.</p></div><div class="home-module__aUD9Yq__procureGrid"><div class="impeccable-module__CfFcga__card"><h3>Billed in yen or US dollars</h3><p>Each account is funded and charged in one currency â Japanese yen or US dollars â so its monthly figure never drifts with the exchange rate.</p></div><div class="impeccable-module__CfFcga__card"><h3>Qualified invoices (ã¤ã³ãã¤ã¹)</h3><p>The operating company is a registered qualified-invoice issuer (T5010001015990); every credit purchase comes with one.</p></div><div class="impeccable-module__CfFcga__card"><h3>Bank transfer (prepaid)</h3><p>Pay by card or by bank transfer. Choosing transfer issues a qualified invoice immediately, carrying a bank account dedicated to your organisation; credit is added automatically once the transfer is confirmed, with nothing to notify us about.</p></div><div class="impeccable-module__CfFcga__card"><h3>Prepaid, so spend is capped</h3><p>The balance you buy is the ceiling. A bill above it cannot happen.</p></div><div class="impeccable-module__CfFcga__card"><h3>Models that run inside Japan</h3><p>Models whose id starts with japan- run inference inside Japan. For work whose data cannot leave the country, they are one model name away on the same key.</p></div></div><div class="home-module__aUD9Yq__procureCtas"><a class="impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnSecondary" href="/enterprise">See the enterprise page</a><a class="impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnSecondary" href="/pricing">See Japan-hosted models and prices</a></div></div></section><section class="impeccable-module__CfFcga__band" id="mcp"><div class="fm-reveal impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__bandHead"><h2>Works from your agent, too</h2><p>FastMetal ships a built-in MCP server. Add it to Claude Code, Codex, Cursor, or any MCP client with one command, and your agent gets inference, image, and video generation as tools â billed to the same prepaid key.</p></div><div class="impeccable-module__CfFcga__mcp"><pre class="impeccable-module__CfFcga__mcpTerm impeccable-module__CfFcga__mono"><span class="impeccable-module__CfFcga__mcpPrompt">$ </span>
8claude mcp add --transport http fastmetal \ 9 https://mcp.fastmetal.ai/mcp \ 10 --header <!-- -->"Authorization: Bearer ${FASTMETAL_API_KEY}"</pre><div class="impeccable-module__CfFcga__mcpRight"><div class="impeccable-module__CfFcga__mcpTools"><span class="impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono">ask</span><span class="impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono">compare</span><span class="impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono">generate_image</span><span class="impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono">generate_video</span><span class="impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono">analyze_image</span><span class="impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono">list_models</span></div><a class="impeccable-module__CfFcga__mcpDocs" href="/docs/guides/mcp">See the MCP setup guide<!-- --> â</a></div></div></div></section><section class="impeccable-module__CfFcga__band" id="catalog"><div class="fm-reveal impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__bandHead"><h2>Browse the catalog. Compare on the numbers.</h2><p>94+ models ranked by arena performance, with transparent per-million-token pricing in yen or US dollars.</p></div><div class="impeccable-module__CfFcga__cat"><div class="impeccable-module__CfFcga__catTop"><form class="impeccable-module__CfFcga__search" role="search"><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="11" cy="11" r="7"></circle><path d="m20 20-3.2-3.2"></path></svg><input type="search" class="impeccable-module__CfFcga__searchInput" placeholder="Search 94 modelsâ¦" aria-label="Search the model catalog" aria-busy="false" value=""/></form><div class="impeccable-module__CfFcga__filters"><button type="button" class="impeccable-module__CfFcga__chip" aria-pressed="true">All</button><button type="button" class="impeccable-module__CfFcga__chip" aria-pressed="false">Anthropic</button><button type="button" class="impeccable-module__CfFcga__chip" aria-pressed="false">Meta</button><button type="button" class="impeccable-module__CfFcga__chip" aria-pressed="false">Google</button><button type="button" class="impeccable-module__CfFcga__chip" aria-pressed="false">Qwen</button><button type="button" class="impeccable-module__CfFcga__chip" aria-pressed="false">Xiaomi</button></div></div><div class="impeccable-module__CfFcga__crow"><div class="impeccable-module__CfFcga__cmain"><div class="impeccable-module__CfFcga__cname"><a href="/models/anthropic/claude-opus-4-6"><b>Claude Opus 4.6</b></a><span class="impeccable-module__CfFcga__id">anthropic/claude-opus-4.6</span><button type="button" class="impeccable-module__CfFcga__copy" title="Copy model ID" aria-label="Copy model ID"><svg viewBox="0 0 24 24"><rect x="9" y="9" width="11" height="11" rx="2"></rect><path d="M5 15V6a2 2 0 0 1 2-2h9"></path></svg></button></div><div class="impeccable-module__CfFcga__cmeta"><span>1M ctx</span><span class="impeccable-module__CfFcga__price">$5.42 in</span><span class="impeccable-module__CfFcga__price">$26.77 out / 1M</span></div></div><div class="impeccable-module__CfFcga__crank"><span class="impeccable-module__CfFcga__lbl">Text overall</span><span class="impeccable-module__CfFcga__num">#7</span></div></div><div class="impeccable-module__CfFcga__crow"><div class="impeccable-module__CfFcga__cmain"><div class="impeccable-module__CfFcga__cname"><a href="/models/meta/muse-spark-1-1"><b>Muse Spark 1.1</b></a><span class="impeccable-module__CfFcga__id">meta/muse-spark-1.1</span><button type="button" class="impeccable-module__CfFcga__copy" title="Copy model ID" aria-label="Copy model ID"><svg viewBox="0 0 24 24"><rect x="9" y="9" width="11" height="11" rx="2"></rect><path d="M5 15V6a2 2 0 0 1 2-2h9"></path></svg></button></div><div class="impeccable-module__CfFcga__cmeta"><span>1.0M ctx</span></div></div><div class="impeccable-module__CfFcga__crank"><span class="impeccable-module__CfFcga__lbl">Text overall</span><span class="impeccable-module__CfFcga__num">#12</span></div></div><div class="impeccable-module__CfFcga__crow"><div class="impeccable-module__CfFcga__cmain"><div class="impeccable-module__CfFcga__cname"><a href="/models/google/gemini-3-1-pro-preview"><b>Gemini 3.1 Pro Preview</b></a><span class="impeccable-module__CfFcga__id">google/gemini-3.1-pro-preview</span><button type="button" class="impeccable-module__CfFcga__copy" title="Copy model ID" aria-label="Copy model ID"><svg viewBox="0 0 24 24"><rect x="9" y="9" width="11" height="11" rx="2"></rect><path d="M5 15V6a2 2 0 0 1 2-2h9"></path></svg></button></div><div class="impeccable-module__CfFcga__cmeta"><span>1.0M ctx</span><span class="impeccable-module__CfFcga__price">$2.11 in</span><span class="impeccable-module__CfFcga__price">$12.66 out / 1M</span></div></div><div class="impeccable-module__CfFcga__crank"><span class="impeccable-module__CfFcga__lbl">Text overall</span><span class="impeccable-module__CfFcga__num">#18</span></div></div><div class="impeccable-module__CfFcga__crow"><div class="impeccable-module__CfFcga__cmain"><div class="impeccable-module__CfFcga__cname"><a href="/models/qwen/qwen3-8-max"><b>Qwen3.8 Max</b></a><span class="impeccable-module__CfFcga__id">qwen/qwen3.8-max</span><button type="button" class="impeccable-module__CfFcga__copy" title="Copy model ID" aria-label="Copy model ID"><svg viewBox="0 0 24 24"><rect x="9" y="9" width="11" height="11" rx="2"></rect><path d="M5 15V6a2 2 0 0 1 2-2h9"></path></svg></button></div><div class="impeccable-module__CfFcga__cmeta"><span>1M ctx</span><span class="impeccable-module__CfFcga__price">$2.11 in</span><span class="impeccable-module__CfFcga__price">$6.33 out / 1M</span></div></div><div class="impeccable-module__CfFcga__crank"><span class="impeccable-module__CfFcga__lbl">Text overall</span><span class="impeccable-module__CfFcga__num">#23</span></div></div><div class="impeccable-module__CfFcga__crow"><div class="impeccable-module__CfFcga__cmain"><div class="impeccable-module__CfFcga__cname"><a href="/models/xiaomi/mimo-v2-6-pro"><b>MiMo-V2.6-Pro</b></a><span class="impeccable-module__CfFcga__id">xiaomi/mimo-v2.6-pro</span><button type="button" class="impeccable-module__CfFcga__copy" title="Copy model ID" aria-label="Copy model ID"><svg viewBox="0 0 24 24"><rect x="9" y="9" width="11" height="11" rx="2"></rect><path d="M5 15V6a2 2 0 0 1 2-2h9"></path></svg></button></div><div class="impeccable-module__CfFcga__cmeta"><span>1.0M ctx</span><span class="impeccable-module__CfFcga__price">$0.459 in</span><span class="impeccable-module__CfFcga__price">$0.9179 out / 1M</span></div></div><div class="impeccable-module__CfFcga__crank"><span class="impeccable-module__CfFcga__lbl">Text overall</span><span class="impeccable-module__CfFcga__num">#26</span></div></div><div class="impeccable-module__CfFcga__catEmpty " aria-live="polite">No sample models from that provider here â the full catalog has 94 across every provider.</div><div class="impeccable-module__CfFcga__catFoot"><span aria-live="polite">Showing 5 of 94 models</span><a href="/models">Browse the full catalog<!-- --> â</a></div></div><div class="impeccable-module__CfFcga__diff" id="pricing"><div class="impeccable-module__CfFcga__diffline impeccable-module__CfFcga__diffRem"><span class="impeccable-module__CfFcga__mk">â</span><span class="impeccable-module__CfFcga__txt">base_url = "https://api.openai.com/v1"</span></div><div class="impeccable-module__CfFcga__diffline impeccable-module__CfFcga__diffAdd"><span class="impeccable-module__CfFcga__mk">+</span><span class="impeccable-module__CfFcga__txt">base_url = "https://api.fastmetal.ai/v1"</span></div><div class="impeccable-module__CfFcga__diffNote">Switching model = switching a string. Switching provider = switching a string. Thatâs the whole migration.</div></div></div></section><section class="py-20"><div class="max-w-[1220px] px-6 mx-auto"><div class="mb-12 flex items-end justify-between gap-4"><h2 class="text-3xl font-bold">Latest Posts</h2><a class="shrink-0 text-sm text-muted-foreground transition-colors hover:text-foreground" href="/blog">View all posts<!-- --> â</a></div><div class="grid grid-cols-1 gap-6 md:grid-cols-3"><a class="group flex flex-col rounded-xl border border-neutral-800 bg-neutral-900/40 p-6 transition-colors hover:border-neutral-700" href="/blog/which-model-800-websites">
10<span class="mb-3 inline-block w-fit rounded-full border px-2.5 py-0.5 text-xs bg-neutral-500/15 text-neutral-300 border-neutral-500/30">Column</span><h3 class="mb-2 text-lg font-semibold text-white transition-colors group-hover:text-primary">Which model do I trust with eight hundred websites?</h3><p class="line-clamp-3 text-sm leading-relaxed text-muted-foreground">I own eight hundred dropped domains and about four hours a week. This is the benchmark I built to decide which language model gets to write on all of them, and the two runs it took to stop measuring my own instrument.</p><time dateTime="2026-09-09T23:43:10.677Z" class="mt-4 text-xs text-neutral-400">September 9, 2026</time></a></div></div></section><section class="impeccable-module__CfFcga__band" id="faq"><div class="fm-reveal impeccable-module__CfFcga__wrap"><div class="impeccable-module__CfFcga__bandHead"><h2>The things developers ask first</h2></div><div class="impeccable-module__CfFcga__faq"><details class="impeccable-module__CfFcga__qa" open=""><summary>Is it really OpenAI-compatible?<span class="impeccable-module__CfFcga__plus"></span></summary><div class="impeccable-module__CfFcga__ans">Yes. Any OpenAI SDK or HTTP client works â set base_url to https://api.fastmetal.ai/v1 and use your FastMetal key. Chat completions, streaming, tool calls, and structured outputs are supported.</div></details><details class="impeccable-module__CfFcga__qa"><summary>What does it cost?<span class="impeccable-module__CfFcga__plus"></span></summary><div class="impeccable-module__CfFcga__ans">You pay per token at each modelâs published rate, drawn from prepaid credits. No subscription, no seat fees, no minimum spend.</div></details><details class="impeccable-module__CfFcga__qa"><summary>Am I locked in?<span class="impeccable-module__CfFcga__plus"></span></summary><div class="impeccable-module__CfFcga__ans">No. Itâs the standard OpenAI request shape â point your client back at any provider whenever you want. Your code doesnât depend on us.</div></details><details class="impeccable-module__CfFcga__qa"><summary>How long does integration take?<span class="impeccable-module__CfFcga__plus"></span></summary><div class="impeccable-module__CfFcga__ans">About a minute. Change one base URL, add your key, and your existing calls route through FastMetal.</div></details><details class="impeccable-module__CfFcga__qa"><summary>Which providers are covered?<span class="impeccable-module__CfFcga__plus"></span></summary><div class="impeccable-module__CfFcga__ans">25 providers and counting â 94+ models in one catalog, growing as new models ship.</div></details><details class="impeccable-module__CfFcga__qa"><summary>How does it compare with OpenRouter or going direct?<span class="impeccable-module__CfFcga__plus"></span></summary><div class="impeccable-module__CfFcga__ans">We keep honest comparison pages, including the cases where the other option fits better.<span> <a class="underline underline-offset-4" href="/vs/openrouter">vs OpenRouter</a> · <a class="underline underline-offset-4" href="/vs/claude-api">vs Anthropic direct</a> · <a class="underline underline-offset-4" href="/vs">All comparisons</a></span></div></details></div></div></section><section class="impeccable-module__CfFcga__final"><div class="impeccable-module__CfFcga__finalBg" aria-hidden="true"></div><div class="impeccable-module__CfFcga__wrap"><div class="fm-reveal"><span class="impeccable-module__CfFcga__finalMark" aria-hidden="true"><svg width="18" height="20" viewBox="0 0 18 20" aria-hidden="true"><path d="M9 1 16.8 5.5V14.5L9 19 1.2 14.5V5.5Z" fill="none" stroke="#fafafa" stroke-width="1.3"></path><path d="M9 6 12.5 8V12L9 14 5.5 12V8Z" fill="#fafafa" opacity=".9"></path></svg></span><h2>One key away from every model.</h2><p>Create an account, add credits, change one line. Your agents get 94+ models behind one API key.</p><div class="impeccable-module__CfFcga__finalCta"><a class="impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnPrimary" href="/auth/signin?mode=register">Create a free account</a><a class="impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnGhost" href="/docs/api/overview">Read the docs<!-- --> â</a></div><div class="impeccable-module__CfFcga__reassure"><span>Prepaid credits</span><span class="impeccable-module__CfFcga__sep">·</span><span>no subscription</span><span class="impeccable-module__CfFcga__sep">·</span><span>cancel by simply not topping up</span></div></div></div></section></main><footer class="border-t border-neutral-800 bg-neutral-950 py-12"><div class="max-w-[1220px] mx-auto px-6"><div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8"><div><h3 class="text-sm font-semibold text-white mb-4">Product</h3><ul class="space-y-3"><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/pricing">Pricing</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/cost-calculator">AI cost calculator</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/apps">Apps</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/enterprise">For business</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/partners">Partners</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/providers">For providers</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/docs/api/overview">API Docs</a></li></ul></div><div><h3 class="text-sm font-semibold text-white mb-4">Guides</h3><ul class="space-y-3"><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/docs/guides/claude-code">Claude Code</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/docs/guides/github-copilot">GitHub Copilot</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/docs/api/getting-started">Getting Started</a></li></ul></div><div><h3 class="text-sm font-semibold text-white mb-4">API Reference</h3><ul class="space-y-3"><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/docs/openai/chat-completions">OpenAI Compatible</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/docs/anthropic/messages">Anthropic Compatible</a></li></ul></div><div><h3 class="text-sm font-semibold text-white mb-4">Compare Alternatives</h3><ul class="space-y-3"><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/openrouter">vs OpenRouter</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/lolipop-ai-gateway">vs Lolipop! AI Gateway</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/orcarouter">vs OrcaRouter</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/claude-api">vs Anthropic Direct</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/openai-api">vs OpenAI Direct</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/foreign-hosted">vs Overseas Hosting</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs/local-llm">vs Local LLMs</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/compare">Model vs model</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/best">Rankings by use case</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/vs">All comparisons</a></li></ul></div><div><h3 class="text-sm font-semibold text-white mb-4">Account</h3><ul class="space-y-3"><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/dashboard">Dashboard</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/usage">Usage</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/profile">Profile</a></li></ul></div><div><h3 class="text-sm font-semibold text-white mb-4">Legal</h3><ul class="space-y-3"><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/contact">Contact</a></li><li><a class="text-neutral-400 hover:text-white text-sm transition-colors" href="/legal/company-info">Company Information</a></li><li><a href="https://psi.jp/privacy" target="_blank" rel="noopener noreferrer" class="text-neutral-400 hover:text-white text-sm transition-colors">Privacy policy</a></li></ul></div></div><div class="mt-12 pt-8 border-t border-neutral-800"><div class="mb-4 flex justify-center"><div role="radiogroup" aria-label="Price currency" title="Show prices in Japanese yen or US dollars. Display only: you are always billed in your account's currency." class="inline-flex items-center rounded-lg border border-neutral-700 bg-neutral-800 p-0.5 text-xs "><button type="button" role="radio" aria-checked="false" class="whitespace-nowrap rounded-md px-2 py-1 font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-neutral-500 text-neutral-400 hover:text-white">Â¥ JPY</button><button type="button" role="radio" aria-checked="true" class="whitespace-nowrap rounded-md px-2 py-1 font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-neutral-500 bg-neutral-600 text-white">$ USD</button></div></div><p class="text-center text-neutral-400 text-sm">© 2026 FastMetal. All rights reserved.</p><p class="mt-2 text-center text-neutral-400 text-sm"><a href="mailto:[email protected]" class="hover:text-white transition-colors">[email protected]</a></p><p class="mt-4 text-center text-neutral-500 text-xs">Leaderboard data: LMArena leaderboard dataset (<a href="https://huggingface.co/datasets/lmarena-ai/leaderboard-dataset" target="_blank" rel="noopener noreferrer" class="underline hover:text-foreground">lmarena-ai/leaderboard-dataset</a>), <a href="https://creativecommons.org/licenses/by/4.0/" target="_blank" rel="noopener noreferrer" class="underline hover:text-foreground">CC BY 4.0</a>; category names mapped and ratings rounded by FastMetal.</p></div></div></footer></div><!--$--><!--/$-->
10<script src="/_next/static/chunks/321b0eb47aa7e579.js" id="_R_" async=""></script>
10<script>(self.__next_f=self.__next_f||[]).push([0])</script>
10<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[339756,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/73e3194f06db260e.js\"],\"default\"]\n3:I[837457,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/73e3194f06db260e.js\"],\"default\"]\na:I[168027,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/73e3194f06db260e.js\"],\"default\"]\n14:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/73e3194f06db260e.js\"],\"ViewportBoundary\"]\n16:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/73e3194f06db260e.js\"],\"MetadataBoundary\"]\n17:\"$Sreact.suspense\"\n19:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/73e3194f06db260e.js\"],\"OutletBoundary\"]\n1c:I[479520,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\"],\"\"]\n1e:I[175696,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\"],\"default\"]\n21:I[715321,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\"],\"default\"]\n22:I[401288,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\"],\"default\"]\n4:T11601,"])</script>
10<script>self.__next_f.push([1,"*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:\"\"}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}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-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;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}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}:root{--background:0 0% 100%;--foreground:0 0% 3.9%;--card:0 0% 100%;--card-foreground:0 0% 3.9%;--popover:0 0% 100%;--popover-foreground:0 0% 3.9%;--primary:0 0% 9%;--primary-foreground:0 0% 98%;--secondary:0 0% 96.1%;--secondary-foreground:0 0% 9%;--muted:0 0% 96.1%;--muted-foreground:0 0% 45.1%;--accent:0 0% 96.1%;--accent-foreground:0 0% 9%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--border:0 0% 89.8%;--input:0 0% 89.8%;--ring:0 0% 3.9%;--chart-1:12 76% 61%;--chart-2:173 58% 39%;--chart-3:197 37% 24%;--chart-4:43 74% 66%;--chart-5:27 87% 67%;--radius:.5rem}.dark{--background:0 0% 3.9%;--foreground:0 0% 98%;--card:0 0% 3.9%;--card-foreground:0 0% 98%;--popover:0 0% 3.9%;--popover-foreground:0 0% 98%;--primary:188 86% 53%;--primary-foreground:0 0% 9%;--secondary:0 0% 14.9%;--secondary-foreground:0 0% 98%;--muted:0 0% 14.9%;--muted-foreground:0 0% 63.9%;--accent:0 0% 14.9%;--accent-foreground:0 0% 98%;--destructive:0 62.8% 30.6%;--destructive-foreground:0 0% 98%;--border:0 0% 14.9%;--input:0 0% 14.9%;--ring:0 0% 83.1%;--chart-1:220 70% 50%;--chart-2:160 60% 45%;--chart-3:30 80% 55%;--chart-4:280 65% 60%;--chart-5:340 75% 55%}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}
10.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-0{bottom:0}.left-0{left:0}.left-3{left:.75rem}.left-4{left:1rem}.left-\\[-9999px\\]{left:-9999px}.left-\\[50\\%\\]{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\\/2{top:50%}.top-16{top:4rem}.top-2{top:.5rem}.top-4{top:1rem}.top-8{top:2rem}.top-\\[1px\\]{top:1px}.top-\\[50\\%\\]{top:50%}.top-\\[60\\%\\]{top:60%}.top-auto{top:auto}.top-full{top:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\\[1\\]{z-index:1}.order-1{order:1}.order-2{order:2}.order-3{order:3}.col-span-12{grid-column:span 12/span 12}.col-span-2{grid-column:span 2/span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-5{margin-left:-1.25rem;margin-right:-1.25rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-ml-2{margin-left:-.5rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-7{margin-bottom:1.75rem}.mb-8{margin-bottom:2rem}.ml-0\\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mr-8{margin-right:2rem}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-14{margin-top:3.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.aspect-square{aspect-ratio:1}.h-0{height:0}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[15px\\]{height:15px}.h-\\[18px\\]{height:18px}.h-\\[1px\\]{height:1px}.h-\\[300px\\]{height:300px}.h-\\[340px\\]{height:340px}.h-\\[360px\\]{height:360px}.h-\\[3px\\]{height:3px}.h-\\[600px\\]{height:600px}.h-\\[85vh\\]{height:85vh}.h-\\[var\\(--radix-navigation-menu-viewport-height\\)\\]{height:var(--radix-navigation-menu-viewport-height)}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-64{max-height:16rem}.max-h-\\[--radix-select-content-available-height\\]{max-height:var(--radix-select-content-available-height)}.max-h-\\[28rem\\]{max-height:28rem}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[calc\\(100dvh-4rem\\)\\]{max-height:calc(100dvh - 4rem)}.max-h-\\[calc\\(100vh-6rem\\)\\]{max-height:calc(100vh - 6rem)}.min-h-0{min-height:0}.min-h-\\[100px\\]{min-height:100px}.min-h-\\[100svh\\]{min-height:100svh}.min-h-\\[160px\\]{min-height:160px}.min-h-\\[180px\\]{min-height:180px}.min-h-\\[7rem\\]{min-height:7rem}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1\\/2{width:50%}.w-1\\/3{width:33.3333%}.w-1\\/4{width:25%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-2\\/3{width:66.6667%}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\\.5{width:.875rem}.w-3\\/4{width:75%}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\\[120px\\]{width:120px}.w-\\[130px\\]{width:130px}.w-\\[140px\\]{width:140px}.w-\\[15px\\]{width:15px}.w-\\[160px\\]{width:160px}.w-\\[180px\\]{width:180px}.w-\\[18px\\]{width:18px}
10.w-\\[1px\\]{width:1px}.w-\\[220px\\]{width:220px}.w-\\[240px\\]{width:240px}.w-\\[260px\\]{width:260px}.w-\\[280px\\]{width:280px}.w-\\[320px\\]{width:320px}.w-\\[3px\\]{width:3px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\\[12rem\\]{min-width:12rem}.min-w-\\[160px\\]{min-width:160px}.min-w-\\[16rem\\]{min-width:16rem}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\\[10rem\\]{max-width:10rem}.max-w-\\[11rem\\]{max-width:11rem}.max-w-\\[1220px\\]{max-width:1220px}.max-w-\\[14rem\\]{max-width:14rem}.max-w-\\[260px\\]{max-width:260px}.max-w-\\[7rem\\]{max-width:7rem}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:max-content}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-\\[2\\]{flex:2}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\\[--radix-select-content-transform-origin\\]{transform-origin:var(--radix-select-content-transform-origin)}.-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.resize-y{resize:vertical}.scroll-mt-20{scroll-margin-top:5rem}.scroll-mt-8{scroll-margin-top:2rem}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-flow-dense{grid-auto-flow:dense}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\\[1fr_auto\\]{grid-template-columns:1fr auto}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-cols-\\[minmax\\(0\\,1fr\\)\\]{grid-template-columns:minmax(0,1fr)}.grid-rows-\\[auto_1fr_auto\\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}
10.gap-0{gap:0}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-10{gap:2.5rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:1.75rem}.gap-8{gap:2rem}.gap-\\[2px\\]{gap:2px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-1{row-gap:.25rem}.gap-y-1\\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-x-1\u003e:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*calc(1 - var(--tw-space-x-reverse)))}.space-x-2\u003e:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}.space-y-0\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.space-y-1\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\\.5\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-10\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem*var(--tw-space-y-reverse))}.space-y-2\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-2\\.5\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.space-y-3\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8\u003e:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y\u003e:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-\\[\\#262626\\]\u003e:not([hidden])~:not([hidden]),.divide-neutral-800\u003e:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(38 38 38/var(--tw-divide-opacity,1))}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overscroll-contain{overscroll-behavior:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}
10.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\\[\\#262626\\]{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity,1))}.border-\\[\\#374151\\]{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-amber-400\\/35{border-color:#fbbf2459}.border-amber-500\\/30{border-color:#f59e0b4d}.border-amber-500\\/40{border-color:#f59e0b66}.border-amber-600{--tw-border-opacity:1;border-color:rgb(217 119 6/var(--tw-border-opacity,1))}.border-amber-800{--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-opacity,1))}.border-blue-500\\/30{border-color:#3b82f64d}.border-blue-700{--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity,1))}.border-border{border-color:hsl(var(--border))}.border-border\\/40{border-color:hsl(var(--border)/.4)}.border-cyan-400\\/35{border-color:#22d3ee59}.border-cyan-500\\/30{border-color:#06b6d44d}.border-destructive\\/50{border-color:hsl(var(--destructive)/.5)}.border-emerald-500\\/30{border-color:#10b9814d}.border-emerald-800{--tw-border-opacity:1;border-color:rgb(6 95 70/var(--tw-border-opacity,1))}.border-green-400\\/35{border-color:#4ade8059}.border-green-700{--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity,1))}.border-input{border-color:hsl(var(--input))}.border-muted-foreground\\/40{border-color:hsl(var(--muted-foreground)/.4)}.border-neutral-300{--tw-border-opacity:1;border-color:rgb(212 212 212/var(--tw-border-opacity,1))}.border-neutral-500\\/30{border-color:#7373734d}.border-neutral-600{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity,1))}.border-neutral-700{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.border-neutral-800{--tw-border-opacity:1;border-color:rgb(38 38 38/var(--tw-border-opacity,1))}.border-neutral-800\\/60{border-color:#26262699}.border-neutral-800\\/70{border-color:#262626b3}.border-primary{border-color:hsl(var(--primary))}.border-primary\\/30{border-color:hsl(var(--primary)/.3)}.border-primary\\/35{border-color:hsl(var(--primary)/.35)}.border-primary\\/40{border-color:hsl(var(--primary)/.4)}.border-primary\\/50{border-color:hsl(var(--primary)/.5)}.border-primary\\/60{border-color:hsl(var(--primary)/.6)}.border-purple-500\\/30{border-color:#a855f74d}.border-red-400\\/30{border-color:#f871714d}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-red-500\\/30{border-color:#ef44444d}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-rose-500\\/30{border-color:#f43f5e4d}.border-transparent{border-color:#0000}.border-violet-400\\/35{border-color:#a78bfa59}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-white\\/10{border-color:#ffffff1a}.border-white\\/20{border-color:#fff3}.border-yellow-700{--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.border-l-transparent{border-left-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-\\[\\#0d1117\\]{--tw-bg-opacity:1;background-color:rgb(13 17 23/var(--tw-bg-opacity,1))}.bg-\\[\\#111827\\]{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-\\[\\#fafafa\\]{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-400\\/10{background-color:#fbbf241a}.bg-amber-500\\/10{background-color:#f59e0b1a}.bg-amber-500\\/15{background-color:#f59e0b26}.bg-amber-500\\/5{background-color:#f59e0b0d}.bg-amber-900\\/40{background-color:#78350f66}.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\\/40{background-color:#0006}.bg-black\\/50{background-color:#00000080}.bg-black\\/80{background-color:#000c}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-500\\/15{background-color:#3b82f626}.bg-blue-900{--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.bg-blue-900\\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-cyan-400\\/10{background-color:#22d3ee1a}.bg-cyan-500\\/10{background-color:#06b6d41a}.bg-cyan-500\\/15{background-color:#06b6d426}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\\/10{background-color:hsl(var(--destructive)/.1)}.bg-emerald-500\\/15{background-color:#10b98126}.bg-emerald-900\\/40{background-color:#064e3b66}.bg-emerald-950\\/60{background-color:#022c2299}.bg-foreground{background-color:hsl(var(--foreground))}.bg-green-400\\/10{background-color:#4ade801a}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-green-900{--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.bg-green-900\\/20{background-color:#14532d33}.bg-green-900\\/30{background-color:#14532d4d}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\\/40{background-color:hsl(var(--muted)/.4)}.bg-muted\\/50{background-color:hsl(var(--muted)/.5)}.bg-neutral-500\\/15{background-color:#73737326}.bg-neutral-600{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity,1))}.bg-neutral-700{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1))}.bg-neutral-800{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.bg-neutral-800\\/70{background-color:#262626b3}.bg-neutral-900{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.bg-neutral-900\\/40{background-color:#17171766}.bg-neutral-900\\/50{background-color:#17171780}.bg-neutral-900\\/60{background-color:#17171799}.bg-neutral-950{--tw-bg-opacity:1;background-color:rgb(10 10 10/var(--tw-bg-opacity,1))}.bg-neutral-950\\/50{background-color:#0a0a0a80}.bg-neutral-950\\/60{background-color:#0a0a0a99}.bg-neutral-950\\/85{background-color:#0a0a0ad9}.bg-neutral-950\\/90{background-color:#0a0a0ae6}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\\/10{background-color:hsl(var(--primary)/.1)}.bg-primary\\/15{background-color:hsl(var(--primary)/.15)}.bg-primary\\/20{background-color:hsl(var(--primary)/.2)}.bg-primary\\/5{background-color:hsl(var(--primary)/.05)}.bg-primary\\/\\[0\\.06\\]{background-color:hsl(var(--primary)/.06)}.bg-purple-500\\/15{background-color:#a855f726}.bg-red-400\\/10{background-color:#f871711a}.bg-red-500\\/15{background-color:#ef444426}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-rose-500\\/15{background-color:#f43f5e26}.bg-rose-950\\/60{background-color:#4c051999}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\\/40{background-color:hsl(var(--secondary)/.4)}.bg-transparent{background-color:#0000}.bg-violet-400\\/10{background-color:#a78bfa1a}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\\/10{background-color:#ffffff1a}.bg-white\\/15{background-color:#ffffff26}.bg-white\\/\\[\\.04\\]{background-color:#ffffff0a}.bg-yellow-900\\/30{background-color:#713f124d}.bg-yellow-900\\/50{background-color:#713f1280}.bg-\\[url\\(\\'\\/landing\\/hero-convergence\\.webp\\'\\)\\]{background-image:url(/landing/hero-convergence.webp)}.bg-\\[url\\(\\'\\/landing\\/hero-hexgrid\\.webp\\'\\)\\]{background-image:url(/landing/hero-hexgrid.webp)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-\\[\\#0c111b\\]{--tw-gradient-from:#0c111b var(--tw-gradient-from-position);--tw-gradient-to:#0c111b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-\\[\\#0e1420\\]{--tw-gradient-from:#0e1420 var(--tw-gradient-from-position);--tw-gradient-to:#0e142000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-\\[\\#161d29\\]{--tw-gradient-from:#161d29 var(--tw-gradient-from-position);--tw-gradient-to:#161d2900 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-background{--tw-gradient-from:hsl(var(--background))var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--background)/0)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-neutral-900{--tw-gradient-from:#171717 var(--tw-gradient-from-position);--tw-gradient-to:#17171700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-primary\\/40{--tw-gradient-from:hsl(var(--primary)/.4)var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--primary)/0)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-40\\%{--tw-gradient-from-position:40%}.via-background\\/95{--tw-gradient-to:hsl(var(--background)/0)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsl(var(--background)/.95)var(--tw-gradient-via-p
10osition),var(--tw-gradient-to)}.to-\\[\\#0a0a0a\\]{--tw-gradient-to:#0a0a0a var(--tw-gradient-to-position)}.to-\\[\\#0a0e16\\]{--tw-gradient-to:#0a0e16 var(--tw-gradient-to-position)}.to-\\[\\#0b0f18\\]{--tw-gradient-to:#0b0f18 var(--tw-gradient-to-position)}.to-\\[\\#2b3444\\]{--tw-gradient-to:#2b3444 var(--tw-gradient-to-position)}.to-neutral-950{--tw-gradient-to:#0a0a0a var(--tw-gradient-to-position)}.to-primary{--tw-gradient-to:hsl(var(--primary))var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.stroke-muted{stroke:hsl(var(--muted))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:1.75rem}.p-8{padding:2rem}.p-\\[1px\\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-9{padding-left:2.25rem;padding-right:2.25rem}.py-0\\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-28{padding-top:7rem;padding-bottom:7rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-32{padding-top:8rem;padding-bottom:8rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-px{padding-top:1px;padding-bottom:1px}.pb-0\\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pb-1\\.5{padding-bottom:.375rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-24{padding-bottom:6rem}.pb-28{padding-bottom:7rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pl-10{padding-left:2.5rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-12{padding-right:3rem}.pr-14{padding-right:3.5rem}.pr-4{padding-right:1rem}.pr-8{padding-right:2rem}.pr-9{padding-right:2.25rem}.pt-0{padding-top:0}.pt-0\\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-10{padding-top:2.5rem}.pt-16{padding-top:4rem}.pt-2{padding-top:.5rem}.pt-28{padding-top:7rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\\!text-5xl{font-size:3rem!important;line-height:1!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-\\[0\\.9em\\]{font-size:.9em}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[14px\\]{font-size:14px}.text-\\[15px\\]{font-size:15px}.text-\\[16px\\]{font-size:16px}.text-\\[17px\\]{font-size:17px}.text-\\[18px\\]{font-size:18px}.text-\\[22px\\]{font-size:22px}.text-\\[30px\\]{font-size:30px}.text-\\[clamp\\(1\\.7rem\\,3\\.4vw\\,2\\.7rem\\)\\]{font-size:clamp(1.7rem,3.4vw,2.7rem)}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal)var(--tw-slashed-zero)var(--tw-numeric-figure)var(--tw-numeric-spacing)var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-6{line-height:1.5rem}.leading-8{line-height:2rem}.leading-\\[1\\.02\\]{line-height:1.02}.leading-\\[1\\.14\\]{line-height:1.14}.leading-\\[1\\.1\\]{line-height:1.1}.leading-\\[1\\.22\\]{line-height:1.22}.leading-\\[1\\.75\\]{line-height:1.75}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\\[-0\\.025em\\]{letter-spacing:-.025em}.tracking-\\[-0\\.02em\\]{letter-spacing:-.02em}.tracking-\\[-0\\.035em\\]{letter-spacing:-.035em}.tracking-\\[-0\\.03em\\]{letter-spacing:-.03em}.tracking-\\[0\\.08em\\]{letter-spacing:.08em}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\\[\\#171717\\]{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.text-\\[\\#5b6675\\]{--tw-text-opacity:1;color:rgb(91 102 117/var(--tw-text-opacity,1))}.text-\\[\\#8b93a1\\]{--tw-text-opacity:1;color:rgb(139 147 161/var(--tw-text-opacity,1))}.text-\\[\\#8b93a1\\]\\/70{color:#8b93a1b3}.text-\\[\\#9ca3af\\]{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-\\[\\#c7cdd6\\]{--tw-text-opacity:1;color:rgb(199 205 214/var(--tw-text-opacity,1))}.text-\\[\\#e6ebf1\\]{--tw-text-opacity:1;color:rgb(230 235 241/var(--tw-text-opacity,1))}.text-\\[\\#fafafa\\]{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}
10.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-300{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-cyan-300{--tw-text-opacity:1;color:rgb(103 232 249/var(--tw-text-opacity,1))}.text-cyan-400{--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\\/80{color:hsl(var(--foreground)/.8)}.text-green-200{--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.text-green-300{--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\\/70{color:hsl(var(--muted-foreground)/.7)}.text-neutral-100{--tw-text-opacity:1;color:rgb(245 245 245/var(--tw-text-opacity,1))}.text-neutral-200{--tw-text-opacity:1;color:rgb(229 229 229/var(--tw-text-opacity,1))}.text-neutral-300{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity,1))}.text-neutral-400{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.text-neutral-50{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.text-neutral-500{--tw-text-opacity:1;color:rgb(115 115 115/var(--tw-text-opacity,1))}.text-neutral-600{--tw-text-opacity:1;color:rgb(82 82 82/var(--tw-text-opacity,1))}.text-neutral-900{--tw-text-opacity:1;color:rgb(23 23 23/var(--tw-text-opacity,1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-purple-300{--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-rose-300{--tw-text-opacity:1;color:rgb(253 164 175/var(--tw-text-opacity,1))}.text-rose-400{--tw-text-opacity:1;color:rgb(251 113 133/var(--tw-text-opacity,1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-violet-300{--tw-text-opacity:1;color:rgb(196 181 253/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.accent-\\[hsl\\(var\\(--primary\\)\\)\\],.accent-primary{accent-color:hsl(var(--primary))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;
10--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
10dow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-border{--tw-ring-color:hsl(var(--border))}.ring-cyan-500\\/20{--tw-ring-color:#06b6d433}.ring-destructive\\/20{--tw-ring-color:hsl(var(--destructive)/.2)}.ring-primary{--tw-ring-color:hsl(var(--primary))}.ring-primary\\/20{--tw-ring-color:hsl(var(--primary)/.2)}.ring-white\\/20{--tw-ring-color:#fff3}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.contrast-125{--tw-contrast:contrast(1.25);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.grayscale-\\[\\.2\\]{--tw-grayscale:grayscale(.2);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.\\!filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur)var(--tw-backdrop-brightness)var(--tw-backdrop-contrast)var(--tw-backdrop-grayscale)var(--tw-backdrop-hue-rotate)var(--tw-backdrop-invert)var(--tw-backdrop-opacity)var(--tw-backdrop-saturate)var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-700{transition-duration:.7s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.will-change-transform{will-change:transform}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-700{animation-duration:.7s}.ease-in{animation-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.running{animation-play-state:running}.paused{animation-play-state:paused}.\\[background\\:radial-gradient\\(60\\%_54\\%_at_50\\%_46\\%\\,rgba\\(10\\,10\\,10\\,\\.82\\)\\,rgba\\(10\\,10\\,10\\,\\.42\\)_76\\%\\,transparent_100\\%\\)\\]{background:radial-gradient(60% 54% at 50% 46%,#0a0a0ad1,#0a0a0a6b 76%,#0000 100%)}.\\[scrollbar-color\\:\\#404040_transparent\\]{scrollbar-color:#404040 transparent}.\\[scrollbar-width\\:none\\]{scrollbar-width:none}.\\[scrollbar-width\\:thin\\]{scrollbar-width:thin}.fm-js .fm-reveal{opacity:0;transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transform:translateY(18px)}.fm-js .fm-reveal.fm-in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.fm-js .fm-reveal{opacity:1;transition:none;transform:none}}.marker\\:content-none ::marker{--tw-content:none;content:var(--tw-content)}.marker\\:content-none::marker{--tw-content:none;content:var(--tw-content)}.file\\:border-0::file-selector-button{border-width:0}.file\\:bg-transparent::file-selector-button{background-color:#0000}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-medium::file-selector-button{font-weight:500}.file\\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.placeholder\\:text-neutral-400::placeholder{--tw-text-opacity:1;color:rgb(163 163 163/var(--tw-text-opacity,1))}.first\\:border-t-0:first-child{border-top-width:0}.last\\:mb-0:last-child{margin-bottom:0}.last\\:border-0:last-child{border-width:0}.last\\:border-b-0:last-child{border-bottom-width:0}.open\\:border-neutral-700[open]{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.open\\:bg-neutral-900[open]{--tw-bg-opacity:1;background-color:rgb(23 23 23/var(--tw-bg-opacity,1))}.open\\:bg-neutral-900\\/40[open]{background-color:#17171766}.hover\\:-translate-y-0\\.5:hover{--tw-translate-y:-.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.hover\\:border-neutral-500:hover{--tw-border-opacity:1;border-color:rgb(115 115 115/var(--tw-border-opacity,1))}.hover\\:border-neutral-600:hover{--tw-border-opacity:1;border-color:rgb(82 82 82/var(--tw-border-opacity,1))}.hover\\:border-neutral-700:hover{--tw-border-opacity:1;border-color:rgb(64 64 64/var(--tw-border-opacity,1))}.hover\\:border-primary\\/40:hover{border-color:hsl(var(--primary)/.4)}.hover\\:border-primary\\/50:hover{border-color:hsl(var(--primary)/.5)}.hover\\:border-primary\\/60:hover{border-color:hsl(var(--primary)/.6)}.hover\\:border-white\\/40:hover{border-color:#fff6}.hover\\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\\:bg-accent\\/50:hover{background-color:hsl(var(--accent)/.5)}.hover\\:bg-amber-600\\/10:hover{background-color:#d977061a}.hover\\:bg-destructive\\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\\:bg-destructive\\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.hover\\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\\:bg-muted\\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\\:bg-muted\\/60:hover{background-color:hsl(var(--muted)/.6)}.hover\\:bg-neutral-100:hover{--tw-bg-opacity:1;background-color:rgb(245 245 245/var(--tw-bg-opacity,1))}.hover\\:bg-neutral-600:hover{--tw-bg-opacity:1;background-color:rgb(82 82 82/var(--tw-bg-opacity,1))}.hover\\:bg-neutral-700:hover{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1))}.hover\\:bg-neutral-800:hover{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.hover\\:bg-neutral-800\\/30:hover{background-color:#2626264d}.hover\\:bg-neutral-800\\/40:hover{background-color:#26262666}.hover\\:bg-neutral-800\\/50:hover{background-color:#26262680}.hover\\:bg-neutral-900\\/50:hover{background-color:#17171780}.hover\\:bg-neutral-900\\/60:hover{background-color:#17171799}.hover\\:bg-primary\\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\\:bg-primary\\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\\:bg-secondary\\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\\:bg-transparent:hover{background-color:#0000}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\\:bg-white\\/5:hover{background-color:#ffffff0d}.hover\\:bg-white\\/90:hover{background-color:#ffffffe6}.hover\\:bg-white\\/\\[\\.015\\]:hover{background-color:#ffffff04}.hover\\:text-\\[\\#fafafa\\]:hover{--tw-text-opacity:1;color:rgb(250 250 250/var(--tw-text-opacity,1))}.hover\\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\\:text-destructive:hover{color:hsl(var(--destructive))}.hover\\:text-foreground:hover{color:hsl(var(--foreground))}.hover\\:text-neutral-300:hover{--tw-text-opacity:1;color:rgb(212 212 212/var(--tw-text-opacity,1))}.hover\\:text-primary:hover{color:hsl(var(--primary))}.hover\\:text-red-300:hover{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.hover\\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:no-underline:hover{text-decoration-line:none}.hover\\:opacity-100:hover{opacity:1}.hover\\:ring-2:hover{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
10dow,0 0 #0000)}.hover\\:ring-neutral-600:hover{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity,1))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.focus\\:border-primary:focus{border-color:hsl(var(--primary))}.focus\\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\\:bg-neutral-800:focus{--tw-bg-opacity:1;background-color:rgb(38 38 38/var(--tw-bg-opacity,1))}.focus\\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\\:text-red-300:focus{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.focus\\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.focus\\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
10dow,0 0 #0000)}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-neutral-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(82 82 82/var(--tw-ring-opacity,1))}.focus\\:ring-primary:focus{--tw-ring-color:hsl(var(--primary))}.focus\\:ring-primary\\/20:focus{--tw-ring-color:hsl(var(--primary)/.2)}.focus\\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\\:ring-offset-neutral-950:focus{--tw-ring-offset-color:#0a0a0a}.focus-visible\\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\\:outline:focus-visible{outline-style:solid}.focus-visible\\:outline-2:focus-visible{outline-width:2px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-primary:focus-visible{outline-color:hsl(var(--primary))}.focus-visible\\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
10dow,0 0 #0000)}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:ring-neutral-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(115 115 115/var(--tw-ring-opacity,1))}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.group[open] .group-open\\:inline{display:inline}.group[open] .group-open\\:hidden{display:none}.group[open] .group-open\\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group[open] .group-open\\:rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group[open] .group-open\\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group[open] .group-open\\:text-primary{color:hsl(var(--primary))}.group:hover .group-hover\\:translate-x-1{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:border-primary{border-color:hsl(var(--primary))}.group:hover .group-hover\\:text-primary{color:hsl(var(--primary))}.group:hover .group-hover\\:opacity-100{opacity:1}.group:hover .group-hover\\:opacity-35{opacity:.35}.peer:disabled~.peer-disabled\\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\\:opacity-70{opacity:.7}.data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\\[state\\=open\\]\\:bg-accent\\/50[data-state=open]{background-color:hsl(var(--accent)/.5)}.data-\\[state\\=open\\]\\:bg-secondary[data-state=open]{background-color:hsl(var(--secondary))}.data-\\[state\\=selected\\]\\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\\[placeholder\\]\\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=active\\]\\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;
10--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{transition-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{transition-duration:.5s}.data-\\[motion\\^\\=from-\\]\\:animate-in[data-motion^=from-],.data-\\[state\\=open\\]\\:animate-in[data-state=open],.data-\\[state\\=visible\\]\\:animate-in[data-state=visible]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\\[motion\\^\\=to-\\]\\:animate-out[data-motion^=to-],.data-\\[state\\=closed\\]\\:animate-out[data-state=closed],.data-\\[state\\=hidden\\]\\:animate-out[data-state=hidden]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\\[motion\\^\\=from-\\]\\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\\[motion\\^\\=to-\\]\\:fade-out[data-motion^=to-],.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed],.data-\\[state\\=hidden\\]\\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open],.data-\\[state\\=visible\\]\\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[motion\\=from-end\\]\\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:13rem}.data-\\[motion\\=from-start\\]\\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:-13rem}.data-\\[motion\\=to-end\\]\\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:13rem}.data-\\[motion\\=to-start\\]\\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:-13rem}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{animation-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{animation-duration:.5s}.data-\\[state\\=open\\]\\:hover\\:bg-accent:hover[data-state=open],.data-\\[state\\=open\\]\\:focus\\:bg-accent:focus[data-state=open]{background-color:hsl(var(--accent))}.group[data-state=open] .group-data-\\[state\\=open\\]\\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.dark\\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}.dark\\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\\:bottom-auto{bottom:auto}.sm\\:top-1\\/2{top:50%}.sm\\:col-span-2{grid-column:span 2/span 2}.sm\\:col-span-3{grid-column:span 3/span 3}.sm\\:col-span-6{grid-column:span 6/span 6}.sm\\:block{display:block}.sm\\:inline{display:inline}.sm\\:flex{display:flex}.sm\\:inline-flex{display:inline-flex}.sm\\:hidden{display:none}.sm\\:h-9{height:2.25rem}.sm\\:h-\\[min\\(700px\\,86vh\\)\\]{height:min(700px,86vh)}.sm\\:w-36{width:9rem}.sm\\:w-40{width:10rem}.sm\\:w-52{width:13rem}.sm\\:w-64{width:16rem}.sm\\:max-w-3xl{max-width:48rem}.sm\\:max-w-md{max-width:28rem}.sm\\:max-w-sm{max-width:24rem}.sm\\:shrink-0{flex-shrink:0}.sm\\:-translate-y-1\\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\\:grid-cols-\\[150px_1fr\\]{grid-template-columns:150px 1fr}.sm\\:grid-cols-\\[max-content_1fr\\]{grid-template-columns:max-content 1fr}.sm\\:flex-row{flex-direction:row}.sm\\:items-center{align-items:center}.sm\\:justify-end{justify-content:flex-end}.sm\\:justify-between{justify-content:space-between}.sm\\:gap-10{gap:2.5rem}.sm\\:gap-2{gap:.5rem}.sm\\:gap-3{gap:.75rem}.sm\\:gap-4{gap:1rem}.sm\\:space-x-2\u003e:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*calc(1 - var(--tw-space-x-reverse)))}
10.sm\\:rounded-lg{border-radius:var(--radius)}.sm\\:p-6{padding:1.5rem}.sm\\:p-8{padding:2rem}.sm\\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:py-16{padding-top:4rem;padding-bottom:4rem}.sm\\:pt-0\\.5{padding-top:.125rem}.sm\\:pt-1{padding-top:.25rem}.sm\\:text-left{text-align:left}.sm\\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\\:text-5xl{font-size:3rem;line-height:1}.sm\\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:768px){.md\\:absolute{position:absolute}.md\\:order-1{order:1}.md\\:order-2{order:2}.md\\:col-span-1{grid-column:span 1/span 1}.md\\:col-span-2{grid-column:span 2/span 2}.md\\:col-start-3{grid-column-start:3}.md\\:mx-2{margin-left:.5rem;margin-right:.5rem}.md\\:ml-auto{margin-left:auto}.md\\:block{display:block}.md\\:inline{display:inline}.md\\:flex{display:flex}.md\\:grid{display:grid}.md\\:hidden{display:none}.md\\:h-16{height:4rem}.md\\:h-\\[420px\\]{height:420px}.md\\:w-28{width:7rem}.md\\:w-\\[var\\(--radix-navigation-menu-viewport-width\\)\\]{width:var(--radix-navigation-menu-viewport-width)}.md\\:w-auto{width:auto}.md\\:min-w-0{min-width:0}.md\\:max-w-\\[240px\\]{max-width:240px}.md\\:flex-1{flex:1}.md\\:flex-none{flex:none}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\\:grid-cols-\\[minmax\\(0\\,1\\.6fr\\)_minmax\\(0\\,1\\.2fr\\)_10rem_10rem\\]{grid-template-columns:minmax(0,1.6fr) minmax(0,1.2fr) 10rem 10rem}.md\\:grid-cols-\\[minmax\\(0\\,2fr\\)_minmax\\(0\\,3fr\\)\\]{grid-template-columns:minmax(0,2fr) minmax(0,3fr)}.md\\:flex-row{flex-direction:row}.md\\:items-center{align-items:center}.md\\:justify-end{justify-content:flex-end}.md\\:justify-between{justify-content:space-between}.md\\:gap-4{gap:1rem}.md\\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.md\\:p-8{padding:2rem}.md\\:px-7{padding-left:1.75rem;padding-right:1.75rem}.md\\:py-40{padding-top:10rem;padding-bottom:10rem}.md\\:py-48{padding-top:12rem;padding-bottom:12rem}.md\\:pb-40{padding-bottom:10rem}.md\\:pl-\\[3\\.65rem\\]{padding-left:3.65rem}.md\\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\\:text-\\[13px\\]{font-size:13px}.md\\:text-sm{font-size:.875rem;line-height:1.25rem}.md\\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\\:col-span-2{grid-column:span 2/span 2}.lg\\:col-span-5{grid-column:span 5/span 5}.lg\\:col-span-7{grid-column:span 7/span 7}.lg\\:row-span-2{grid-row:span 2/span 2}.lg\\:block{display:block}.lg\\:inline{display:inline}.lg\\:hidden{display:none}.lg\\:w-56{width:14rem}.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\\:grid-cols-\\[minmax\\(0\\,5fr\\)_minmax\\(0\\,6fr\\)\\]{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.lg\\:flex-row{flex-direction:row}.lg\\:items-start{align-items:flex-start}.lg\\:items-end{align-items:flex-end}.lg\\:justify-between{justify-content:space-between}.lg\\:px-8{padding-left:2rem;padding-right:2rem}.lg\\:pl-10{padding-left:2.5rem}}@media (min-width:1280px){.xl\\:block{display:block}.xl\\:inline{display:inline}}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:pointer-events-auto::-moz-range-thumb{pointer-events:auto}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:h-4::-moz-range-thumb{height:1rem}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:w-4::-moz-range-thumb{width:1rem}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:cursor-pointer::-moz-range-thumb{cursor:pointer}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:rounded-full::-moz-range-thumb{border-radius:9999px}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:border-2::-moz-range-thumb{border-width:2px}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:border-blue-500::-moz-range-thumb{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.\\[\\\u0026\\:\\:-moz-range-thumb\\]\\:bg-white::-moz-range-thumb{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.\\[\\\u0026\\:\\:-webkit-details-marker\\]\\:hidden::-webkit-details-marker{display:none}.\\[\\\u0026\\:\\:-webkit-scrollbar-thumb\\]\\:rounded::-webkit-scrollbar-thumb{border-radius:.25rem}.\\[\\\u0026\\:\\:-webkit-scrollbar-thumb\\]\\:bg-neutral-700::-webkit-scrollbar-thumb{--tw-bg-opacity:1;background-color:rgb(64 64 64/var(--tw-bg-opacity,1))}.\\[\\\u0026\\:\\:-webkit-scrollbar-track\\]\\:bg-transparent::-webkit-scrollbar-track{background-color:#0000}.\\[\\\u0026\\:\\:-webkit-scrollbar\\]\\:hidden::-webkit-scrollbar{display:none}.\\[\\\u0026\\:\\:-webkit-scrollbar\\]\\:h-1::-webkit-scrollbar{height:.25rem}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:pointer-events-auto::-webkit-slider-thumb{pointer-events:auto}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:h-4::-webkit-slider-thumb{height:1rem}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:w-4::-webkit-slider-thumb{width:1rem}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:cursor-pointer::-webkit-slider-thumb{cursor:pointer}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:appearance-none::-webkit-slider-thumb{appearance:none}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:rounded-full::-webkit-slider-thumb{border-radius:9999px}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:border-2::-webkit-slider-thumb{border-width:2px}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:border-blue-500::-webkit-slider-thumb{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:bg-white::-webkit-slider-thumb{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.\\[\\\u0026\\:\\:-webkit-slider-thumb\\]\\:shadow-md::-webkit-slider-thumb{--tw-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;
10--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\\[\\\u0026\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=checkbox]){padding-right:0}.\\[\\\u0026\\\u003espan\\]\\:line-clamp-1\u003espan{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\\[\\\u0026\\\u003esvg\\+div\\]\\:translate-y-\\[-3px\\]\u003esvg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.\\[\\\u0026\\\u003esvg\\]\\:absolute\u003esvg{position:absolute}.\\[\\\u0026\\\u003esvg\\]\\:left-4\u003esvg{left:1rem}.\\[\\\u0026\\\u003esvg\\]\\:top-4\u003esvg{top:1rem}.\\[\\\u0026\\\u003esvg\\]\\:text-destructive\u003esvg{color:hsl(var(--destructive))}.\\[\\\u0026\\\u003esvg\\]\\:text-foreground\u003esvg{color:hsl(var(--foreground))}.\\[\\\u0026\\\u003esvg\\]\\:text-white\u003esvg{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.\\[\\\u0026\\\u003esvg\\~\\*\\]\\:pl-0\u003esvg~*{padding-left:0}.\\[\\\u0026\\\u003esvg\\~\\*\\]\\:pl-7\u003esvg~*{padding-left:1.75rem}.\\[\\\u0026\\\u003etr\\]\\:last\\:border-b-0:last-child\u003etr{border-bottom-width:0}.\\[\\\u0026_\\.mdxeditor\\]\\:min-h-\\[400px\\] .mdxeditor{min-height:400px}.\\[\\\u0026_\\.mdxeditor\\]\\:bg-white .mdxeditor{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.\\[\\\u0026_\\.mdxeditor\\]\\:text-black .mdxeditor{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.\\[\\\u0026_p\\]\\:leading-relaxed p{line-height:1.625}.\\[\\\u0026_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\\u0026_svg\\]\\:size-4 svg{width:1rem;height:1rem}.\\[\\\u0026_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\\u0026_tr\\:last-child\\]\\:border-0 tr:last-child{border-width:0}.\\[\\\u0026_tr\\]\\:border-b tr{border-bottom-width:1px}\n"])</script>
10<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"nOuoqr4ECmdeW9-9mOYbq\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[[\"locale\",\"en\",\"d\"],{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"style\",\"0\",{\"nonce\":\"$undefined\",\"precedence\":\"next\",\"href\":\"/_next/static/chunks/dba071b1790c78cf.css\",\"children\":\"$4\"}],\"$L5\",\"$L6\"],\"$L7\"]}],{\"children\":[\"$L8\",{},null,false,false]},null,false,false]},null,false,false],\"$L9\",false]],\"m\":\"$undefined\",\"G\":[\"$a\",[]],\"S\":false}\n"])</script>
10<script>self.__next_f.push([1,"5:[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n6:[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/3073ed4e47d4d993.js\",\"async\":true,\"nonce\":\"$undefined\"}]\nc:T727f,"])</script>
10<script>self.__next_f.push([1,".impeccable-module__CfFcga__page{--primary:#fafafa;--on-primary:#171717;--ink:#fff;--text:#fafafa;--muted:#9ca3af;--muted-soft:#8b93a1;--canvas:#0a0a0a;--surface:#111827;--surface-raised:#1f2937;--surface-chip:#262626;--border:#262626;--border-strong:#374151;--cta:#22d3ee;--cta-hover:#67e8f9;--on-cta:#171717;--sans:ui-sans-serif,system-ui,-apple-system,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;--mono:\"SFMono-Regular\",ui-monospace,\"SF Mono\",Menlo,Consolas,\"Liberation Mono\",monospace;--maxw:1220px;background:var(--canvas);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;line-height:1.6;overflow-x:hidden}.impeccable-module__CfFcga__page *{box-sizing:border-box}.impeccable-module__CfFcga__page a{color:inherit;text-decoration:none}.impeccable-module__CfFcga__page ::selection{color:#0a0a0a;background:#fafafa}.impeccable-module__CfFcga__wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}.impeccable-module__CfFcga__mono{font-family:var(--mono)}.impeccable-module__CfFcga__page a:focus-visible,.impeccable-module__CfFcga__page button:focus-visible{outline-offset:2px;border-radius:6px;outline:2px solid #fafafa}.impeccable-module__CfFcga__nav{z-index:50;-webkit-backdrop-filter:saturate(140%)blur(10px);backdrop-filter:saturate(140%)blur(10px);border-bottom:1px solid var(--border);background:#0a0a0ab8;height:64px;transition:background .3s,border-color .3s;position:sticky;top:0}.impeccable-module__CfFcga__navScrolled{border-bottom-color:var(--border-strong);background:#080808eb}.impeccable-module__CfFcga__nav .impeccable-module__CfFcga__wrap{align-items:center;gap:28px;height:64px;display:flex}.impeccable-module__CfFcga__wordmark{letter-spacing:-.02em;color:var(--ink);align-items:center;gap:9px;font-size:18px;font-weight:700;display:flex}.impeccable-module__CfFcga__glyph{width:18px;height:20px;display:inline-block}.impeccable-module__CfFcga__navlinks{gap:26px;margin-left:8px;display:flex}.impeccable-module__CfFcga__navlinks a{color:var(--muted);font-size:15px;transition:color .18s}.impeccable-module__CfFcga__navlinks a:hover{color:var(--text)}.impeccable-module__CfFcga__navRight{align-items:center;gap:14px;margin-left:auto;display:flex}.impeccable-module__CfFcga__btn{font-family:var(--sans);cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;font-size:14px;font-weight:500;transition:transform .15s,background .18s,border-color .18s,color .18s;display:inline-flex}.impeccable-module__CfFcga__btn:active{transform:translateY(1px)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPrimary{background:var(--cta);color:var(--on-cta);height:40px;padding:0 20px;box-shadow:0 1px 3px #0006,0 1px 2px -1px #0000004d}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPrimary:hover{background:var(--cta-hover)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPill{background:var(--cta);height:34px;color:var(--on-cta);padding:0 16px}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnPill:hover{background:var(--cta-hover)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnSecondary{color:var(--text);border-color:var(--border-strong);background:0 0;height:40px;padding:0 20px}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnSecondary:hover{background:#0f1115;border-color:#4b5563}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnGhost{color:var(--muted);background:0 0;height:40px;padding:0 14px}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__btnGhost:hover{color:var(--text)}.impeccable-module__CfFcga__btnLg{height:48px;padding:0 26px;font-size:15px}.impeccable-module__CfFcga__hero{border-bottom:1px solid var(--border);padding:84px 0 64px;position:relative;overflow:hidden}.impeccable-module__CfFcga__heroBg{z-index:0;opacity:.9;background:radial-gradient(120% 90% at 78% 8%,#3d6f9e1a,#0000 55%),url(/landing/hero-hexgrid.webp) 50% 40%/cover no-repeat;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 55%,#0000 100%);mask-image:linear-gradient(#000 55%,#0000 100%)}.impeccable-module__CfFcga__heroBg:after{content:\"\";background:linear-gradient(90deg,var(--canvas)22%,transparent 62%);position:absolute;inset:0}.impeccable-module__CfFcga__hero .impeccable-module__CfFcga__wrap{z-index:1;grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);align-items:center;gap:52px;display:grid;position:relative}.impeccable-module__CfFcga__eyebrow{font-family:var(--mono);letter-spacing:.06em;color:var(--muted);align-items:center;gap:10px;margin-bottom:22px;font-size:12.5px;display:inline-flex}.impeccable-module__CfFcga__eyebrow .impeccable-module__CfFcga__dot{background:var(--muted);border-radius:50%;outline:3px solid #9ca3af24;width:6px;height:6px}.impeccable-module__CfFcga__page h1{letter-spacing:-.03em;color:var(--ink);margin:0 0 20px;font-size:clamp(38px,5.2vw,60px);font-weight:700;line-height:1.04}.impeccable-module__CfFcga__page h1 .impeccable-module__CfFcga__em{color:var(--muted)}.impeccable-module__CfFcga__lede{color:var(--muted);max-width:38ch;margin:0 0 30px;font-size:20px;line-height:1.55}.impeccable-module__CfFcga__ctaRow{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.impeccable-module__CfFcga__reassure{font-family:var(--mono);color:var(--muted-soft);flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;font-size:12.5px;display:flex}.impeccable-module__CfFcga__reassure .impeccable-module__CfFcga__sep{opacity:.4}.impeccable-module__CfFcga__trust{border-top:1px solid var(--border);flex-wrap:wrap;gap:10px 22px;margin-top:34px;padding-top:22px;display:flex}.impeccable-module__CfFcga__trust span{font-family:var(--mono);color:var(--muted);align-items:center;gap:8px;font-size:12.5px;display:inline-flex}.impeccable-module__CfFcga__trust span:before{content:\"\";background:var(--muted-soft);border-radius:1px;width:5px;height:5px;transform:rotate(45deg)}.impeccable-module__CfFcga__console{border:1px solid var(--border-strong);background:linear-gradient(#0e1420,#0b0f18);border-radius:12px;overflow:hidden;box-shadow:0 24px 60px -30px #000000e6}.impeccable-module__CfFcga__consoleBar{border-bottom:1px solid var(--border);background:#0c111b;align-items:center;gap:8px;height:40px;padding:0 14px;display:flex}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__dot{background:#20262f;border-radius:50%;width:11px;height:11px}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__path{font-family:var(--mono);color:var(--muted-soft);white-space:nowrap;text-overflow:ellipsis;margin-left:10px;font-size:12px;overflow:hidden}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__live{font-family:var(--mono);color:var(--muted);align-items:center;gap:7px;margin-left:auto;font-size:11px;display:flex}.impeccable-module__CfFcga__consoleBar .impeccable-module__CfFcga__live b{background:var(--text);border-radius:50%;outline:3px solid #fafafa1a;width:6px;height:6px;display:inline-block}.impeccable-module__CfFcga__code{font-family:var(--mono);color:#c7cdd6;white-space:pre;margin:0;padding:18px 18px 6px;font-size:13px;line-height:1.75;overflow-x:auto}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__k{color:#9aa4b2}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__s{color:#e6ebf1}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__c{color:#5b6675}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__hl{color:#fafafa;background:#3d6f9e29;border-radius:3px;padding:0 3px;transition:background .3s}.impeccable-module__CfFcga__copyable{cursor:pointer;font:inherit;color:inherit;background:0 0;border:0;border-radius:3px;padding:0 2px;transition:background .18s}.impeccable-module__CfFcga__copyable:hover{background:#ffffff14}.impeccable-module__CfFcga__copied{background:#ffffff24}.impeccable-module__CfFcga__tabs{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:6px 16px 0;display:flex}.impeccable-module__CfFcga__tab{font-family:var(--mono);color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;padding:7px 10px;font-size:11.5px;transition:color .18s,background .18s}.impeccable-module__CfFcga__tab[aria-selected=true]{color:var(--ink);border-color:var(--border);background:#0c111b}.impeccable-module__CfFcga__response{border-top:1px solid var(--border);background:#0c111b;min-height:132px;padding:16px 18px}
10.impeccable-module__CfFcga__respMeta{font-family:var(--mono);color:var(--muted-soft);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;font-size:11.5px;display:flex}.impeccable-module__CfFcga__respMeta .impeccable-module__CfFcga__rank{color:var(--ink);margin-left:auto;font-weight:700}.impeccable-module__CfFcga__respBody{font-family:var(--mono);color:#dfe4ea;min-height:44px;font-size:12.5px;line-height:1.7}.impeccable-module__CfFcga__cursor{vertical-align:-2px;background:#fafafa;width:7px;height:15px;margin-left:1px;animation:1s step-end infinite impeccable-module__CfFcga__blink;display:inline-block}@keyframes impeccable-module__CfFcga__blink{50%{opacity:0}}.impeccable-module__CfFcga__band{border-bottom:1px solid var(--border);padding:88px 0;position:relative}.impeccable-module__CfFcga__bandHead{max-width:720px;margin-bottom:44px}.impeccable-module__CfFcga__page h2{letter-spacing:-.025em;color:var(--ink);margin:0 0 14px;font-size:clamp(27px,3.4vw,34px);font-weight:700;line-height:1.15}.impeccable-module__CfFcga__bandHead p{color:var(--muted);max-width:60ch;margin:0;font-size:18px}.impeccable-module__CfFcga__prob{grid-template-columns:1.1fr .9fr;align-items:start;gap:48px;display:grid}.impeccable-module__CfFcga__prob h2{max-width:18ch}.impeccable-module__CfFcga__probBig{color:var(--muted);margin:0;font-size:19px;line-height:1.6}.impeccable-module__CfFcga__painlist{flex-direction:column;gap:0;margin:0;padding:0;list-style:none;display:flex}.impeccable-module__CfFcga__painlist li{border-top:1px solid var(--border);align-items:flex-start;gap:16px;padding:18px 0;display:flex}.impeccable-module__CfFcga__painlist li:last-child{border-bottom:1px solid var(--border)}.impeccable-module__CfFcga__painlist .impeccable-module__CfFcga__n{font-family:var(--mono);color:var(--muted-soft);min-width:26px;padding-top:3px;font-size:12px}.impeccable-module__CfFcga__painlist .impeccable-module__CfFcga__t{color:var(--text);font-size:15.5px;line-height:1.55}.impeccable-module__CfFcga__steps{border:1px solid var(--border);border-radius:12px;grid-template-columns:repeat(3,1fr);gap:0;display:grid;overflow:hidden}.impeccable-module__CfFcga__step{border-right:1px solid var(--border);padding:32px 28px;position:relative}.impeccable-module__CfFcga__step:last-child{border-right:none}.impeccable-module__CfFcga__step .impeccable-module__CfFcga__badge{background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin-bottom:22px;display:flex}.impeccable-module__CfFcga__step .impeccable-module__CfFcga__badge svg{width:24px;height:24px;stroke:var(--text);fill:none;stroke-width:1.6px}.impeccable-module__CfFcga__step .impeccable-module__CfFcga__sn{font-family:var(--mono);color:var(--muted-soft);font-size:12px;position:absolute;top:26px;right:28px}.impeccable-module__CfFcga__step h3{color:var(--ink);margin:0 0 8px;font-size:18px;font-weight:600}.impeccable-module__CfFcga__step p{color:var(--muted);margin:0;font-size:15px;line-height:1.55}.impeccable-module__CfFcga__feat{grid-template-columns:1.4fr 1fr;grid-auto-rows:auto;gap:16px;display:grid}.impeccable-module__CfFcga__card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:26px;transition:border-color .2s,transform .2s}.impeccable-module__CfFcga__card:hover{border-color:var(--border-strong)}.impeccable-module__CfFcga__card .impeccable-module__CfFcga__ic{width:26px;height:26px;stroke:var(--text);fill:none;stroke-width:1.5px;margin-bottom:16px}.impeccable-module__CfFcga__card h3{color:var(--ink);margin:0 0 8px;font-size:18px;font-weight:600}.impeccable-module__CfFcga__card p{color:var(--muted);margin:0;font-size:15px;line-height:1.58}.impeccable-module__CfFcga__cardWide{flex-direction:column;grid-column:1;display:flex}.impeccable-module__CfFcga__cardTall{grid-area:1/2/span 2}.impeccable-module__CfFcga__usagebars{align-items:flex-end;gap:7px;height:88px;margin-top:22px;display:flex}.impeccable-module__CfFcga__usagebars i{border-top:1px solid var(--border-strong);background:linear-gradient(#2b3444,#161d29);border-radius:3px 3px 0 0;flex:1;display:block}.impeccable-module__CfFcga__catmini{border-top:1px solid var(--border);flex-direction:column;gap:12px;margin-top:20px;padding-top:14px;display:flex}.impeccable-module__CfFcga__catmini .impeccable-module__CfFcga__r{font-family:var(--mono);color:var(--muted);align-items:center;gap:12px;font-size:12px;display:flex}.impeccable-module__CfFcga__catmini .impeccable-module__CfFcga__r .impeccable-module__CfFcga__id{color:var(--text);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.impeccable-module__CfFcga__catmini .impeccable-module__CfFcga__r .impeccable-module__CfFcga__rk{color:var(--ink);font-weight:700;font-family:var(--sans);margin-left:auto;font-size:16px}.impeccable-module__CfFcga__cat{border:1px solid var(--border);background:linear-gradient(#0c111b,#0a0e16);border-radius:12px;overflow:hidden}.impeccable-module__CfFcga__catTop{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:14px 18px;display:flex}.impeccable-module__CfFcga__search{background:var(--surface-raised);border:1px solid var(--border-strong);
10min-width:200px;height:38px;color:var(--muted-soft);border-radius:8px;flex:1;align-items:center;gap:9px;padding:0 12px;font-size:13px;display:flex}.impeccable-module__CfFcga__search:focus-within{border-color:#4b5563}.impeccable-module__CfFcga__search svg{width:15px;height:15px;stroke:var(--muted-soft);fill:none;stroke-width:1.8px;flex:none}.impeccable-module__CfFcga__searchInput{min-width:0;height:100%;color:var(--text);font-family:var(--sans);background:0 0;border:0;outline:none;flex:1;font-size:13px}.impeccable-module__CfFcga__searchInput::placeholder{color:var(--muted-soft)}.impeccable-module__CfFcga__searchInput::-webkit-search-cancel-button{filter:grayscale()opacity(.6)}.impeccable-module__CfFcga__filters{flex-wrap:wrap;gap:7px;display:flex}.impeccable-module__CfFcga__chip{font-family:var(--mono);color:var(--muted);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;padding:6px 11px;font-size:11.5px;transition:color .18s,border-color .18s,background .18s}.impeccable-module__CfFcga__chip:hover{color:var(--text);border-color:var(--border-strong)}.impeccable-module__CfFcga__chip[aria-pressed=true]{color:var(--ink);border-color:var(--border-strong);background:var(--surface-chip)}.impeccable-module__CfFcga__crow{border-top:1px solid var(--border);grid-template-columns:1fr auto;align-items:center;gap:16px;padding:20px 18px;transition:background .18s;display:grid}.impeccable-module__CfFcga__crow:first-child{border-top:none}.impeccable-module__CfFcga__crow:hover{background:#ffffff04}.impeccable-module__CfFcga__crow[hidden]{display:none}.impeccable-module__CfFcga__cmain{min-width:0}.impeccable-module__CfFcga__cname{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.impeccable-module__CfFcga__cname b{color:var(--ink);font-size:16px;font-weight:600}.impeccable-module__CfFcga__cname .impeccable-module__CfFcga__id{font-family:var(--mono);color:var(--muted);font-size:12.5px}.impeccable-module__CfFcga__copy{cursor:pointer;width:22px;height:22px;color:var(--muted-soft);background:0 0;border:0;border-radius:5px;place-items:center;padding:0;display:inline-grid}.impeccable-module__CfFcga__copy svg{stroke:currentColor;fill:none;stroke-width:1.6px;width:13px;height:13px}.impeccable-module__CfFcga__copy:hover{color:var(--text)}.impeccable-module__CfFcga__copyDone{color:#7fca9f;font-size:12px;line-height:1}.impeccable-module__CfFcga__cmeta{font-family:var(--mono);color:var(--muted-soft);flex-wrap:wrap;gap:6px 16px;margin-top:8px;font-size:12px;display:flex}.impeccable-module__CfFcga__cmeta .impeccable-module__CfFcga__price{color:var(--muted)}.impeccable-module__CfFcga__crank{text-align:right;flex-direction:column;align-items:flex-end;gap:2px;display:flex}.impeccable-module__CfFcga__crank .impeccable-module__CfFcga__lbl{font-family:var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted-soft);font-size:10.5px}.impeccable-module__CfFcga__crank .impeccable-module__CfFcga__num{letter-spacing:-.03em;color:var(--ink);font-size:30px;font-weight:700;line-height:1}.impeccable-module__CfFcga__crank .impeccable-module__CfFcga__unranked{color:var(--muted);font-size:15px;font-weight:600;line-height:1.4}.impeccable-module__CfFcga__catFoot{border-top:1px solid var(--border);font-family:var(--mono);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:15px 18px;font-size:12.5px;display:flex}.impeccable-module__CfFcga__catFoot a{color:var(--text);border-bottom:1px solid var(--border-strong);padding-bottom:2px}.impeccable-module__CfFcga__catEmpty{border-top:1px solid var(--border);text-align:center;color:var(--muted);padding:34px 18px;font-size:14px;display:none}.impeccable-module__CfFcga__catEmptyShow{display:block}.impeccable-module__CfFcga__diff{border:1px solid var(--border);background:#0c111b;border-radius:12px;grid-template-columns:1fr;gap:0;max-width:760px;margin-top:40px;display:grid;overflow:hidden}.impeccable-module__CfFcga__diffline{font-family:var(--mono);border-top:1px solid var(--border);align-items:center;gap:14px;padding:11px 18px;font-size:13px;display:flex}.impeccable-module__CfFcga__diffline:first-child{border-top:none}.impeccable-module__CfFcga__diffRem{background:#78282824}.impeccable-module__CfFcga__diffRem .impeccable-module__CfFcga__mk{color:#c98b8b}.impeccable-module__CfFcga__diffAdd{background:#285a4629}.impeccable-module__CfFcga__diffAdd .impeccable-module__CfFcga__mk{color:#7fca9f}.impeccable-module__CfFcga__diffline .impeccable-module__CfFcga__mk{width:14px;color:var(--muted-soft)}.impeccable-module__CfFcga__diffline .impeccable-module__CfFcga__txt{color:#dfe4ea;white-space:pre;overflow-x:auto}.impeccable-module__CfFcga__diffNote{border-top:1px solid var(--border);color:var(--muted);padding:14px 18px;font-size:14px}.impeccable-module__CfFcga__conv{border-bottom:1px solid var(--border);align-items:center;min-height:520px;
10display:flex;position:relative;overflow:hidden}.impeccable-module__CfFcga__convBg{z-index:0;background:url(/landing/hero-convergence.webp) 100%/cover no-repeat;position:absolute;inset:0}.impeccable-module__CfFcga__convScrim{z-index:1;background:linear-gradient(90deg,var(--canvas)30%,#0a0a0ab8 55%,#0a0a0a26 100%);position:absolute;inset:0}.impeccable-module__CfFcga__convScrim:after{content:\"\";background:linear-gradient(180deg,var(--canvas),transparent 22%,transparent 78%,var(--canvas));position:absolute;inset:0}.impeccable-module__CfFcga__conv .impeccable-module__CfFcga__wrap{z-index:2;padding:80px 24px;position:relative}.impeccable-module__CfFcga__convInner{max-width:560px}.impeccable-module__CfFcga__conv h2{margin-bottom:16px;font-size:clamp(28px,3.8vw,40px)}.impeccable-module__CfFcga__conv p{color:var(--muted);max-width:48ch;margin:0 0 30px;font-size:19px}.impeccable-module__CfFcga__convStats{border-top:1px solid var(--border-strong);flex-wrap:wrap;gap:28px;padding-top:26px;display:flex}.impeccable-module__CfFcga__convStats .impeccable-module__CfFcga__st{flex-direction:column;gap:5px;display:flex}.impeccable-module__CfFcga__convStats .impeccable-module__CfFcga__st .impeccable-module__CfFcga__v{letter-spacing:-.03em;color:var(--ink);font-size:30px;font-weight:700;line-height:1}.impeccable-module__CfFcga__convStats .impeccable-module__CfFcga__st .impeccable-module__CfFcga__l{font-family:var(--mono);letter-spacing:.03em;color:var(--muted-soft);font-size:11.5px}.impeccable-module__CfFcga__faq{max-width:820px}.impeccable-module__CfFcga__qa{border-top:1px solid var(--border)}.impeccable-module__CfFcga__qa:last-child{border-bottom:1px solid var(--border)}.impeccable-module__CfFcga__qa summary{cursor:pointer;color:var(--ink);align-items:center;gap:16px;padding:22px 0;font-size:17px;font-weight:600;list-style:none;display:flex}.impeccable-module__CfFcga__qa summary::-webkit-details-marker{display:none}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus{flex:none;width:20px;height:20px;margin-left:auto;transition:transform .25s;position:relative}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:before,.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:after{content:\"\";background:var(--muted);border-radius:2px;transition:opacity .2s;position:absolute}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:before{height:1.5px;top:9px;left:2px;right:2px}.impeccable-module__CfFcga__qa summary .impeccable-module__CfFcga__plus:after{width:1.5px;top:2px;bottom:2px;left:9px}.impeccable-module__CfFcga__qa[open] summary .impeccable-module__CfFcga__plus{transform:rotate(45deg)}.impeccable-module__CfFcga__qa .impeccable-module__CfFcga__ans{color:var(--muted);max-width:68ch;padding:0 0 24px;font-size:15.5px;line-height:1.65}.impeccable-module__CfFcga__qa .impeccable-module__CfFcga__ans code{font-family:var(--mono);color:var(--text);background:var(--surface-chip);border-radius:4px;padding:2px 6px;font-size:13px}.impeccable-module__CfFcga__final{text-align:center;border-bottom:1px solid var(--border);padding:110px 0;position:relative;overflow:hidden}.impeccable-module__CfFcga__finalBg{z-index:0;opacity:.55;background:url(/landing/section-texture.webp) 50%/cover no-repeat;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 120%,#000,#0000 78%);mask-image:radial-gradient(70% 120%,#000,#0000 78%)}.impeccable-module__CfFcga__final .impeccable-module__CfFcga__wrap{z-index:1;position:relative}.impeccable-module__CfFcga__finalMark{opacity:.9;width:44px;height:48px;margin-bottom:26px;display:inline-flex}.impeccable-module__CfFcga__finalMark svg{width:44px;height:48px}.impeccable-module__CfFcga__final h2{letter-spacing:-.035em;margin-bottom:16px;font-size:clamp(32px,4.8vw,52px)}.impeccable-module__CfFcga__final p{color:var(--muted);max-width:56ch;margin:0 auto 34px;font-size:19px}.impeccable-module__CfFcga__finalCta{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.impeccable-module__CfFcga__finalCta .impeccable-module__CfFcga__btnPrimary{height:52px;padding:0 32px;font-size:16px}.impeccable-module__CfFcga__final .impeccable-module__CfFcga__reassure{justify-content:center;margin-top:22px}.impeccable-module__CfFcga__footer{padding:56px 0 40px}.impeccable-module__CfFcga__foot{grid-template-columns:2fr 1fr 1fr 1fr;gap:32px;display:grid}.impeccable-module__CfFcga__foot .impeccable-module__CfFcga__brand .impeccable-module__CfFcga__wordmark{margin-bottom:12px}.impeccable-module__CfFcga__foot .impeccable-module__CfFcga__brand p{color:var(--muted-soft);max-width:36ch;margin:0;font-size:14px}.impeccable-module__CfFcga__foot h4{text-transform:uppercase;letter-spacing:.08em;color:var(--muted-soft);margin:0 0 16px;font-size:12px;font-weight:600}.impeccable-module__CfFcga__foot ul{flex-direction:column;gap:11px;margin:0;padding:0;list-style:none;display:flex}.impeccable-module__CfFcga__foot ul a{color:var(--muted);font-size:14px;transition:color .18s}.impeccable-module__CfFcga__foot ul a:hover{color:var(--text)}.impeccable-module__CfFcga__footBot{border-top:1px solid var(--border);color:var(--muted-soft);font-size:13px;font-family:var(--mono);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:44px;padding-top:22px;display:flex}@media (max-width:960px){.impeccable-module__CfFcga__hero .impeccable-module__CfFcga__wrap{grid-template-columns:minmax(0,1fr);gap:40px}.impeccable-module__CfFcga__heroBg:after{background:linear-gradient(180deg,transparent,var(--canvas))}.impeccable-module__CfFcga__prob{grid-template-columns:1fr;gap:28px}.impeccable-module__CfFcga__feat{grid-template-columns:1fr}.impeccable-module__CfFcga__cardTall{grid-area:auto/1}.impeccable-module__CfFcga__foot{grid-template-columns:1fr 1fr}}@media (max-width:640px){.impeccable-module__CfFcga__navlinks{display:none}.impeccable-module__CfFcga__band{padding:64px 0}.impeccable-module__CfFcga__steps{grid-template-columns:1fr}.impeccable-module__CfFcga__step{border-right:none;border-bottom:1px solid var(--border)}.impeccable-module__CfFcga__step:last-child{border-bottom:none}.impeccable-module__CfFcga__lede{max-width:none}.impeccable-module__CfFcga__foot{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.impeccable-module__CfFcga__page *{transition:none!important;animation:none!important}}.impeccable-module__CfFcga__pageJa h1{font-size:clamp(30px,3.9vw,44px);line-height:1.25}.impeccable-module__CfFcga__pageJa .impeccable-module__CfFcga__final h2{font-size:clamp(26px,3.6vw,40px);line-height:1.3}.impeccable-module__CfFcga__pageJa .impeccable-module__CfFcga__lede{max-width:30em}.impeccable-module__CfFcga__consoleGroup{flex-direction:column;gap:12px;display:flex}.impeccable-module__CfFcga__modes{gap:6px;display:flex}
10.impeccable-module__CfFcga__page .impeccable-module__CfFcga__modeBtn{font-family:var(--mono);letter-spacing:.04em;border:1px solid var(--border);color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;padding:5px 14px;font-size:12px;transition:color .18s,border-color .18s,background .18s}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__modeBtn:hover{color:var(--text);border-color:var(--border-strong)}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__modeBtn[aria-pressed=true]{color:#7fe7f7;background:#22d3ee1a;border-color:#22d3ee73}.impeccable-module__CfFcga__respMedia{-o-object-fit:cover;object-fit:cover;background:#0c111b;border-radius:8px;width:100%;height:216px;display:block}.impeccable-module__CfFcga__code .impeccable-module__CfFcga__wrapStr{white-space:pre-wrap;word-break:break-all}.impeccable-module__CfFcga__mcp{grid-template-columns:1.2fr 1fr;align-items:center;gap:32px;display:grid}.impeccable-module__CfFcga__mcpTerm{border:1px solid var(--border-strong);color:var(--text);background:#0c111b;border-radius:12px;margin:0;padding:20px 22px;font-size:13px;line-height:1.75;overflow-x:auto}.impeccable-module__CfFcga__mcpPrompt{color:var(--muted-soft)}.impeccable-module__CfFcga__mcpRight{flex-direction:column;gap:18px;display:flex}.impeccable-module__CfFcga__mcpTools{flex-wrap:wrap;gap:8px;display:flex}.impeccable-module__CfFcga__page .impeccable-module__CfFcga__mcpChip{border:1px solid var(--border);color:var(--muted);border-radius:6px;padding:5px 12px;font-size:12.5px}.impeccable-module__CfFcga__page a.impeccable-module__CfFcga__mcpDocs{color:var(--text);font-size:14.5px}.impeccable-module__CfFcga__page a.impeccable-module__CfFcga__mcpDocs:hover{color:#7fe7f7}@media (max-width:860px){.impeccable-module__CfFcga__mcp{grid-template-columns:1fr}}.impeccable-module__CfFcga__consoleGroup .impeccable-module__CfFcga__console{flex-direction:column;height:480px;display:flex}.impeccable-module__CfFcga__consoleGroup .impeccable-module__CfFcga__response{flex-direction:column;flex:1;min-height:0;display:flex}.impeccable-module__CfFcga__consoleGroup .impeccable-module__CfFcga__respMedia{flex:1;height:auto;min-height:0}.impeccable-module__CfFcga__providerBand{border-bottom:1px solid var(--border);padding:30px 0}.impeccable-module__CfFcga__marqueeClip{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000);mask-image:linear-gradient(90deg,#0000,#000 8% 92%,#0000)}.impeccable-module__CfFcga__marqueeTrack{white-space:nowrap;align-items:center;width:max-content;animation:110s linear infinite impeccable-module__CfFcga__fmMarquee;display:flex}.impeccable-module__CfFcga__marqueeGroup{align-items:center;gap:60px;padding-right:60px;display:flex}.impeccable-module__CfFcga__marqueeItem{letter-spacing:-.01em;color:#8b93a1d9;align-items:center;gap:12px;font-size:21px;font-weight:600;display:inline-flex}.impeccable-module__CfFcga__marqueeItem img{opacity:.85}@keyframes impeccable-module__CfFcga__fmMarquee{to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.impeccable-module__CfFcga__marqueeTrack{animation:none}}.impeccable-module__CfFcga__procureGrid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}\n.home-module__aUD9Yq__heroHex{z-index:0;opacity:.9;position:absolute;inset:0}@media (min-width:768px){.home-module__aUD9Yq__heroHex{background:url(/landing/hex-background.webp) 50%/cover no-repeat}}.home-module__aUD9Yq__heroHex:after{content:\"\";background:radial-gradient(120% 90% at 78% 8%,#3d6f9e14,#0000 55%),linear-gradient(90deg,#0a0a0a 20%,#0a0a0a73 55%,#0000 75%);position:absolute;inset:0}.home-module__aUD9Yq__creditNote{color:#22d3ee}.home-module__aUD9Yq__procureGrid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.home-module__aUD9Yq__procureCtas{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}\n"])</script>
10<script>self.__next_f.push([1,"8:[\"$\",\"$1\",\"c\",{\"children\":[\"$Lb\",[[\"$\",\"style\",\"0\",{\"nonce\":\"$undefined\",\"precedence\":\"next\",\"href\":\"/_next/static/chunks/a45942dbe8084622.css\",\"children\":\"$c\"}],\"$Ld\",\"$Le\",\"$Lf\",\"$L10\",\"$L11\",\"$L12\"],\"$L13\"]}]\n9:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L14\",null,{\"children\":\"$L15\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L16\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L18\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\nd:[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/cc09a8d062505ab7.js\",\"async\":true,\"nonce\":\"$undefined\"}]\ne:[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/1afae2015e72b0fb.js\",\"async\":true,\"nonce\":\"$undefined\"}]\nf:[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n10:[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n11:[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/270cac6e3a68789d.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n12:[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/1dc42f21e0b2a78b.js\",\"async\":true,\"nonce\":\"$undefined\"}]\n13:[\"$\",\"$L19\",null,{\"children\":[\"$\",\"$17\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@1a\"}]}]\n1b:T4a5,[{\"@context\":\"https://schema.org\",\"@type\":\"Organization\",\"@id\":\"https://fastmetal.ai/#organization\",\"name\":\"FastMetal\",\"alternateName\":[\"ãã¡ã¹ãã¡ã¿ã«\"],\"legalName\":\"æ ªå¼ä¼ç¤¾å½é調éæ
å ±\",\"description\":\"FastMetal is a Japan-based AI gateway providing access to many LLMs and generative AI models through one OpenAI-compatible API, billed per token in Japanese yen or US dollars from a prepaid balance, with qualified invoices on yen purchases. Operated by æ ªå¼ä¼ç¤¾å½é調éæ
å ± (PSI-Japan).\",\"url\":\"https://fastmetal.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://fastmetal.ai/logo.svg\"},\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"ä¸çªçº7-1 ææ¥ä¸çªçºãã©ã¶208\",\"addressLocality\":\"å代ç°åº\",\"addressRegion\":\"æ±äº¬é½\",\"postalCode\":\"102-0075\",\"addressCountry\":\"JP\"},\"taxID\":\"T5010001015990\",\"sameAs\":[\"https://fastmetal.jp\",\"https://x.com/fastmetal_jp\",\"https://psi.jp/about-jp\"]},{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"@id\":\"https://fastmetal.ai/#website\",\"name\":\"FastMetal\",\"alternateName\":[\"ãã¡ã¹ãã¡ã¿ã«\"],\"url\":\"https://fastmetal.ai\",\"inLanguage\":\"en\",\"publisher\":{\"@id\":\"https://fastmetal.ai/#organization\"}}]7:[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"min-h-screen\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$1b\"}}],false,[[\"$\",\"$L1c\",null,{\"src\":\"https://www.googletagmanager.com/gtag/js?id=G-NKVK9NRE45\",\"strategy\":\"lazyOnload\"}],[\"$\",\"$L1c\",null,{\"id\":\"gtag-init\",\"strategy\":\"afterInteractive\",\"children\":\"
vendor: 118 bytes, line 10
10window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}gtag('js',new Date());gtag('config','
10G-NKVK9NRE45
vendor: 3 bytes, line 10
10');
10gtag('config','AW-18356933434');\"}]],\"$L1d\"]}]}]\n15:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script>
10<script>self.__next_f.push([1,"1d:[\"$\",\"$L1e\",null,{\"formats\":\"$undefined\",\"locale\":\"en\",\"messages\":{\"Metadata\":{\"landingGpt\":{\"title\":\"FastMetal â Every model. One endpoint. One bill.\",\"description\":\"An OpenAI-compatible gateway to 90+ large language models. Change one base URL, pay per token, and stop maintaining a different SDK for every provider.\"},\"landingImpeccable\":{\"title\":\"FastMetal â Every model. One endpoint. One bill.\",\"description\":\"One OpenAI-compatible API key in front of 90+ models. Pay per token. No lock-in.\"},\"title\":\"FastMetal\",\"description\":\"Prepaid credits billing for LLM inference\",\"home\":{\"title\":\"AI API Gateway â Text, Image \u0026 Video | FastMetal\",\"description\":\"OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL.\"},\"pricing\":{\"title\":\"Pricing - FastMetal\",\"description\":\"Per-token prices, in yen or US dollars, for every model on FastMetal, billed from a prepaid balance with no subscription. Card or bank transfer, qualified invoices, consumption tax at checkout, free models to start.\"},\"models\":{\"title\":\"Model Catalog - FastMetal\",\"description\":\"Every model FastMetal serves through one OpenAI-compatible API, with prices per million tokens, context length and arena rank. Filter by provider, modality and context window.\"},\"comparison\":{\"title\":\"Model Comparison - FastMetal\",\"description\":\"The same prompt sent to several models, answers side by side with response time and token count â real outputs from the FastMetal gateway, not benchmark scores.\"},\"blog\":{\"title\":\"Blog - FastMetal\",\"description\":\"The FastMetal blog: model launches and hands-on reviews, guides to LLM API pricing and usage, and product updates, for developers building on a Japanese AI gateway.\"},\"docs\":{\"title\":\"Documentation - FastMetal\",\"description\":\"API documentation, integration guides, and getting started tutorials for FastMetal.\"},\"chat\":{\"title\":\"Chat - FastMetal\",\"description\":\"Chat with AI models directly in the browser using your FastMetal API key.\"},\"dashboard\":{\"title\":\"Dashboard - FastMetal\",\"description\":\"Manage your API keys, view balances, and add usage budget.\"},\"keys\":{\"title\":\"API Keys - FastMetal\",\"description\":\"Generate and manage your API keys for accessing AI models.\"},\"billing\":{\"title\":\"Billing - FastMetal\",\"description\":\"View your transaction history and usage spending.\"},\"usage\":{\"title\":\"Usage - FastMetal\",\"description\":\"Track your API usage analytics and daily spending breakdown.\"},\"profile\":{\"title\":\"Profile - FastMetal\",\"description\":\"Manage your account settings and preferences.\"},\"signin\":{\"title\":\"Sign In - FastMetal\",\"description\":\"Sign in or create an account to access FastMetal AI inference platform.\"},\"legal\":{\"title\":\"Company Information | FastMetal\",\"description\":\"FastMetal company information and legal notices under Japan's Specified Commercial Transactions Act (ç¹å®åå弿³).\"},\"contact\":{\"title\":\"Contact | FastMetal\",\"description\":\"Contact FastMetal about pricing, enterprise and high-volume terms, partnerships and OEM, or technical support. Email [email protected]. Hours 9:00â17:00 JST.\"},\"enterprise\":{\"title\":\"For teams and high-volume use | FastMetal\",\"description\":\"FastMetal for businesses: billing in Japanese yen or US dollars, qualified invoices (T5010001015990), prepayment by card or bank transfer that caps spend, and many models behind one API key. What procurement usually asks, answered.\"},\"partners\":{\"title\":\"Partners and OEM | FastMetal\",\"description\":\"For hosting providers, system integrators and SaaS builders who want to offer AI features to their own customers. A provisioning API creates accounts, issues keys and allocates budget programmatically.\"},\"docsFaq\":{\"title\":\"FAQ - FastMetal\",\"description\":\"Answers to common questions about FastMetal pricing, supported models, the OpenAI-compatible API, data handling, and account management.\"},\"docsConcepts\":{\"title\":\"LLM API concepts - FastMetal\",\"description\":\"OpenAI-compatible APIs, Chat
10Completions, tokens, context windows, system prompts, temperature, function calling, MCP and rate limits â one explainer per concept you need before your first LLM API request.\"},\"docsHermes\":{\"title\":\"Hermes Setup - FastMetal\",\"description\":\"Connect the Hermes coding agent from Nous Research to FastMetal: the custom endpoint wizard, config.yaml, named providers, and auxiliary models.\"},\"vsIndex\":{\"title\":\"How FastMetal Compares | OpenRouter, Direct APIs \u0026 More\",\"description\":\"How FastMetal compares with OpenRouter, direct provider APIs, foreign-hosted services, and local LLMs â across billing, compatibility, and operations.\"},\"vsOpenrouter\":{\"title\":\"FastMetal vs OpenRouter | The AI Gateway Built for Japan\",\"description\":\"Both are multi-provider AI gateways with one API key. The differences are JPY billing, Japanese qualified invoices, and Japanese-language support.\"},\"vsLocalLlm\":{\"title\":\"FastMetal vs Self-Hosted LLMs | When to Use Ollama or vLLM\",\"description\":\"Local inference with Ollama or vLLM solves a different problem than an API gateway. Data requirements, fixed vs metered cost, and model access.\"},\"vsClaudeApi\":{\"title\":\"Claude API from Japan | FastMetal vs Anthropic Direct\",\"description\":\"Claude models with JPY billing and qualified invoices â FastMetal vs a direct Anthropic contract. Claude Code and the SDK work with a base-URL change.\"},\"vsOpenaiApi\":{\"title\":\"GPT Models via FastMetal | vs Contracting OpenAI Direct\",\"description\":\"GPT-family models over an OpenAI-compatible API with JPY billing, compared with a direct OpenAI contract â including features only the direct API offers.\"},\"vsForeignHosted\":{\"title\":\"AI Models Processed in Japan | FastMetal vs Overseas Hosting\",\"description\":\"Models whose prompt processing stays inside Japan â Claude Sonnet \u0026 Haiku on domestic-region profiles, plus LLM-jp â compared with overseas-routed APIs.\"},\"apps\":{\"title\":\"Apps - FastMetal\",\"description\":\"Fill in the blanks and press go. Meeting minutes, business emails, approval drafts, market research â small tools that put AI straight to work. Free apps need only an account.\"},\"compareIndex\":{\"title\":\"Model vs model: pricing, context window, real answers | FastMetal\",\"description\":\"Head-to-head comparisons of the LLMs FastMetal serves: pricing, context windows, arena rank and real answers to the same prompts.\"},\"bestIndex\":{\"title\":\"Best LLM APIs by use case: coding, Japanese, price | FastMetal\",\"description\":\"Models FastMetal serves today, ranked for coding, Japanese, math and more, plus by price and context window. Yen pricing included.\"},\"providers\":{\"title\":\"Become an inference provider | FastMetal\",\"description\":\"Sell inference to Japanese developers through FastMetal. Your OpenAI-compatible endpoint becomes a model in the catalog; FastMetal handles billing in yen or US dollars, tax and invoicing and pays you monthly. Japan-hosted models are prioritized.\"},\"providersApply\":{\"title\":\"Apply as an inference provider | FastMetal\",\"description\":\"Application form for inference providers who want their models routed through FastMetal.\"},\"providerConsole\":{\"title\":\"Provider console | FastMetal\",\"description\":\"Requests and tokens for the models you serve through FastMetal.\"},\"vsLolipop\":{\"title\":\"FastMetal vs Lolipop! AI Gateway | Bank transfer, media, routing\",\"description\":\"Two yen-billed AI gateways compared: payment methods and qualified invoices, supported modalities, how automatic routing chooses a model, and catalog breadth.\"},\"vsOrcarouter\":{\"title\":\"FastMetal vs OrcaRouter | Yen billing, bank transfer, routing\",\"description\":\"OrcaRouter bills in USD from a $20 minimum. FastMetal bills in yen from Â¥500 by card or bank transfer, or in US dollars from $5 by card. How the two route automatically, and what each can generate.\"},\"status\":{\"title\":\"Measured performance | Latency and throughput - FastMetal\",\"description\":\"Time to first token and throughput for every model FastMetal serves, measured on a schedule through the gateway itself.\"},\"costCalculator\":{\"title\":\"AI cost calculator: how much can you cut your LLM API bill? - FastMetal\",\"description\":\"Estimate in yen how much matching the model to the job cuts your LLM API bill, from your monthly spend, token volume or headcount. Uses FastMetal's current listed prices and compares every served model.\"},\"organization\":{\"title\":\"Organization | FastMetal\",\"description\":\"Your organization's balance, projects and members.\"}},\"Common\":{\"loading\":\"Loading...\",\"error\":\"Error\",\"refresh\":\"Refresh\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"delete\":\"Delete\",\"edit\":\"Edit\",\"back\":\"Back\",\"next\":\"Next\",\"previous\":\"Previous\",\"copyToClipboard\":\"Copy to clipboard\",\"copied\":\"Copied!\",\"minTopup\":\"Minimum top-up is {amount}\",\"copy\":\"Copy\",\"payAmountLabel\":\"You pay\",\"taxIncluded\":\"incl. {percent}% tax\",\"creditAndMin\":\"{credit} added as credit · minimum {min}\",\"arenaAttribution\":\"Rankings: LMArena leaderboard dataset (\u003cdataset\u003elmarena-ai/leaderboard-dataset\u003c/dataset\u003e), \u003clicence\u003eCC BY 4.0\u003c/licence\u003e, snapshot {date}; category names mapped and ratings rounded by FastMetal.\",\"arenaAttributionShort\":\"Leaderboard data: LMArena leaderboard dataset (\u003cdataset\u003elmarena-ai/leaderboard-dataset\u003c/dataset\u003e), \u003clicence\u003eCC BY 4.0\u003c/licence\u003e; category names mapped and ratings rounded by FastMetal.\"},\"Checkout\":{\"lineItemName\":\"FastMetal usage credit\",\"lineItemDescription\":\"Adds {amount} of usage credit to your API key. Only what you use is deducted.\"},\"Header\":{\"brand\":\"FastMetal\",\"pricing\":\"Pricing\",\"docs\":\"Docs\",\"models\":\"Models\",\"dashboard\":\"Dashboard\",\"keys\":\"Keys\",\"billing\":\"Billing\",\"usage\":\"Usage\",\"chat\":\"Chat\",\"comparisons\":\"Comparisons\",\"comparison\":\"Comparison\",\"adminUsers\":\"Users\",\"adminBlog\":\"Blog\",\"adminModelHealth\":\"Model health\",\"blog\":\"Blog\",\"signIn\":\"Sign In\",\"signOut\":\"Sign Out\",\"profile\":\"Profile\",\"getStarted\":\"Get started free\",\"apps\":\"Apps\",\"providerConsole\":\"Provider console\",\"adminProviders\":\"Providers\",\"adminAnalytics\":\"Analytics\",\"adminCampaigns\":\"Campaigns\",\"organization\":\"Organization\"},\"Footer\":{\"product\":\"Product\",\"pricing\":\"Pricing\",\"enterprise\":\"For business\",\"partners\":\"Partners\",\"providers\":\"For providers\",\"apiDocs\":\"API Docs\",\"guides\":\"Guides\",\"gettingStarted\":\"Getting Started\",\"apiReference\":\"API Reference\",\"account\":\"Account\",\"dashboard\":\"Dashboard\",\"usage\":\"Usage\",\"profile\":\"Profile\",\"legal\":\"Legal\",\"companyInfo\":\"Company Information\",\"privacyPolicy\":\"Privacy policy\",\"contact\":\"Contact\",\"copyright\":\"© {year} FastMetal. All rights reserved.\",\"compare\":\"Compare Alternatives\",\"compareOpenrouter\":\"vs OpenRouter\",\"compareLocalLlm\":\"vs Local LLMs\",\"compareAll\":\"All comparisons\",\"compareClaude\":\"vs Anthropic Direct\",\"compareOpenai\":\"vs OpenAI Direct\",\"compareForeignHosted\":\"vs Overseas Hosting\",\"apps\":\"Apps\",\"compareModels\":\"Model vs model\",\"compareBest\":\"Rankings by use case\",\"compareLolipop\":\"vs Lolipop! AI Gateway\",\"compareOrcarouter\":\"vs OrcaRouter\",\"costCalculator\":\"AI cost calculator\"},\"LandingPage\":{\"title\":\"FastMetal\",\"subtitle\":\"Prepaid credits billing for LLM inference\",\"signIn\":\"Sign In\",\"hero\":{\"headline\":\"Run AI Models with Simple Pay-Per-Use Billing\",\"subheadline\":\"Purchase credits, use any supp
10orted model, and track your spending in real-time. No subscriptions required.\",\"getStarted\":\"Get Started\",\"viewPricing\":\"View Pricing\",\"viewDocs\":\"View Documentation\"},\"features\":{\"title\":\"Everything You Need\",\"billing\":{\"title\":\"Usage-Based Billing\",\"description\":\"Pay only for what you use. Purchase credits via Stripe and track spending per token.\"},\"models\":{\"title\":\"Multiple Models\",\"description\":\"Access a variety of LLM models through a single unified API endpoint.\"},\"monitoring\":{\"title\":\"Real-Time Monitoring\",\"description\":\"Track your usage, spending, and remaining balance in real-time.\"},\"api\":{\"title\":\"OpenAI-Compatible API\",\"description\":\"Use the same API format you already know. Compatible with existing tools and libraries.\"}},\"models\":{\"title\":\"Supported Models\",\"description\":\"Access these models with a single API key\",\"viewAll\":\"View All Models\"},\"blog\":{\"title\":\"Latest Posts\",\"viewAll\":\"View all posts\"},\"pricing\":{\"title\":\"Simple, Transparent Pricing\",\"description\":\"Pay per token with no monthly fees or commitments\",\"learnMore\":\"Learn More About Pricing\"},\"cta\":{\"title\":\"Ready to Get Started?\",\"description\":\"Create an account and start using AI models in minutes.\",\"button\":\"Create Free Account\"}},\"Dashboard\":{\"title\":\"Dashboard\",\"integrations\":{\"claudeCode\":\"Claude Code\",\"openclaw\":\"OpenClaw\",\"githubCopilot\":\"GitHub Copilot\",\"crush\":\"Crush\",\"opencode\":\"OpenCode\",\"octofriend\":\"OctoFriend\",\"xcode\":\"Xcode\"},\"currentBalance\":\"Current Balance\",\"viewBilling\":\"View Billing\",\"totalRequests\":\"Total Requests\",\"viewUsage\":\"View Usage\",\"totalKeys\":\"Total Keys\",\"viewKeys\":\"View Keys\",\"curlExampleDescription\":\"Use your API key to make requests to the API gateway:\",\"whatNextTitle\":\"What next?\",\"tryChatTitle\":\"Try it in chat\",\"agentsTitle\":\"Use it in an agent\",\"curlTry\":\"Try it with cURL\",\"guide\":\"Guide\",\"mcpGuide\":\"MCP server setup\",\"addCreditTitle\":\"Add credit to start\",\"addCreditBody\":\"FastMetal is prepaid â no subscription. You only pay for what you use, drawn from the credit you add.\",\"addCreditCta\":\"Add credit\",\"tryFreeHint\":\"Try it now on the free model. Add credit to use the rest.\",\"curlFreeHint\":\"Runs as-is with this key and the free model.\",\"curlPlaceholderHint\":\"Replace YOUR_API_KEY with the key shown on the Keys page.\",\"creditTitle\":\"Add credit to use every model\",\"creditBody\":\"Add credit to use every model. Only what you use is deducted.\",\"appsHint\":\"Know what you need? Picking an app is the fastest route.\",\"appsLink\":\"Browse apps â\"},\"Keys\":{\"title\":\"API Keys\",\"createKey\":\"Create Key\",\"createKeyDescription\":\"Give your key a name so you can identify it later.\",\"done\":\"Done\",\"noKeys\":\"No API keys yet. Create one to get started.\",\"keyNamePlaceholder\":\"Enter key name\",\"keyNameRequired\":\"Key name is required\",\"saveKeyWarning\":\"Save this key â it won't be shown again:\",\"yourApiKeys\":\"Your API Keys\",\"keyName\":\"Name\",\"keyPreview\":\"Key\",\"balance\":\"Balance\",\"auto\":\"Auto\",\"autoOff\":\"Off\",\"autoActive\":\"On\",\"autoRange\":\"{threshold} â {amount}\",\"autoRetrying\":\"Retrying\",\"autoPaused\":\"Paused\",\"manageAutoTopup\":\"Auto top-up\",\"autoPausedWarning\":\"Automatic top-up is paused for {count} key(s). Review the settings before resuming.\",\"primary\":\"Primary\",\"actions\":\"Actions\",\"unnamed\":\"Unnamed\",\"delete\":\"Delete\",\"confirmDelete\":\"Confirm Delete\",\"cancel\":\"Cancel\",\"addBudget\":\"Add credit\",\"zeroBalanceWarning\":\"{count} key(s) have a zero balance. Queries will fail until you add credit.\",\"deleteKeyTitle\":\"Delete API Key\",\"deleteKeyWarning\":\"This action is irreversible. The key will be permanently deleted and any unused credits will be lost.\",\"deleteKeyConfirmPrompt\":\"Type \\\"{name}\\\" to confirm deletion.\",\"failedToGenerateKey\":\"Failed to generate key\",\"failedToDeleteKey\":\"Failed to delete key\",\"failedToCreateCheckout\":\"Failed to create checkout session\",\"revealOnce\":\"Reveal once\",\"revealTitle\":\"Reveal API key\",\"revealWarning\":\"This key can be shown only once. After you close it, it cannot be shown again. Reveal it now?\",\"revealConfirm\":\"Reveal\",\"revealFinal\":\"This is the only time this key will be shown. Save it somewhere safe.\",\"revealSaved\":\"I saved it\",\"revealAlreadyUsed\":\"This key has already been revealed.\",\"revealFailed\":\"Could not reveal the key. Please try again.\",\"copy\":\"Copy\",\"accountCurrencyJpy\":\"This account is billed in Japanese yen. Every key on it is funded in yen, by card or bank transfer.\",\"accountCurrencyUsd\":\"This account is billed in US dollars. Every key on it is funded in dollars, by card, at the USD price list.\",\"accountCurrencyFixed\":\"An account's currency is chosen at signup and can't be changed. For the other currency, create a second account.\",\"campaignKey\":\"Campaign allowance ({code})\",\"campaignExpires\":\"until {date}
10\",\"campaignNoActions\":\"No credit or deletion\"},\"AddBudget\":{\"title\":\"Add credit\",\"description\":\"Enter the amount to add.\",\"addBudget\":\"Add Budget\",\"skip\":\"Skip\",\"failed\":\"Failed to create checkout session\",\"keyChipLabel\":\"Adding to\",\"invoiceAmountLabel\":\"Invoice total\",\"methodLabel\":\"Payment method\",\"cardName\":\"Credit card\",\"cardFact1\":\"Credited right after payment\",\"cardFact2\":\"No transfer fee\",\"bankName\":\"Bank transfer\",\"bankFact1\":\"Credited automatically on payment\",\"bankFact2\":\"You pay the transfer fee\",\"payWithCard\":\"Pay {total} by card\",\"payWithCardNoTotal\":\"Pay by card\",\"payWithCardCaption\":\"You'll be taken to Stripe's secure checkout.\",\"issueInvoice\":\"Issue invoice\",\"issueInvoiceCaption\":\"The next screen shows the transfer details and the qualified invoice (PDF).\",\"autoTopupLabel\":\"Enable automatic top-up with this card\",\"autoTopupDescription\":\"Save the card to this account and top up this key when its balance reaches your threshold.\",\"autoTopupThreshold\":\"Threshold\",\"autoTopupAmount\":\"Top-up amount\",\"autoTopupCap\":\"30-day cap\",\"autoTopupValidation\":\"The amount must be at least {min} above the threshold, and the cap must cover one top-up.\",\"autoTopupThresholdTooHigh\":\"The purchase amount must be greater than the threshold, or this card is charged again as soon as the credit lands.\",\"autoTopupCapExplanation\":\"The cap limits pre-tax credit automatically added across a rolling 30-day window; it is not a usage-spend cap.\",\"autoTopupSweeperGuidance\":\"For unattended agents, set the threshold above at least two minutes of expected usage so polling has time to react.\",\"autoTopupVerification\":\"Your bank may ask you to verify the card during this checkout.\"},\"AutoTopUp\":{\"title\":\"Automatic top-up\",\"description\":\"Manage automatic top-up for {key}.\",\"unnamed\":\"unnamed key\",\"loadFailed\":\"Could not load automatic top-up settings.\",\"saveFailed\":\"Could not update automatic top-up settings.\",\"portalFailed\":\"Could not open the Stripe Customer Portal.\",\"cardSaved\":\"A card is saved\",\"noCard\":\"No default card is saved\",\"manageCard\":\"Manage card\",\"threshold\":\"Threshold\",\"amount\":\"Top-up amount\",\"cap\":\"30-day cap\",\"validation\":\"Each value must be at least {min}. The amount must be {min} above the threshold, and the cap must cover one top-up.\",\"capExplanation\":\"This is a cap on pre-tax credit added automatically in a rolling 30-day window, not a spend cap.\",\"sweeperGuidance\":\"For unattended agents, keep the threshold above at least two minutes of expected burn.\",\"windowSpent\":\"Automatically credited in the current window: {spent}. Account safety ceiling: {accountCap}.\",\"pausedWarning\":\"Automatic top-up is paused. Raw card decline details are never shown here; review the card and settings before resuming.\",\"save\":\"Save and enable\",\"resume\":\"Resume\",\"turnOff\":\"Turn off\",\"saved\":\"Automatic top-up is active.\",\"disabled\":\"Automatic top-up is off.\",\"disabledInFlight\":\"Automatic top-up is off. A charge already in flight may still finish and will be credited.\"},\"Billing\":{\"title\":\"Billing\",\"description\":\"View your balance, spending, and transaction history.\",\"currentBalance\":\"Current Balance\",\"totalSpend\":\"Total Spend\",\"totalRequests\":\"Total Requests\",\"transactionHistory\":\"Transaction History\",\"transactionDescription\":\"A record of all credits and debits on your account.\",\"noTransactions\":\"No transactions yet.\",\"date\":\"Date\",\"type\":\"Type\",\"key\":\"Key\",\"amount\":\"Amount\",\"invoice\":\"Invoice\",\"viewInvoice\":\"View\",\"invoiceArchive\":\"Invoice archive\",\"credit\":\"Credit\",\"debit\":\"Debit\",\"page\":\"Page {page} of {totalPages}\",\"addBudget\":\"Add Budget\"},\"Auth\":{\"createAccount\":\"Create Account\",\"signIn\":\"Sign In\",\"invalidCredentials\":\"Invalid credentials. Please try again.\",\"emailLabel\":\"Email\",\"emailPlaceholder\":\"[email protected]\",\"passwordLabel\":\"Password\",\"passwordPlaceholder\":\"Password\",\"pleaseWait\":\"Please wait...\",\"alreadyHaveAccount\":\"Already have an account? Sign in\",\"dontHaveAccount\":\"Don't have an account? Register\",\"continueWithGoogle\":\"Continue with Google\",\"orContinueWith\":\"or continue with email\",\"forgotPassword\":\"Forgot password?\",\"forgotPasswordDescription\":\"Enter your email address and we'll send you a link to reset your password.\",\"sendResetLink\":\"Send Reset Link\",\"checkYourEmail\":\"If an account exists with that email, we've sent a password reset link.\",\"backToSignIn\":\"Back to Sign In\",\"resetPassword\":\"Reset Password\",\"newPassword\":\"New Password\",\"confirmPassword\":\"Confirm Password\",\"passwordMismatch\":\"Passwords do not match\",\"passwordTooShort\":\"Password must be at least {min} characters\",\"passwordResetSuccess\":\"Your password has been reset. Redirecting to sign in...\",\"resetPasswordError\":\"Failed to reset password. The link may have expired.\",\"invali
10dToken\":\"Invalid or expired link\",\"requestNewLink\":\"Request a new link\",\"verifyEmail\":\"Verify Email\",\"verifyingEmail\":\"Verifying your email...\",\"emailVerified\":\"Your email has been verified!\",\"emailVerifiedRedirecting\":\"Your email is confirmed â taking you inâ¦\",\"verificationError\":\"Failed to verify email. The link may have expired.\",\"continueToDashboard\":\"Continue to Dashboard\",\"checkEmailTitle\":\"Check your inbox\",\"checkEmailBody\":\"We sent a confirmation link to {email}. Click it, then sign in â your API key will be waiting.\",\"checkEmailResend\":\"Send the link again\",\"checkEmailResent\":\"If that address has an unconfirmed account, a new link is on its way. Check spam too.\",\"checkEmailError\":\"Couldnât send the email. Please try again shortly.\",\"checkEmailWrongAddress\":\"Wrong address? Register again with the right one\",\"signInToContinue\":\"Sign in to continue\",\"checkEmailSignIn\":\"Iâve clicked the link â sign in\",\"checkEmailBodyNoAddress\":\"Enter the address you registered with and weâll send the confirmation link again.\",\"referralBanner\":\"You're being referred (code: {code}). Sign up to give your friend a credit bonus.\",\"nurtureOptIn\":\"Send me tips and product updates by email. You can unsubscribe anytime.\",\"emailAlreadyRegistered\":\"That email is already registered.\",\"useGoogleSignIn\":\"This account was created with Google. Use the âContinue with Googleâ button above to sign in.\",\"switchToSignIn\":\"Sign in instead\",\"passwordHint\":\"At least {min} characters\",\"registrationFailed\":\"Could not create your account. Please try again.\",\"oauthFailed\":\"Google sign-in could not be completed. Please try again, or continue with your email address below.\",\"oauthAccountNotLinked\":\"An account already exists with this email address. Sign in with your email and password instead.\",\"signupCreditLine\":\"Sign up and get {amount} in free credit\",\"showPassword\":\"Show\",\"hidePassword\":\"Hide\",\"emailDomainBlocked\":\"This email domain can't be used to register. Please use a different address.\",\"signupsPaused\":\"New signups are paused right now. Existing users can still sign in.\",\"turnstileFailed\":\"Verification failed â please try again.\",\"turnstileUnavailable\":\"Couldnât load the verification check. Reload the page, or try a different network or browser.\",\"tooManyRequests\":\"Too many attempts. Please wait a minute and try again.\",\"accountCurrencyLabel\":\"Account currency\",\"accountCurrencyJpy\":\"Japanese yen (Â¥)\",\"accountCurrencyUsd\":\"US dollars ($)\",\"accountCurrencyNote\":\"Every key and every top-up on this account uses this currency. It canât be changed later â for the other currency, create a second account.\",\"privacyNotice\":\"By creating an account you agree to our \u003clink\u003eprivacy policy\u003c/link\u003e.\",\"currencyNotAvailable\":\"That currency isnât available right now. Choose another and try again.\",\"completeSignup\":\"Fill in the form below first, then continue with Google.\",\"invalidBillingDetails\":\"Check the highlighted billing details.\",\"accountDisabled\":\"This account has been disabled. Contact support if you think this is a mistake.\"},\"Unsubscribe\":{\"successHeading\":\"You're unsubscribed\",\"successBody\":\"You won't receive any more product update emails. We'll still send account and billing notifications.\",\"invalidHeading\":\"Link not recognized\",\"invalidBody\":\"This unsubscribe link is invalid or has expired. If you keep receiving emails, contact support.\",\"home\":\"Back to home\",\"confirmHeading\":\"Unsubscribe from FastMetal emails?\",\"confirmBody\":\"Click the button below to stop receiving product update emails. You will still receive account and billing notifications.\",\"confirmButton\":\"Unsubscribe\"},\"Referral\":{\"title\":\"Refer a Friend\",\"description\":\"When a friend signs up using your link, you get {bonus} credit on your primary key.\",\"copyLink\":\"Copy link\",\"copied\":\"Copied!\",\"referralsCount\":\"Successful referrals: {used} / {cap}\",\"totalEarned\":\"Earned: {amount}\"},\"Chat\":{\"title\":\"Chat\",\"selectModel\":\"Select model\",\"selectKey\":\"Select API key\",\"backToDashboard\":\"Back to Dashboard\",\"startConversation\":\"Start a conversation by typing a message below.\",\"noKeys\":\"You don't have any API keys yet.\",\"noKeysAction\":\"Go to Dashboard to create one.\",\"generateKeyCta\":\"Generate an API key\",\"generateKeyPending\":\"Generatingâ¦\",\"generateKeyFailed\":\"Could not generate a key. Open the dashboard to create one.\",\"defaultKeyName\":\"Default\",\"noCredit\":\"This key has no credit. Add credit to start sending messages.\",\"substitutedHeadline\":\"{model} needs credit.\",\"substitutedBody\":\"Switched to a free model for now â send a message to try it.\",\"substitutedCta\":\"Add credit to use {model}\",\"addCreditCta\":\"Add credit\",\"you\":\"You\",\"ai\":\"AI\",\"thinking\":\"Thinking...\",\"errorPrefix\":\"Error:\",\"typeMessage\":\"Type a message...\",\"sending\":\"Sending...\",\"send\":\"Send\",\"stop\":\"Stop\",\"clear\":\"Clear\",\"copy\":\"Copy\",\"copied\":\"Copied\",\"regenerate\":\"Regenerate\",\"systemPrompt\":\"System prompt\",\"systemPromptPlaceholder\":\"Set instructions for the AI (optional). Applied at the start of every reply.\",\"systemPromptShow\":\"Show system prompt\",\"systemPromptHide\":\"Hide\",\"newChat\":\"New chat\",\"conversations\":\"Conversations\",\"noConversations\":\"No conversations yet.\",\"rename\":\"Rename\",\"delete\":\"Delete\",\"confirmDelete\":\"Delete this conversation?\",\"edit\":\"Edit\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"untitled\":\"Untitled\",\"openSidebar\":\"Show conversations\",\"closeSidebar\":\"Close conversations\",\"attach\":\"Attach file\",\"removeAttachment\":\"Remove attachment\",\"uploading\":\"Uploading...\",\"decrypting\"
10:\"Decrypting...\",\"attachmentDecryptFailed\":\"Could not decrypt attachment.\",\"modelLabel\":\"Model\",\"keyLabel\":\"Key\",\"reasoningLabel\":\"Thinking\",\"reasoningTitle\":\"How hard the model thinks before answering. Thinking tokens bill as output\",\"reasoningOff\":\"Off\",\"reasoningEffort\":{\"minimal\":\"Minimal\",\"low\":\"Low\",\"medium\":\"Medium\",\"high\":\"High\",\"xhigh\":\"Extra high\",\"max\":\"Max\"},\"imageMode\":\"Image\",\"textMode\":\"Text\",\"videoMode\":\"Video\",\"generatingImage\":\"Generating image...\",\"generatingVideo\":\"Generating video. This may take a few minutes...\",\"typeImagePrompt\":\"Describe the image you want...\",\"typeVideoPrompt\":\"Describe the video you want...\",\"videoSpec\":\"{duration}s · {resolution}\",\"videoSpecWithAudio\":\"{duration}s · {resolution} · audio\",\"videoPrice\":\"{price} / video\",\"videoModelOption\":\"{label} ({price})\",\"videoUnavailable\":\"No video models are currently enabled.\",\"videoEncryptedUnavailable\":\"Video generation is not yet available in encrypted chats.\",\"generatedVideo\":\"Generated video\",\"downloadVideo\":\"Download video\",\"encrypt\":\"Encrypt\",\"encryptChat\":\"Encrypt this chat\",\"encryptThisChat\":\"Encrypt this chat\",\"encryptNewChat\":\"Encrypt next chat\",\"encrypted\":\"Encrypted\",\"lockNow\":\"Lock now\",\"unlock\":\"Unlock\",\"unlockChat\":\"Unlock chat\",\"lockedChatTitle\":\"This chat is locked\",\"lockedChatBody\":\"Enter the password you set for this chat to read its messages.\",\"newChatWillBeEncrypted\":\"Your next message will create an encrypted chat.\",\"password\":\"Password\",\"confirmPassword\":\"Confirm password\",\"passwordRequired\":\"Enter a password.\",\"passwordMismatch\":\"Passwords do not match.\",\"wrongPassword\":\"Incorrect password.\",\"mustAcknowledge\":\"You must acknowledge the warning to continue.\",\"encryptionFailed\":\"Encryption failed. Please try again.\",\"working\":\"Working...\",\"caveatsTitle\":\"Important\",\"caveatTitleNotEncrypted\":\"If you rename this chat, the title is stored unencrypted. Encrypted chats are saved as untitled by default â only what you type into the title field is visible to anyone with database access.\",\"caveatLiveTraffic\":\"When you send a new message, the plaintext flows through our servers in real time so the AI model can read it. Only storage at rest is encrypted.\",\"caveatInferenceLogs\":\"Inference traces may still be logged on the model side. We attempt to disable this for encrypted sessions but cannot guarantee third-party providers don't retain inputs.\",\"caveatMetadata\":\"Metadata (timestamps, model name, token counts) is still visible to billing.\",\"caveatBrowserMemory\":\"While the chat is unlocked, your browser holds the derived key in memory; another tab or extension with sufficient privileges could observe it.\",\"caveatConvertBackups\":\"Future writes will be encrypted, but existing database backups and write-ahead logs may still contain the plaintext version of this chat for the duration of our retention window.\",\"unrecoverableWarning\":\"I understand: if I lose this password, this chat is gone forever. There is no recovery.\",\"encryptionDescription\":\"Pick a password to encrypt this chat. We never see it. If you lose it, the chat is unrecoverable.\",\"errors\":{\"budgetExceeded\":\"Budget exceeded. Please purchase more credits.\",\"rateLimited\":\"This model is currently rate limited. Please try again later.\",\"rateLimitedFree\":\"Free models are often slow or temporarily offline. We apologize for the inconvenience. Please try again later.\",\"requestFailed\":\"Chat request failed. Please try again.\",\"requestTimedOut\":\"Request timed out. Please try again.\",\"unauthorized\":\"Your session has expired. Please sign in again.\",\"invalidKey\":\"The selected API key is no longer valid. Please select a different key or generate a new one from the Dashboard.\",\"imageGenerationFailed\":\"Image generation failed. Please try again.\",\"imageGenerationTimedOut\":\"Image generation timed out. Please try again.\",\"videoGenerationFailed\":\"Video generation failed. Please try again.\",\"videoGenerationTimedOut\":\"Video generation is taking longer than expected. Reload this conversation to resume checking it.\",\"attachmentTooLarge\":\"File too large (max 25MB).\",\"unsupportedAttachment\":\"Unsupported file type. Use JPEG, PNG, GIF, WebP, or PDF.\",\"attachmentFailed\":\"Upload failed. Please try again.\",\"attachmentDecryptFailed\":\"Could not decrypt one of the attachments. The chat may need to be re-unlocked.\",\"attachmentsBlockEncryption\":\"Remove the attachments from this chat before encrypting it.\",\"decisionsBlockEncryption\":\"This chat holds a decision result, which cannot be encrypted. Start a new chat to use encryption.\",\"unknown\":\"An error occurred.\"},\"needsCredit\":\"needs credit\",\"tryFreeModel\":\"Try the free model\",\"creditAddedNotice\":\"Credit added.\",\"browseApps\":\"Not sure what to ask? Start from an app â\",\"modelPickerTitle\":\"Choose a model\",\"modelPickerSubtitle\":\"{count} text models · prices per 1M tokens\",\"modelSearchPlaceholder\":\"Search by model or provider\",\"modelGroupRecommended\":\"Recommended\",\"modelGroupAll\":\"All models\",\"modelGroupOther\":\"Other\",\"modelGroupRouter\":\"Router\",\"modelFilterHeading\":\"Filter by trait\",\"modelFilterJapan\":\"Hosted in Japan\",\"modelFilterVision\":\"Reads images\",\"modelFilterFree\":\"Free to try\",\"modelProviderHeading\":\"Provider\",\"modelPriceHeading\":\"In / Out\",\"modelClearFilters\":\"Clear filters\",\"modelNoResults\":\"No models match that search.\",\"modelSortCheapest\":\"Cheapest first\",\"modelResultCount\":\"{count} models\",\"modelSelected\":\"Selected\",\"modelViewCatalog\":\"Open the catalog\",\"modelBadgeVision\":\"Vision\",\"modelBadgeJapan\":\"Japan\",\"modelBadgeFree\":\"Free\",\"modelAutoName\":\"Auto (routed)\",\"modelAutoPrice\":\"Varies\",\"modelAutoMediumName\":\"Auto: medium\",\"modelAutoHardName\":\"Auto: hard\",\"modelAutoMaxName\":\"Auto: max\",\"modelAutoMediumDesc\":\"Cheapest model at or above quality band 3; billed at the resolved model's price\",\"modelAutoHardDesc\":\"Cheapest model at or above quality band 4; billed at the resolved model's price\",\"modelAutoMaxDesc\":\"Cheapest model at quality band 5; billed at the resolved model's price\",\"modelChange\":\"Change model\",\"decisionsMode\":\"Decisions\",\"decisionsIntroTitle\":\"Decisions mode\",\"decisionsIntroBody\":\"Describe a situation and get a typed answer to each of your questions â a choice, a probability, a score â instead of prose. The questions are settings; the situation is what you type each time.\",\"decisionsUnavailable\":\"No decision model is configured.\",\"decisionsEncryptedUnavailable\":\"Decisions are not available in encrypted conversations.\",\"typeDecisionState\":\"Describe the situationâ¦\",\"decisionRun\":\"Decide\",\"deciding\":\"Decidingâ¦\",\"decisionTemplates\":\"Start from a template\",\"decisionTemplateQuestions\":\"{count} questions\",\"decisionTemplateStartEmpty\":\"Start from an empty question set\",\"questionSetBar\":\"Question set\",\"questionSetSummary\":\"{count} questions · {types}\",\"questionSetEmpty\":\"Not set\",\"questionSetEdit\":\"Edit\",\"questionSetTitle\":\"Question set\",\"questionSetIntro\":\"Answers come back under these exact names. The shape of criteria changes with the type. Up to {max} questions.\",\"questionSetSave\":\"Save and close\",\"questionSetBytes\":\"{bytes} / {max} bytes\",\"questionName\":\"Question name\",\"questionNamePlaceholder\":\"e.g. intent\",\"questionInstructions\":\"instructions â what to judge\",\"questionInstructionsPlaceholder\":\"e.g. What the customer is asking for\",\"questionChoiceCriteria\":\"criteria â each option and what it means (two or more)\",\"questionScoreCriteria\":\"criteria â lowest step first (this order becomes 0, 1, 2â¦)\",\"questionNoulCriteriaOptional\":\"criteria is optional here. Add it only to spell out what true and false mean.\",\"questionOptionName\":\"Option name\",\"questionOptionMeaning\":\"What this option means\",\"questionOptionNameAt\":\"Option name {n}\",\"questionOptionMeaningAt\":\"Meaning of option {n}\",\"questionOptionRemoveAt\":\"Remove option {n}\",\"questionAddOption\":\"Add option\",\"questionAddStep\":\"Add step\",\"questionAdd\":\"Add question ({remaining} left)\",\"questionRemove\":\"Remove {name}\",\"questionTypeHint\":{\"choice\":\"Picks one option from a set\",\"noul\":\"Answered as the probability it is true\",\"score\":\"Answered on a 0-based scale\"},\"questionNameError\":{\"required\":\"Give the question a name.\",\"pattern\":\"Names are 1â64 characters of AâZ, aâz, 0â9, underscore or hyphen.\",\"duplicate\":\"Two questions share this name. Answers come back keyed by name, so each must be unique.\"},\"questionCriteriaError\":{\"too_few\":\"At least two are needed.\",\"incomplete\":\"A row is blank. Fill it in or remove it.\"},\"decisionConfidence\":\"Confidence {value}\",\"decisionStep\":\"Step {n}\",\"decisionTokens\":\"{tokens} tokens\",\"decisionNoulNote\":\"This is the probability the statement is true, not a verdict. 0.5 is neither answer.\",\"decisionCopyJson\":\"Copy JSON\",\"decisionError\":{\"state_required\":\"Describe the situation you want judged.\",\"questions_required\":\"Set up a question set first.\",\"questions_empty\":\"Add at least one question.\",\"question_set_invalid\":\"The question set has blank or invalid fields.\",\"too_many_questions\":\"Too many questions (max {max}).\",\"too_large\":\"The request is too large ({bytes} bytes, max {max}). Shorten the situation or split the questions across calls.\",\"busy\":\"Busy right now. Try again in a moment.\",\"rate_limited\":\"Decisions are temporarily rate limited. Try again shortly.\",\"budget_exceeded\":\"Your balance is empty. Add credit to continue.\",\"route_denied\":\"This key cannot run decisions. Generate a new key from the dashboard.\",\"upstream_auth\":\"The decision service could not be reached. Nothing was charged â try again later.\",\"upstream_rejected\":\"The decision was rejected. Check the shape of your questions.\",\"ambiguous\":\"No answer arrived, so whether it was charged is unknown. Retrying buys a second decision; it cannot recover the first.\",\"charged_unreadable\":\"The result could not be read. This request was charged â contact support to have it credited.\",\"billing_key_invalid\":\"That key cannot be used.\",\"unknown_model\":\"That model is not available.\",\"unavailable\":\"No decision model is configured.\",\"generic\":\"The decision failed.\"},\"orgNoCredit\":\"This key spends {organization}'s balance, which has run out. Ask an administrator of that organization to add credit.\"},\"LanguageSwitcher\":{\"language\":\"Language\",\"english\":\"English\",\"japanese\":\"Japanese\"},\"Pricing\":{\"title\":\"Pricing\",\"subtitle\":\"Simple, usage-based pricing. Pay only for what you use.\",\"definition\":\"FastMetal bills per token from a prepaid balance â in Japanese yen, or in US dollars on a US-dollar account â topped up by card, or by bank transfer for yen: each model has its own input and output price per million tokens (below), there is no subscription or minimum, and the free models cost nothing.\",\"faq\":{\"title\":\"Pricing questions\",\"intro\":\"All {count} answers, collapsed. Click a question to open it.\",\"expandAll\":\"Expand all\",\"collapseAll\":\"Collapse all\",\"howPriced\":{\"q\":\"How is the price of a request calculated?\",\"a\":\"Each model has an input price and an output price per million tokens, listed in the table above in yen or, with the currency switch, in US dollars; an account is always billed in the currency it was opened in. A request costs its prompt tokens at the input rate plus its generated tokens at the output rate; image and video models are priced per image or per video instead, and structured decisions are a flat price per accepted request that does not change with the number of questions or the length of the body. The amount is deducted from your balance as the request completes.\"},\"prepaid\":{\"q\":\"Is there a subscription or a monthly minimum?\",\"a\":\"No. You add credit to your balance by card or bank transfer and requests draw it down; payments are processed through Stripe. When the balance reaches zero, paid requests stop until you add more â the balance is also your spending c
10ap.\"},\"payment\":{\"q\":\"What payment methods are there? Can I pay by bank transfer?\",\"a\":\"For a yen account: credit card or Japanese bank transfer (furikomi), both prepaid, both from Â¥500, both with a qualified invoice. A US-dollar account tops up by card, from $5. Choosing bank transfer issues the invoice immediately with a virtual bank account dedicated to you; it is payable for 14 days, and your balance is credited automatically once the transfer lands, so you do not need to notify us. The sender pays the transfer fee. One open transfer invoice at a time. There is no postpaid month-end invoicing.\"},\"free\":{\"q\":\"Can I try it without paying?\",\"a\":\"Yes. The free models (random-free, gemini-flash-lite-free) can be called at Â¥0 with a fresh account, from the browser chat or the API, within a per-key rate limit. Paid models need a positive balance.\"},\"tax\":{\"q\":\"Do the listed prices include consumption tax?\",\"a\":\"The per-token prices are before tax. Japanese consumption tax is added when you buy credit, and the checkout shows the tax-inclusive total before you pay.\",\"aResidency\":\"The per-token prices are before tax. Japanese consumption tax is added when a customer located in Japan buys credit â an individual living in Japan, or a company headquartered there â and the checkout shows the tax-inclusive total before you pay. Customers located outside Japan pay no Japanese consumption tax.\"},\"invoice\":{\"q\":\"Do you issue qualified invoices (驿 ¼è«æ±æ¸)?\",\"a\":\"Yes. FastMetal is a registered qualified invoice issuer (registration number T5010001015990) and issues a qualified invoice for every credit purchase. You can pay by credit card or by bank transfer (prepaid). Choosing bank transfer issues a qualified invoice immediately, carrying a bank account dedicated to your account; credit is added automatically once the transfer is confirmed, so there is no need to notify us. Postpaid invoicing â billing in arrears at month end â is not available.\"},\"expiry\":{\"q\":\"What happens to unused credit?\",\"a\":\"It stays on your balance and is spent by later requests. Refunds and disputes are handled through Stripe and reverse the credit they paid for.\"}},\"catalog\":{\"title\":\"Model catalog \u0026 pricing\",\"searchPlaceholder\":\"Search modelsâ¦\",\"searchAria\":\"Search models by name, provider or description\",\"clear\":\"Clear search\",\"sort\":\"Sort\",\"sortName\":\"AâZ\",\"sortInputAsc\":\"In
10put price â\",\"sortInputDesc\":\"Input price â\",\"sortOutputAsc\":\"Output price â\",\"sortOutputDesc\":\"Output price â\",\"showing\":\"Showing {visible} of {total} models\",\"providerFilter\":\"Filter by provider\",\"allProviders\":\"All\",\"otherProviders\":\"Other\",\"quickFilters\":\"Quick filters\",\"filter_free\":\"Free\",\"filter_japan\":\"ð¯ðµ Japan-hosted\",\"filter_vision\":\"Vision\",\"emptyTitle\":\"No models match those filters.\",\"emptyBody\":\"Try a shorter search term, or reset the filters.\",\"reset\":\"Reset filters\",\"columnModel\":\"Model\",\"columnDescription\":\"Description\",\"columnInput\":\"Input\",\"columnOutput\":\"Output\",\"groupText\":{\"title\":\"Text models\",\"subtitle\":\"priced per 1M input / output tokens\"},\"groupImage\":{\"title\":\"Image models\",\"subtitle\":\"priced per image\"},\"groupVideo\":{\"title\":\"Video models\",\"subtitle\":\"priced per video\"},\"groupDecision\":{\"title\":\"Decision models\",\"subtitle\":\"priced per decision\"},\"countModels\":\"{count, plural, =1 {# model} other {# models}}\",\"tagFree\":\"Free\",\"tagVision\":\"Vision\",\"tagJapan\":\"Japan-hosted\",\"tagChatOnly\":\"Chat only\",\"tagChatOnlyTitle\":\"Available in the web chat only â not through the API or MCP\",\"kindImage\":\"Image\",\"kindVideo\":\"Video\",\"kindDecision\":\"Decision\",\"unitTokens\":\"/ 1M\",\"unitTokensTitle\":\"per 1,000,000 tokens\",\"unitImage\":\"/ img\",\"unitImageTitle\":\"per image\",\"unitVideo\":\"/ vid\",\"unitVideoTitle\":\"per video\",\"unitDecision\":\"/ req\",\"unitDecisionTitle\":\"per decision\",\"videoSpecs\":\"{seconds}s · {resolution}\",\"videoWithAudio\":\"with audio\",\"decisionSpecs\":\"{context}-token context · up to {bytes} bytes per request\",\"routerTag\":\"Smart router\",\"routerDescription\":\"Routes each request to the model that is cheapest for that request among those covering what it needs (tools, vision, JSON).\",\"routerPriceLabel\":\"Dynamic pricing\",\"routerPriceValue\":\"Billed at the resolved model's rate\",\"routerFloorNote\":\"Minimum quality band {band}: only models declared at band {band} or above are candidates.\",\"legend\":\"\\\"/ 1M\\\" = per 1,000,000 tokens · ð¯ðµ runs inside Japan · \\\"Free\\\" costs nothing within rate limits · \\\"Vision\\\" accepts image input · image, video and decision models are priced per unit. Bars show relative cost on a log scale. Prices before tax.\",\"unavailable\":\"The model catalog is unavailable right now.\"},\"howItWorks\":{\"title\":\"How It Works\",\"step1\":{\"title\":\"Purchase Credits\",\"description\":\"Add funds to your account via Stripe. Your balance is available immediately.\"},\"step2\":{\"title\":\"Use the API\",\"description\":\"Make requests to any supported model. Costs are calculated per token.\"},\"step3\":{\"title\":\"Track Usage\",\"description\":\"Monitor your spending in real-time. Get detailed analytics on your usage.\"}},\"cta\":{\"title\":\"Ready to Start?\",\"description\":\"Create an account and purchase your first credits.\",\"button\":\"Get Started\"},\"enterpriseBand\":{\"title\":\"Using FastMetal at your company\",\"description\":\"Billing in yen or US dollars, qualified invoices on yen purchases, and a prepaid balance that caps spend â with the questions procurement usually asks answered in one place.\",\"button\":\"See the business page\"},\"payments\":{\"title\":\"Ways to pay\",\"description\":\"Credit card or Japanese bank transfer (furikomi), both prepaid, both with a qualified invoice.\",\"card\":{\"title\":\"Credit card\",\"body\":\"Buy through Stripe Checkout and the balance is available immediately. From Â¥500, or $5 on a US-dollar account.\"},\"bank\":{\"title\":\"Bank transfer (prepaid)\",\"body\":\"We issue a qualified invoice straight away, carrying a virtual bank account dedicated to your company. It is payable for 14 days, and the balance is credited automatically once the transfer lands â you do not need to tell us. The sender pays the transfer fee.\"},\"invoice\":{\"title\":\"Qualified invoice\",\"body\":\"Registered issuer, number T5010001015990. Issued on either payment method. There is no postpaid month-end invoicing.\"}},\"currencyNote\":\"Prices are shown in the currency you pick here. You are billed
10in your account's currency.\"},\"Profile\":{\"title\":\"Profile\",\"personalInfo\":{\"title\":\"Personal Information\",\"description\":\"Update your account details\"},\"displayName\":\"Display Name\",\"displayNamePlaceholder\":\"Enter your name\",\"email\":\"Email Address\",\"emailPlaceholder\":\"Enter your email\",\"emailLanguage\":\"Email Language\",\"saveChanges\":\"Save Changes\",\"saving\":\"Saving...\",\"saved\":\"Changes saved successfully\",\"error\":\"Failed to save changes\",\"security\":{\"title\":\"Security\",\"description\":\"Manage your password\"},\"changePassword\":\"Change Password\",\"currentPassword\":\"Current Password\",\"newPassword\":\"New Password\",\"confirmPassword\":\"Confirm New Password\",\"passwordMismatch\":\"Passwords do not match\",\"passwordChanged\":\"Password changed successfully\",\"passwordError\":\"Failed to change password\",\"incorrectPassword\":\"Current password is incorrect\",\"emailVerification\":{\"title\":\"Email Verification\",\"description\":\"Verify your email address to secure your account\",\"verified\":\"Email verified\",\"notVerified\":\"Email not verified\",\"verifiedViaGoogle\":\"Verified via Google\",\"sent\":\"Verification email sent! Check your inbox.\",\"resend\":\"Resend Verification Email\",\"pendingChange\":\"A confirmation link was sent to {email}. Your address changes once you click it.\"},\"verificationError\":\"Failed to send verification email\",\"accountCurrency\":{\"title\":\"Account currency\",\"description\":\"Every API key and every top-up on this account uses this currency. It was chosen when the account was created and can't be changed; for the other currency, create a second account.\",\"jpy\":\"Japanese yen (Â¥)\",\"usd\":\"US dollars ($)\"},\"priceDisplay\":{\"title\":\"Price display\",\"description\":\"The currency the pricing, model and comparison pages show you, on any device you sign in on. Display only: what you are charged is set by your account's currency.\"}},\"Usage\":{\"title\":\"Usage Analytics\",\"description\":\"Track your API usage and spending\",\"summary\":{\"currentBalance\":\"Current Balance\",\"totalSpend\":\"Total Spend\",\"requestCount\":\"Total Requests\"},\"charts\":{\"usageOverTime\":\"Usage Over Time\",\"modelBreakdown\":\"Usage by Model\",\"spend\":\"Spend\",\"requests\":\"Requests\",\"hour1\":\"1H\",\"day1\":\"1D\",\"days7\":\"7D\",\"days30\":\"30D\",\"days90\":\"90D\",\"noData\":\"No data available\"},\"timeRange\":{\"daily\":\"Daily\",\"weekly\":\"Weekly\",\"monthly\":\"Monthly\"},\"keyBreakdown\":{\"title\":\"Usage by API Key\",\"description\":\"Breakdown of usage across your API keys\",\"keyHash\":\"Key\",\"keyAlias\":\"Name\",\"spend\":\"Spend\",\"requests\":\"Requests\",\"tokens\":\"Tokens\",\"promptTokens\":\"Prompt\",\"completionTokens\":\"Completion\",\"empty\":\"No usage data for this period\",\"unnamed\":\"Unnamed Key\"},\"history\":{\"title\":\"Transaction History\",\"description\":\"Your credit purchases and adjustments\",\"type\":\"Type\",\"amount\":\"Amount\",\"date\":\"Date\",\"reference\":\"Reference\",\"empty\":\"No transactions yet\",\"credit\":\"Credit\",\"debit\":\"Debit\",\"page\":\"Page {page} of {totalPages}\",\"previous\":\"Previous\",\"next\":\"Next\",\"purchase\":\"Credit Purchase\",\"refund\":\"Refund\",\"chargeback\":\"Chargeback\"}},\"Docs\":{\"title\":\"Documentation\",\"sidebar\":{\"api\":\"API\",\"concepts\":\"Concepts\",\"agents\":\"Agents\",\"openaiReference\":\"OpenAI Reference\",\"anthropicReference\":\"Anthropic Reference\",\"platformReference\":\"Platform Reference\",\"help\":\"Help\"},\"api\":{\"overview\":\"Overview\",\"gettingStarted\":\"Getting Started\",\"models\":\"Models\",\"reasoning\":\"Reasoning Control\",\"videoGeneration\":\"Video Generation\",\"decisions\":\"Structured Decisions\"},\"concepts\":{\"index\":\"LLM API concepts\"},\"agents\":{\"mcp\":\"MCP Server\",\"octofriend\":\"Octofriend\",\"hermes\":\"Hermes\",\"claudeCode\":\"Claude Code\",\"crush\":\"Crush\",\"opencode\":\"Opencode\",\"githubCopilot\":\"GitHub Copilot\",\"openclaw\":\"OpenClaw\",\"xcode\":\"Xcode Intelligence\"},\"openai\":{\"models\":\"/models\",\"chatCompletions\":\"/chat/completions\",\"completions\":\"/completions\",\"embeddings\":\"/embeddings\"},\"anthropic\":{\"messages\":\"/messages\",\"countTokens\":\"/messages/count_tokens\"},\"platform\":{\"quotas\":\"/key/info\"},\"help\":{\"faq\":\"FAQ\"}},\"DocsApiOverview\":{\"title\":\"API Overview\",\"intro\":\"FastMetal provides an OpenAI-compatible API and Anthropic-compatible API for all models we support. Use your existing tools and libraries with minimal configuration changes.\",\"authentication\":{\"title\":\"Authentication\",\"description\":\"All API requests require authentication using an API key. Include your key in the Authorization header:\",\"example\":\"Authorization: Bearer YOUR_API_KEY\"},\"baseUrl\":{\"title\":\"Base URLs\",\"description\":\"Make requests to the appropriate base URL for your chosen API format:\",\"o
10penai\":\"OpenAI-compatible: https://api.fastmetal.ai/v1\",\"anthropic\":\"Anthropic-compatible: https://api.fastmetal.ai/anthropic/v1\"},\"endpoints\":{\"title\":\"Supported Endpoints\",\"openaiTitle\":\"OpenAI-compatible\",\"openai\":\"/models â List available models\\n/chat/completions â Chat-based completions with conversation history\\n/completions â Traditional text completions\\n/embeddings â Transform text into vector embeddings\",\"anthropicTitle\":\"Anthropic-compatible\",\"anthropic\":\"/messages â Send and receive messages\\n/messages/count_tokens â Count tokens in messages\",\"platformTitle\":\"Platform\",\"platform\":\"/quotas â Check your usage quota and balance\\n/search â Search the web (if enabled)\"},\"rateLimit\":{\"title\":\"Rate Limits\",\"description\":\"Rate limits are determined by your account's budget. Requests are rejected when your spend exceeds your available balance. Monitor your usage on the dashboard to avoid interruptions.\"},\"errors\":{\"400\":\"Budget exceeded or invalid request\",\"401\":\"Invalid or missing API key\",\"429\":\"Rate limit exceeded\",\"500\":\"Internal server error\",\"title\":\"Error Handling\",\"description\":\"The API returns standard HTTP status codes. Common errors include:\"},\"help\":{\"title\":\"Getting Help\",\"description\":\"Need assistance? Check out the Getting Started guide, explore the API Reference, or contact support.\"}},\"DocsApiGettingStarted\":{\"title\":\"Getting Started\",\"intro\":\"Get up and running with the FastMetal API in minutes. This guide walks you through authentication, client setup, and making your first API call.\",\"metaDescription\":\"Start calling the FastMetal API in minutes: create a key, point your base URL at the gateway, set up an OpenAI-compatible client, and make your first request.\",\"step1\":{\"title\":\"1. Get Your API Key\",\"description\":\"Sign in to your dashboard and generate an API key. Keep this key secure â it won't be shown again.\"},\"step2\":{\"title\":\"2. Install a Client Library\",\"description\":\"FastMetal is compatible with OpenAI client libraries. Install one for your language:\",\"python\":\"pip install openai\",\"node\":\"npm install openai\",\"note\":\"Also compatible with Go, Rust, Ruby, PHP, and Java client libraries.\"},\"step3\":{\"title\":\"3. Configure the Client\",\"description\":\"Point your client to the FastMetal API endpoint:\",\"code\":\"import openai\\n\\nclient = openai.OpenAI(\\n api_key=\\\"YOUR_API_KEY\\\",\\n base_url=\\\"https://api.fastmetal.ai/v1\\\"\\n)\"},\"step4\":{\"title\":\"4. Make Your First Request\",\"description\":\"Send a chat completion request to test your setup:\"},\"step5\":{\"title\":\"5. Enable Streaming\",\"description\":\"For longer responses, enable streaming to receive output in real-time:\",\"code\":\"stream = client.chat.completions.create(\\n model=\\\"your-model\\\",\\n messages=[{\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"Hello!\\\"}],\\n stream=True\\n)\\n\\nfor chunk in stream:\\n print(chunk.choices[0].delta.content or \\\"\\\", end=\\\"\\\")\"},\"errorHandling\":{\"title\":\"Error Handling\",\"description\":\"Handle API errors gracefully in your code:\",\"code\":\"try:\\n response = client.chat.completions.create(...)\\nexcept openai.APIError as e:\\n print(f\\\"API error: {e}\\\")\\nexcept openai.RateLimitError as e:\\n print(f\\\"Rate limited: {e}\\\")\"},\"exampleRequest\":\"Example Request\",\"exampleResponse\":\"Example Response\",\"nextSteps\":{\"title\":\"Next Steps\",\"models\":\"View available models\",\"endpoints\":\"Explore API endpoints\",\"pricing\":\"Check pricing\",\"agents\":\"Set up coding agents (Claude Code, Octofriend)\"}},\"DocsApiModels\":{\"title\":\"Models\",\"intro\":\"FastMetal supports various LLM models for different use cases. View the models available on your dashboard, or query the /models endpoint.\",\"available\":{\"title\":\"Available Models\",\"description\":\"Models are configured by your administrator. Use the /models endpoint to list available models:\"}
10,\"listEndpoint\":{\"title\":\"List Models\",\"description\":\"GET /v1/models\",\"code\":\"curl https://api.fastmetal.ai/v1/models \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\"\"},\"pricing\":{\"title\":\"Model Pricing\",\"description\":\"Pricing is calculated per token. Each model has separate input and output token rates. Check the pricing page or your dashboard for current rates.\"},\"imagePricing\":{\"title\":\"Image Model Pricing\",\"description\":\"Image-generation models are billed per generated image rather than per token.\"},\"tableModel\":\"Model\",\"tableInput\":\"Input / 1M tokens\",\"tableOutput\":\"Output / 1M tokens\",\"tableImage\":\"Per image\",\"capabilities\":{\"title\":\"Model Capabilities\",\"description\":\"Different models support different features:\",\"chat\":\"Chat/Conversation â Multi-turn dialogue with context\",\"completion\":\"Text Completion â Single-turn text generation\",\"embedding\":\"Embeddings â Convert text to vector representations\",\"image\":\"Image\"},\"choosing\":{\"title\":\"Choosing a Model\",\"description\":\"Consider these factors when selecting a model:\",\"tip1\":\"Context length â How much text the model can process at once\",\"tip2\":\"Speed â Faster models for interactive use, slower for batch processing\",\"tip3\":\"Cost â Balance quality with budget constraints\",\"tip4\":\"Capabilities â Ensure the model supports your use case (chat, code, reasoning)\"},\"autoPrice\":\"resolved model's rate\",\"autoFloor\":\"Minimum quality band {band}\"},\"DocsAgentClaudeCode\":{\"title\":\"Claude Code\",\"intro\":\"Claude Code is Anthropic's official CLI for Claude. FastMetal provides native Anthropic API support, enabling seamless integration with Claude Code using any supported model.\",\"installation\":{\"title\":\"Installation\",\"description\":\"Install Claude Code globally using npm:\",\"code\":\"npm install -g @anthropic-ai/claude-code\"},\"configuration\":{\"title\":\"Configuration\",\"description\":\"Configure Claude Code to use the FastMetal API by setting these environment variables:\",\"code\":\"export ANTHROPIC_BASE_URL=\\\"https://api.fastmetal.ai\\\"\\nexport ANTHROPIC_AUTH_TOKEN=\\\"YOUR_API_KEY\\\"\",\"warning\":\"Two settings matter: use ANTHROPIC_AUTH_TOKEN (not ANTHROPIC_API_KEY â Claude Code sends that as an x-api-key header, which FastMetal rejects), and set ANTHROPIC_BASE_URL to the host root with no /v1 suffix (Claude Code appends /v1/messages itself). A /v1 suffix produces /v1/v1/messages and a 404 that Claude Code misreports as a model-access problem.\"},\"modelConfig\":{\"title\":\"Model Configuration\",\"description\":\"Optionally configure which models Claude Code uses for different tasks:\",\"code\":\"export ANTHROPIC_DEFAULT_SONNET_MODEL=\\\"your-model\\\"\\nexport ANTHROPIC_DEFAULT_HAIKU_MODEL=\\\"your-model\\\"\"},\"envVars\":{\"apiKey\":\"Your FastMetal API key\",\"baseUrl\":\"The Anthropic-compatible API endpoint\",\"model\":\"The model to use (optional)\"},\"shellConfig\":{\"title\":\"Persistent Configuration\",\"description\":\"Add these exports to your ~/.bashrc or ~/.zshrc for persistent configuration across sessions.\"},\"usage\":{\"title\":\"Usage\",\"description\":\"Once configured, use Claude Code as normal. All requests will be routed through FastMetal:\",\"code\":\"claude\"},\"tips\":{\"title\":\"Tips\",\"tip1\":\"Monitor your usage on the dashboard to track spending\",\"tip2\":\"Use environment variables to switch between models\",\"tip3\":\"Check the API documentation for supported features\",\"tip4\":\"Consider disabling telemetry with CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1\"}},\"DocsAgentOctofriend\":{\"title\":\"Octofriend\",\"intro\":\"Octofriend is a zero-telemetry coding assistant that works with OpenAI-compatible or Anthropic-compatible APIs. It enables mid-conversation model switching and has built-in auto-fix capabilities.\",\"installation\":{\"title\":\"Installation\",\"description\":\"Install Octofriend globally using npm:\",\"code\":\"npm install --global --omit=dev octofriend\"},\"quickStart\":{\"title\":\"Quick Start\",\"description\":\"Launch Octofriend using either command:\",\"code\":\"octofriend\\n# or\\nocto\"},\"features\":{\"title\":\"Key Features\",\"zeroTelemetry\":\"Zero Telemetry â Your code stays completely private\",\"modelSwitching\":\"Model Switching â Switch between different models mid-conversation\",\"autoFix\":\"Auto-fix Models â Intelligent handling of code diffs and JSON responses\"},\"setup\":{\"title\":\"Setup\",\"description\":\"When you first run Octofriend, it will prompt you to configure your API provider. Select 'Custom OpenAI' and enter your FastMetal credentials.\"},\"configuration\":{\"title\":\"Configuration\",\"description\":\"Enter your FastMetal API details when prompted:\",\"baseUrl\":\"Base URL: https://api.fastmetal.ai/v1\",\"apiKey\":\"API Key: Your FastMetal API key\"}},\"DocsAgentCrush\":{\"title\":\"Crush\",\"intro\":\"Crush is a TUI (Terminal User Interface) coding assistant that works with any supp
10orted model. FastMetal is available as a native provider.\",\"installation\":{\"title\":\"Installation\",\"description\":\"Follow the official Crush installation guide from the charmbracelet repository.\"},\"setup\":{\"title\":\"Setup\",\"description\":\"Launch Crush and follow the setup wizard:\",\"step1\":\"Run 'crush' in your terminal\",\"step2\":\"Select 'Custom OpenAI' as the provider\",\"step3\":\"Enter your FastMetal API endpoint: https://api.fastmetal.ai/v1\",\"step4\":\"Enter your FastMetal API key\",\"step5\":\"Choose your preferred model\",\"step6\":\"Complete the remaining onboarding steps\"},\"usage\":{\"title\":\"Usage\",\"description\":\"Once configured, Crush will route all requests through FastMetal. Use the TUI to interact with your chosen model.\"}},\"DocsAgentOpencode\":{\"title\":\"Opencode\",\"intro\":\"Opencode is a TUI coding assistant that works with any OpenAI-compatible API. Connect it to FastMetal to use any supported model.\",\"installation\":{\"title\":\"Installation\",\"description\":\"Follow the official Opencode installation guide at opencode.ai/docs.\"},\"setup\":{\"title\":\"Setup\",\"description\":\"Configure Opencode to use FastMetal:\",\"step1\":\"Run 'opencode' in your terminal\",\"step2\":\"Type '/connect' to configure a provider\",\"step3\":\"Select 'Custom' from the provider list\",\"step4\":\"Enter your FastMetal API key\",\"step5\":\"Enter the base URL: https://api.fastmetal.ai/v1\",\"step6\":\"Choose your preferred model\"},\"usage\":{\"title\":\"Usage\",\"description\":\"Once connected, Opencode will use FastMetal for all AI requests. You can switch models or reconfigure at any time using /connect.\"}},\"DocsAgentGithubCopilot\":{\"title\":\"GitHub Copilot\",\"intro\":\"Use FastMetal models inside GitHub Copilot Chat in VS Code. Copilot's Custom Endpoint provider speaks the same OpenAI-compatible API as the FastMetal gateway, so no extra extension is needed.\",\"requirements\":{\"title\":\"Requirements\",\"description\":\"A GitHub Copilot subscription in VS Code and a FastMetal API key. On Copilot Business and Enterprise, your administrator must have the \\\"Bring Your Own Language Model Key in VS Code\\\" policy enabled.\"},\"step1\":{\"title\":\"1. Create an API key\",\"description\":\"Create or reveal a key on the API keys page. It is shown once, so paste it somewhere safe.\",\"link\":\"Open API keys\"},\"step2\":{\"title\":\"2. Add a Custom Endpoint provider\",\"description\":\"Run the command below from the Command Palette (Ctrl+Shift+P / Cmd+Shift+P), choose Add Models, then Custom Endpoint. Enter a group name such as FastMetal, paste your API key, and select Chat Completions as the API type.\",\"command\":\"Chat: Manage Language Models\"},\"step3\":{\"title\":\"3. List the models in chatLanguageModels.json\",\"description\":\"VS Code opens chatLanguageModels.json for the new provider. Add one entry per model you want in the picker. The URL is the same for every model; only the id changes.\",\"fields\":{\"id\":\"The FastMetal model id, exactly as the gateway names it\",\"url\":\"The gateway's chat endpoint, shared by every model\",\"toolCalling\":\"Whether Copilot may use tools (agent mode) with this model\"}},\"modelId\":{\"title\":\"Model ids must match the gateway exactly\",\"description\":\"Take the id from the code sample on a model's page, or from the list below. A page URL is not the id: it swaps dots for dashes, so deepseek-v4-1-flash is rejected while deepseek-v4.1-flash works. Do not prefix it with a provider name.\",\"listCommand\":\"List every id your key can use:\"},\"step4\":{\"title\":\"4. Pick the model\",\"description\":\"Open the model picker in the Chat view and select a FastMetal model. Each request is billed to your key at the per-token price on the model's page and appears on your usage page.\"}},\"DocsAgentOpenclaw\":{\"title\":\"OpenClaw\",\"intro\":\"OpenClaw is an AI development tool that works with OpenAI-compatible APIs. Configure it to use FastMetal for model access.\",\"setup\":{\"title\":\"Setup\",\"description\":\"Configure OpenClaw with your FastMetal credentials:\",\"step1\":\"Open OpenClaw settings\",\"step2\":\"Navigate to API Configuration\",\"step3\":\"Set the API endpoint to: https://api.fastmetal.ai/v1\",\"step4\":\"Enter your FastMetal API key\",\"step5\":\"Select your preferred model\"},\"usage\":{\"title\":\"Usage\",\"description\":\"Once configured, OpenClaw will route all AI requests through FastMetal. Your usage will be tracked on your dashboard.\"}},\"DocsAgentXcode\":{\"title\":\"Xcode Intelligence\",\"intro\":\"FastMetal provides full compatibility with Xcode Intelligence, enabling context-aware code suggestions and completions directly within Xcode.\",\"requirements\":{\"title\":\"Requirements\",\"description\":\"Xcode Intelligence integration requires:\",\"req1\":\"Xcode 26 or later\",\"req2\":\"macOS 26 or later\"},\"setup\":{\"title\":\"Setup\",\"description\":\"Configure Xcode to use FastMetal as a model provider:\",\"step1\":\"Open Xcode Settings\",\"step2\":\"Navigate to 'Intelligence' or 'AI' settings\",\"step3\":\"Click 'Add Model Provider'\",\"step4\":\"Enter the configuration values below\"},\"configuration\":{\"title\":\"Configuration Values\",\"baseUrl\":\"Base URL: https://api.fastmetal.ai/v1\",\"apiKey\":\"API Key: Your FastMetal API key\",\"header\":\"API Key Header: Authorization\",\"description\":\"Description: FastMetal\"},\"notes\":{\"title\":\"Important Notes\",\"note1\":\"Enter the Base URL without the /v1 suffix in some Xcode versions\",\"note2\":\"The API key should include 'Bearer' as part of the credential\"},\"usage\":{\"title\":\"Usage\",\"description\":\"Once configured, FastMetal will appear as an available provider in Xcode's model selection. Select it to enable AI-
10powered code assistance.\"}},\"DocsOpenaiModels\":{\"title\":\"/models\",\"intro\":\"List and retrieve information about available models.\",\"metaDescription\":\"FastMetal's /models endpoint: list the models the gateway serves and retrieve information about each one with an OpenAI-compatible request, with a sample response.\",\"endpoint\":\"GET /v1/models\",\"description\":\"Returns a list of models available for use. This endpoint does not count against your usage limits.\",\"request\":{\"title\":\"Request\",\"code\":\"curl https://api.fastmetal.ai/v1/models \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\"\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns a list of model objects with their IDs and metadata.\",\"code\":\"{\\n \\\"data\\\": [\\n {\\n \\\"id\\\": \\\"your-model-name\\\",\\n \\\"object\\\": \\\"model\\\"\\n }\\n ]\\n}\"}},\"DocsOpenaiChatCompletions\":{\"title\":\"/chat/completions\",\"intro\":\"Create model responses for chat conversations. This is the primary endpoint for interactive AI applications.\",\"metaDescription\":\"FastMetal's /chat/completions endpoint: the request shape, the messages array, streaming and the response format, with code examples. OpenAI-compatible.\",\"endpoint\":\"POST /v1/chat/completions\",\"description\":\"Creates a model response for the given chat conversation.\",\"request\":{\"title\":\"Request Body\",\"model\":\"ID of the model to use (required)\",\"messages\":\"List of messages comprising the conversation (required)\",\"temperature\":\"Sampling temperature 0-2 (default: 1). Higher values = more random\",\"maxTokens\":\"Maximum tokens to generate\",\"stream\":\"Stream response using server-sent events (default: false)\",\"topP\":\"Nucleus sampling threshold 0-1 (alternative to temperature)\",\"frequencyPenalty\":\"Reduce repetition -2 to 2 (default: 0)\",\"presencePenalty\":\"Encourage new topics -2 to 2 (default: 0)\",\"tools\":\"List of tools (functions) the model may call\",\"toolChoice\":\"Control tool usage: 'auto', 'none', or specific tool\",\"reasoning\":\"Thinking (reasoning) control: {\\\"effort\\\": \\\"low\\\"} sets the level, {\\\"max_tokens\\\": 2000} caps thinking tokens, {\\\"enabled\\\": false} turns it off. Supported models and defaults:\",\"reasoningLink\":\"see Reasoning Control\"},\"messages\":{\"title\":\"Message Object\",\"description\":\"Each message has a role and content:\",\"roles\":\"Roles: system, user, assistant, tool\",\"content\":\"Content: Text string or array of content parts (for vision)\"},\"example\":{\"title\":\"Example Request\",\"code\":\"curl https://api.fastmetal.ai/v1/chat/completions \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\n \\\"model\\\": \\\"your-model\\\",\\n \\\"messages\\\": [\\n {\\\"role\\\": \\\"system\\\", \\\"content\\\": \\\"You are a helpful assistant.\\\"},\\n {\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"Hello!\\\"}\\n ]\\n }'\"},\"streaming\":{\"title\":\"Streaming\",\"description\":\"Enable streaming with stream: true to receive responses as server-sent events. Each chunk contains a delta with incremental content.\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns a chat completion object with choices, usage metrics, and finish reason.\",\"reasoning\":\"On reasoning models the thinking arrives in message.reasoning_content (delta.reasoning_content when streaming) and its token count in usage.completion_tokens_details.reasoning_tokens. Thinking tokens are part of completion_tokens and bill at the output rate.\"}},\"DocsOpenaiCompletions\":{\"title\":\"/completions\",\"intro\":\"Create text completions for provided prompts. This is a legacy endpoint; prefer /chat/completions for new applications.\",\"endpoint\":\"POST /v1/completions\",\"description\":\"Creates a completion for the provided prompt.\",\"request\":{\"title\":\"Request Body\",\"model\":\"ID of the model to use (required)\",\"prompt\":\"The prompt to generate completions for (required)\",\"maxTokens\":\"Maximum tokens to generate\",\"temperature\":\"Sampling temperature 0-2 (default: 1)\",\"topP\":\"Nucleus sampling threshold 0-1\",\"frequencyPenalty\":\"Reduce repetition -2 to 2\",\"presencePenalty\":\"Encourage new topics -2 to 2\",\"stop\":\"Stop sequence(s) to end generation\",\"stream\":\"Stream response using server-sent events\",\"n\":\"Number of completions to generate (default: 1)\"},\"example\":{\"title\":\"Example Request\",\"code\":\"curl https://api.fastmetal.ai/v1/completions \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\n \\\"model\\\": \\\"your-model\\\",\\n \\\"prompt\\\": \\\"Write a haiku about programming:\\\",\\n \\\"max_tokens\\\": 50\\n }'\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns completion choices with generated text, finish reason, and token usage metrics.\"}},\"DocsOpenaiEmbeddings\":{\"title\":\"/embeddings\",\"intro\":\"Create vector representations of text for similarity search, clustering, and retrieval applications.\",\"metaDescription\":\"FastMetal's /embeddings endpoint: create vector representations of text for similarity search, clustering and retrieval-augmented generation, with batch input.\",\"endpoint\"
10:\"POST /v1/embeddings\",\"description\":\"Creates an embedding vector representing the input text. Useful for semantic search, recommendations, and clustering.\",\"request\":{\"title\":\"Request Body\",\"model\":\"ID of the embedding model to use (required)\",\"input\":\"Text to embed â string or array of strings (required)\",\"dimensions\":\"Desired output embedding dimensions (optional)\"},\"example\":{\"title\":\"Example Request\",\"code\":\"curl https://api.fastmetal.ai/v1/embeddings \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\n \\\"model\\\": \\\"your-embedding-model\\\",\\n \\\"input\\\": \\\"The quick brown fox jumps over the lazy dog.\\\"\\n }'\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns embedding vectors for each input text along with token usage.\",\"code\":\"{\\n \\\"object\\\": \\\"list\\\",\\n \\\"data\\\": [{\\n \\\"object\\\": \\\"embedding\\\",\\n \\\"index\\\": 0,\\n \\\"embedding\\\": [0.0023, -0.009, ...]\\n }],\\n \\\"usage\\\": {\\\"prompt_tokens\\\": 8, \\\"total_tokens\\\": 8}\\n}\"},\"batch\":{\"title\":\"Batch Processing\",\"description\":\"Submit multiple texts in a single request using an array for the input parameter. Each text receives a corresponding embedding in the response.\"}},\"DocsAnthropicMessages\":{\"title\":\"/messages\",\"intro\":\"Send and receive messages using Anthropic's API format. This endpoint is compatible with Claude and other Anthropic-style APIs.\",\"endpoint\":\"POST /anthropic/v1/messages\",\"description\":\"Send a structured list of input messages and receive a model-generated message.\",\"request\":{\"title\":\"Request Body\",\"model\":\"The model to use (required)\",\"maxTokens\":\"Maximum tokens to generate (required)\",\"messages\":\"Array of message objects (required)\",\"system\":\"System instructions or context (optional)\",\"stream\":\"Enable server-sent events streaming (optional)\",\"temperature\":\"Sampling randomness control (optional)\",\"topP\":\"Nucleus sampling threshold (optional)\",\"topK\":\"Token sampling limit (optional)\",\"tools\":\"Available functions for tool use (optional)\",\"toolChoice\":\"Tool invocation behavior (optional)\",\"reasoning\":\"Thinking (reasoning) control (optional): {\\\"effort\\\": \\\"low\\\"} sets the level, {\\\"max_tokens\\\": 2000} caps thinking tokens, {\\\"enabled\\\": false} turns it off. Supported models and defaults:\",\"reasoningLink\":\"see Reasoning Control\",\"thinkingNote\":\"Anthropic's thinking parameter ({\\\"type\\\": \\\"enabled\\\", \\\"budget_tokens\\\": ...} / {\\\"type\\\": \\\"disabled\\\"}) has no effect on many models: on 2026-09-03 a kimi-k3 request with {\\\"type\\\": \\\"disabled\\\"} still returned a thinking block. Use the reasoning object on this endpoint as well.\"},\"messages\":{\"title\":\"Message Structure\",\"description\":\"Messages contain a role ('user' or 'assistant') and content. Content can include:\",\"text\":\"Text objects\",\"images\":\"Images (Base64 or URL)\",\"tools\":\"Tool invocations and results\"},\"example\":{\"title\":\"Example Request\",\"code\":\"curl https://api.fastmetal.ai/anthropic/v1/messages \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\n \\\"model\\\": \\\"your-model\\\",\\n \\\"max_tokens\\\": 1024,\\n \\\"messages\\\": [\\n {\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"Hello!\\\"}\\n ]\\n }'\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns a message object with content array, model identifier, stop reason, and token usage metrics.\",\"reasoning\":\"On reasoning models the thinking comes back as a {\\\"type\\\": \\\"thinking\\\"} block in the content array ahead of the text block (thinking_delta when streaming). Those tokens are counted in usage.output_tokens and bill at the output rate.\"}},\"DocsAnthropicCountTokens\":{\"title\":\"/messages/count_tokens\",\"intro\":\"Count tokens in messages without generating a response. Useful for estimating costs and staying within context limits.\",\"metaDescription\":\"FastMetal's /messages/count_tokens endpoint: count the tokens in a request without generating a response, to estimate cost and check context limits first.\",\"endpoint\"
10:\"POST /anthropic/v1/messages/count_tokens\",\"description\":\"Count the number of tokens in a message without generating a response. This endpoint does not incur generation costs.\",\"request\":{\"title\":\"Request Body\",\"model\":\"The model to use for tokenization (required)\",\"messages\":\"Messages to count tokens for (required)\",\"system\":\"System prompt to include in count (optional)\"},\"example\":{\"title\":\"Example Request\",\"code\":\"curl https://api.fastmetal.ai/anthropic/v1/messages/count_tokens \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\n \\\"model\\\": \\\"your-model\\\",\\n \\\"messages\\\": [\\n {\\\"role\\\": \\\"user\\\", \\\"content\\\": \\\"How many tokens is this?\\\"}\\n ]\\n }'\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns the token count for the provided messages.\",\"code\":\"{\\n \\\"input_tokens\\\": 12\\n}\"}},\"DocsPlatformQuotas\":{\"title\":\"/key/info\",\"intro\":\"Check your key's remaining balance and spend. Budget lives on the standard /key/info endpoint â authenticate with your API key and it returns that key's own budget.\",\"endpoint\":\"GET /key/info\",\"description\":\"Returns the calling key's spend and budget. Authenticate with your API key in the Authorization header; the key in the URL is not required.\",\"request\":{\"title\":\"Request\",\"code\":\"curl https://api.fastmetal.ai/key/info \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\"\"},\"response\":{\"title\":\"Response\",\"description\":\"Returns your key's budget information:\",\"balance\":\"Available balance is max_budget â spend. All amounts are in the smallest currency unit (yen on a JPY account, cents on a USD account).\",\"spend\":\"Total amount spent on this key\",\"maxBudget\":\"Maximum budget for this key\",\"code\":\"{\\n \\\"key\\\": \\\"sk-...\\\",\\n \\\"info\\\": {\\n \\\"spend\\\": 1234,\\n \\\"max_budget\\\": 10000\\n }\\n}\"},\"usage\":{\"title\":\"Use Cases\",\"description\":\"Use this endpoint to:\",\"tip1\":\"Monitor remaining balance before making requests\",\"tip2\":\"Track spending in your application\",\"tip3\":\"Implement budget warnings or auto-topup\"}},\"DocsApiReasoning\":{\"title\":\"Reasoning Control\",\"intro\":\"Reasoning models generate \\\"thinking\\\" tokens before they answer, and those tokens bill as output. The reasoning parameter sets how hard a model thinks, or turns thinking off. What happens when you say nothing differs per model: Kimi K3, for one, thinks at maximum effort by default.\",\"billing\":{\"title\":\"How thinking tokens are billed\",\"body\":\"Thinking tokens are part of completion_tokens and bill at the model's output rate. The breakdown is in usage.completion_tokens_details.reasoning_tokens on the response. A one-word answer preceded by a few hundred tokens of thinking bills for all of them.\",\"usageTitle\":\"Example usage block\",\"streaming\":\"The thinking itself arrives in message.reasoning_content (delta.reasoning_content when streaming), separate from the answer in content. It bills whether or not you display it.\"},\"request\":{\"title\":\"The reasoning parameter\",\"body\":\"Add a reasoning object to a /v1/chat/completions request. Set either effort or max_tokens, not both.\",\"effortTitle\":\"Set an effort level\",\"effortBody\":\"effort accepts none, minimal, low, medium, high, xhigh and max. Which values a model accepts is listed in the table below; an unsupported value returns 400.\",\"offTitle\":\"Turn thinking off\",\"offBody\":\"enabled: false stops the model thinking. For classification, extraction and other short-answer work this is faster and cheaper. It has no effect on models that always think (\\\"Can disable\\\" is No in the table).\",\"budgetTitle\":\"Cap the thinking tokens\",\"budgetBody\":\"max_tokens caps how many tokens the model may spend thinking (Anthropic style). It cannot be combined with effort.\"},\"compat\":{\"title\":\"About reasoning_effort\",\"body\":\"The OpenAI-style top-level reasoning_effort string is ignored on some models. On 2026-09-03 a kimi-k3 request with reasoning_effort: \\\"none\\\" still produced thinking tokens as normal. It does work on the GPT-5 family, but on FastMetal use the reasoning object. The models that accept it are listed in the table below; anthropic-claude-*, japan-*, llm-jp and gpt-oss-120b are not covered yet and are absent from it.\"},\"defaults\":{\"title\":\"Per-model defaults\",\"body\":\"What each model does when reasoning is not set. Served models that expose thinking controls are listed.\",\"unavailable\":\"Model information could not be loaded. Reload in a moment.\",\"empty\":\"No served model exposes thinking controls.\",\"note\":\"A model missing from the table either has no thinking controls or the catalog has not been refreshed for it yet. Each model's detail page shows the same information under Reasoning Configuration.\"},\"table\":{\"model\":\"Model\",\"default\":\"Default\",\"levels\":\"Effort levels\",\"canDisable\":\"Can disable\",\"on\":\"Thinking on\",\"onEffort\":\"Thinking on ({effort})\",\"off\":\"Thinking off\",\"yes\":\"Yes\",\"no\":\"No\"},\"chat\":{\"title\":\"In the chat\",\"body\":\"When you pick a model with thinking controls, a Thinking selector appears next to the model picker. The default is the lowest effort the model accepts, and your choice is remembered in the browser.\",\"link\":\"Open the chat\"}},\"DocsApiVideoGeneration\":{\"title\":\"Video Generation\",\"intro\":\"Generate short videos from text prompts. Video generation is asynchronous: submit a job, poll its status, then download the finished MP4. Each model renders one fixed spec at a flat per-video price.\",\"sku\":{\"title\":\"Models \u0026 pricing\",\"description\":\"Every model pins its settings server-side and bills a flat price per video, charged when your submission is accepted:\",\"endpointNote\":\"Each model has its own create endpoint (shown above); the job status and download endpoints are shared by all models.\"},\"submit\":{\"title\":\"1. Submit a job\",\"description\":\"POST your prompt (and an optional integer seed, where the model supports one) to the model's create endpoint from the table above. A successful submission returns HTTP 202 with a job id. The example uses the default model's endpoint.\",\"requestCode\":\"curl https://api.fastmetal.ai/v1/videos/create \\\\\\n -X POST \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\\"prompt\\\": \\\"A paper crane folds itself on a wooden desk, soft morning light\\\"}'\",\"responseCode\":\"{\\n \\\"id\\\": \\\"AbCdEf123456\\\",\\n \\\"status\\\": \\\"pending\\\",\\n \\\"poll_path\\\": \\\"/v1/videos/jobs/AbCdEf123456\\\"\\n}\"},\"poll\":{\"title\":\"2. Poll for completion\",\"description\":\"Poll the job every 15â30 seconds. Generation typically takes one to three minutes. Statuses: pending, in_progress, completed, failed.\",\"requestCode\":\"curl https://api.fastmetal.ai/v1/videos/jobs/AbCdEf123456 \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\"\",\"responseCode\":\"{\\n \\\"id\\\": \\\"AbCdEf123456\\\",\\n \\\"status\\\": \\\"completed\\\",\\n \\\"poll_path\\\": \\\"/v1/videos/jobs/AbCdEf123456\\\",\\n \\\"content_path\\\": \\\"/v1/videos/jobs/AbCdEf123456/content\\\"\\n}\"},\"download\":{\"title\":\"3. Download the video\",\"description\":\"Once completed, download the MP4 from the content path. Download promptly â generated videos are retained upstream only for a limited time.\",\"requestCode\":\"curl https://api.fastmetal.ai/v1/videos/jobs/AbCdEf123456/content?index=0 \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -o video.mp4\"},\"billing\":{\"title\":\"Billing\",\"point1\":\"Each model's flat price is deducted from your key's balance once per accepted submission (HTTP 202).\",\"point2\":\"Polling and downloading are free, as are rejected submissions (HTTP 4xx/5xx).\",\"point3\":\"Do n
10ot retry after receiving a 202 â each accepted submission is billed. A received error response (4xx/5xx) was not billed and is safe to retry. If you never received any response (timeout, dropped connection), the outcome is unknown: the submission may already have been accepted and billed, so do not blindly retry.\",\"point4\":\"If a job is accepted but later reaches status \\\"failed\\\", contact support with the job id for a service credit.\"},\"limits\":{\"title\":\"Limits\",\"point1\":\"Each model's duration, resolution, and audio are fixed server-side; requests with other values are rejected with HTTP 400.\",\"point2\":\"Prompts are limited to 2,000 characters.\",\"point3\":\"Video generation is rate-limited platform-wide; HTTP 429 means retry shortly.\"},\"table\":{\"model\":\"Model\",\"spec\":\"Output\",\"price\":\"Price\",\"seed\":\"Seed\",\"endpoint\":\"Create endpoint\",\"specValue\":\"{duration}s · {resolution}\",\"specValueWithAudio\":\"{duration}s · {resolution} · audio\",\"priceValue\":\"{price} / video\",\"seedYes\":\"optional integer\",\"seedNo\":\"not supported\"}},\"DocsApiDecisions\":{\"title\":\"Structured Decisions\",\"intro\":\"Models that return a typed decision rather than prose. Send a state and a set of questions in one POST and get, per question, a choice, a true/false probability or a score. Built for classification, routing and guardrails â anything where the shape of the answer is known in advance. Responses are synchronous and billed at a flat price per request.\",\"sku\":{\"title\":\"Models \u0026 pricing\",\"description\":\"Every model has its own endpoint and bills a flat price per accepted request. The limits (request body size and question count) are fixed server-side, and the flat price is set against them:\",\"endpointNote\":\"The endpoint decides the model. Omit `model` from the body, or send exactly the model id from the table.\"},\"request\":{\"title\":\"Ask for a decision\",\"description\":\"`state` carries the material to decide on (a string, an object or an array); `questions` is an object keyed by question name. Each question has a `type` (choice / noul / score), `instructions` (what to decide) and `criteria` (what to decide it by). Answers come back under the same keys as the questions.\",\"requestCode\":\"curl https://api.fastmetal.ai{path} \\\\\\n -X POST \\\\\\n -H \\\"Authorization: Bearer YOUR_API_KEY\\\" \\\\\\n -H \\\"Content-Type: application/json\\\" \\\\\\n -d '{\\n \\\"state\\\": \\\"Customer wrote: my order never arrived and I want a refund.\\\",\\n \\\"questions\\\": {\\n \\\"intent\\\": {\\n \\\"type\\\": \\\"choice\\\",\\n \\\"instructions\\\": \\\"What does the customer want?\\\",\\n \\\"criteria\\\": {\\n \\\"refund\\\": \\\"they want their money back\\\",\\n \\\"track_order\\\": \\\"they want to know where the order is\\\",\\n \\\"other\\\": \\\"anything else\\\"\\n }\\n },\\n \\\"is_angry\\\": {\\n \\\"type\\\": \\\"noul\\\",\\n \\\"instructions\\\": \\\"Is the customer expressing anger?\\\",\\n \\\"criteria\\\": { \\\"true\\\": \\\"hostile or frustrated tone\\\", \\\"false\\\": \\\"neutral or polite\\\" }\\n }\\n }\\n }'\",\"responseCode\":\"{\\n \\\"id\\\": \\\"gen-dec-1789761592-hJ9ahabHqfnukm1bqQ4M\\\",\\n \\\"model\\\": \\\"typesafe/jev-1.13-20260917\\\",\\n \\\"answers\\\": {\\n \\\"intent\\\": {\\n \\\"type\\\": \\\"choice\\\",\\n \\\"choice\\\": \\\"refund\\\",\\n \\\"probabilities\\\": { \\\"refund\\\": 1, \\\"track_order\\\": 0, \\\"other\\\": 0 },\\n \\\"confidence\\\": 1\\n },\\n \\\"is_angry\\\": { \\\"type\\\": \\\"noul\\\", \\\"noul\\\": 0.86 }\\n },\\n \\\"usage\\\": { \\\"input_tokens\\\": 347, \\\"output_tokens\\\": 39 }\\n}\"},\"types\":{\"title\":\"Question types\",\"description\":\"The three types can be mixed in one request. The shape of `criteria` depends on the type.\",\"choice\":\"Pick one of several options. `criteria` is an object of option name â description; the answer carries `choice`, per-option `probabilities` and a `confidence`.\",\"noul\":\"A true/false judgement. `criteria` is an object keyed `true` and `false`; the answer's `noul` is the probability (0â1) that the answer is true.\",\"score\":\"A graded score. `criteria` is an array describing the levels from lowest to highest, and `score` is returned on that array's index scale (0 to 2 for three levels, fractional). The answer carries `score`, a `legend` mapping each level to its description, per-level `probabilities` and a `confidence`.\"},\"billing\":{\"title\":\"Billing\",\"point1\":\"Each model's flat price is deducted from your key's balance once per accepted request (HTTP 200). The number of questions and the length of the body do n
10ot change it.\",\"point2\":\"Rejected requests (HTTP 4xx/5xx) are not billed. An oversized body, a field that is not allowed, or a malformed question comes back as HTTP 400.\",\"point3\":\"If you never received a response (timeout, dropped connection) the outcome is unknown. Decisions return in about a second, so wait briefly before retrying.\",\"point4\":\"Because the price is per accepted request, asking every question that fits in one call is the cheapest way to use it â adding questions does not change the price.\"},\"agent\":{\"title\":\"From an agent (MCP)\",\"description\":\"The same decision is available as the decide tool on the FastMetal \u003cmcp\u003eMCP server\u003c/mcp\u003e â same models, same flat price, billed to your own key. It is the shape an agent can branch on directly, without parsing prose, which is what makes it useful for classifying and routing inside an agentâs own logic.\"},\"limits\":{\"title\":\"Limits\",\"point1\":\"Request body size and question count are fixed per model (see the table). Size is counted on the request as it is sent upstream â compact JSON, including the pinned model name. Anything larger is rejected with HTTP 400.\",\"point2\":\"The body may contain only `state`, `questions` and `model`.\",\"point3\":\"Decisions are rate-limited platform-wide; HTTP 429 means retry shortly.\"},\"table\":{\"model\":\"Model\",\"spec\":\"Spec\",\"limits\":\"Limits\",\"price\":\"Price\",\"endpoint\":\"Endpoint\",\"specValue\":\"{context}-token context · {types}\",\"limitsValue\":\"up to {bytes} bytes · {questions} questions\",\"priceValue\":\"{price} / decision\"}},\"Models\":{\"title\":\"Models\",\"description\":\"Explore available AI models\",\"notFound\":\"Model not found\",\"backToModels\":\"Back to Models\",\"featured\":\"Featured\",\"notAvailable\":\"Not Available\",\"comingSoon\":\"Coming Soon\",\"availableAlternatives\":\"Models you can use on FastMetal\",\"tokens\":\"tokens\",\"arenaRank\":\"Arena Rank\",\"inputCost\":\"Input\",\"outputCost\":\"Output\",\"imageCost\":\"Per image\",\"altRoute\":\"Also on FastMetal\",\"tryInChat\":\"Try in Chat\",\"getApiKey\":\"Get API Key\",\"viewOnHuggingFace\":\"View on HuggingFace\",\"specifications\":\"Specifications\",\"modalities\":\"Modalities\",\"input\":\"Input\",\"output\":\"Output\",\"defaultParameters\":\"Default Parameters\",\"supportedParameters\":\"Supported Parameters\",\"maxOutputTokens\":\"Max Output Tokens\",\"reasoningConfig\":\"Reasoning Configuration\",\"reasoningDefault\":\"Default\",\"reasoningDefaultOff\":\"Thinking off\",\"reasoningDefaultOn\":\"Thinking on\",\"reasoningDefaultOnEffort\":\"Thinking on (effort: {effort})\",\"reasoningLevels\":\"Selectable effort levels\",\"reasoningToggle\":\"Turning thinking off\",\"reasoningMandatory\":\"Not possible (always thinks)\",\"reasoningOptional\":\"Possible (reasoning.enabled: false)\",\"reasoningDocsLink\":\"How to control thinking, and what it costs\",\"codeExamples\":\"Code Examples\",\"leaderboard\":\"Leaderboard\",\"elo\":\"ELO\",\"viewLeaderboard\":\"View Full Leaderboard\",\"moreFrom\":\"More from {provider}\",\"relatedPosts\":\"From the blog\",\"demoTitle\":\"How {model} actually answers\",\"demoDescription\":\"Real responses to our standard prompts, recorded on FastMetal.\",\"demoResponseTime\":\"{seconds}s response\",\"demoTokens\":\"{count} output tokens\",\"demoCompareLink\":\"Compare these answers side by side with other models â\",\"samplesTitle\":\"Images generated by {model}\",\"samplesDescription\":\"Generated on FastMetal from the prompts below â no retouching, no cherry-picking.\",\"sampleAlt\":\"{title} â generated by {model} on FastMetal\",\"faqTitle\":\"Frequently asked questions\",\"compareTitle\":\"Compare with other models\",\"compareLink\":\"{a} vs {b}\",\"healthTitle\":\"Measured performance\",\"healthLatency\":\"Time to first response (p50)\",\"healthThroughput\":\"Throughput (p50)\",\"healthAllZdr\":\"Every host this model runs on is configured not to retain prompts\",\"healthTokensPerSec\":\"tokens/s\",\"healthMethod\":\"Time to first response is measured to the first streamed chunk; throughput counts all output tokens, including reasoning tokens. These are observations, not a performance guarantee.\",\"healthRedundancy\":\"Routed across {count} independent backends\",\"healthMeasuredNote\":\"Measured through FastMetal's own gateway over the last {days} days ({samples}
10 first-response samples).\",\"healthThroughputNote\":\"Throughput is sampled once a day: the median of {samples} observations over the last {days} days.\",\"chatOnlyBadge\":\"Chat only\",\"chatOnlyTitle\":\"Available in the web chat only\",\"chatOnlyBody\":\"{model} can be used in FastMetal's web chat, billed per token from your prepaid balance like any other model. It is not available through the API or MCP: a request naming it is refused by the gateway (HTTP 403).\",\"chatOnlyCta\":\"Open in chat\",\"policyTitle\":\"Data policy\",\"policyRetentionLabel\":\"Prompt retention\",\"policyTrainingLabel\":\"Training\",\"policyRetainsNo\":\"Not retained â every host this model runs on is configured not to retain prompts\",\"policyRetainsYes\":\"May be retained\",\"policyRetainsUnknown\":\"Unknown â we could not confirm\",\"policyTrainsNo\":\"Not used for training\",\"policyTrainsYes\":\"The provider trains on your prompts\",\"policyTrainsUnknown\":\"Unknown â not declared\",\"policyUnknownNote\":\"\\\"Unknown\\\" does not mean \\\"safe\\\". It means we could not confirm it.\",\"policyCheapBecauseTraining\":\"This model is cheap because the provider trains on the prompts you send it. For sensitive input, choose a model that is not used for training.\",\"policyMethod\":\"Whether a provider trains on prompts is a declared value from our terms with them. Retention is determined from the upstream listing for every host this model can reach. Neither is guessed.\"},\"ModelsPage\":{\"title\":\"Models\",\"description\":\"Browse and compare AI models\",\"search\":\"Search models...\",\"filters\":\"Filters\",\"provider\":\"Provider\",\"inputModalities\":\"Input Modalities\",\"outputModalities\":\"Output Modalities\",\"contextLength\":\"Context Length\",\"pricing\":\"Pricing\",\"pricingNote\":\"Per 1M tokens (coming soon)\",\"pricingComingSoon\":\"Coming soon\",\"pricingNotServed\":\"Not on FastMetal yet\",\"pricePerM\":\"{input} in · {output} out / 1M tokens\",\"pricePerImage\":\"{price} per image\",\"intro\":\"Every model here is reachable through the same OpenAI-compatible endpoint with one API key. Prices are per million tokens â switch between US dollars and yen above the list â billed from your prepaid balance in your key's currency; models marked \\\"not on FastMetal yet\\\" are listed for reference and cannot be called.\",\"category\":\"Category\",\"context\":\"Context\",\"featured\":\"Featured\",\"arenaRank\":\"Text Overall\",\"clearFilters\":\"Clear filters\",\"noResults\":\"No models found\",\"tryAdjustingFilters\":\"Try adjusting your filters\",\"results\":\"{count} models\",\"sortBy\":\"Sort by\",\"sortName\":\"Name\",\"sortArenaRank\":\"Arena Rank\",\"sortContextLength\":\"Context Length\",\"sortReleaseDate\":\"Release Date\",\"healthZdrTooltip\":\"Every host this model runs on is configured not to retain prompts\",\"dataPolicy\":\"Data policy\",\"dataPolicyNoTraining\":\"Not used for training\",\"dataPolicyNoRetention\":\"Prompts not retained\",\"dataPolicyFilterNote\":\"Models whose policy is unknown are excluded from these filters: we do not count what we could not confirm as safe.\",\"badgeTrains\":\"Trains on prompts\",\"badgeTrainsTooltip\":\"The provider trains on the prompts you send this model.\",\"badgePolicyUnknown\":\"Policy unknown\",\"badgePolicyUnknownTooltip\":\"We could not confirm this model's data policy. That is not the same as \\\"no problem\\\".\"},\"Comparison\":{\"title\":\"Model Comparison\",\"selectExample\":\"Select a comparison example\",\"selectModel\":\"Select model\",\"prompt\":\"Prompt\",\"responseTime\":\"Response time\",\"wordCount\":\"Words\",\"dimensions\":\"Dimensions\",\"tokenCount\":\"Tokens\",\"noResults\":\"No results available\",\"noExamples\":\"No comparison examples available\",\"ms\":\"ms\",\"intro\":\"The same prompt, sent to several models through the FastMetal gateway. Every answer below is the model's real output, with its response time and token count â pick an example, then swap models in the columns.\",\"transcriptTitle\":\"Answers to \\\"{example}\\\"\",\"transcriptIntro\":\"{count} models answered this prompt. Full text and timings are in the viewer above.\",\"allExamples\":\"All comparison examples\"},\"AdminComparisons\":{\"title\":\"Manage Comparisons\",\"examples\":\"Examples\",\"runComparison\":\"Run Comparison\",\"createExample\":\"Create Example\",\"editExample\":\"Edit Example\",\"exampleTitle\":\"Title\",\"exampleDescription\":\"Description\",\"examplePrompt\":\"Prompt\",\"selectExample\":\"Select an example\",\"selectModels\":\"Select models to compare\",\"status\":\"Status\",\"actions\":\"Actions\",\"published\":\"Published\",\"unpublished\":\"Unpublished\",\"publish\":\"Publish\",\"unpublish\":\"Unpublish\",\"running\":\"Running comparison...\",\"runComplete\":\"Comparison complete\",\"noExamples\":\"No comparison examples yet\",\"confirmDelete\":\"Are you sure you want to delete this example?\",\"results\":\"Results\",\"responseTime\":\"Response time\",\"wordCount\":\"Words\",\"tokenCount\":\"Tokens\",\"exampleCreated\":\"Example created successfully\",\"exampleUpdated\":\"Example updated successfully\",\"exampleDeleted\":\"Example deleted successfully\",\"locale\":\"Locale\",\"localeEn\":\"English\",\"localeJa\":\"Japanese\",\"allLocales\":\"All locales\",\"modelsTested\":\"Models Tested\",\"runAllUntested\":\"Run All Untested\",\"runTests\":\"Run Tests\"},\"CompanyInfo\":{\"title\":\"Company Information\",\"description\":\"Corporate details and registration information\",\"companyName\":{\"title\":\"Company Name\",\"content\":\"Kokusai Chotatsu Joho Co., Ltd. (æ ªå¼ä¼ç¤¾å½é調éæ
å ±)\"},\"address\":{\"title\":\"Head Office\",\"content\":\"Asahi Sanbancho Plaza 208, 7-1 Sanbancho, Chiyoda-ku, Tokyo\"},\"representative\":{\"title\":\"Representative\",\"content\":\"Darshaun Nadeau\"},\"established\":{\"title\":\"Established\",\"content\":\"May 1981\"},\"business\":{\"title\":\"Business Activities\",\"content\":\"Domain registration, secondhand domain sales, hosting services, SEO solutions, and consulting\"},\"corporateWebsite\":{\"title\":\"Corporate Website\",\"content\":\"https://psi.jp/about-jp\"},\"invoiceRegistration\":{\"title\":\"Qualified Invoice Issuer Registration Number\",\"content\":\"T5010001015990\"},\"scta\":{\"title\":\"Notation Based on the Specified Commercial Transactions Act\",\"businessInfo\":{\"title\":\"Business Information\",\"name\":\"Name\",\"nameContent\":\"Kokusai Chotatsu Joho Co., Ltd.\",\"address\":\"Address\",\"addressContent\":\"Asahi Sanbancho Plaza 208, 7-1 Sanbancho, Chiyoda-ku, Tokyo 102-0075\",\"phone\":\"Phone\",\"phoneContent\":\"Please contact us through our contact form. A phone number is disclosed without delay on request.\",\"email\":\"Email\",\"emailContent\":\"[email protected]\",\"hours\":\"Business Hours\",\"hoursContent\":\"9:00 AM to 5:00 PM\",\"contactLink\":\"Contact form\"},\"payment\":{\"title\":\"Payment\",\"fees\":\"Fees\",\"feesPricing\":\"Pricing page\",\"feesOr\":\"or\",\"feesDashboard\":\"Dashboard\",\"feesSuffix\":\".\",\"method\":\"Payment Method\",\"methodContent\":\"Bank transfer (prepaid) or credit card\",\"timing\":\"Payment Timing\",\"timingContent\":\"Payment is required before service is provided.\"},\"serviceStart\":{\"title\":\"Service Start Timing\",\"bankTransfer\":\"Bank transfer (prepaid): Service will begin promptly after a valid application and confirmation of payment.\",\"credit
10Card\":\"Credit card: Service will begin promptly after credit card payment is processed.\"},\"cancellation\":{\"title\":\"Cancellation\",\"content\":\"Due to the nature of the service, cancellations after service has begun are not accepted in principle.\"},\"otherFees\":{\"title\":\"Other Fees\",\"content\":\"Transfer fees for bank transfers are borne by the customer. If a refund is issued for any reason, the transfer fee will be deducted from the refund amount.\"},\"serviceConditions\":{\"title\":\"Service Conditions\",\"content\":\"Prepaid credits have an expiration period. If you wish to continue using the service after expiration, please purchase additional credits.\"}}},\"Contact\":{\"eyebrow\":\"Contact\",\"title\":\"Contact FastMetal\",\"intro\":\"Pricing, enterprise terms, partnerships, or something broken on a running integration â use the form below or email us. We work in Japanese and English.\",\"emailHeading\":\"Email us directly\",\"emailNote\":\"You don't have to use the form. Mail this address and it reaches the same inbox.\",\"hoursLabel\":\"Hours\",\"hoursValue\":\"9:00â17:00 JST\",\"responseLabel\":\"Response time\",\"responseValue\":\"Usually within 1â2 business days\",\"languageLabel\":\"Languages\",\"languageValue\":\"Japanese and English\",\"topicsHeading\":\"What to contact us about\",\"topicsIntro\":\"Your question doesn't have to fit one of these. Pick the closest option in the form.\",\"topics\":{\"general\":{\"label\":\"General questions\",\"body\":\"Pricing, which models are available, how to pay (card or Japanese bank transfer) â anything the docs and FAQ do not answer.\",\"placeholder\":\"e.g. I have a question about invoicing and payment methods.\"},\"enterprise\":{\"label\":\"Enterprise and high volume\",\"body\":\"For larger monthly volumes, and for questions about terms and payment. FastMetal is a registered qualified-invoice issuer (T5010001015990), billed in yen or US dollars and prepaid. You can pay by credit card or by Japanese bank transfer, where we issue a qualified invoice immediately with a dedicated virtual account. Tell us your expected monthly tokens and the models you plan to use and we can be concrete.\",\"placeholder\":\"e.g. We expect roughly N million tokens a month, mostly on model X.\",\"more\":\"See the business page\"},\"partner\":{\"label\":\"Partners, OEM and reselling\",\"body\":\"For hosting providers, system integrators and agencies who want to offer AI features to their own customers. Our Provisioning API creates accounts, issues API keys and allocates budget programmatically, so per-customer keys and spend limits stay under your control.\",\"placeholder\":\"e.g. We want to offer AI features to the customers of our hosting service.\",\"more\":\"See the partners page\"},\"support\":{\"label\":\"Technical support\",\"body\":\"Authentication errors, model responses, or billing that doesn't match what you expected on a running integration. Include the model name and, where you can, the time of the request.\",\"placeholder\":\"e.g. Since around 14:00 on the 3rd, requests to model X fail with a 401.\"},\"provider\":{\"label\":\"Becoming an inference provider\",\"body\":\"For companies that host models and want FastMetal to route traffic to them. The providers page explains the requirements and process; the application form is the fastest route.\",\"placeholder\":\"e.g. We host model X in Tokyo and would like to list it on FastMetal.\",\"more\":\"See the providers page\"}},\"formHeading\":\"Send us a message\",\"form\":{\"topicLabel\":\"Topic\",\"nameLabel\":\"Name\",\"companyLabel\":\"Company\",\"optional\":\"(optional)\",\"emailLabel\":\"Email\",\"messageLabel\":\"Message\",\"submit\":\"Send\",\"sending\":\"Sendingâ¦\",\"responseNote\":\"We usually reply within 1â2 business days.\",\"success\":\"Thanks for getting in touch. We'll reply to the address you gave us, usually within 1â2 business days.\",\"error\":\"Sending failed. Please email [email protected] directly instead.\",\"errorRateLimited\":\"That's several messages in a short time. Please try again later, or email [email protected] directly.\"},\"companyHeading\":\"Business details\",\"companyNote\":\"FastMetal is operated by Kokusai Chotatsu Joho Co., Ltd.\",\"companyNameLabel\":\"Name\",\"companyAddressLabel\":\"Address\",\"companyInvoiceLabel\":\"Qualified Invoice Issuer Registration Number\",\"companyLink\":\"Company information and Specified Commercial Transactions Act notation\"},\"Enterprise\":{\"eyebrow\":\"For businesses\",\"title\":\"FastMetal for teams and high-volume use\",\"intro\":\"FastMetal is an OpenAI-compatible gateway that gives you many LLMs behind one API key, billed
10in Japanese yen or US dollars (you choose the currency when you create your account) on a prepaid balance. This page collects what Japanese companies usually check before adopting it.\",\"ctaPrimary\":\"Talk to us about volume\",\"ctaSecondary\":\"See pricing\",\"ctaTrial\":\"Create a free account\",\"whyHeading\":\"Why it fits Japanese development teams\",\"why\":{\"currency\":{\"title\":\"Billed in yen or US dollars\",\"body\":\"Your account is charged in the currency you choose when you create it. On a yen account your monthly cost doesn't move with the exchange rate the way a dollar-denominated API does; a US-dollar account is there for teams that budget in dollars.\"},\"invoice\":{\"title\":\"Qualified invoices\",\"body\":\"The operating company is a registered qualified invoice issuer in Japan (registration number T5010001015990), so invoices meet the requirements for input tax credit.\"},\"prepaid\":{\"title\":\"Prepaid, so spend can't overrun\",\"body\":\"You buy a balance and draw it down. Nothing is charged beyond it, so an unexpected large bill isn't structurally possible.\"},\"onekey\":{\"title\":\"One key, many models\",\"body\":\"One OpenAI-compatible endpoint reaches models from several providers. No separate contract and billing relationship per provider.\"}},\"checklistHeading\":\"What procurement and finance usually ask\",\"checklistIntro\":\"Collected in a form you can take straight into an internal review.\",\"checklistCol1\":\"Item\",\"checklistCol2\":\"Answer\",\"checklist\":{\"currency\":{\"label\":\"Billing currency\",\"value\":\"Japanese yen (JPY) or US dollars (USD), chosen per account\"},\"invoice\":{\"label\":\"Qualified invoice system\",\"value\":\"Registered qualified invoice issuer (T5010001015990)\"},\"payment\":{\"label\":\"Payment methods\",\"value\":\"Yen: credit card or Japanese bank transfer, both prepaid and both from Â¥500. US dollars: credit card, prepaid, from $5. Bank transfer issues a qualified invoice immediately with a dedicated virtual account, payable for 14 days. There is no postpaid month-end invoicing\"},\"cap\":{\"label\":\"Spend cap\",\"value\":\"The balance you purchased is the cap. Nothing is billed beyond it\"},\"training\":{\"label\":\"Training on your data\",\"value\":\"FastMetal does not use your data to train models\"},\"company\":{\"label\":\"Operating company\",\"value\":\"Kokusai Chotatsu Joho Co., Ltd. (Chiyoda-ku, Tokyo; established 1981)\"},\"compat\":{\"label\":\"API compatibility\",\"value\":\"OpenAI-compatible and Anthropic-compatible. Existing code works by changing the base URL\"},\"hosting\":{\"label\":\"Where inference runs\",\"value\":\"Models whose id starts with japan- are hosted and run inside Japan (see the pricing page for the list). Other models run in their provider's region\"}},\"checklistNote\":\"Inference itself runs on each model provider's infrastructure, so their own policies govern what happens there. If you are working with sensitive data, talk to us first.\",\"prepaidNoteHeading\":\"About payment â worth saying up front\",\"prepaidNote\":\"At present we support prepayment only â there is no postpaid billing in arrears at month end. You purchase a balance and usage is drawn from it. You can pay by credit card or by bank transfer; choosing transfer issues a qualified invoice immediately, carrying a bank account dedicated to your organisation, and credit is added automatically once the transfer is confirmed, with nothing to notify us about. If that does not fit your requirements, please say so when you get in touch.\",\"teamHeading\":\"Using it across a team\",\"team\":{\"keys\":\"You can issue several API keys and set a separate balance (cap) on each, so budget can be split per team or per project.\",\"usage\":\"Usage is visible in the dashboard broken down by model and by day, so you can see where the spend went.\",\"alerts\":\"Email lands when a balance runs low and again when it is exhausted â including for keys used only through the API.\"},\"askHeading\":\"Talking about volume\",\"askIntro\":\"If your monthly usage is large, we're happy to discu
10ss terms. Three things make that conversation concrete:\",\"ask\":{\"volume\":\"Expected monthly token volume, or your current monthly spend\",\"models\":\"Which models you plan to use â or just the use case, if that's not settled\",\"payment\":\"Preferred payment method and billing cycle\"},\"askNote\":\"If you want to evaluate it technically first, the fastest route is to create an account and load a small balance. That's the same service, not a separate trial.\",\"faqHeading\":\"Frequently asked questions\"},\"Partners\":{\"eyebrow\":\"Partners and OEM\",\"title\":\"Build FastMetal into your own service\",\"intro\":\"For companies who want to offer AI features to their own customers, we expose a provisioning API that creates accounts, issues API keys and allocates budget programmatically â so per-customer keys and spend limits stay under your system's control.\",\"ctaPrimary\":\"Talk to us about partnering\",\"ctaSecondary\":\"See the business page\",\"whoHeading\":\"Who this is for\",\"who\":{\"hosting\":{\"title\":\"Hosting providers\",\"body\":\"Adding AI features to an existing control panel. Account creation and key issuance happen inside the signup flow you already have.\"},\"si\":{\"title\":\"System integrators and agencies\",\"body\":\"Building AI into what you deliver per client. Keys and budgets split per engagement, so usage attribution and cost pass-through stay simple.\"},\"saas\":{\"title\":\"SaaS and app builders\",\"body\":\"Shipping AI as a feature of your own product. Issue a key per end user with its own cap, so one heavy user can't drain the whole budget.\"}},\"capHeading\":\"What you can do programmatically\",\"capIntro\":\"All of the below are backend calls. None of it requires anyone to click through an admin UI.\",\"capCol1\":\"Operation\",\"capCol2\":\"What it does\",\"cap\":{\"create\":{\"label\":\"Create an account\",\"value\":\"Provisions a customer account and an API key in one call. Idempotency keys are supported, so a lost response never results in a duplicate\"},\"budget\":{\"label\":\"Allocate budget\",\"value\":\"Sets a spend cap per key. Requests are rejected once the cap is reached, so there is no overage to reconcile\"},\"lookup\":{\"label\":\"Look up an account\",\"value\":\"Retrieves account metadata by exact email or id\"},\"validate\":{\"label\":\"Validate a key and read balance\",\"value\":\"Confirms a key you hold is valid and returns its cap, spend and remaining balance â ready to render in your own dashboard\"}},\"capNote\":\"The full specification goes to companies who get in touch.\",\"techHeading\":\"Technical ground rules\",\"tech\":{\"compat\":\"The endpoint is OpenAI-compatible. Existing OpenAI-targeted code works by changing the base URL.\",\"models\":\"One key reaches models from several providers. You don't need a contract with each of them.\",\"currency\":\"Accounts created through the Provisioning API are billed in Japanese yen. The operating company is a registered qualified invoice issuer in Japan (T5010001015990).\",\"prepaid\":\"Prepaid, so usage cannot exceed the budget you allocated.\"},\"termsHeading\":\"About commercial terms\",\"termsBody\":\"We don't publish them â they're set per partner. What fits depends on how many customers you expect and at what scale, whether billing sits with you or with us, and how support is divided. Rather than fit you to a fixed template, we'd rather hear how you're set up and design from there.\",\"termsNote\":\"An early-stage idea is fine. We're happy to start with whether the thing you have in mind is possible at all.\",\"askHeading\":\"What helps us answer quickly\",\"askIntro\":\"Three things let us tell you fast whether this is workable:\",\"ask\":{\"business\":\"What your business does, and which customers you want to reach with AI features\",\"scale\":\"Roughly how many customers, and at what usage scale\",\"billing\":\"Whether billing and support should sit with you or with us\"},\"faqHeading\":\"Frequently asked questions\",\"providersNote\":\"Hosting models rather than reselling them?\",\"providersLink\":\"See the inference provider program.\"},\"AdminBlog\":{\"title\":\"Blog Management\",\"createPost\":\"New Post\",\"editPost\":\"Edit Post\",\"postTitle\":\"Title\",\"postSlug\":\"Slug\",\"postExcerpt\":\"Excerpt\",\"postContent\":\"Content\",\"locale\":\"Language\",\"postType\":\"Type\",\"metaDescription\":\"Meta description (SEO)\",\"metaDescriptionHint\"
10:\"~120 chars for JA, ~155 for EN. Falls back to the excerpt if blank.\",\"schemaJsonld\":\"Schema JSON-LD (SEO)\",\"status\":\"Status\",\"date\":\"Date\",\"actions\":\"Actions\",\"published\":\"Published\",\"draft\":\"Draft\",\"publish\":\"Publish\",\"unpublish\":\"Unpublish\",\"publishImmediately\":\"Publish immediately\",\"confirmDelete\":\"Are you sure you want to delete this post?\",\"noPosts\":\"No blog posts yet.\",\"allLocales\":\"All languages\"},\"Blog\":{\"title\":\"Blog\",\"allTypes\":\"All types\",\"noPosts\":\"No posts yet.\",\"showing\":\"Showing {from}-{to} of {total}\",\"previous\":\"Previous\",\"next\":\"Next\",\"backToBlog\":\"Back to Blog\",\"relatedPosts\":\"Related posts\",\"alsoAvailableIn\":\"Also available in {locale}\",\"postNotFound\":\"Post not found.\",\"ctaFallbackModel\":\"the latest AI models\",\"comparePageLink\":\"See these two side by side on price and specs\",\"comparePageEyebrow\":\"Compare on the numbers\"},\"AdminUsers\":{\"title\":\"User Management\",\"searchPlaceholder\":\"Search by email...\",\"search\":\"Search\",\"clear\":\"Clear\",\"id\":\"ID\",\"email\":\"Email\",\"name\":\"Name\",\"locale\":\"Locale\",\"budget\":\"Budget\",\"spend\":\"Spend\",\"keys\":\"Keys\",\"createdAt\":\"Created\",\"noUsers\":\"No users found.\",\"showing\":\"Showing {from}-{to} of {total}\",\"previous\":\"Previous\",\"next\":\"Next\",\"lastActive\":\"Last active\",\"activityWindow\":\"Requests over the last {days} days\",\"never\":\"never\",\"sortLimited\":\"Too many users to sort by gateway figures; showing newest first.\",\"freeRequests\":\"Free\",\"paidRequests\":\"Paid\",\"rejectedRequests\":\"Rejected\",\"rejectedRequestsHint\":\"Requests refused before reaching a provider (no credit, bad key, upstream error) over the last {days} days\",\"country\":\"Country\",\"countryHint\":\"Declared billing country (residence or head office)\",\"taxReviewClear\":\"Tax review: clear\",\"taxReviewHint\":\"Declared an address abroad but paid with a card issued in Japan. Every charge is taxed until cleared.\",\"taxReviewConfirm\":\"Clear the tax review? Confirm first that the declared address abroad is correct; their charges will no longer be taxed.\",\"remaining\":\"Credit\",\"remainingHint\":\"Unspent credit (each key's budget less its spend, floored at zero per key)\",\"paid\":\"Paid\",\"paidHint\":\"Lifetime money received â purchases, bank transfers and auto top-ups less refunds and chargebacks. Granted credit is excluded.\",\"paidSince\":\"{payments} payments · first {date}\",\"disabledBadge\":\"disabled\"},\"AdminUserDetail\":{\"back\":\"Back to users\",\"account\":\"Account\",\"lifetimePaid\":\"Lifetime paid\",\"neverPaid\":\"Never paid\",\"paidSince\":\"{payments} payments · first {date}\",\"credit\":\"Credit\",\"creditHint\":\"Unspent credit remaining\",\"budgetHint\":\"of {budget} ever credited\",\"requests\":\"Requests ({days}d)\",\"requestSplit\":\"{free} free · {paid} paid · {rejected} rejected\",\"emailVerified\":\"Email verified\",\"welcomeCompleted\":\"Welcome completed\",\"signupCredit\":\"Signup credit applied\",\"stripeCustomer\":\"Stripe customer\",\"cardSaved\":\"Card saved\",\"referral\":\"Referral code\",\"referredBy\":\"referred by {email}\",\"nurture\":\"Nurture mail\",\"optedIn\":\"Opted in\",\"optedOut\":\"Opted out\",\"unsubscribedAt\":\"Unsubscribed {date}\",\"role\":\"Role\",\"adminRole\":\"Admin\",\"keys\":\"API keys\",\"keysHint\":\"Budget, spend and last active come from the gateway; created, revealed and auto top-up from our own database.\",\"noKeys\":\"No keys.\",\"keyAlias\":\"Key\",\"primary\":\"primary\",\"missingUpstream\":\"missing upstream\",\"revealed\":\"Revealed\",\"autoTopup\":\"Auto top-up\",\"transactions\":\"Transactions\",\"transactionsHint\":\"Every record that moved a budget, granted credit included.\",\"noTransactions\":\"No transactions.\",\"when\":\"When\",\"type\":\"Type\",\"amount\":\"Amount\",\"reference\":\"Reference\",\"models\":\"Models used ({days}d)\",\"modelsHint\":\"Request counts are successes and failures together.\",\"noUsage\":\"No usage.\",\"model\":\"Model\",\"calls\":\"Calls\",\"timeline\":\"Timeline\",\"timelineHint\":\"The gateway records only the last request per key, so first use cannot be shown.\",\"gatewayUnavailable\":\"The gateway could not be reached, so budget, spend and request counts are unknown rather than zero.\",\"disable\":\"Disable account\",\"restore\":\"Restore account\",\"disabledBanner\":\"Disabled on {date}. Sign-in is refused and {keys} key(s) are blocked at the gateway.\",\"disabledBy\":\"Disabled by {email}.\",\"disabledReason\":\"Reason: {reason}\",\"disableTitle\":\"Disable this account?\",\"disableExplain\":\"Sign-in is refused and every key the account holds is blocked at the gateway, which stops paid and free calls alike. Nothing is deleted, and Restore undoes both.\",\"disableReasonPlaceholder\":\"Reason (optional) â e.g. card-testing signup\",\"disableCaveat\":\"A browser session already open stays signed in until its token expires; the blocked keys are what stop spending immediately. To delete the account for good, use scripts/delete-user.sh.\",\"disableConfirm\":\"Disable\"},\"LandingAlt\":{\"nav\":{\"models\":\"Models\",\"pricing\":\"Pricing\",\"docs\":\"Docs\",\"comparison\":\"Comparison\",\"apps\":\"Apps\",\"blog\":\"Blog\",\"signIn\":\"Sign In\",\"getStarted\":\"Get Started\"},\"hero\":{\"eyebrow\":\"ONE API KEY · {count}+ MODELS\",\"headlineA\":\"Text. Images. Video. Decisions.\",\"headlineB\":\"One gateway\",\"headlineC\":\"for generative AI.\",\"lede\":\"FastMetal is an OpenAI-compatible gateway to {count}+ generative AI models. Point your existing code at one base URL, pay per token, and stop maintaining a different SDK for every provider.\",\"ctaPrimary\":\"Create a free account\",\"ctaSecondary\":\"View Pricing\",\"reassure1\":\"Pay as you go\",\"reassure2\":\"no subscription\",\"reassure3\"
10:\"no lock-in\",\"trustModels\":\"{count}+ models\",\"trustCompatible\":\"OpenAI-compatible\",\"trustBilling\":\"Pay-per-token\",\"trustProviders\":\"{count} providers\",\"consolePath\":\"POST api.fastmetal.ai/v1/chat/completions\",\"consoleStatus\":\"200 OK\",\"consoleComment\":\"# the only line you change\",\"consoleTabsLabel\":\"Route the same request to any model\",\"rankPrefix\":\"Arena\",\"copyBaseUrl\":\"Click to copy\",\"response1\":\"Root cause: Node 22 incompatibility. Updating the lockfile fixes it.\",\"response2\":\"Tests pass â the build step is hitting OOM. Raise the memory limit.\",\"response3\":\"A circular import is the culprit. I suggest splitting utils.ts.\",\"response4\":\"One flaky test. A retry goes green, and here is a permanent fix.\",\"modeText\":\"Text\",\"modeImage\":\"Image\",\"modeVideo\":\"Video\",\"imagePath\":\"POST api.fastmetal.ai/v1/images/generations\",\"videoPath\":\"POST api.fastmetal.ai/v1/videos/create\",\"imageMeta\":\"ByteDance Seedream 4.5 · {price} per image · real output\",\"videoMeta\":\"Seedance 2.0 Fast · 8s 720p · {price} per video · real output\",\"userMessage\":\"Find out why CI failed\",\"trustInvoice\":\"Qualified invoices\",\"ctaDashboard\":\"Open the dashboard\",\"trustPayment\":\"Card or bank transfer\",\"modeDecision\":\"Decision\",\"decisionPath\":\"POST api.fastmetal.ai/v1/decisions/jev-1-13\",\"decisionMeta\":\"TypeSafe Jev 1.13 · {price} per decision · real response\",\"imageMetaUnpriced\":\"ByteDance Seedream 4.5 · real output\",\"videoMetaUnpriced\":\"Seedance 2.0 Fast · 8s 720p · real output\",\"decisionMetaUnpriced\":\"TypeSafe Jev 1.13 · real response\"},\"problem\":{\"title\":\"Multi-provider AI is death by a thousand integrations.\",\"body\":\"Every provider ships its own SDK, its own auth, its own rate limits, its own billing, and its own idea of what a âmessageâ is. Your agentâs reliability becomes a function of how many dashboards you can babysit at 3 a.m.\",\"short\":\"Every provider ships its own SDK, its own auth, its own rate limits, and its own billing. FastMetal collapses all of it into one drop-in endpoint.\",\"pain1\":\"N providers = N API keys, N SDKs, and N monthly charges to reconcile.\",\"pain2\":\"A better model ships weekly â swapping it means a code change, not a config change.\",\"pain3\":\"One provider has an outage and your app goes down with it.\"},\"convergence\":{\"title\":\"From many providers to one endpoint.\",\"body\":\"{providers} providers and {count}+ models funnel through a single OpenAI-compatible URL. You integrate once and route to any of them by name.\",\"statModels\":\"models\",\"statProviders\":\"providers\",\"statEndpoint\":\"endpoint\",\"statBill\":\"payment\"},\"steps\":{\"title\":\"Three steps to your first call\",\"lede\":\"From zero to a live request in about a minute. Keep the SDK you already use.\",\"step1Title\":\"Create an account\",\"step1Body\":\"Sign up and get an API key in under a minute.\",\"step2Title\":\"Add credit by card or bank transfer\",\"step2Body\":\"Card credits instantly. Bank transfer issues a qualified invoice, then credits on payment.\",\"step3Title\":\"Change one base URL\",\"step3Body\":\"Point your OpenAI client at FastMetal. Keep the rest of your code.\"},\"features\":{\"title\":\"Everything you need, nothing you donât\",\"lede\":\"A gateway, not a framework. It gets out of the way of the code you already wrote.\",\"billingTitle\":\"Pay-per-token billing\",\"billingBody\":\"Prepaid credits metered to the token. No seats, no subscriptions, no minimums â you pay for exactly what your app calls.\",\"billingShort\":\"Prepaid credits metered to the token. No seats, no subscriptions, no minimums.\",\"catalogTitle\":\"{count}+ models, one catalog\",\"catalogBody\":\"Every major provider behind a single key. Compare context length and arena rank before you commit.\",\"catalogShort\":\"models from every major provider, behind a single key.\",\"apiTitle\":\"OpenAI-compatible API\",\"apiBody\":\"Drop-in with the OpenAI SDK you already use. Chat completions, streaming, tools, and structured outputs â
10change the base URL, keep the rest.\"},\"catalog\":{\"title\":\"Browse the catalog. Compare on the numbers.\",\"lede\":\"{count}+ models ranked by arena performance, with transparent per-million-token pricing in yen or US dollars.\",\"search\":\"Search {count} modelsâ¦\",\"all\":\"All\",\"rankLabel\":\"Text overall\",\"unranked\":\"Unranked\",\"ctx\":\"{value} ctx\",\"priceIn\":\"{price} in\",\"priceOut\":\"{price} out / 1M\",\"showing\":\"Showing {shown} of {total} models\",\"showingProvider\":\"{provider}: showing {shown} of {total} models\",\"empty\":\"No sample models from that provider here â the full catalog has {total} across every provider.\",\"searchAria\":\"Search the model catalog\",\"showingSearch\":\"{shown} of {total} models match â{query}â\",\"noResults\":\"No models match â{query}â.\",\"seeAllResults\":\"See all results for â{query}â\",\"browseAll\":\"Browse the full catalog\",\"copyId\":\"Copy model ID\",\"copied\":\"Copied\",\"unavailable\":\"The catalog is temporarily unavailable. Browse all models â\"},\"statement\":{\"text\":\"Switching model is switching a string. Switching provider is switching a string. That is the whole migration.\",\"inlineA\":\"One request\",\"inlineB\":\"routes to any of\",\"inlineC\":\"{count} models\",\"inlineD\":\" â by name.\"},\"diff\":{\"note\":\"Switching model = switching a string. Switching provider = switching a string. Thatâs the whole migration.\"},\"faq\":{\"title\":\"The things developers ask first\",\"q1\":\"Is it really OpenAI-compatible?\",\"a1\":\"Yes. Any OpenAI SDK or HTTP client works â set base_url to https://api.fastmetal.ai/v1 and use your FastMetal key. Chat completions, streaming, tool calls, and structured outputs are supported.\",\"q2\":\"What does it cost?\",\"a2\":\"You pay per token at each modelâs published rate, drawn from prepaid credits. No subscription, no seat fees, no minimum spend.\",\"q3\":\"Am I locked in?\",\"a3\":\"No. Itâs the standard OpenAI request shape â point your client back at any provider whenever you want. Your code doesnât depend on us.\",\"q4\":\"How long does integration take?\",\"a4\":\"About a minute. Change one base URL, add your key, and your existing calls route through FastMetal.\",\"q5\":\"Which providers are covered?\",\"a5\":\"{providers} providers and counting â {count}+ models in one catalog, growing as new models ship.\",\"q6\":\"How does it compare with OpenRouter or going direct?\",\"a6\":\"We keep honest comparison pages, including the cases where the other option fits better.\",\"a6l1\":\"vs OpenRouter\",\"a6l2\":\"vs Anthropic direct\",\"a6l3\":\"All comparisons\"},\"final\":{\"title\":\"One key away from every model.\",\"body\":\"Create an account, add credits, change one line. Your agents get {count}+ models behind one API key.\",\"ctaPrimary\":\"Create a free account\",\"ctaSecondary\":\"Read the docs\",\"reassure1\":\"Prepaid credits\",\"reassure2\":\"no subscription\",\"reassure3\":\"cancel by simply not topping up\",\"ctaChat\":\"Open the chat\"},\"footer\":{\"tagline\":\"The LLM API gateway. Every model behind one OpenAI-compatible endpoint.\",\"product\":\"Product\",\"models\":\"Models\",\"pricing\":\"Pricing\",\"docs\":\"Docs\",\"comparison\":\"Comparison\",\"company\":\"Company\",\"blog\":\"Blog\",\"companyInfo\":\"Company Information\",\"legal\":\"Legal\",\"copyright\":\"© {year} FastMetal\",\"endpoint\":\"api.fastmetal.ai/v1\"},\"mcp\":{\"title\":\"Works from your agent, too\",\"lede\":\"FastMetal ships a built-in MCP server. Add it to Claude Code, Codex, Cursor, or any MCP client with one command, and your agent gets inference, image, and video generation as tools â billed to the same prepaid key.\",\"docsCta\":\"See the MCP setup guide\"},\"procure\":{\"title\":\"The questions procurement asks, answered up front.\",\"lede\":\"Using an overseas API directly means a dollar card statement and no invoice, which is where Japanese accounting stops the purchase. FastMetal is run by a Japanese company to Japanese billing requirements.\",\"currency\":{\"title\":\"Billed in yen or US dollars\",\"body\":\"Each account is funded and charged in one currency â Japanese yen or US dollars â so its monthly figure never drifts with the exchange rate.\"},\"invoice\":{\"title\":\"Qualified invoices (ã¤ã³ãã¤ã¹)\",\"body\":\"The operating company is a registered qualified-invoice issuer (T5010001015990); every credit purchase comes with one.\"},\"transfer\":{\"title\":\"Bank transfer (prepaid)\",\"body\":\"Pay by card or by bank transfer. Choosing transfer issues a qualified invoice immediately, carrying a bank account dedicated to your organisation; credit is added automatically once the transfer is confirmed, with nothing to notify us about.\"},\"prepaid\":{\"title\":\"Prepaid, so spend is capped\",\"body\":\"The balance you buy is the ceiling. A bill above it cannot happen.\"},\"domestic\":{\"title\":\"Models that run inside Japan\",\"body\":\"Models whose id starts with japan- run inference inside Japan. For work whose data cannot leave the country, they are one model name away on the same key.\"},\"cta\":\"See the enterprise page\",\"ctaPricing\":\"See Japan-hosted models and prices\"},\"kw\":{\"eyebrow\":\"{model} · available today on FastMetal\",\"headlineA\":\"Call {model}\",\"headlineB\":\"without changing\",\"headlineC\":\"a line of your co
10de.\",\"lede\":\"{model} is available through FastMetal's OpenAI-compatible API. Change one base URL in the code you already have. Yen billing, per-token pricing, qualified invoices â and the same key switches to {count}+ other models.\",\"ctaModel\":\"{model} pricing and details\",\"catalogTitle\":\"{model}, and the models beside it on the same key.\",\"catalogLede\":\"{model} priced on the same yardstick as {count}+ other models â per million tokens.\",\"consoleTabsLabel\":\"The same request as {model}, sent to any model\"}},\"DocsAgentMcp\":{\"title\":\"MCP Server\",\"intro\":\"FastMetal runs a remote MCP server, so any agent that speaks the Model Context Protocol can call FastMetal models as tools. There is nothing to install: point your agent at one URL and authenticate with the API key you already have.\",\"why\":{\"title\":\"Why use this instead of the base URL?\",\"description\":\"Both work, and they solve different problems. Setting your agentâs base URL to FastMetal is all-or-nothing â the entire session runs on one FastMetal model. The MCP server instead lets you keep your current model and reach FastMetal as tools.\",\"point1\":\"Get a second opinion from another model without leaving the one you are working in.\",\"point2\":\"Generate and edit images from inside your agent. A text base URL cannot do this at all, because it requires a tool call.\",\"point3\":\"Look up live model pricing and your remaining balance mid-session.\"},\"endpoint\":{\"title\":\"Endpoint and authentication\",\"description\":\"Connect over Streamable HTTP and send your FastMetal API key as a bearer token. This is the same key you would use against the API directly â note that it is not the api.fastmetal.ai hostname, which serves the inference API and has no MCP route.\",\"keyAdvice\":\"Use a dedicated key with a spend cap rather than your main key. The key lives in an agent config file, so a capped key limits the damage if that file is ever exposed.\"},\"claudeCode\":{\"title\":\"Claude Code\",\"description\":\"Add the server with the MCP CLI. Claude Code expands the environment variable when it starts, so the key itself never gets written into your config file â export FASTMETAL_API_KEY in your shell profile first.\",\"verify\":\"Run /mcp in a session to confirm it connected. The FastMetal tools will appear in the tool list.\"},\"codex\":{\"title\":\"Codex CLI\",\"description\":\"Add a server entry to your Codex config. Servers are managed with the codex mcp command; Codex has no /mcp slash command.\"},\"otherClients\":{\"title\":\"Other clients\",\"description\":\"Any client that supports remote MCP servers with custom headers will work, including Cursor, OpenCode and Claude Desktop. Most accept a JSON block of this shape.\"},\"tools\":{\"title\":\"Available tools\",\"description\":\"Twelve tools are exposed. Model discovery and balance checks are free; the rest are charged at normal rates.\",\"ask\":\"Send one prompt to a specific model and get its reply, with token counts and an estimated cost in your key's currency (list rates, before any cache discount; none for auto).\",\"compare\":\"Send the same prompt to several models at once and see each reply side by side with its own cost.\",\"generateImage\":\"Generate an image from a text prompt. Returns a short-lived download link (ask your agent to save it) plus the real per-image cost. Pass inline:true in clients that render images.\",\"analyzeImage\":\"Ask a vision-capable model about an image, given as a URL or a data URL.\",\"generateVideo\":\"Generate a short video from a text prompt with your choice of configured video model. Waits up to 45 seconds for the render, then returns either a time-limited download link or a job_id to pick up later.\",\"getVideo\":\"Resume a video started by generate_video using its job_id, and get the download link once it is ready. Free â the video was charged at submission.\",\"decide\":\"Give a decision model a situation and named questions, and get typed answers back â a choice, a true/false probability, a score â instead of prose. For classifying, routing or gating inside an agent's own logic, where an answer you can branch on beats a paragraph you have to parse. Billed flat per accepted request.\",\"listModels\":\"List every model your key can reach, with live pricing per million tokens or per image.\",\"getModel\":\"Full detail for a single model, including pricing and whether it supports vision.\",\"quota\":\"Your remaining balance, spend and budget.\",\"healthCheck\":\"Verify the connection and that your key is valid.\",\"modelCompatibility\":\"Which models reliably drive an agentic coding loop, based on probe runs.\",\"videoNote\":\"Each video model bills its own flat price per generation regardless of prompt (the tool description lists the menu), charged the moment the job is accepted, so get_video costs nothing however often you call it. Each key has a daily video spend budget (Â¥1,250 by default on a yen key, $8 on a US-dollar key). Download links expire, so ask your agent to save the file.\",\"billing\":\"Every inference and image call runs on your own key, so usage draws down your prepaid balance exactly as a direct API call would.\",\"decideNote\":\"A decision costs the same whatever you ask, so asking every question that fits in one call is the cheapest way to use it. The per-call question count and body size are fixed per model; a request that exceeds them, or that is malformed, is rejected and costs nothing. See the structured decisions API page for the full shape.\"}
10,\"testing\":{\"title\":\"Testing with curl\",\"description\":\"The protocol is JSON-RPC 2.0 over a single POST. The Accept header must list both application/json and text/event-stream â that is what identifies the request as Streamable HTTP.\",\"note\":\"Responses come back as server-sent events, so the body arrives as a data: line wrapping the JSON result. Useful methods are initialize, tools/list and tools/call.\"},\"troubleshooting\":{\"title\":\"Troubleshooting\",\"missingKey\":{\"title\":\"401 â Missing FastMetal API key\",\"body\":\"The Authorization header is not reaching the server. Check the syntax (Authorization: Bearer sk-...) and confirm your environment variable is exported.\"},\"invalidKey\":{\"title\":\"401 â Invalid or revoked FastMetal API key\",\"body\":\"The key was rejected. Confirm it works directly against the inference API with a plain curl request to /v1/models.\"},\"rateLimited\":{\"title\":\"429 â Too many requests\",\"body\":\"Repeatedly presenting a key the gateway rejects is capped more tightly than normal traffic, usually because a stale key is stuck in a config that keeps retrying. Fix the key; the limit clears within a minute and the Retry-After header says exactly when. A key that has authenticated once is served from cache and is never rate limited.\"},\"emptyReply\":{\"title\":\"An empty or truncated reply\",\"body\":\"Reasoning models spend tokens thinking before they answer, so a low max_tokens can be used up before any answer is produced. Retry with a higher max_tokens.\"}}},\"DocsFaq\":{\"title\":\"Frequently Asked Questions\",\"intro\":\"Common questions about FastMetal â pricing, models, the API, and how we handle your data.\",\"contents\":\"Contents\",\"sections\":{\"gettingStarted\":{\"title\":\"Getting started\"},\"pricing\":{\"title\":\"Pricing and billing\"},\"models\":{\"title\":\"Models\"},\"api\":{\"title\":\"API and technical details\"},\"privacy\":{\"title\":\"Privacy and data handling\"},\"account\":{\"title\":\"Accounts and API keys\"}},\"links\":{\"models\":\"Browse models\",\"signup\":\"Create an account\",\"gettingStarted\":\"Getting started guide\",\"dashboard\":\"Dashboard\",\"pricing\":\"Pricing\",\"companyInfo\":\"Company information\",\"sctaDisclosure\":\"Commercial transaction disclosure\",\"usage\":\"Usage\",\"keyInfo\":\"Balance endpoint\",\"comparison\":\"Model comparison\",\"blog\":\"Blog\",\"videoGeneration\":\"Video generation guide\",\"anthropicMessages\":\"Anthropic-compatible API\",\"apiOverview\":\"API overview\",\"claudeCode\":\"Claude Code setup\",\"hermes\":\"Hermes setup\",\"mcp\":\"MCP server\"},\"q\":{\"whatIsFastmetal\":{\"question\":\"What is FastMetal?\",\"answer\":\"FastMetal is an AI gateway that puts models from many different providers behind a single API key and a single endpoint. Claude, Gemini, Grok, DeepSeek, Qwen, Kimi, GLM, MiniMax and others are all reachable the same way, alongside image and video generation models.\\n\\nThe API is OpenAI-compatible, so existing code works after changing the base URL and the key. Credits are prepaid â there is no subscription, no monthly minimum, and no seat count.\"},\"howToStart\":{\"question\":\"How do I get started?\",\"answer\":\"Two steps. Create an account â an API key is provisioned for you automatically â then add credit from the dashboard. You can send requests the moment the payment clears.\\n\\nCard payments post to your balance immediately. Bank transfers post automatically once the transfer is confirmed.\"},\"freeTrial\":{\"question\":\"Is there a free trial?\",\"answer\":\"There is no blanket signup credit, but a handful of models are free to call, so you can evaluate the platform before spending anything.\"},\"vsDirect\":{\"question\":\"Why use FastMetal instead of going direct to each provider?\",\"answer\":\"Three reasons. First, one contract and one invoice instead of a separate account, payment method, and billing cycle per provider.\\n\\nSecond, switching models is a string change. You are not reimplementing a new SDK and a new auth scheme every time you want to try something else.\\n\\nThird, billing can be denominated in Japanese yen rather than USD (US-dollar accounts are available too), which matters if you are budgeting or expensing in yen and would otherwise absorb the FX conversion on every provider invoice.\"}
10,\"support\":{\"question\":\"How do I get support?\",\"answer\":\"Use the form on our contact page, or email [email protected]. Support hours are 9:00 to 17:00 Japan time.\\n\\nFor API questions, the guides in these docs usually get you there faster â most integration issues come down to the base URL or the key.\"},\"howPricingWorks\":{\"question\":\"How does pricing work?\",\"answer\":\"Text models are billed per token, with separate input and output rates. The pricing page lists the rate per million tokens for every model we carry.\\n\\nImage generation is a flat rate per image and video generation is a flat rate per clip. Every request records its actual cost, which you can review on the usage page.\"},\"extraFees\":{\"question\":\"Are there platform fees or monthly costs?\",\"answer\":\"No. There is no monthly base fee, no minimum spend, and no surcharge on topping up your balance. You pay the listed per-token rate for what you actually use.\\n\\nIf you pay by bank transfer, your bank's transfer fee is yours to cover.\"},\"paymentMethods\":{\"question\":\"What payment methods do you accept?\",\"answer\":\"Credit card or bank transfer (prepaid), both from the dashboard under \\\"Add credit\\\". Payments are processed by Stripe, so card details never reach FastMetal's servers.\\n\\nChoosing bank transfer issues a qualified invoice immediately, carrying a bank account dedicated to your account. Credit is added automatically once the transfer is confirmed, so there is no need to notify us. The sender pays the transfer fee.\\n\\nYou choose the top-up amount. When the balance runs down, top up again the same way.\"},\"creditExpiry\":{\"question\":\"Do credits expire?\",\"answer\":\"Yes â prepaid credits carry an expiry date. If you want to keep using the service past that point, buy additional credits.\\n\\nThe full terms are set out in our commercial transaction disclosure.\"},\"refunds\":{\"question\":\"Can I get a refund?\",\"answer\":\"Because credits are consumable and delivery begins immediately, cancellations and refunds after service has started are generally not available.\\n\\nWhere we do issue a refund, the bank transfer fee is deducted from the refunded amount. See the commercial transaction disclosure for the full terms.\"},\"invoice\":{\"question\":\"Can you issue a qualified invoice for Japanese consumption tax?\",\"answer\":\"Yes. FastMetal is operated by a registered qualified invoice issuer under Japan's invoice system. The registration number is T5010001015990.\\n\\nThe registered entity name and address are on the company information page.\"},\"checkBalance\":{\"question\":\"How do I check my balance and usage?\",\"answer\":\"Your current balance is on the dashboard. The usage page breaks spend down by model and by day.\\n\\nTo read it programmatically, call the balance endpoint with your API key. It returns the budget ceiling and the amount spent â the difference is what you have left.\"},\"budgetExceeded\":{\"question\":\"What happens when I run out of credit?\",\"answer\":\"Further requests are rejected with a budget_exceeded error, returned as HTTP 429. Requests simply stop; nothing is billed beyond your balance and there is no overage invoice.\\n\\nTop up and you can resume immediately. Because budgets are tracked per key, exhausting one key does not affect the others.\"},\"whichModels\":{\"question\":\"Which models are available?\",\"answer\":\"A broad catalog covering Anthropic Claude, Google Gemini, xAI Grok, DeepSeek, Alibaba Qwen, Moonshot Kimi, Z.ai GLM, MiniMax and GPT-OSS, plus image and video generation models.\\n\\nThe models page lists everything currently available with live per-token rates. Programmatically, call the /models endpoint.\"},\"japaneseModels\":{\"question\":\"Which models are best for Japanese?\",\"answer\":\"We carry llm-jp-3.1-8x13b-instruct4, a domestically developed model from the LLM-jp project trained primarily on Japanese data.\\n\\nThat said, the large multilingual models â Claude, Gemini, GLM â also perform strongly in Japanese, and often better on reasoning-heavy work. Which one wins depends on the task, so the model comparison page is the reliable way to decide: it shows real output from each model on the same prompt.\"},\"newModels\":{\"question\":\"How often do you add new models?\",\"answer\":\"We add notable releases on an ongoing basis, once we have verified that the route works and the pricing is correct. New additions are announced on the blog.\\n\\nIf a model you need is missing, send us a request from the contact page.\"},\"imageAndVideo\":{\"question\":\"Do you support image and video generation?\",\"answer\":\"Both. Image generation is billed at a flat rate per image and uses the same API key as text.\\n\\nVideo generation is an asynchronous job that turns a text prompt into a short clip, billed at a flat rate per clip. Polling for completion and downloading the result cost nothing extra. See the video generation guide for details.\"},\"vision\":{\"question\":\"Can I send images as input?\",\"answer\":\"Yes, on models that support vision. Use the standard OpenAI-compatible format and pass either an image URL or base64-encoded data.\\n\\nSupport varies by model â and a model being advertised as vision-capable upstream does not always mean the route serves image input. Check the models page before you build against it.\"},\"chooseModel\":{\"question\":\"How do I choose a model?\",\"answer\":\"Start cheap and fast, then move up only where quality actually falls short. Switching is a one-line change, so there is little cost to being wrong initially.\\n\\nThe model comparison page shows how each model answers the same prompt, which is usually more informative than benchmark scores for deciding what fits your workload.\"}
10,\"openaiCompatible\":{\"question\":\"Will my existing OpenAI code work?\",\"answer\":\"Yes. Point the base URL at https://api.fastmetal.ai/v1 and swap in your FastMetal key. Nothing else needs to change.\\n\\nEvery official OpenAI client library â Python, Node.js, Go, Ruby and the rest â supports overriding the base URL, so this is a configuration change rather than a code change.\"},\"anthropicCompatible\":{\"question\":\"Do you support the Anthropic Messages API?\",\"answer\":\"Yes. POST to https://api.fastmetal.ai/anthropic/v1/messages and /anthropic/v1/messages/count_tokens.\\n\\nIf you are on the official Anthropic SDK, set the base URL to https://api.fastmetal.ai (the SDK adds /v1/messages itself) and change the key. That is the whole migration.\"},\"streaming\":{\"question\":\"Is streaming supported?\",\"answer\":\"Yes. Set stream: true on the request and tokens arrive incrementally as server-sent events.\\n\\nUse it for long responses and for anything rendering into a chat interface.\"},\"rateLimits\":{\"question\":\"What are the rate limits?\",\"answer\":\"We do not impose a fixed requests-per-minute cap. The practical limit is your balance: while there is credit on the key, requests go through.\\n\\nUpstream providers do apply their own limits. When one of those trips you will see an HTTP 429, and backing off briefly before retrying resolves it.\"},\"codingAgents\":{\"question\":\"Does FastMetal work with coding agents?\",\"answer\":\"Yes â Claude Code, Hermes, Crush, opencode, Octofriend, GitHub Copilot and Xcode all work, along with any other tool that lets you set an OpenAI-compatible or Anthropic-compatible endpoint.\\n\\nThe Agents section of these docs has per-tool setup instructions.\"},\"mcp\":{\"question\":\"Do you have an MCP server?\",\"answer\":\"Yes, at https://mcp.fastmetal.ai/mcp. Any agent that speaks the Model Context Protocol can call FastMetal models as tools, authenticating with your normal API key as a bearer token.\\n\\nIt is useful for things a base URL cannot do: getting a second opinion from a different model without leaving your session, or generating an image mid-task.\"},\"promptLogging\":{\"question\":\"Do you log my prompts and completions?\",\"answer\":\"No. Message-body logging is switched off on the production gateway, so prompt and completion content is not recorded on our side.\\n\\nWhat we do record is the metadata billing and operations require: model name, input and output token counts, latency, cost, and timestamp.\"},\"training\":{\"question\":\"Is my data used to train models?\",\"answer\":\"FastMetal does not use your data to train models.\\n\\nInference itself runs on each model provider's infrastructure, so their own policies govern what happens there. If you are working with sensitive data, get in touch from the contact page first and we can talk through which routes suit your requirements.\"},\"hosting\":{\"question\":\"Where is FastMetal hosted?\",\"answer\":\"The gateway and databases run in AWS Tokyo (ap-northeast-1). Account data and usage history stay in Japan.\\n\\nInference runs on each model provider's own infrastructure, which is located wherever that provider operates.\"},\"multipleKeys\":{\"question\":\"Can I create more than one API key?\",\"answer\":\"Yes, as many as you need, each with its own independent balance and budget ceiling.\\n\\nSeparate keys per environment or per project make it straightforward to see where spend is actually going, and to cap any one of them.\"},\"keyLeak\":{\"question\":\"What should I do if a key leaks?\",\"answer\":\"Delete the key from the dashboard. Requests using it stop being accepted the moment it is removed. Then issue a replacement and roll it out.\\n\\nThis is the practical argument for per-key budgets: a leaked key can only ever cost you what was loaded onto it.\"},\"referral\":{\"question\":\"Is there a referral program?\",\"answer\":\"Yes. When someone signs up through the referral link on your dashboard and verifies their email, you receive 1,000 yen in credit. They receive 500 yen when they generate their first API key.\\n\\nReferral rewards are capped at 20 successful referrals per account.\"}}},\"DocsConcepts\":{\"listHeading\":\"The concepts, in reading order\",\"nextHeading\":\"Next step\",\"t
10itle\":\"LLM API concepts\",\"intro\":\"One explainer per concept you need before your first LLM API request. Read top to bottom and the request shape, the cost model and tool use connect up.\",\"noteJa\":\"These explainers are currently written in Japanese and open on fastmetal.jp.\",\"japaneseOnly\":\"(Japanese)\",\"empty\":\"Coming soon.\",\"next\":\"Once the vocabulary is in place, send your first request.\",\"nextLink\":\"Getting started â\",\"items\":{\"openaiCompatibleApi\":\"The request shape everything else builds on\",\"aiGateway\":\"One API in front of many models\",\"chatCompletions\":\"messages, roles and the main parameters\",\"systemPrompt\":\"The instructions that shape every turn\",\"token\":\"The unit of billing and of context\",\"contextWindow\":\"How much a model can take at once\",\"temperature\":\"Controlling how varied the output is\",\"functionCalling\":\"Letting the model call your functions\",\"mcp\":\"The standard for connecting tools\",\"rateLimit\":\"What a 429 means and how to handle it\"}},\"DocsAgentHermes\":{\"title\":\"Hermes\",\"intro\":\"Hermes is an autonomous coding agent from Nous Research. It works with any OpenAI-compatible endpoint, so FastMetal can be configured as its inference backend directly. Both a CLI and a TUI are included.\",\"installation\":{\"title\":\"Installation\",\"description\":\"The installer pulls in everything Hermes needs â uv, Python, Node.js, and ripgrep among others.\",\"unix\":\"macOS / Linux / WSL2\",\"windows\":\"Windows (PowerShell)\"},\"wizard\":{\"title\":\"Connect with the setup wizard\",\"description\":\"This is the recommended path. Run the following from your terminal, outside any chat session, and register FastMetal as a custom endpoint.\",\"step1\":\"Choose \\\"Custom endpoint (self-hosted / VLLM / etc.)\\\".\",\"step2\":\"Enter https://api.fastmetal.ai/v1 as the API base URL.\",\"step3\":\"Enter your FastMetal API key.\",\"step4\":\"Enter a model name from the models page, for example anthropic-claude-sonnet-5.\",\"note\":\"The wizard also asks for a context length. FastMetal serves model metadata from its /models endpoint, so leaving it blank lets Hermes detect the window automatically. Your answers are persisted to ~/.hermes/config.yaml.\"},\"manual\":{\"title\":\"Configure config.yaml directly\",\"description\":\"You can skip the wizard and edit the config file yourself. Setting provider to custom tells Hermes to call the endpoint at base_url.\",\"keyDescription\":\"The API key can go inline in config.yaml, but Hermes recommends keeping secrets in .env. If you omit model.api_key, Hermes falls back to OPENAI_API_KEY.\"},\"namedProvider\":{\"title\":\"Register FastMetal as a named provider\",\"description\":\"If you juggle several endpoints, give each one a name under providers. Named providers are easier to switch between mid-session, and the name can be reused when assigning auxiliary models.\",\"anthropicDescription\":\"FastMetal also exposes an Anthropic-compatible endpoint. To use it, set transport to anthropic_messages. You can register both and switch depending on what you are doing.\"},\"switching\":{\"title\":\"Switching models\",\"description\":\"Use the /model command to change models during a session. For named providers, the syntax is custom:provider:model.\",\"note\":\"/model only switches between providers and models you have already configured. To add a new provider, exit the session and run hermes model.\"},\"auxiliary\":{\"title\":\"Auxiliary models\",\"description\":\"Hermes uses separate models for background work â generating conversation titles, compressing history, and interpreting images. Pointing these at cheap, fast models keeps the cost of a long session down.\"},\"contextLength\":{\"title\":\"Context length\",\"description\":\"Hermes normally detects the context window from the endpoint's model metadata. Set it explicitly if detection gets it wrong, or if you want to cap the window below the model's maximum. Hermes uses this value to decide when to compress conversation history.\"},\"usage\":{\"title\":\"Running Hermes\",\"description\":\"Once configured, start Hermes. Add --tui for the terminal interface. Every request now routes through FastMetal and is billed against the key you configured.\"},\"tips\":{\"title\":\"Operating tips\",\"tip1\":\"Issue a dedicated API key for Hermes and set a budget cap on it. The key lives in a config file on disk, so a ceiling bounds what an unexpected loop â or a leaked config â can cost you.\",\"tip2\":\"Agents make many requests per task. The usage page breaks actual spend down by model, which is the fastest way to see where a session's cost went.\",\"tip3\":\"Not every model holds up in an agentic tool-calling loop. Start with a model known to work well, then experiment once you have a baseline.\"},\"troubleshooting\":{\"title\":\"Troubleshooting\",\"auth\":{\"title\":\"401 authentication error\",\"body\":\"The key is not reaching FastMetal. If you are using key_env, confirm that variable is defined in ~/.hermes/.env. To check the key itself, send a request to /v1/models with the same key.\"},\"model\":{\"title\":\"Model not found\",\"body\":\"Model names must match FastMetal's identifier exactly. Use the name shown on the models page or returned by /models â not the provider's own naming for the same model.\"},\"budget\":{\"title\":\"Requests rejected with 429\",\"body\":\"You have likely exhausted the key's balance. If the response body contains budget_exceeded, top up from the dashboard; requests resume immediately afterwards.\"}}},\"TryModelCTA\":{\"title\":\"Try {model} right now\",\"body\":\"{model} is available on FastMetal through one API key. Start in the browser, or call it from the OpenAI SDK.\",\"signup\":\"Create a free account\",\"openChat\":\"Try {model} in chat\",\"inlineTitle\":\"Try {model}
10 while you read.\",\"inlineBody\":\"An account takes a minute; the free models cost nothing.\",\"inlineTry\":\"Try it in chat\",\"inlineCurl\":\"Call it with curl\",\"inlineSpecs\":\"Pricing and specs\"},\"Onboarding\":{\"preparing\":\"Preparing your keyâ¦\",\"step2Title\":\"What would you like to do next?\",\"keyTitle\":\"API key\",\"keyRevealHint\":\"Shown once. Copy it now and store it somewhere safe.\",\"copy\":\"Copy\",\"copied\":\"Copied\",\"keyAlreadyRevealed\":\"This key was already revealed. You can manage it on the Keys page.\",\"revealFailed\":\"Couldn't reveal the key.\",\"keyLoadFailed\":\"Couldn't load your key. Reload the page, or open Manage keys.\",\"manageKeys\":\"Manage keys\",\"keyStepTitle\":\"Your API key is ready\",\"stepTag\":\"{n} / 2\",\"keyStepBody\":\"This is the key your apps, CLI tools and agents use to reach FastMetal. It is shown now, once â it cannot be displayed or copied again later.\",\"keyStatusZero\":\"Balance {zero} · the free models work right now\",\"keyNext\":\"Saved it â next\",\"keyChatOnly\":\"I only need chat, skip the key\",\"creditAdded\":\"Credit added. Balance {balance}\"},\"Vs\":{\"common\":{\"eyebrow\":\"Comparison\",\"tableTitle\":\"At a glance\",\"aspect\":\"Aspect\",\"whenFmTitle\":\"When FastMetal fits\",\"reviewedNote\":\"This comparison reflects public information as of September 2026.\",\"ctaTitle\":\"Try it by changing one line: the base URL\",\"ctaBody\":\"Create a free account and use 90+ models with one API key. No subscription, no minimum.\",\"ctaButton\":\"Create a free account\",\"ctaPricing\":\"See pricing\",\"rows\":{\"billing\":\"Billing and invoices\",\"compat\":\"API compatibility\",\"models\":\"Models and providers\",\"ops\":\"Operational burden\",\"support\":\"Language and support\",\"data\":\"Data flow\",\"routing\":\"Automatic routing\",\"modalities\":\"Modalities\"}},\"index\":{\"title\":\"FastMetal compared with the alternatives\",\"intro\":\"There is more than one good way to use AI models over an API, and each has cases it genuinely wins. Here is an honest look at the alternatives we get compared with most.\"},\"openrouter\":{\"title\":\"FastMetal vs OpenRouter\",\"summary\":\"Two gateways with the same idea, built for different markets.\",\"otherLabel\":\"OpenRouter\",\"intro1\":\"FastMetal and OpenRouter are both gateways that put many providers' models behind one API key. Both are OpenAI-compatible and both bill per token.\",\"intro2\":\"The real difference is who each is built for. OpenRouter is a global, USD-billed service. FastMetal is built for teams in Japan, with JPY billing and Jap
10anese-language support as the starting point â and US-dollar accounts for anyone who budgets in dollars.\",\"acquisition\":{\"title\":\"On Stripe's acquisition of OpenRouter\",\"body\":\"In August 2026, Stripe announced an agreement to acquire OpenRouter. OpenRouter has said its product and roadmap are unchanged and that existing integrations are unaffected. The thing worth checking when you pick a gateway is whether a change of ownership changes anything about how you use it. What FastMetal offers â JPY billing, a prepaid balance you cannot overspend, and an OpenAI-compatible endpoint â does not depend on that.\",\"linkText\":\"Read more about the acquisition\"},\"whenOtherTitle\":\"When OpenRouter fits\",\"whenOther\":{\"p1\":\"You want the largest possible model catalog. OpenRouter carries more models and tends to add new ones quickly.\",\"p2\":\"USD billing is no problem for you, and English docs and community are all you need.\",\"p3\":\"You want fine-grained routing control, such as automatic provider routing and fallbacks.\"},\"whenFm\":{\"p1\":\"You want billing in JPY, with no exchange-rate mental math or foreign card fees, and expenses that drop straight into Japanese accounting.\",\"p2\":\"You need Japanese qualified invoices. FastMetal is a registered qualified invoice issuer.\",\"p3\":\"You want a Japanese UI, docs, and support, plus Japanese-focused domestic models on the same API.\"},\"table\":{\"billing\":{\"fm\":\"Prepaid in JPY or USD, chosen per account. No subscription. Card, or Japanese bank transfer for JPY; qualified invoices on JPY purchases\",\"other\":\"Prepaid credits in USD\"},\"compat\":{\"fm\":\"OpenAI-compatible, plus an Anthropic-compatible /v1/messages endpoint\",\"other\":\"OpenAI-compatible endpoint\"},\"models\":{\"fm\":\"90+ models, including Japanese domestic models\",\"other\":\"A larger catalog\"},\"ops\":{\"fm\":\"Managed. Nothing to operate\",\"other\":\"Managed. Nothing to operate\"},\"support\":{\"fm\":\"Japanese UI, docs, and support\",\"other\":\"Primarily English\"},\"data\":{\"fm\":\"Requests are relayed to each model's provider\",\"other\":\"Requests are relayed to each model's provider\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure\",\"other\":\"Auto Router, provider-level routing, and fallbacks\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reachable over MCP\",\"other\":\"Text plus images and more, varying by provider\"}},\"note\":\"OpenRouter changes over time. This is a broad-strokes comparison based on public information; check each service's current docs for specific features.\"},\"lolipop\":{\"title\":\"FastMetal vs Lolipop! AI Gateway\",\"summary\":\"Two yen-billed gateways. Payment methods and modalities are where they part.\",\"otherLabel\":\"Lolipop! AI Gateway\",\"intro1\":\"Lolipop! AI Gateway is a managed gateway launched by GMO Pepabo on 25 August 2026. It puts models from 15 AI providers behind one API key, offers both OpenAI- and Anthropic-compatible endpoints, and prices everything in yen. The idea is close to ours.\",\"intro2\":\"Plenty overlaps: prepaid in yen, metered with no monthly fee, many providers on one key. The differences are payment methods, the modalities each can handle, catalog breadth, and how automatic routing picks a model.\",\"whenOtherTitle\":\"When Lolipop! AI Gateway fits\",\"whenOther\":{\"p1\":\"You already use Lolipop! or other GMO Pepabo services and want AI usage on the same vendor.\",\"p2\":\"Text generation is all you need. The published catalog is text-only; multimodal support is listed as planned.\",\"p3\":\"You prefer a fee stated up front: no markup on token rates, and 5% (plus tax) charged when you top up.\"},\"whenFm\":{\"p1\":\"You want to prepay by Japanese bank transfer. Lolipop! AI Gateway does not accept it; FastMetal takes card or furikomi from Â¥500 and issues a qualified invoice with the transfer details on it immediately.\",\"p2\":\"You want image and video generation on the same balance and the same key.\",\"p3\":\"You want to hand model choice to the gateway without pre-selecting candidates: FastMetal picks the cheapest model that covers the request.\"},\"table\":{\"billing\":{\"fm\":\"Prepaid in JPY or USD, chosen per account. Card or Japanese bank transfer from Â¥500 (USD by card, from $5);
10 qualified invoices on JPY purchases\",\"other\":\"Prepaid credits in JPY. No markup on token rates; 5% plus tax charged at top-up. Credits expire one year after purchase. No bank transfer\"},\"compat\":{\"fm\":\"OpenAI-compatible and Anthropic-compatible\",\"other\":\"OpenAI-compatible and Anthropic-compatible\"},\"models\":{\"fm\":\"90+ models, including models processed entirely in Japan\",\"other\":\"59 models from 15 providers (per their site, 26 September 2026)\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure\",\"other\":\"Picks the lowest token price among models you specify, with failover\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reachable over MCP\",\"other\":\"Text only today; multimodal support is listed as planned\"},\"ops\":{\"fm\":\"Managed. Nothing to operate\",\"other\":\"Managed. Nothing to operate\"},\"support\":{\"fm\":\"Japanese UI, docs, and support\",\"other\":\"Japanese UI, docs, and support\"},\"data\":{\"fm\":\"Requests are relayed to each model's provider; some models are processed entirely in Japan\",\"other\":\"Requests are relayed to each model's provider\"}},\"note\":\"Statements about Lolipop! AI Gateway are based on public information from its site and press release as of September 2026, plus our own check on the same date; we confirmed on 2 September 2026 that it does not accept bank transfer. Specifications and pricing change; check the vendor for current details.\"},\"orcarouter\":{\"title\":\"FastMetal vs OrcaRouter\",\"summary\":\"Two gateways that route automatically. Currency and payment are where they part.\",\"otherLabel\":\"OrcaRouter\",\"intro1\":\"OrcaRouter is built by Continuum AI in the US and distributed in Japan by FlashLabs, which launched it here in May 2026. It puts 200+ models behind one API and offers adaptive routing that grades each request and sends it to a model that suits it.\",\"intro2\":\"Choosing a model automatically is common ground. The entry point is not. OrcaRouter prices and holds balances in USD with a $20 minimum top-up; FastMetal bills in yen from ¥500, by card or bank transfer, or in US dollars from $5 by card. The routing differs too: OrcaRouter grades by difficulty, FastMetal picks the cheapest capable model per request.\",\"whenOtherTitle\":\"When OrcaRouter fits\",\"whenOther\":{\"p1\":\"You want quality-first routing by difficulty, with a classifier sending complex requests to frontier models.\",\"p2\":\"You want gateway-side guardrails such as PII masking and prompt-injection defenses in one place.\",\"p3\":\"You need per-seat team plans or an enterprise contract with an SLA.\"},\"whenFm\":{\"p1\":\"You want billing and balance entirely in yen, with no exchange-rate conversion or foreign card fees.\",\"p2\":\"You want to prepay by Japanese bank transfer, from ¥500, with a qualified invoice issued immediately.\",\"p3\":\"You want video generation on the same key, or models processed entirely inside Japan.\"},\"table\":{\"billing\":{\"fm\":\"Prepaid in JPY or USD, chosen per account. Card or Japanese bank transfer from ¥500 (USD by card, from $5); qualified invoices on JPY purchases\",\"other\":\"USD, with a $20 minimum top-up. A free Hacker plan and a $49/month Team plan (public information, September 2026)\"},\"compat\":{\"fm\":\"OpenAI-compatible and Anthropic-compatible\",\"other\":\"OpenAI-compatible\"},\"models\":{\"fm\":\"90+ models, including models processed entirely in Japan\",\"other\":\"200+ models\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure\",\"other\":\"Adaptive routing: a classifier grades difficulty and assigns a model, with fallbacks\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reachable over MCP\",\"other\":\"Text, plus image generation and audio\"},\"ops\":{\"fm\":\"Managed. Nothing to operate\",\"other\":\"Managed. Nothing to operate\"}
10,\"support\":{\"fm\":\"Japanese UI, docs, and support\",\"other\":\"Sold and supported in Japan by FlashLabs\"},\"data\":{\"fm\":\"Requests are relayed to each model's provider; some models are processed entirely in Japan\",\"other\":\"Requests are relayed to each model's provider; domestic data routing is offered on the enterprise plan\"}},\"note\":\"Statements about OrcaRouter are based on public information as of September 2026 (its press release, its site, and third-party reviews). Plans and pricing change; check the vendor for current details.\"},\"claudeApi\":{\"title\":\"Claude API: FastMetal vs contracting Anthropic directly\",\"summary\":\"Claude Code and the official SDK work unchanged. What differs is the contract and the invoice.\",\"otherLabel\":\"Anthropic direct\",\"intro1\":\"There are two ways to use Claude over an API: contract Anthropic directly, or go through a gateway like FastMetal. FastMetal serves an Anthropic-compatible /v1/messages endpoint, so the official SDK and Claude Code work as they are, with only the base URL and API key changed.\",\"intro2\":\"Direct contracts win on speed of access to Anthropic's newest features. FastMetal wins on JPY billing with qualified invoices, and on using Claude alongside other providers' models under one key. Claude's main models are in the FastMetal catalog.\",\"whenOtherTitle\":\"When going direct fits\",\"whenOther\":{\"p1\":\"You want new models and betas on day one, or you need the full official API surface, including batch processing and organization controls.\",\"p2\":\"Your volume is large enough to negotiate discounts or an enterprise agreement with Anthropic.\",\"p3\":\"You have settled on Claude alone and have no plans to compare it with other providers' models.\"}
10,\"whenFm\":{\"p1\":\"You need JPY billing and Japanese qualified invoices, instead of pushing USD card charges through accounting.\",\"p2\":\"You use Claude Code or the official SDK and want zero code changes. Switching is an environment-variable change.\",\"p3\":\"You want Claude next to Gemini and other providers' models, compared under one key.\"},\"table\":{\"billing\":{\"fm\":\"Prepaid in JPY or USD, chosen per account. Card, or Japanese bank transfer for JPY; qualified invoices on JPY purchases\",\"other\":\"Billed in USD\"},\"compat\":{\"fm\":\"Anthropic-compatible /v1/messages. The official SDK and Claude Code work unchanged\",\"other\":\"The official API and SDK\"},\"models\":{\"fm\":\"Claude's main models, plus other providers' models on the same key\",\"other\":\"Claude only. New models and betas arrive here first\"},\"ops\":{\"fm\":\"Many providers, one account\",\"other\":\"Simple if Anthropic is your only provider\"},\"support\":{\"fm\":\"Japanese UI, docs, and support\",\"other\":\"Primarily English\"},\"data\":{\"fm\":\"Requests are relayed to Anthropic\",\"other\":\"Requests go directly to Anthropic\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure\",\"other\":\"One provider, so you name the model yourself\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reachable over MCP\",\"other\":\"Text generation and image input. No image or video generation\"}},\"note\":\"New Anthropic features can take time to reach FastMetal. See the models page for the Claude models currently available.\"},\"openaiApi\":{\"title\":\"GPT-family models: FastMetal vs contracting OpenAI directly\",\"summary\":\"Chat completions through the gateway. Features only the direct API has, through the direct API.\",\"otherLabel\":\"OpenAI direct\",\"intro1\":\"FastMetal's API is OpenAI-compatible, so OpenAI's official SDK and compatible tools work as they are, with only the base URL and API key changed. The catalog includes GPT-family models, and the lineup is expanding.\",\"intro2\":\"To be upfront: FastMetal is not a replacement for everything OpenAI offers. Fine-tuning, the Realtime API, and other official-only features need a direct contract. FastMetal is the option when chat completions are the core of your usage and you want JPY billing and cross-provider model comparison.\",\"whenOtherTitle\":\"When going direct fits\",\"whenOther\":{\"p1\":\"You need official features beyond chat completions: fine-tuning, the Realtime API, Assistants.\",\"p2\":\"You want OpenAI's newest models on day one.\",\"p3\":\"Your volume is large enough to negotiate discounts directly with OpenAI.\"},\"whenFm\":{\"p1\":\"Chat completions are the core of your usage, and you need JPY billing and qualified invoices.\",\"p2\":\"You want GPT-family models next to Claude, Gemini, and other providers' models, on one key.\",\"p3\":\"You want to keep your OpenAI SDK code unchanged. The switch is one line: the base URL.\"},\"table\":{\"billing\":{\"fm\":\"Prepaid in JPY or USD, chosen per account. Card, or Japanese bank transfer for JPY; qualified invoices on JPY purchases\",\"other\":\"Billed in USD\"},\"compat\":{\"fm\":\"OpenAI-compatible. The official SDK and compatible tools work unchanged\",\"other\":\"The official API, with every endpoint\"},\"models\":{\"fm\":\"Models from many providers, including GPT-family. Lineup expanding\",\"other\":\"Every OpenAI model and feature\"},\"ops\":{\"fm\":\"Many providers, one account\",\"other\":\"Simple if OpenAI is your only provider\"},\"support\":{\"fm\":\"Japanese UI, docs, and support\",\"other\":\"Primarily English\"},\"data\":{\"fm\":\"Requests are relayed to each provider\",\"other\":\"Requests go directly to OpenAI\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure\",\"other\":\"You name the model yourself\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reach
10able over MCP\",\"other\":\"Text plus images and audio. The direct API is broad\"}},\"note\":\"See the models page for the GPT-family models currently on FastMetal. If you need official-only features, running FastMetal alongside a direct contract is a realistic setup.\"},\"foreignHosted\":{\"title\":\"Models processed in Japan: FastMetal vs overseas hosting\",\"summary\":\"For a set of models, prompts are processed entirely inside Japan.\",\"otherLabel\":\"Overseas-hosted APIs\",\"intro1\":\"With an overseas API, your prompts are processed on servers abroad. For most uses that is fine, but in government, finance, and healthcare, domestic processing can be a hard requirement.\",\"intro2\":\"FastMetal offers models whose processing stays inside Japan. Claude Sonnet and Claude Haiku run on geography-pinned profiles in a domestic region, and LLM-jp, the Japan-served editions of Gemma, Qwen, and Kimi, and gpt-oss-120b run on our own infrastructure in Japan. Other catalog models are relayed to overseas providers, so choose the covered models when domestic processing matters.\",\"whenOtherTitle\":\"When overseas hosting is fine\",\"whenOther\":{\"p1\":\"You have no domestic-processing requirement and want the newest frontier models above all.\",\"p2\":\"You want the widest possible model choice. Domestic processing covers part of the catalog.\",\"p3\":\"Your organization has already settled the approvals and contracts for overseas processing.\"},\"whenFm\":{\"p1\":\"Procurement requirements or internal policy demand that prompts and outputs be processed in Japan.\",\"p2\":\"You want Claude-class models with domestic processing. Geography-pinned profiles keep inference inside the country.\",\"p3\":\"You would rather simplify the cross-border story for personal data by not sending it abroad in the first place.\"},\"table\":{\"billing\":{\"fm\":\"Prepaid in JPY or USD, chosen per account. Card, or Japanese bank transfer for JPY; qualified invoices on JPY purchases\",\"other\":\"Mostly billed in USD\"},\"compat\":{\"fm\":\"OpenAI- and Anthropic-compatible. Same API for the Japan-processed models\",\"other\":\"Varies by provider\"},\"models\":{\"fm\":\"Japan-processed: Claude Sonnet/Haiku, LLM-jp, Japan-served Gemma, Qwen, and Kimi, gpt-oss-120b\",\"other\":\"The widest choice, including frontier models\"},\"ops\":{\"fm\":\"Switching to domestic processing is a model-name change\",\"other\":\"Building it yourself means cloud contracts and infrastructure work\"},\"support\":{\"fm\":\"Japanese UI, docs, and support\",\"other\":\"Primarily English\"},\"data\":{\"fm\":\"For covered models, prompts and inference stay in Japan\",\"other\":\"Processed on servers abroad\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure (name a model explicitly when domestic processing is a requirement)\",\"other\":\"Varies by provider\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reachable over MCP\",\"other\":\"Varies by provider\"}},\"note\":\"Domestic processing is per model. Models beyond the ones above are relayed to overseas providers. For compliance with specific laws and industry guidelines, confirm with your own legal and compliance teams.\"},\"localLlm\":{\"title\":\"FastMetal vs self-hosted LLMs (Ollama and friends)\",\"summary\":\"Local inference and an API gateway solve slightly different problems.\",\"otherLabel\":\"Self-hosted LLMs\",\"intro1\":\"Running open-weight models on your own GPUs with Ollama or vLLM solves a slightly different problem than an API gateway like FastMetal.\",\"intro2\":\"Local inference wins on data never leaving your infrastructure and on fixed costs. A gateway wins on access to the strongest closed models with no hardware, billed per token. Many teams use both.\",\"whenOtherTitle\":\"When self-hosted LLMs fit\",\"whenOther\":{\"p1\":\"Your data must never leave your infrastructure. With local inference, requests stay inside.\",\"p2\":\"Your volume is steady and high enough that fixed GPU costs beat metered billing.\",\"p3\":\"You need offline operation, or latency physically close to your workload.\"},\"whenFm\":{\"p1\":\"You want the top closed models such as Claude, GPT, and Gemini. There is a quality tier open weights do not reach.\",\"p2\":\"You do not want to procure and operate GPUs. Trying FastMetal takes an API key and nothing else.\",\"p3\":\"You want image and video generation alongside text, on one API.\"},\"table\":{\"billing\":{\"fm\":\"Metered billing in JPY or USD, chosen per account. No upfront cost. Top up by card, or Japanese bank transfer for JPY\",\"other\":\"GPU purchase or rental. No per-token charge for inference\"},\"compat\":{\"fm\":\"OpenAI- and Anthropic-compatible\",\"other\":\"Ollama offers an OpenAI-compatible endpoint\"},\"models\":{\"fm\":\"90+, including closed models\",\"other\":\"Open-weight models only\"},\"ops\":{\"fm\":\"Nothing to operate\",\"other\":\"GPUs, model updates, and scaling, all yours\"}
10,\"support\":{\"fm\":\"Japanese support\",\"other\":\"OSS community\"},\"data\":{\"fm\":\"Requests are relayed to each provider\",\"other\":\"Data stays inside your infrastructure\"},\"routing\":{\"fm\":\"Set the model to auto and it picks the cheapest model that covers what the request needs, falling back to the next candidate on failure\",\"other\":\"Routing between models is yours to build\"},\"modalities\":{\"fm\":\"Text, image, and video generation and structured decisions. Also reachable over MCP\",\"other\":\"Mostly text. Images and video need separate models and infrastructure\"}},\"note\":\"A common and sensible setup is local small models for development and gateway access to stronger models for production and quality checks. It is not an either-or choice.\"},\"cost\":{\"heading\":\"The actual cost: where self-hosted GPUs break even against hosted APIs\",\"intro1\":\"Open-weight models can also be used through hosted APIs, often the very same model. So whether running locally is cheaper comes down to hosted per-token rates versus how continuously you can keep your own GPU busy.\",\"intro2\":\"The charts below compare running a 100B-class open-weight model on a single-H100 server you own against using the same class of model through a hosted API. The assumptions are rough August 2026 market figures, and labor is excluded.\",\"chartATitle\":\"Monthly cost compared (example)\",\"chartACaption\":\"Against standard hosted rates, break-even sits around 5.7 billion tokens a month, which is close to a third of a single H100's effective ceiling (about 20 billion tokens a month), sustained every month. Against the cheapest hosted rates, a single box never overtakes even at its ceiling.\",\"chartBTitle\":\"Effective cost is a function of utilization\",\"chartBCaption\":\"The effective cost per million tokens of a self-hosted GPU is roughly inversely proportional to utilization: about JPY 82 at 10% utilization, and about JPY 8 even at 100%. Hosting providers batch many customers' requests and run GPUs hot, which is how their prices approach the hardware floor.\",\"serSelf\":\"Own H100 (purchase + power)\",\"serHostedStd\":\"Hosted API (standard)\",\"serHostedCheap\":\"Hosted API (cheapest tier)\",\"selfShort\":\"Own H100\",\"hostedStdShort\":\"Standard\",\"hostedCheapShort\":\"Cheapest\",\"breakEvenA\":\"Break-even ~5.7B/mo\",\"ceiling\":\"Single-H100 ceiling\",\"breakEvenB\":\"Matches standard rate at ~27%\",\"axisTokens\":\"Tokens per month\",\"axisMonthlyCost\":\"Monthly cost\",\"axisUtil\":\"Effective utilization\",\"axisEffCost\":\"Effective cost (JPY / M tokens)\",\"xTickA0\":\"0\",\"xTickA1\":\"5B\",\"xTickA2\":\"10B\",\"xTickA3\":\"15B\",\"xTickA4\":\"20B\",\"yTickA0\":\"0\",\"yTickA1\":\"Â¥200k\",\"yTickA2\":\"Â¥400k\",\"yTickA3\":\"Â¥600k\",\"yTickB0\":\"0\",\"yTickB1\":\"Â¥50\",\"yTickB2\":\"Â¥100\",\"yTickB3\":\"Â¥150\",\"assumptionsTitle\":\"Assumptions (rough figures, August 2026)\",\"a1\":\"Own server: a single-H100 build bought for about JPY 5M, straight-lined over 3 years, plus power, about JPY 170k a month. Labor excluded\",\"a2\":\"Throughput: about 8,000 tokens/second aggregate with batched inference, an effective ceiling of about 20 billion tokens a month at 100% utilization\",\"a3\":\"Hosted rates: blended input and output for the same class of open-weight model, about JPY 30 per million tokens standard and about JPY 8 at the cheapest tier\",\"a4\":\"Exchange rate: USD 1 = JPY 150\",\"a5\":\"The self-hosted side additionally carries operations and maintenance labor. Published analyses put real total cost at 3 to 5 times the raw GPU cost\",\"concl1\":\"In short, choosing local inference on cost alone requires confidence the GPU will stay busy at high utilization. For bursty development use or internal tools that run only during working hours, hosted is cheaper almost every time.\",\"concl2\":\"If your reasons are data that cannot leave, offline operation, or a fixed budget, local inference is worth it regardless of utilization. As above, this is not an either-or choice.\"}},\"Apps\":{\"title\":\"FastMetal Apps\",\"intro\":\"Fill in the blanks and press go. Meeting minutes, polite emails, approval drafts, market research â small tools that put AI straight to work. Free apps need only an account.\",\"allApps\":\"All apps\",\"featured\":\"Featured\",\"noApps\":\"No apps in this language yet.\",\"free\":\"Free to use\",\"paid\":\"Credit required\",\"freeHint\":\"Works with just an account â no credit needed\",\"paidHint\":\"Available once you add credit\",\"modelLine\":\"Model: {model}\",\"editHint\":\"Edit the text freely. Fill in the blanks, then press the button.\",\"launchSignedOut\":\"Sign up and {cta}\",\"requiredField\":\"Please fill in \\\"{label}\\\".\",\"tooLong\":\"\\\"{label}\\\" is too long (max {max} characters).\",\"examples\":\"Use cases\",\"examplesNote\":\"Real results generated
10with this app.\",\"exampleInputs\":\"Inputs\",\"exampleOutput\":\"Output\",\"exampleModel\":\"Model: {model}\",\"howItWorks\":\"How it works\",\"faq\":\"Frequently asked questions\",\"related\":\"Related apps\",\"backToApps\":\"All apps\",\"breadcrumbApps\":\"Apps\",\"tryInChat\":\"Open in chat\"},\"Compare\":{\"eyebrow\":\"Model comparison\",\"indexTitle\":\"Model vs model\",\"indexIntro\":\"Head-to-head comparisons of the models FastMetal serves today. Prices and context windows are the live configuration; the answers are what the gateway returned to the same prompt.\",\"indexEmpty\":\"No comparisons are available right now.\",\"subtitle\":\"Pricing, context window and real answers ({month})\",\"intro\":\"{a} ({brandA}) and {b} ({brandB}), compared as you can actually call them on FastMetal. Both are served from the same OpenAI-compatible endpoint and API key; switching is a change to the model string.\",\"specTitle\":\"Specs and pricing\",\"rows\":{\"brand\":\"Provider\",\"input\":\"Input (per 1M tokens)\",\"output\":\"Output (per 1M tokens)\",\"typical\":\"Typical cost (1,000 in + 500 out tokens à 1,000 calls)\",\"context\":\"Context window\",\"release\":\"Release date\",\"modalities\":\"Input modalities\",\"overall\":\"Arena · overall\",\"japanese\":\"Arena · Japanese\",\"coding\":\"Arena · coding\",\"throughput\":\"Throughput (p50)\"},\"specNote\":\"Prices are FastMetal's rates, before tax.\",\"notRanked\":\"Unranked\",\"tokens\":\"tokens\",\"verdictTitle\":\"Which should you pick?\",\"verdictPrice\":\"On price, {model}: {price} per 1M output tokens, {pct}% less than {other}.\",\"verdictPriceSame\":\"Output pricing is identical ({price} per 1M tokens).\",\"verdictArena\":\"On the {category} arena board, {model} ranks higher (#{rank}; {other} is #{otherRank}).\",\"verdictContext\":\"For long documents, {model}: a {ctx}-token context window against {otherCtx} for {other}.\",\"verdictSwitch\":\"If in doubt, try both on the same key. Switching is a change to the model string, and each is billed at its own rate.\",\"demoTitle\":\"Real answers to the same prompts\",\"demoIntro\":\"Exactly what the FastMetal gateway returned, side by side. Not benchmark scores: actual output.\",\"demoMeta\":\"{seconds}s\",\"demoTokens\":\"{count} output tokens\",\"demoMore\":\"Compare on more prompts â\",\"faqTitle\":\"Frequently asked questions\",\"relatedTitle\":\"More comparisons with {model}\",\"modelPage\":\"{model} details\",\"ctaTitle\":\"Try both on one API key\",\"ctaBody\":\"Create an account and add credit to call {a} and {b} from the browser chat and the API. No monthly fee.\",\"ctaSignup\":\"Create a free account\",\"ctaChat\":\"Try {model} in chat\",\"crossProviderTitle\":\"Across providers\",\"crossProviderIntro\":\"Models from different labs on price, context window, arena rank and real answers to the same prompts. Ordered by the pair's arena standing.\",\"sameProviderTitle\":\"Within one provider\",\"sameProviderIntro\":\"Which model from the same lab to use: what the flagship costs against the lighter one, and what the money buys.\",\"moreTitle\":\"Not finding the pairing you want?\",\"moreBody\":\"These are the headline matchups. Every pairing has its own page, and each model's detail page links the comparisons it appears in.\",\"moreCatalog\":\"Browse the model catalog\",\"moreBest\":\"See rankings by use case\",\"allComparisons\":\"See all comparisons\",\"filterLabel\":\"Filter by model:\",\"filterClear\":\"Clear filter\",\"filteredHeading\":\"{model} comparisons\",\"filteredIntro\":\"Head-to-head pages pitting {model} against other models ({count}). Prices and context windows are the live configuration; the answers are what the gateway returned to the same prompt.\",\"filteredCrossTitle\":\"Against other providers\",\"filteredSameTitle\":\"Against other {brand} models\",\"filteredEmpty\":\"No comparison pages for {model} yet.\",\"filteredTitle\":\"{model} comparisons â pricing and performance vs other models | FastMetal\",\"filteredDescription\":\"Every head-to-head page for {model}: pricing, context window, arena rank and real answers to the same prompts.\",\"table\":{\"model\":\"Rival model\",\"provider\":\"Provider\",\"output\":\"Output per 1M\",\"delta\":\"Diff\",\"context\":\"Context\",\"arena\":\"Arena\",\"action\":\"\",\"compare\":\"Compare\",\"same\":\"same\",\"note\":\"\\\"Diff\\\" is against {model}
10's output price. Click a column heading to re-sort. Prices are per 1M tokens, before tax.\"},\"filteredBaseline\":\"{model} costs {price} per 1M output tokens.\",\"filteredBaselineUnpriced\":\"{model} has no listed price.\",\"postEyebrow\":\"Our write-up on this matchup\",\"tokensPerSec\":\"tokens/s\"},\"Best\":{\"eyebrow\":\"Rankings by use case\",\"indexTitle\":\"The best LLM APIs you can call today, by use case\",\"indexIntro\":\"Only models FastMetal serves, ranked per use case. Positions come from the public arena's ELO; prices are per 1M tokens. As of {month}.\",\"titleSuffix\":\"({month})\",\"metaTitle\":\"{title} ({month}) | FastMetal\",\"methodArena\":\"Ranked by ELO on the public arena's {category} board, restricted to models FastMetal serves. The order updates with the leaderboard.\",\"methodCheap\":\"Ordered by price per 1M output tokens, then input price. Free-tier models are excluded.\",\"methodLong\":\"Ordered by context window: the number of tokens one request can hold.\",\"arenaLine\":\"Arena #{rank} · ELO {elo}\",\"priceLine\":\"In {input} · out {output} / 1M tokens\",\"contextLine\":\"{ctx}-token context\",\"modelPage\":\"Details\",\"compareTop\":\"Compare with {top}\",\"faqTitle\":\"Frequently asked questions\",\"faq\":{\"q1\":\"What is this ranking based on?\",\"q2\":\"How is pricing decided?\",\"a2\":\"Each model has a price per 1M tokens (before tax) â in yen, or in US dollars on a US-dollar account â drawn from a prepaid balance as you use it. There is no subscription or monthly fee.\",\"q3\":\"Can I use the top models with one API key?\",\"a3\":\"Yes. Every model on this page is served from FastMetal's OpenAI-compatible endpoint under one API key; switching is a change to the model string.\"},\"otherLists\":\"Other rankings\",\"empty\":\"No served model can be ranked in this category right now.\",\"ctaTitle\":\"Every model above runs on one API key\",\"ctaBody\":\"Create an account and add credit to call these models from the browser chat and the API. No monthly fee.\",\"ctaSignup\":\"Create a free account\",\"ctaPricing\":\"See pricing\",\"categories\":{\"coding\":{\"title\":\"Best LLM APIs for coding\",\"short\":\"Coding\",\"intro\":\"The models rated highest for code generation, review and debugging, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for coding, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"japanese\":{\"title\":\"Best LLM APIs for Japanese\",\"short\":\"Japanese\",\"intro\":\"The models rated highest for Japanese-language answers, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for Japanese, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"overall\":{\"title\":\"Top-rated LLM APIs overall\",\"short\":\"Overall\",\"intro\":\"The models rated highest without restricting the task, limited to what FastMetal serves today.\",\"description\":\"The top-rated LLMs overall, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"math\":{\"title\":\"Best LLM APIs for math and reasoning\",\"short\":\"Math\",\"intro\":\"The models rated highest on math and logical reasoning, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for math and reasoning, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"creative-writing\":{\"title\":\"Best LLM APIs for writing\",\"short\":\"Writing\",\"intro\":\"The models rated highest for writing and creative tasks, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for writing, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"instruction-following\":{\"title\":\"Best LLM APIs for instruction following\",\"short\":\"Instruction following\",\"intro\":\"The models rated highest at following detailed instructions and formats, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for instruction following, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"}
10,\"hard-prompts\":{\"title\":\"Best LLM APIs for hard prompts\",\"short\":\"Hard prompts\",\"intro\":\"The models rated highest on difficult prompts, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest on hard prompts, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"multi-turn\":{\"title\":\"Best LLM APIs for multi-turn chat\",\"short\":\"Multi-turn chat\",\"intro\":\"The models rated highest at holding context across a long conversation, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for multi-turn conversation, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"vision\":{\"title\":\"Best LLM APIs for image input (vision)\",\"short\":\"Vision\",\"intro\":\"The models rated highest at understanding images as input, restricted to what FastMetal serves today.\",\"description\":\"LLMs rated highest for image input, ranked by arena position, with pricing and context windows. All available on FastMetal's OpenAI-compatible API.\"},\"cheap\":{\"title\":\"Cheapest LLM APIs\",\"short\":\"Price\",\"intro\":\"The paid models FastMetal serves, ordered by price per 1M output tokens.\",\"description\":\"LLMs on FastMetal ordered by price per 1M tokens, with context windows and arena ranks alongside.\"},\"long-context\":{\"title\":\"LLM APIs with the largest context windows\",\"short\":\"Long context\",\"intro\":\"The models FastMetal serves, ordered by how many tokens one request can hold.\",\"description\":\"LLMs on FastMetal ordered by context window, with pricing and arena ranks alongside.\"}},\"table\":{\"position\":\"#\",\"model\":\"Model\",\"provider\":\"Provider\",\"arena\":\"Arena\",\"input\":\"Input per 1M\",\"output\":\"Output per 1M\",\"context\":\"Context\",\"links\":\"Links\",\"sortedAscending\":\"ascending\",\"sortedDescending\":\"descending\",\"sortBy\":\"Sort by\",\"tokens\":\"tokens\",\"notRanked\":\"Unranked\",\"note\":\"Click a column heading to re-sort; the table opens in this category's ranking order. Prices are per 1M tokens, before tax; context is in tokens.\",\"compare\":\"Compare\"},\"priceNote\":\"Price is per 1M output tokens\"},\"Providers\":{\"eyebrow\":\"Inference providers\",\"title\":\"Sell inference through FastMetal\",\"intro\":\"Your OpenAI-compatible endpoint becomes a model in the FastMetal catalog. Developers buy it in yen or US dollars; FastMetal handles billing, consumption tax and qualified invoices, and pays you monthly against a token statement you can check yourself.\",\"liveCounts\":\"Currently serving {models} models from {providers} upstream hosts.\",\"priorityBanner\":\"We prioritize models hosted in Japan and proprietary models that are strong in Japanese. Applications are reviewed on a rolling basis and not every application is accepted.\",\"ctaPrimary\":\"Apply to become a provider\",\"ctaSecondary\":\"Ask a question first\",\"directionNote\":\"Want to build FastMetal into your own product instead?\",\"directionLink\":\"See the partner and OEM page.\",\"howHeading\":\"How it works\",\"how\":{\"api\":{\"title\":\"One API surface\",\"body\":\"Every customer reaches your models the same way: one key, /v1/chat/completions, the chat UI and the MCP server. You integrate once and every FastMetal surface routes to you.\"},\"yen\":{\"title\":\"Yen billing, tax and invoices\",\"body\":\"Customers pay in yen, by card or bank transfer, or in US dollars by card. FastMetal is a registered qualified invoice issuer in Japan, so consumption tax and 驿 ¼è«æ±æ¸ are handled on our side, not yours.\"},\"japan\":{\"title\":\"Japan-hosted, said out loud\",\"body\":\"Models that run in Japan are labelled as such in the catalog and on their model page, and sold to customers who specifically want inference inside Japan.\"},\"settlement\":{\"title\":\"Monthly settlement you can verify\",\"body\":\"Your provider console shows requests and tokens per model per day, exportable as CSV. You invoice FastMetal against that statement.\"}},\"reqHeading\":\"Technical requirements\",\"reqIntro\":\"The technical review checks these with real calls through the gateway.\",\"req\":{\"compat\":\"An OpenAI-compatible /chat/completions endpoint with streaming, returning usage (token counts) on both streaming and non-streaming responses. Usage is the billing basis on both sides.\",\"models\":\"A /models endpoint, or a written rate card, with price, context length and max output tokens per model.\",\"policy\":\"A published privacy policy and a stated position on whether prompts are used for training and how long they are retained. We record
10it with your listing and pass it on to customers who ask.\",\"location\":\"Where inference physically runs, in writing. Japan-hosted models are labelled; the label is what we sell.\"},\"optionalHeading\":\"Declared, not required\",\"optionalIntro\":\"Tell us which of these your endpoint supports; each is verified before it is advertised.\",\"optional\":{\"tools\":\"Tool calling (function calling) and structured outputs\",\"vision\":\"Image input\",\"cache\":\"Prompt caching, with cache read and write pricing\"},\"stepsHeading\":\"Process\",\"steps\":{\"apply\":{\"title\":\"Apply\",\"body\":\"Tell us about your infrastructure, endpoints, models, pricing and data policy. We reply by email.\"},\"review\":{\"title\":\"Technical review\",\"body\":\"We make real calls through the gateway: compatibility, streaming, usage reporting, tool calling and image input where claimed, and pricing reconciled against your rate card.\"},\"staging\":{\"title\":\"Staging\",\"body\":\"Your models are added to a hidden staging configuration, run through the integration tests, and given real example outputs for the comparison viewer and their model pages.\"},\"live\":{\"title\":\"Go live\",\"body\":\"Your models go into the production catalog with their own pages, an announcement post on the blog and on X, and traffic from every FastMetal surface.\"}},\"faqHeading\":\"Questions providers ask\",\"closingHeading\":\"Ready to apply?\",\"closingBody\":\"The form takes about ten minutes. We reply to every application by email, usually within a few business days.\"},\"ProvidersApply\":{\"back\":\"Provider program\",\"title\":\"Apply to become a provider\",\"intro\":\"We review applications on a rolling basis and reply by email. Models hosted in Japan and proprietary models strong in Japanese are prioritized; not every application is accepted.\",\"sections\":{\"company\":\"Company\",\"listing\":\"Listing\",\"technical\":\"Technical\",\"pitch\":\"Why FastMetal should list you\"},\"fields\":{\"company\":{\"label\":\"Company name\"},\"website\":{\"label\":\"Website\"},\"email\":{\"label\":\"Contact email\",\"help\":\"Use a company address. This is where we reply.\"},\"hqCountry\":{\"label\":\"Headquarters country\",\"help\":\"ISO code, e.g. JP\"},\"inferenceCountries\":{\"label\":\"Inference countries\",\"help\":\"Where inference physically runs. ISO codes, comma-separated.\"},\"displayName\":{\"label\":\"Display name\",\"help\":\"Shown to customers, e.g. \\\"Acme AI\\\".\"},\"displayNameJa\":{\"label\":\"Display name (Japanese)\"},\"desiredSlug\":{\"label\":\"Desired slug\",\"help\":\"Lowercase letters, numbers and hyphens. Used in URLs and configuration.\"},\"modalities\":{\"label\":\"Output modalities\"},\"features\":{\"label\":\"What distinguishes you\"},\"apiBaseUrl\":{\"label\":\"API base URL\",\"help\":\"The root your /chat/completions lives under.\"},\"modelsUrl\":{\"label\":\"/models endpoint URL\",\"help\":\"Leave blank if you will send a rate card instead.\"},\"privacyPolicyUrl\":{\"label\":\"Privacy policy URL\"},\"termsUrl\":{\"label\":\"Terms of service URL\"},\"dataPolicy\":{\"label\":\"Data policy\",\"placeholder\":\"Do you train on prompts or completions? If you log prompts, how long are they retained?\"},\"pitch\":{\"label\":\"Details\",\"placeholder\":\"Hardware, models, quantization, caching, rate limits, volume discounts â anything not covered above.\"}},\"modalities\":{\"text\":\"Text\",\"vision\":\"Image input (vision)\",\"image\":\"Image generation\",\"embeddings\":\"Embeddings\"},\"features\":{\"japanHosted\":\"Hosted in Japan\",\"japaneseModel\":\"Japanese-specialized model\",\"lowLatency\":\"Low latency\",\"highThroughput\":\"High throughput\",\"uniqueModels\":\"Unique models\",\"lowPricing\":\"Low pricing\",\"uniqueInfra\":\"Unique infrastructure\",\"strategic\":\"Strategic partnership\"},\"form\":{\"optional\":\"(optional)\",\"submit\":\"Submit application\",\"sending\":\"Sendingâ¦\",\"responseNote\":\"We reply by email, usually within a few business days.\",\"success\":\"Thank you. Your application is in. We will reply to the address you gave us, usually within a few business days.\",\"error\":\"Sending failed. Please email [email protected] instead.\",\"errorInvalid\":\"Some fields need attention. Check the highlighted ones and try again.\",\"errorRateLimited\":\"That's several applications in a short time. Please try again later or email [email protected].\"}},\"ProviderConsole\":{\"eyebrow\":\"Provider console\",\"title\":\"Provider console\",\"loading\":\"Loadingâ¦\",\"error\":\"Could not load usage. Please try again.\",\"unavailable\":\"The gateway could not be reached, so these figures are placeholders. Try again in a moment.\",\"period\":\"{start} â {end}\",\"ranges\":{\"7d\":\"Last 7 days\",\"30d\":\"Last 30 days\",\"90d\":\"Last 90 days\"},\"exportCsv\":\"Export CSV\",\"empty\":\"No requests in this period\",\"stats\":{\"requests\":\"Requests\",\"successRate\":\"Success rate\",\"promptTokens\":\"Prompt tokens\",\"completionTokens\":\"Completion tokens\"},\"chart\":{\"title\":\"Requests per day\",\"description\":\"Every request routed to your models, from every FastMetal surface.\"},\"models\":{\"title\":\"By model\",\"description\":\"Requests and tokens per model in the selected period. Cached prompt tokens are shown separately.\",\"model\":\"Model\",\"requests\":\"Requests\",\"share\":\"Share\",\"failed\":\"Failed\",\"promptTokens\":\"Prompt tokens\",\"completionTokens\":\"Completion tokens\",\"cacheReadTokens\":\"Cached prompt tokens\"},\"routes\":{\"title\":\"Your models on FastMetal\",\"description\":\"How y
10our models appear to customers.\",\"model\":\"Model\",\"descriptionCol\":\"Description\",\"input\":\"Input / 1M\",\"output\":\"Output / 1M\",\"none\":\"No routes are attributed to this provider yet.\",\"priceNote\":\"Prices are the customer-facing prices published on /models, before tax.\"}},\"AdminProviders\":{\"title\":\"Inference providers\",\"providers\":\"Providers\",\"applications\":\"Applications\",\"create\":\"Create provider\",\"createButton\":\"Create\",\"fromApplication\":\"From application #{id}\",\"slugNote\":\"The slug must match model_info.provider_id in litellm_models.yaml.\",\"slugTaken\":\"That slug already exists.\",\"slugReserved\":\"That slug is reserved.\",\"none\":\"No providers yet.\",\"noApplications\":\"No applications yet.\",\"preview\":\"Preview console\",\"convert\":\"Create provider\",\"openProvider\":\"Open provider\",\"details\":\"Details\",\"save\":\"Save\",\"saved\":\"Saved.\",\"error\":\"Something went wrong.\",\"cols\":{\"slug\":\"Slug\",\"name\":\"Name\",\"status\":\"Status\",\"country\":\"Inference\",\"contact\":\"Contact\",\"members\":\"Members\",\"company\":\"Company\",\"received\":\"Received\"},\"fields\":{\"slug\":\"Slug\",\"displayName\":\"Display name\",\"displayNameJa\":\"Display name (JA)\",\"contactEmail\":\"Contact email\",\"websiteUrl\":\"Website\",\"privacyPolicyUrl\":\"Privacy policy URL\",\"termsUrl\":\"Terms URL\",\"statusPageUrl\":\"Status page URL\",\"inferenceCountry\":\"Inference country\",\"hqCountry\":\"HQ country\",\"status\":\"Status\",\"dataPolicy\":\"Data policy\",\"trains\":\"Trains on prompts\",\"retainsPrompts\":\"Retains prompts\",\"retentionDays\":\"Retention days\",\"notes\":\"Internal notes\"},\"app\":{\"website\":\"Website\",\"apiBase\":\"API base\",\"models\":\"/models\",\"policy\":\"Policies\",\"dataPolicy\":\"Data policy\",\"features\":\"Features\",\"modalities\":\"Modalities\",\"inference\":\"Inference\"},\"members\":{\"title\":\"Members\",\"description\":\"Accounts that can open this provider's console. The person must already have a FastMetal account.\",\"email\":\"Email\",\"name\":\"Name\",\"role\":\"Role\",\"since\":\"Since\",\"add\":\"Add member\",\"remove\":\"Remove\",\"none\":\"No members yet.\",\"notFound\":\"No account with that email.\"},\"routes\":{\"title\":\"Gateway routes\",\"description\":\"Entries in /model/info with model_info.provider_id = {slug}. To change them, edit litellm_models.yaml and run apply.\",\"model\":\"Model\",\"upstream\":\"Upstream\",\"input\":\"Input Â¥/1M\",\"output\":\"Output Â¥/1M\",\"none\":\"No routes carry this provider_id.\"}},\"Status\":{\"title\":\"Measured performance\",\"lede\":\"Every served model, measured on a schedule through FastMetal's own gateway.\",\"noSla\":\"This is a report of what we observe, not an SLA.\",\"model\":\"Model\",\"latency\":\"Time to first response (p50)\",\"throughput\":\"Throughput (p50)\",\"retention\":\"Prompts not retained\",\"zdrYes\":\"Yes\",\"tokensPerSec\":\"tokens/s\",\"empty\":\"No data to show yet.\",\"lastUpdated\":\"Last updated: {date} UTC\",\"lastUpdatedUnknown\":\"Last updated: unknown\",\"method\":\"A dash means we do not yet have enough samples â not that the model is slow. Models appear as their sample count passes the threshold. Uptime is not shown: our sampling rate cannot support a meaningful figure.\"},\"AdminModelHealth\":{\"title\":\"Model health\",\"intro\":\"Everything the watcher currently knows is wrong. Severity decides the channel: P1 and P2 send email because they need a person today; P3 stays here, because it is defined as noise we tolerate and an inbox is the wrong place for a backlog.\",\"refresh\":\"Refresh\",\"loading\":\"Loadingâ¦\",\"error\":\"Could not load the board.\",\"emailsLastRun\":\"Emails last run\",\"confirmed\":\"Confirmed\",\"watching\":\"Watching\",\"noEvidence\":\"No evidence captured â this finding was not observed on the last run.\",\"allClear\":\"No open findings, and the watcher is reporting on schedule.\",\"ageJustNow\":\"just now\",\"ageHours\":\"{hours}h\",\"ageDays\":\"{days}d\",\"colSeverity\":\"Sev\",\"colModel\":\"Model\",\"colCheck\":\"Check\",\"colAge\":\"Standing\",\"colState\":\"State\",\"colOutcome\":\"Outcome\",\"colFailures\":\"Failed\",\"colVerdict\":\"Verdict\",\"colKind\":\"Kind\",\"colStarted\":\"Started\",\"colCoverage\":\"Coverage\",\"colServed\":\"Served\",\"bandP1Title\":\"{count} needing action now\",\"bandP1Meaning\":\"Customers are affected, or we are billing below cost. Fix today: edit both litellm configs, run ./scripts/litellm-pricer.sh guard --all-configs, then deploy.\",\"bandP2Title\":\"{count} wrong but not bleeding\",\"bandP2Meaning\":\"Something is misconfigured and nobody is hurt yet â an inert provider slug, a missing cap. Worth a fix this week.\",\"bandP3Title\":\"{count} known and tolerated\",\"bandP3Meaning\":\"Nothing is expected of you. Mostly margin drift that moves with the exchange rate, plus decisions already taken. These never send email; read them when you choose to.\",\"deadTitle\":\"Routes that answered nothing\",\"deadMeaning\":\"Nothing responded on these in the last 24 hours. empty_output counts as a response â it is a 200 that streamed but spent its tokens thinking â so only genuine failures appear here. \\\"Never served\\\" means no successful sample exists at any point in the record: that route has never worked and should not be on sale.\",\"runsTitle\":\"Who has been looking\",\"runsMeaning\":\"An empty board means nothing is wrong only if something checked. A stopped timer would otherwise render as perfect health.\",\"uncheckedNote\":\"Image and video generation models are not health-checked, because every check would pay for a generation. If one of those routes is down, it will not appear on this board.\",\"lastRunLine\":\"Last watcher run {when} ago: {current} standing, {added}
10 added, {cleared} cleared, {emails} email(s) sent.\",\"noRuns\":\"The watcher has never reported. Nothing on this page has been checked.\",\"recoveredTitle\":\"{count} cleared in the last 7 days\",\"verdictNeverWorked\":\"Never served a request\",\"verdictDownNow\":\"Was working, now down\"},\"DisplayCurrency\":{\"label\":\"Price currency\",\"hint\":\"Show prices in Japanese yen or US dollars. Display only: you are always billed in your account's currency.\"},\"BillingDetails\":{\"title\":\"Billing details\",\"intro\":\"Your invoices are addressed to this name and address. Your country decides whether Japanese consumption tax is added.\",\"introNoTax\":\"Your invoices are addressed to this name and address.\",\"accountType\":\"Signing up as\",\"individual\":\"An individual\",\"company\":\"A company\",\"lastName\":\"Last name\",\"firstName\":\"First name\",\"companyName\":\"Company name\",\"nameHint\":\"Printed on your invoices as the addressee.\",\"phone\":\"Phone number\",\"phoneHint\":\"Used only to contact you about your account and billing.\",\"residenceCountry\":\"Country you live in\",\"headOfficeCountry\":\"Country of your head office\",\"residenceHint\":\"Where you live, not where you happen to be today. Customers who live outside Japan pay no Japanese consumption tax.\",\"residenceHintNoTax\":\"Where you live, not where you happen to be today.\",\"headOfficeHint\":\"Where the company's head office is. Companies headquartered outside Japan pay no Japanese consumption tax.\",\"headOfficeHintNoTax\":\"Where the company's head office is.\",\"chooseCountry\":\"Choose a country\",\"jpPostalCode\":\"Postal code (ã)\",\"jpPrefecture\":\"Prefecture\",\"choosePrefecture\":\"Choose a prefecture\",\"jpCity\":\"City, ward, town or village\",\"jpLine1\":\"Street and number\",\"jpLine2\":\"Building and room\",\"line1\":\"Address line 1\",\"line2\":\"Address line 2\",\"city\":\"City\",\"regi
10on\":\"State, province or region\",\"postalCode\":\"Postal code\",\"optional\":\"(optional)\",\"error\":{\"required\":\"Required.\",\"invalid\":\"Check this field.\",\"tooLong\":\"Up to {max} characters.\"},\"cardDescription\":\"Your invoices are issued to this name and address. A change applies to future purchases only.\",\"none\":\"No billing address yet. Japanese consumption tax is added to every purchase until you add one.\",\"noneNoTax\":\"No billing address yet.\",\"add\":\"Add billing address\",\"edit\":\"Edit\",\"save\":\"Save\",\"cancel\":\"Cancel\",\"saving\":\"Savingâ¦\",\"saved\":\"Saved. Your next purchase uses these details.\",\"saveFailed\":\"Couldn't save your billing details. Check the fields and try again.\",\"taxAdded\":\"Japanese consumption tax is added to your purchases.\",\"taxNotAdded\":\"Japanese consumption tax is not added to your purchases (located outside Japan).\",\"underReview\":\"The card you paid with was issued in Japan, so we're confirming your country. Japanese consumption tax is added to purchases until that's done. Contact us if you have questions.\"},\"Campaign\":{\"eyebrow\":\"Campaign\",\"offer\":{\"amount\":\"Free allowance\",\"duration\":\"Valid for\",\"days\":\"{days} days\",\"remaining\":\"Remaining\"},\"claim\":{\"cta\":\"Claim free allowance\",\"working\":\"Issuingâ¦\"},\"signIn\":{\"body\":\"Sign in to claim this allowance. Creating an account is free.\",\"cta\":\"Sign in / Sign up\"},\"granted\":{\"body\":\"Issued a free allowance of {amount}. It expires on {date}.\",\"keyLabel\":\"Campaign API key\",\"copy\":\"Copy\",\"copied\":\"Copied\",\"next\":\"This key works only with the models in this campaign. It is separate from your normal API key and needs no balance.\",\"docs\":\"Read the docs\",\"pricing\":\"Pricing\"},\"reasons\":{\"disabled\":\"This campaign is not accepting claims right now.\",\"not_started\":\"This campaign has not started yet.\",\"ended\":\"This campaign has ended.\",\"campaign_full\":\"All allowances have been claimed.\",\"daily_limit\":\"Today's allocation is gone. Please try again tomorrow.\",\"wrong_locale\":\"This offer is limited to accounts registered on fastmetal.jp.\",\"wrong_currency\":\"This offer is available to accounts billed in Japanese yen.\",\"existing_account\":\"This offer is limited to new accounts.\",\"email_not_eligible\":\"This email address is not eligible for a free allowance. Please contact us.\",\"campaigns_disabled\":\"Campaigns are currently disabled.\",\"unknown_code\":\"That code was not found.\",\"already_granted_without_key\":\"Your key is still being issued. Wait a moment and try again; contact us if it persists.\",\"generic\":\"This campaign is not available for your account.\"},\"errors\":{\"mintFailed\":\"Could not issue the key. Please try again shortly.\",\"generic\":\"Something went wrong. Please try again shortly.\",\"rateLimited\":\"Too many requests. Please try again in a minute.\"},\"notFound\":{\"title\":\"Campaign not found\",\"body\":\"Please check the code.\"}},\"AdminAnalytics\":{\"title\":\"Model analytics\",\"subtitle\":\"Platform-wide usage per model. Every account together, including free models and refused calls.\",\"range_24h\":\"24 hours\",\"range_7d\":\"7 days\",\"range_30d\":\"30 days\",\"requests\":\"Requests\",\"spend\":\"Spend\",\"tokens\":\"Tokens\",\"tokenSplit\":\"{prompt} in / {completion} out\",\"modelsUsed\":\"Models used\",\"modelsUsedHint\":\"Distinct models with at least one request\",\"chartTitleRequests\":\"Requests over time\",\"chartTitleSpend\":\"Spend over time\",\"chartHint\":\"The top {n} models by the selected measure, stacked, with everything else folded into Other.\",\"other\":\"Other\",\"otherWithCount\":\"Other ({count})\",\"tableTitle\":\"Every model\",\"tableHint\":\"Sorted by the selected measure. Share is of total requests.\",\"model\":\"Model\",\"share\":\"Share\",\"avgSpend\":\"Per request\",\"promptTokens\":\"Prompt\",\"completionTokens\":\"Completion\",\"keys\":\"Keys\",\"keysDayNote\":\"Distinct keys per model are only available on the 24-hour range â LiteLLM's daily rollup keeps totals, not callers.\",\"noData\":\"No usage in this window\",\"gatewayUnavailable\":\"The gateway could not be reached, so nothing below is a measurement. This is not a zero.\",\"truncated\":\"The 24-hour window returned more log rows than are aggregated here, so the series covers only the most recent part of it.\"},\"AdminCampaigns\":{\"title\":\"Campaigns\",\"subtitle\":\"Grant usage, read-only. Campaigns are content-as-code â every guard that costs money runs when one is seeded, not when it is redeemed.\",\"none\":\"No campaigns have been seeded.\",\"enabled\":\"live\",\"disabled\":\"off\",\"createdAt\":\"Seeded {date}\",\"issued\":\"Grants issued\",\"remaining\":\"{n}
10 left\",\"today\":\"Today (JST)\",\"todayHint\":\"The drip: a burst costs one day's allocation, not the campaign\",\"used\":\"Actually used\",\"usedHint\":\"{pct}% of redeemers made at least one call\",\"spent\":\"Spent\",\"spentHint\":\"of {granted} handed out\",\"grantBudget\":\"Per grant\",\"days\":\"{n} days\",\"exposure\":\"Real exposure / ceiling\",\"window\":\"Window\",\"noWindow\":\"no start or end\",\"audience\":\"Audience\",\"allLocales\":\"all locales\",\"newAccountsOnly\":\"new accounts only\",\"grants\":\"Grants access to\",\"nothing\":\"nothing\",\"noChatNote\":\"No chat models, so the key is minted with the campaign-no-chat sentinel and every chat call 403s.\",\"expiredGrants\":\"Expired grants\",\"pendingMints\":\"{n} reservation(s) hold no key. A recent one is a mint in flight; an old one is someone who never came back â ./scripts/reconcile-campaign-grants.sh is the sweep.\",\"repeatedIps\":\"{n} redeem IP(s) appear more than once: {list}. Recorded, never classified â the ceiling bounds the loss, so this is evidence to read, not a verdict.\",\"showGrants\":\"Show grants ({n})\",\"hideGrants\":\"Hide grants\",\"redeemer\":\"Redeemer\",\"grantedAt\":\"Granted\",\"expiresAt\":\"Expires\",\"budget\":\"Budget\",\"grantSpend\":\"Spent\",\"key\":\"Key\",\"redeemIp\":\"Redeem IP\",\"noGrants\":\"Nobody has redeemed this yet.\",\"expired\":\"expired\",\"noKeyYet\":\"no key yet\",\"keyUnknown\":\"unknown\",\"keyBlocked\":\"blocked\",\"keyLive\":\"live\",\"grantsTruncated\":\"Showing the {shown} most recent of {total}.\",\"howToChange\":\"Changing a campaign\",\"contentAsCode\":\"Edit content/campaigns/[code].json and re-seed. A re-seed updates caps and copy in place and never resets grants_issued, so it cannot hand out a second round.\",\"deployNote\":\"The campaign files ship in the frontend image, so a new campaign reaches production only on a deploy.\",\"killSwitch\":\"CAMPAIGNS_ENABLED is false, so no campaign can be redeemed whatever its row says. It has to be forwarded by both compose files to take effect.\",\"gatewayUnavailable\":\"The gateway could not be reached, so spend on the grant keys is unknown. It is not zero.\",\"keysTruncated\":\"The key sweep hit its page limit, so spend may be understated for the oldest grants.\"},\"CostCalculator\":{\"eyebrow\":\"Cost estimate\",\"title\":\"AI cost calculator\",\"intro\":\"Enter your monthly bill, your token volume or your headcount to see what the same work costs in yen on another model. Every model FastMetal serves is compared, not only the open-weight ones.\",\"priceStamp\":\"Prices are FastMetal's listed rates as of {date} (per 1M tokens, excluding consumption tax).\",\"unavailable\":\"Prices can't be loaded right now, so the estimate isn't shown. Please try again shortly.\",\"unavailableLink\":\"See the price list\",\"modes\":{\"bill\":\"From a bill\",\"tokens\":\"From tokens\",\"team\":\"From headcount\"},\"bill\":{\"help\":\"Enter your current monthly bill and pick the main kind of use. Token volume is worked back from these.\",\"amount\":\"Current monthly bill (yen)\",\"mix\":\"Main kind of use\",\"mixNote\":\"Worked back at {ratio} input tokens per output token, with {cached} of input read from cache.\"},\"mixes\":{\"chat\":\"Chat and internal assistants\",\"docs\":\"Document processing and RAG\",\"agent\":\"Coding agents\"},\"tokens\":{\"help\":\"Use this if you know your monthly token volume.\",\"input\":\"Input (millions of tokens a month)\",\"output\":\"Output (millions of tokens a month)\",\"cached\":\"Share of input read from cache: {value}\",\"cachedNote\":\"An agent re-reads the same context on every step, so most of its input is cache reads. Leaving this at 0% overstates what you pay today.\"},\"team\":{\"help\":\"If you don't know your token volume, estimate it from headcount.\",\"chatUsers\":\"People who mostly chat\",\"agentUsers\":\"People using agents\",\"note\":\"Per-person monthly volume is an illustration. A chat user is counted as 1M input and 0.25M output tokens; an agent user as 200M input and 6M output tokens, with 90% of input read from cache.\"},\"baseline\":{\"label\":\"The model you use today\",\"labelTeam\":\"The model to compare against\",\"price\":\"FastMetal's price: input {input} / output {output} / cache read {cache}\"},\"moved\":{\"label\":\"Share of work moved to another model: {value}\",\"note\":\"Not all work can move to a cheaper model. Keep the hard
10work where it is and choose the share you can move.\"},\"result\":{\"savingLabel\":\"Estimated saving\",\"perMonth\":\"a month\",\"savingDetail\":\"That is {percent} of the current monthly cost, or {annual} a year.\",\"chartTitle\":\"Monthly cost now and after the move\",\"now\":\"Monthly cost now\",\"after\":\"Monthly cost after\",\"legendKept\":\"Kept on {model}: {amount}\",\"legendMoved\":\"Moved to {model}: {amount}\",\"perPerson\":\"Per person: {now} a month now, {after} a month after\",\"volume\":\"Assumed volume: {input} input and {output} output (millions of tokens a month), {cached} of input read from cache\",\"try\":\"Try {model} in chat\",\"specs\":\"Model details\",\"none\":\"No model is cheaper than your current one under these settings. Try loosening the score filter below.\"},\"table\":{\"heading\":\"Models that cost less at the same volume\",\"intro\":\"{count} models cost less a month than {model}. Select a row to use it in the estimate above.\",\"quality\":\"LMArena score\",\"qualityOptions\":{\"close\":\"Within {gap} points of the baseline\",\"near\":\"Within {gap} points of the baseline\",\"any\":\"Any\"},\"openOnly\":\"Open-weight only\",\"qualityInert\":\"The baseline model has no LMArena score, so the list isn't filtered by score.\",\"empty\":\"No model matches these settings. Try loosening the score filter or turning off \\\"Open-weight only\\\".\",\"model\":\"Model\",\"inputPrice\":\"Input\",\"outputPrice\":\"Output\",\"monthly\":\"Monthly cost if all work moves\",\"versus\":\"vs. now\",\"pick\":\"Select {model}\",\"openBadge\":\"Open-weight\",\"showAll\":\"Show all {count}\",\"showFewer\":\"Show fewer\",\"footnote\":\"The LMArena score is the value from LMArena's public text leaderboard, overall category (CC BY 4.0), the same one shown on each model page. A close score doesn't show that two models give the same result on your own work. {model} scores {score}.\",\"score\":\"LMArena score\"},\"levers\":{\"heading\":\"Two ways to keep the cost down\",\"price\":{\"title\":\"Match the model to the job\",\"body\":\"Summaries, classification and routine support replies rarely need the top model. Moving that work to a lower-priced model cuts the cost of each call. Compare the results on your own data before you move it.\"},\"cap\":{\"title\":\"Put a ceiling on usage\",\"body\":\"A lower price doesn't help if usage keeps growing. FastMetal is prepaid: once the balance you bought is used up, requests are refused, and there is no month-end bill in arrears. Balances are held per API key, so a key can serve as the limit for one use.\"}},\"method\":{\"heading\":\"How the estimate is calculated\",\"items\":{\"formula\":\"Monthly cost is input tokens times the input price plus output tokens times the output price. Input read from cache uses each model's cache-read price, and a model without one is charged its normal input price. The premium for cache writes is left out on both sides of the comparison.\",\"baseline\":\"When token volume is worked back from a bill, the price used is FastMetal's price for that model. It can differ from what you pay the vendor directly.\",\"tokens\":\"The same text is a different number of tokens on each model. This estimate assumes the token count doesn't change.\",\"team\":\"The per-person volumes in the headcount estimate are illustrations, not measurements of real users. The agent figure is set to land near the average reported for Uber's engineers (US$150 to 250 a month).\",\"quality\":\"Models with close LMArena scores still differ in how well they hold up over long tasks and how accurately they call tools. That is
10why the share moved starts at 50%.\"}},\"faq\":{\"heading\":\"Frequently asked questions\",\"items\":{\"howMuch\":{\"q\":\"How much cheaper is an open-weight model?\",\"a\":\"It depends on the model and on how you use it. The table on this page works out the monthly cost per model at the same volume, including the split between input, output and cache reads. A model with a lower price but no cache-read discount may not be cheaper for agent-style use.\"},\"agent\":{\"q\":\"Can I switch the model behind a coding agent?\",\"a\":\"Only testing on your real development work can tell you. Models with close leaderboard scores still differ in how well they hold up over long tasks and how accurately they call tools. That is why the calculator lets you choose the share you move and doesn't assume all of it.\"},\"team\":{\"q\":\"Can it estimate the cost of giving every employee AI?\",\"a\":\"Use the \\\"From headcount\\\" tab: enter how many people mostly chat and how many use agents, and it gives a monthly cost and a per-person figure. FastMetal provides an API and a chat screen, not central management of employee accounts. The estimate assumes your internal tools call the API.\"},\"prices\":{\"q\":\"When are the prices from?\",\"a\":\"They are the prices FastMetal lists when you open this page, excluding consumption tax. The pricing page has every model's price.\"}}},\"related\":{\"pricing\":\"See every model's price\",\"models\":\"Browse the models\"}},\"Org\":{\"title\":\"Organization\",\"subtitle\":\"Your organization's balance, projects and people.\",\"error\":\"Something went wrong. Please try again.\",\"unavailable\":\"The gateway could not be reached.\",\"newOrg\":\"New organization\",\"newOrgTitle\":\"Create an organization\",\"newOrgDescription\":\"A further organization with its own balance, projects and members. Your account already has one.\",\"newOrgCreate\":\"Create\",\"backToOrg\":\"Organization\",\"roles\":{\"owner\":\"Owner\",\"admin\":\"Admin\",\"member\":\"Member\"},\"status\":{\"paused\":\"Paused\",\"removing\":\"Removing\"},\"stats\":{\"balance\":\"Balance\",\"spend\":\"Spent\",\"spendHint\":\"All time, every project\",\"members\":\"Members\",\"projects\":\"Projects\"},\"tabs\":{\"projects\":\"Projects\",\"members\":\"Members\",\"billing\":\"Billing\",\"settings\":\"Settings\",\"keys\":\"Keys\"},\"projects\":{\"name\":\"Name\",\"spend\":\"Spent\",\"ceiling\":\"Monthly ceiling\",\"members\":\"Members\",\"keys\":\"Keys\",\"default\":\"default\",\"noCeiling\":\"none\",\"noCap\":\"no cap\",\"none\":\"No projects yet.\",\"createTitle\":\"New project\",\"createDescription\":\"A project is a cost centre: its own keys, an optional monthly ceiling, and a cap per member.\",\"defaultMemberCap\":\"Default member cap / month\",\"create\":\"Create project\",\"created\":\"Project created.\"},\"members\":{\"email\":\"Email\",\"role\":\"Role\",\"projects\":\"Projects\",\"since\":\"Since\",\"makeAdmin\":\"Make admin\",\"makeMember\":\"Make member\",\"remove\":\"Remove\",\"removeConfirm\":\"Remove {email} from this organization? Their keys here will be revoked.\",\"removed\":\"Member removed.\"},\"invite\":{\"title\":\"Invite someone\",\"description\":\"They get an email with a link. If they have no FastMetal account yet, they create one with that address first.\",\"project\":\"Project\",\"cap\":\"Cap / month\",\"send\":\"Send invitation\",\"sent\":\"Invitation sent to {email}.\",\"pending\":\"Pending invitations\",\"expires\":\"Expires\",\"revoke\":\"Revoke\"},\"billing\":{\"title\":\"Balance\",\"addCredit\":\"Add credit\",\"drift\":\"Published ceiling differs from the ledger; the reconcile sweep will repair it.\",\"description\":\"Credit lands on the organization's balance and is charged to its own billing account. Card or bank transfer.\"},\"ledger\":{\"date\":\"Date\",\"type\":\"Type\",\"amount\":\"Amount\",\"reference\":\"Reference\",\"none\":\"No transactions yet.\",\"types\":{\"purchase\":\"Purchase\",\"bank_transfer\":\"Bank transfer\",\"auto_topup\":\"Automatic top-up\",\"refund\":\"Refund\",\"chargeback\":\"Chargeback\",\"chargeback_reversal\":\"Chargeback reversed\",\"signup_credit\"
10:\"Signup credit\",\"referral_bonus_referrer\":\"Referral bonus\",\"referral_bonus_referee\":\"Referral bonus\",\"opening_balance\":\"Opening balance\",\"org_transfer\":\"Transfer\",\"quarantined\":\"Quarantined event\"}},\"settings\":{\"title\":\"Organization settings\",\"description\":\"The name people see, and the name on invoices.\",\"name\":\"Name\",\"billingName\":\"Billing name\",\"billingNameHint\":\"Printed on invoices (驿 ¼è«æ±æ¸). Leave blank to use the account's billing details.\",\"save\":\"Save\",\"saved\":\"Saved.\"},\"project\":{\"subtitle\":\"Members, keys and limits of this project.\",\"spend\":\"Spent this period\",\"resets\":\"Resets {date}\",\"ceiling\":\"Monthly ceiling\",\"ceilingHint\":\"The most this project can spend per month, inside the organization's balance. Blank = the balance alone.\",\"defaultMemberCap\":\"Default member cap\",\"defaultMemberCapHint\":\"Applied to members without a cap of their own. Blank = no cap.\",\"memberSpend\":\"Spent this period\",\"memberCap\":\"Cap / month\",\"setCap\":\"Set\",\"capSaved\":\"Cap saved.\",\"pause\":\"Pause\",\"resume\":\"Resume\",\"addMemberTitle\":\"Add a member\",\"addMemberDescription\":\"Someone already in the organization. They get a key in this project.\",\"pickMember\":\"Pick a member\",\"addMember\":\"Add\",\"memberAdded\":\"Member added.\",\"settingsTitle\":\"Project settings\",\"settingsDescription\":\"Limits apply at the gateway, to every key in the project.\",\"archive\":\"Archive project\",\"archiveHint\":\"Revokes every key in the project and removes its members. Cannot be undone.\",\"archiveConfirm\":\"Archive this project and revoke every key in it?\"},\"keys\":{\"name\":\"Name\",\"kind\":\"Kind\",\"owner\":\"Owner\",\"cap\":\"Cap\",\"unnamed\":\"Unnamed\",\"service\":\"Service key\",\"memberKey\":\"Member key\",\"ownedByProject\":\"The project\",\"revoke\":\"Revoke\",\"revokeConfirm\":\"Revoke this key? Anything using it stops working.\",\"revoked\":\"Key revoked.\",\"none\":\"No keys yet.\",\"mintOwnTitle\":\"New key for me\",\"mintOwnDescription\":\"A key of your own in this project, under your cap.\",\"mintServiceTitle\":\"New service key\",\"mintServiceDescription\":\"A key that belongs to the project, not a person: it keeps working when people leave. Optional cap of its own.\",\"mint\":\"Create key\",\"mintedTitle\":\"Your new key\",\"mintedDescription\":\"Copy it now. It is shown once and never again.\",\"copy\":\"Copy\"},\"inviteTitle\":\"Join {organization}\",\"inviteTitleGeneric\":\"Invitation\",\"inviteDescription\":\"This invitation was sent to {email}.\",\"inviteSignIn\":\"Sign in with that address to accept, or create an account with it first.\",\"inviteSignInCta\":\"Sign in\",\"inviteRegisterCta\":\"Create an account\",\"inviteAccept\":\"Accept and join\",\"inviteState\":{\"expired\":\"This invitation has expired. Ask for a new one.\",\"accepted\":\"This invitation has already been used.\",\"revoked\":\"This invitation was withdrawn.\"},\"errors\":{\"failed\":\"Something went wrong. Please try again.\",\"invalid_cap\":\"Enter a whole amount of 0 or more.\",\"invalid_email\":\"Enter a valid email address.\",\"already_member\":\"That person is already a member.\",\"currency_mismatch\":\"That account uses a different currency and cannot join this organization.\",\"project_not_found\":\"Project not found.\",\"invitation_not_found\":\"This invitation link is not valid.\",\"invitation_expired\":\"This invitation has expired.\",\"invitation_revoked\":\"This invitation was withdrawn.\",\"invitation_used\":\"This invitation has already been used.\",\"email_mismatch\":\"You are signed in with a different address than the one invited.\",\"EmailNotVerified\":\"Verify your email address first.\",\"name_required\":\"Enter a name.\",\"rate_limited\":\"Too many changes in a short time. Try again in a minute.\",\"owner_cannot_be_removed\":\"The owner cannot be removed.\",\"cannot_remove_self\":\"You cannot remove yourself.\",\"own_cap\":\"You cannot change your own cap.\",\"default_project_fixed\":\"The default project cannot be archived.\",\"default_org_owner_fixed\":\"A default organization stays with its account.\",\"not_a_member\":\"Not a member.\",\"not_an_org_member\":\"Invite them to the organization first.\",\"organization_not_active\":\"This organization is no longer active.\",\"invite_limit\":\"Too many invitations today. Try again tomorrow.\",\"member_paused\":\"Your access to this project is paused. Ask a project admin.\"},\"admin\":{\"title\":\"Organizations\",\"backfill\":\"Accounts without a default organization\",\"backfillDescription\":\"Moved by scripts/backfill-default-orgs.sh. Zero once the backfill has run.\",\"list\":\"All organizations\",\"owner\":\"Owner\",\"kind\":\"Kind\",\"default\":\"default\",\"explicit\":\"created\",\"gateway\":\"Gateway\",\"created\":\"Created\"},\"inviteResume\":\"You have already accepted this invitation. If something did n
10ot finish setting up, continue here.\",\"inviteResumeCta\":\"Continue\",\"autoTopup\":{\"title\":\"Automatic top-up\",\"description\":\"When the balance falls to the threshold, the organization's saved card is charged the amount, up to the 30-day cap. The same rule for every member's usage, through any key.\",\"status\":{\"active\":\"On.\",\"off\":\"Off.\",\"retrying\":\"On â a charge is being retried.\",\"paused\":\"Paused: {reason}\"},\"reasons\":{\"no_card\":\"no saved card\",\"expired_card\":\"the card has expired\",\"cap_exceeded\":\"the 30-day cap was reached\",\"dispute\":\"a payment was disputed\",\"card_declined\":\"the card was declined\",\"authentication_required\":\"the card needs authentication\",\"stale_attempt\":\"a charge could not complete\",\"invoice_voided\":\"the invoice was voided\",\"uncollectible\":\"the charge could not be collected\",\"unknown\":\"a charge failed\"},\"summary\":\"Below {threshold}, add {amount}; at most {cap} per 30 days.\",\"noCardHint\":\"No card is saved for this organization yet. Add credit by card and tick âtop up automaticallyâ to save one and turn this on.\",\"threshold\":\"When the balance is below\",\"amount\":\"Add\",\"cap\":\"At most per 30 days\",\"save\":\"Save\",\"turnOn\":\"Turn on\",\"turnOff\":\"Turn off\",\"saved\":\"Automatic top-up is on.\",\"turnedOff\":\"Automatic top-up is off.\",\"invalid\":\"Enter a threshold, an amount and a cap within the limits.\",\"noCard\":\"Save a card first: add credit by card with âtop up automaticallyâ ticked.\"}}}
10,\"now\":\"$undefined\",\"timeZone\":\"UTC\",\"children\":[\"$L1f\",\"$L20\"]}]\n"])</script>
10<script>self.__next_f.push([1,"1f:[\"$\",\"$L21\",null,{}]\n20:[\"$\",\"$L22\",null,{\"initial\":\"usd\",\"available\":[\"jpy\",\"usd\"],\"fromAccount\":false,\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]\n"])</script>
10<script>self.__next_f.push([1,"18:[[\"$\",\"title\",\"0\",{\"children\":\"AI API Gateway â Text, Image \u0026 Video | FastMetal\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"canonical\",\"href\":\"https://fastmetal.ai\"}],[\"$\",\"link\",\"3\",{\"rel\":\"alternate\",\"hrefLang\":\"ja\",\"href\":\"https://fastmetal.jp\"}],[\"$\",\"link\",\"4\",{\"rel\":\"alternate\",\"hrefLang\":\"en\",\"href\":\"https://fastmetal.ai\"}],[\"$\",\"link\",\"5\",{\"rel\":\"alternate\",\"hrefLang\":\"x-default\",\"href\":\"https://fastmetal.jp\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:title\",\"content\":\"AI API Gateway â Text, Image \u0026 Video | FastMetal\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:description\",\"content\":\"OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL.\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:site_name\",\"content\":\"FastMetal\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image\",\"content\":\"https://fastmetal.ai/landing/og-preview.jpg\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:title\",\"content\":\"AI API Gateway â Text, Image \u0026 Video | FastMetal\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:description\",\"content\":\"OpenAI-compatible gateway to 90+ AI models. Text, image, and video through one API key, prepaid pay-per-token in yen or US dollars. Change one line â your base URL.\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:image\",\"content\":\"https://fastmetal.ai/landing/og-preview.jpg\"}]]\n"])</script>
10<script>self.__next_f.push([1,"1a:null\n"])</script>
10<script>self.__next_f.push([1,"24:I[318948,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n25:I[452812,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n27:I[124627,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n2a:I[971250,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n23:T5d5,"])</script>
10<script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Is it really OpenAI-compatible?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Any OpenAI SDK or HTTP client works â set base_url to https://api.fastmetal.ai/v1 and use your FastMetal key. Chat completions, streaming, tool calls, and structured outputs are supported.\"}},{\"@type\":\"Question\",\"name\":\"What does it cost?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"You pay per token at each modelâs published rate, drawn from prepaid credits. No subscription, no seat fees, no minimum spend.\"}},{\"@type\":\"Question\",\"name\":\"Am I locked in?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. Itâs the standard OpenAI request shape â point your client back at any provider whenever you want. Your code doesnât depend on us.\"}},{\"@type\":\"Question\",\"name\":\"How long does integration take?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"About a minute. Change one base URL, add your key, and your existing calls route through FastMetal.\"}},{\"@type\":\"Question\",\"name\":\"Which providers are covered?\",\"acceptedA
10nswer\":{\"@type\":\"Answer\",\"text\":\"25 providers and counting â 94+ models in one catalog, growing as new models ship.\"}},{\"@type\":\"Question\",\"name\":\"How does it compare with OpenRouter or going direct?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"We keep honest comparison pages, including the cases where the other option fits better. vs OpenRouter · vs Anthropic direct · All comparisons\"}}]}"])</script>
10<script>self.__next_f.push([1,"b:[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"document.documentElement.classList.add('fm-js');setTimeout(function(){var e=document.querySelectorAll('.fm-reveal');for(var i=0;i\u003ce.length;i++)e[i].classList.add('fm-in')},2500)\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$23\"}}],[\"$\",\"$L24\",null,{\"children\":[\"$\",\"main\",null,{\"className\":\"flex-1 impeccable-module__CfFcga__page\",\"children\":[[\"$\",\"header\",null,{\"className\":\"impeccable-module__CfFcga__hero\",\"children\":[[\"$\",\"div\",null,{\"className\":\"home-module__aUD9Yq__heroHex\",\"aria-hidden\":\"true\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h1\",null,{\"children\":[\"Text. Images. Video. Decisions.\",[\"$\",\"br\",null,{}],\"One gateway\",[\"$\",\"br\",null,{}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__em\",\"children\":\"for generative AI.\"}]]}],[\"$\",\"p\",null,{\"className\":\"impeccable-module__CfFcga__lede\",\"children\":\"FastMetal is an OpenAI-compatible gateway to 94+ generative AI models. Point your existing code at one base URL, pay per token, and stop maintaining a different SDK for every provider.\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ctaRow\",\"children\":[[\"$\",\"$L25\",null,{\"children\":\"$L26\"}],[\"$\",\"$L27\",null,{\"children\":\"$L28\"}],\"$L29\"]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__reassure\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Pay as you go\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sep\",\"children\":\"·\"}],[\"$\",\"span\",null,{\"children\":\"no subscription\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sep\",\"children\":\"·\"}],[\"$\",\"span\",null,{\"children\":\"no lock-in\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__trust\",\"children\":[[\"$\",\"span\",null,{\"children\":\"94+ models\"}],[\"$\",\"span\",null,{\"children\":\"OpenAI-compatible\"}],[\"$\",\"span\",null,{\"children\":\"Pay-per-token\"}],[\"$\",\"span\",null,{\"children\":\"25 providers\"}],[\"$\",\"span\",null,{\"children\":\"Card or bank transfer\"}],[\"$\",\"span\",null,{\"children\":\"Qualified invoices\"}]]}]]}],[\"$\",\"$L2a\",null,{\"models\":[{\"name\":\"Claude Opus 4.6\",\"provider\":\"anthropic\",\"providerLabel\":\"Anthropic\",\"modelId\":\"anthropic/claude-opus-4.6\",\"href\":\"/models/anthropic/claude-opus-4-6\",\"context\":\"1M ctx\",\"priceIn\":\"Â¥850 in\",\"priceOut\":\"Â¥4,200 out / 1M\",\"priceOutBare\":\"Â¥4,200\",\"usd\":{\"priceIn\":\"$$5.42 in\",\"priceOut\":\"$$26.77 out / 1M\",\"priceOutBare\":\"$$26.77\"},\"rank\":\"#7\"},{\"name\":\"Muse Spark 1.1\",\"provider\":\"meta\",\"providerLabel\":\"Meta\",\"modelId\":\"meta/muse-spark-1.1\",\"href\":\"/models/meta/muse-spark-1-1\",\"context\":\"1.0M ctx\",\"priceIn\":null,\"priceOut\":null,\"priceOutBare\":null,\"usd\":null,\"rank\":\"#12\"},{\"name\":\"Gemini 3.1 Pro Preview\",\"provider\":\"google\",\"providerLabel\":\"Google\",\"modelId\":\"google/gemini-3.1-pro-preview\",\"href\":\"/models/google/gemini-3-1-pro-preview\",\"context\":\"1.0M ctx\",\"priceIn\":\"Â¥336 in\",\"priceOut\":\"Â¥2,016 out / 1M\",\"priceOutBare\":\"Â¥2,016\",\"usd\":{\"priceIn\":\"$$2.11 in\",\"priceOut\":\"$$12.66 out / 1M\",\"priceOutBare\":\"$$12.66\"},\"rank\":\"#18\"},{\"name\":\"Qwen3.8 Max\",\"provider\":\"qwen\",\"providerLabel\":\"Qwen\",\"modelId\":\"qwen/qwen3.8-max\",\"href\":\"/models/qwen/qwen3-8-max\",\"context\":\"1M ctx\",\"priceIn\":\"Â¥336 in\",\"priceOut\":\"Â¥1,008 out / 1M\",\"priceOutBare\":\"Â¥1,008\",\"usd\":{\"priceIn\":\"$$2.11 in\",\"priceOut\":\"$$6.33 out / 1M\",\"priceOutBare\":\"$$6.33\"},\"rank\":\"#23\"}],\"responses\":[\"Root cause: Node 22 incompatibility. Updating the lockfile fixes it.\",\"Tests pass â the build step is hitting OOM. Raise the memory limit.\",\"A circular import is the culprit. I suggest splitting utils.ts.\",\"One flaky test. A retry goes green, and here is a permanent fix.\"],\"media\":{\"image\":{\"src\":\"/landing/gen-metal.webp\",\"prompt\":\"æãéå¶å ´ã§ãéç½ãçºå
ããæº¶ããéå±ãå
è§å½¢ã®ã¤ã³ã´ããã«é³è¾¼ã¾ããç¬éãé£ã³æ£ãç«è±ãéå±ã®è³ªæãã·ãããã£ãã¯ãªç
§æ\",\"model\":\"bytedance-seedream-4.5\"},\"video\":{\"src\":\"/landing/gen-metal-pour.mp4\",\"poster\":\"/landing/gen-metal-pour-poster.webp\",\"prompt\":\"éç½ãçºå
ããæº¶ããéå±ãå
è§å½¢ã®é³åã«æ³¨ãããç«è±ãã¹ãã¼ã¢ã¼ã·ã§ã³ã§èã
10æ£ãâ¦\",\"model\":\"bytedance/seedance-2.0-fast\"},\"decision\":{\"model\":\"jev-1-13\",\"state\":\"ãåãåãã: å
鱿³¨æããååãã¾ã å±ãã¾ãããå°çäºå®æ¥ã¯3æ¥åã§ãããè³æ¥ç¢ºèªãã¦ãã ããã\",\"questions\":\"{\\\"category\\\": {\\\"type\\\": \\\"choice\\\", ...}, \\\"urgent\\\": {\\\"type\\\": \\\"noul\\\", ...}}\",\"answers\":[{\"name\":\"category\",\"value\":\"\\\"shipping\\\" (確度 1.00)\"},{\"name\":\"urgent\",\"value\":\"0.79\"}]}},\"labels\":{\"path\":\"POST api.fastmetal.ai/v1/chat/completions\",\"status\":\"200 OK\",\"comment\":\"# the only line you change\",\"tabsLabel\":\"Route the same request to any model\",\"copyBaseUrl\":\"Click to copy\",\"rankPrefix\":\"Arena\",\"unranked\":\"Unranked\",\"userMessage\":\"Find out why CI failed\",\"modeText\":\"Text\",\"modeImage\":\"Image\",\"modeVideo\":\"Video\",\"modeDecision\":\"Decision\",\"decisionPath\":\"POST api.fastmetal.ai/v1/decisions/jev-1-13\",\"decisionMeta\":\"$L2b\",\"imagePath\":\"POST api.fastmetal.ai/v1/images/generations\",\"videoPath\":\"POST api.fastmetal.ai/v1/videos/create\",\"imageMeta\":\"$L2c\",\"videoMeta\":\"$L2d\"}}]]}]]}],\"$L2e\",\"$L2f\",\"$L30\",\"$L31\",\"$L32\",\"$L33\",\"$L34\",\"$L35\",\"$L36\",\"$L37\",\"$L38\"]}]}]]\n"])</script>
10<script>self.__next_f.push([1,"39:I[292574,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n3a:I[968368,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n3c:I[715711,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n40:I[702469,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n47:I[77105,[\"/_next/static/chunks/ff163d9ea14dbaed.js\",\"/_next/static/chunks/3073ed4e47d4d993.js\",\"/_next/static/chunks/cc09a8d062505ab7.js\",\"/_next/static/chunks/1afae2015e72b0fb.js\",\"/_next/static/chunks/e22bdaa8ea66d624.js\",\"/_next/static/chunks/bbc4a1395ae84ef7.js\",\"/_next/static/chunks/270cac6e3a68789d.js\",\"/_next/static/chunks/1dc42f21e0b2a78b.js\"],\"default\"]\n2b:[\"$\",\"$L39\",null,{\"jpy\":\"TypeSafe Jev 1.13 · ¥0.1 per decision · real response\",\"usd\":\"TypeSafe Jev 1.13 · $0.00064 per decision · real response\"}]\n2c:[\"$\",\"$L39\",null,{\"jpy\":\"ByteDance Seedream 4.5 · ¥7.15 per image · real output\",\"usd\":\"ByteDance Seedream 4.5 · $0.0456 per image · real output\"}]\n2d:[\"$\",\"$L39\",null,{\"jpy\":\"Seedance 2.0 Fast · 8s 720p · ¥250 per video · real output\",\"usd\":\"Seedance 2.0 Fast · 8s 720p · $1.60 per video · real output\"}]\n"])</script>
10<script>self.__next_f.push([1,"2e:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__providerBand\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__marqueeClip\",\"children\":[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__marqueeTrack\",\"children\":[[\"$\",\"div\",\"0\",{\"className\":\"impeccable-module__CfFcga__marqueeGroup\",\"children\":[[\"$\",\"span\",\"0-openai-GPT-6.1 Sol\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"openai\",\"size\":26}],\"GPT-6.1 Sol\"]}],[\"$\",\"span\",\"0-anthropic-Claude Opus 5.5\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"anthropic\",\"size\":26}],\"Claude Opus 5.5\"]}],[\"$\",\"span\",\"0-x-ai-Grok 4.7\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"x-ai\",\"size\":26}],\"Grok 4.7\"]}],[\"$\",\"span\",\"0-z-ai-GLM 5.3 FlashX\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"z-ai\",\"size\":26}],\"GLM 5.3 FlashX\"]}],[\"$\",\"span\",\"0-google-Gemini 3.8 Flash\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"google\",\"size\":26}],\"Gemini 3.8 Flash\"]}],[\"$\",\"span\",\"0-meta-Muse Spark 1.3\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"meta\",\"size\":26}],\"Muse Spark 1.3\"]}],[\"$\",\"span\",\"0-qwen-Qwen3.8 Max\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"qwen\",\"size\":26}],\"Qwen3.8 Max\"]}],[\"$\",\"span\",\"0-moonshotai-Kimi K3\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"moonshotai\",\"size\":26}],\"Kimi K3\"]}],[\"$\",\"span\",\"0-tencent-Hy3\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"tencent\",\"size\":26}],\"Hy3\"]}],[\"$\",\"span\",\"0-deepseek-DeepSeek V4 Pro\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"deepseek\",\"size\":26}],\"DeepSeek V4 Pro\"]}],[\"$\",\"span\",\"0-minimax-MiniMax M2.7\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"minimax\",\"size\":26}],\"MiniMax M2.7\"]}],[\"$\",\"span\",\"0-nvidia-Nemotron 3 Super\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"nvidia\",\"size\":26}],\"Nemotron 3 Super\"]}]]}],[\"$\",\"div\",\"1\",{\"className\":\"impeccable-module__CfFcga__marqueeGroup\",\"children\":[[\"$\",\"span\",\"1-openai-GPT-6.1 Sol\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"openai\",\"size\":26}],\"GPT-6.1 Sol\"]}],[\"$\",\"span\",\"1-anthropic-Claude Opus 5.5\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"anthropic\",\"size\":26}],\"Claude Opus 5.5\"]}],[\"$\",\"span\",\"1-x-ai-Grok 4.7\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"x-ai\",\"size\":26}],\"Grok 4.7\"]}],[\"$\",\"span\",\"1-z-ai-GLM 5.3 FlashX\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"z-ai\",\"size\":26}],\"GLM 5.3 FlashX\"]}],[\"$\",\"span\",\"1-google-Gemini 3.8 Flash\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"google\",\"size\":26}],\"Gemini 3.8 Flash\"]}],[\"$\",\"span\",\"1-meta-Muse Spark 1.3\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"meta\",\"size\":26}],\"Muse Spark 1.3\"]}],[\"$\",\"span\",\"1-qwen-Qwen3.8 Max\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"qwen\",\"size\":26}],\"Qwen3.8 Max\"]}],[\"$\",\"span\",\"1-moonshotai-Kimi K3\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"moonshotai\",\"size\":26}],\"Kimi K3\"]}],[\"$\",\"span\",\"1-tencent-Hy3\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"tencent\",\"size\":26}],\"Hy3\"]}],[\"$\",\"span\",\"1-deepseek-DeepSeek V4 Pro\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"deepseek\",\"size\":26}],\"DeepSeek V4 Pro\"]}],[\"$\",\"span\",\"1-minimax-MiniMax M2.7\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[[\"$\",\"$L3a\",null,{\"provider\":\"minimax\",\"size\":26}],\"MiniMax M2.7\"]}],[\"$\",\"span\",\"1-nvidia-Nemotron 3 Super\",{\"className\":\"impeccable-module__CfFcga__marqueeItem\",\"children\":[\"$L3b\",\"Nemotron 3 Super\"]}]]}]]}]}]}]}]\n"])</script>
10<script>self.__next_f.push([1,"2f:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"problem\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap impeccable-module__CfFcga__prob\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"h2\",null,{\"children\":\"Multi-provider AI is death by a thousand integrations.\"}],[\"$\",\"p\",null,{\"className\":\"impeccable-module__CfFcga__probBig\",\"children\":\"Every provider ships its own SDK, its own auth, its own rate limits, its own billing, and its own idea of what a âmessageâ is. Your agentâs reliability becomes a function of how many dashboards you can babysit at 3 a.m.\"}]]}],[\"$\",\"ul\",null,{\"className\":\"impeccable-module__CfFcga__painlist\",\"children\":[[\"$\",\"li\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__n impeccable-module__CfFcga__mono\",\"children\":\"01\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__t\",\"children\":\"N providers = N API keys, N SDKs, and N monthly charges to reconcile.\"}]]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__n impeccable-module__CfFcga__mono\",\"children\":\"02\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__t\",\"children\":\"A better model ships weekly â swapping it means a code change, not a config change.\"}]]}],[\"$\",\"li\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__n impeccable-module__CfFcga__mono\",\"children\":\"03\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__t\",\"children\":\"One provider has an outage and your app goes down with it.\"}]]}]]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"30:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__conv\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__convBg\",\"aria-hidden\":\"true\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__convScrim\",\"aria-hidden\":\"true\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__convInner\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"From many providers to one endpoint.\"}],[\"$\",\"p\",null,{\"children\":\"25 providers and 94+ models funnel through a single OpenAI-compatible URL. You integrate once and route to any of them by name.\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__convStats\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__st\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__v\",\"children\":94}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__l\",\"children\":\"models\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__st\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__v\",\"children\":25}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__l\",\"children\":\"providers\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__st\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__v\",\"children\":\"1\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__l\",\"children\":\"endpoint\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__st\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__v\",\"children\":\"1\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__l\",\"children\":\"payment\"}]]}]]}]]}]}]]}]\n"])</script>
10<script>self.__next_f.push([1,"31:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"how\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__bandHead\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Three steps to your first call\"}],[\"$\",\"p\",null,{\"children\":\"From zero to a live request in about a minute. Keep the SDK you already use.\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__steps\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sn impeccable-module__CfFcga__mono\",\"children\":\"01\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__badge\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"rect\",null,{\"x\":\"2.5\",\"y\":\"5.5\",\"width\":\"19\",\"height\":\"13\",\"rx\":\"2.5\"}],[\"$\",\"path\",null,{\"d\":\"M2.5 9.5h19\"}]]}]}],[\"$\",\"h3\",null,{\"children\":\"Create an account\"}],[\"$\",\"p\",null,{\"children\":\"Sign up and get an API key in under a minute.\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sn impeccable-module__CfFcga__mono\",\"children\":\"02\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__badge\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"children\":[\"$\",\"path\",null,{\"d\":\"M13 2 4 13h7l-1 9 9-11h-7z\"}]}]}],[\"$\",\"h3\",null,{\"children\":\"Add credit by card or bank transfer\"}],[\"$\",\"p\",null,{\"children\":\"Card credits instantly. Bank transfer issues a qualified invoice, then credits on payment.\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__step\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sn impeccable-module__CfFcga__mono\",\"children\":\"03\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__badge\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M8 7 3 12l5 5\"}],[\"$\",\"path\",null,{\"d\":\"M16 7l5 5-5 5\"}],[\"$\",\"path\",null,{\"d\":\"M13.5 5l-3 14\"}]]}]}],[\"$\",\"h3\",null,{\"children\":\"Change one base URL\"}],[\"$\",\"p\",null,{\"children\":\"Point your OpenAI client at FastMetal. Keep the rest of your code.\"}]]}]]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"32:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"features\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__bandHead\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Everything you need, nothing you donât\"}],[\"$\",\"p\",null,{\"children\":\"A gateway, not a framework. It gets out of the way of the code you already wrote.\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__feat\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__card impeccable-module__CfFcga__cardWide\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"impeccable-module__CfFcga__ic\",\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M3 7h18M3 12h18M3 17h18\",\"strokeLinecap\":\"round\"}],[\"$\",\"circle\",null,{\"cx\":\"7\",\"cy\":\"7\",\"r\":\"1.4\",\"fill\":\"#fafafa\",\"stroke\":\"none\"}],[\"$\",\"circle\",null,{\"cx\":\"12\",\"cy\":\"12\",\"r\":\"1.4\",\"fill\":\"#fafafa\",\"stroke\":\"none\"}],[\"$\",\"circle\",null,{\"cx\":\"17\",\"cy\":\"17\",\"r\":\"1.4\",\"fill\":\"#fafafa\",\"stroke\":\"none\"}]]}],[\"$\",\"h3\",null,{\"children\":\"Pay-per-token billing\"}],[\"$\",\"p\",null,{\"children\":\"Prepaid credits metered to the token. No seats, no subscriptions, no minimums â you pay for exactly what your app calls.\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__usagebars\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"i\",\"0\",{\"style\":{\"height\":\"38%\"}}],[\"$\",\"i\",\"1\",{\"style\":{\"height\":\"52%\"}}],[\"$\",\"i\",\"2\",{\"style\":{\"height\":\"44%\"}}],[\"$\",\"i\",\"3\",{\"style\":{\"height\":\"67%\"}}],[\"$\",\"i\",\"4\",{\"style\":{\"height\":\"58%\"}}],[\"$\",\"i\",\"5\",{\"style\":{\"height\":\"78%\"}}],[\"$\",\"i\",\"6\",{\"style\":{\"height\":\"71%\"}}],[\"$\",\"i\",\"7\",{\"style\":{\"height\":\"90%\"}}],[\"$\",\"i\",\"8\",{\"style\":{\"height\":\"64%\"}}],[\"$\",\"i\",\"9\",{\"style\":{\"height\":\"83%\"}}],[\"$\",\"i\",\"10\",{\"style\":{\"height\":\"97%\"}}],[\"$\",\"i\",\"11\",{\"style\":{\"height\":\"74%\"}}]]}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__card impeccable-module__CfFcga__cardTall\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"impeccable-module__CfFcga__ic\",\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M4 6h16v12H4z\"}],[\"$\",\"path\",null,{\"d\":\"M4 10h16\"}],[\"$\",\"path\",null,{\"d\":\"M8 14h4\"}]]}],[\"$\",\"h3\",null,{\"children\":\"94+ models, one catalog\"}],[\"$\",\"p\",null,{\"children\":\"Every major provider behind a single key. Compare context length and arena rank before you commit.\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__catmini\",\"children\":[[\"$\",\"div\",\"anthropic/claude-opus-4.6\",{\"className\":\"impeccable-module__CfFcga__r\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__id\",\"children\":\"anthropic/claude-opus-4.6\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__rk\",\"children\":\"#7\"}]]}],[\"$\",\"div\",\"meta/muse-spark-1.1\",{\"className\":\"impeccable-module__CfFcga__r\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__id\",\"children\":\"meta/muse-spark-1.1\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__rk\",\"children\":\"#12\"}]]}],[\"$\",\"div\",\"google/gemini-3.1-pro-preview\",{\"className\":\"impeccable-module__CfFcga__r\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__id\",\"children\":\"google/gemini-3.1-pro-preview\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__rk\",\"children\":\"#18\"}]]}],[\"$\",\"div\",\"qwen/qwen3.8-max\",{\"className\":\"impeccable-module__CfFcga__r\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__id\",\"children\":\"qwen/qwen3.8-max\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__rk\",\"children\":\"#23\"}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__card\",\"children\":[[\"$\",\"svg\",null,{\"className\":\"impeccable-module__CfFcga__ic\",\"viewBox\":\"0 0 24 24\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M8 7 3 12l5 5\"}],[\"$\",\"path\",null,{\"d\":\"M16 7l5 5-5 5\"}],[\"$\",\"path\",null,{\"d\":\"M13.5 4.5l-3 15\"}]]}],[\"$\",\"h3\",null,{\"children\":\"OpenAI-compatible API\"}],[\"$\",\"p\",null,{\"children\":\"Drop-in with the OpenAI SDK you already use. Chat completions, streaming, tools, and structured outputs â
10change the base URL, keep the rest.\"}]]}]]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"33:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"procure\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__bandHead\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"The questions procurement asks, answered up front.\"}],[\"$\",\"p\",null,{\"children\":\"Using an overseas API directly means a dollar card statement and no invoice, which is where Japanese accounting stops the purchase. FastMetal is run by a Japanese company to Japanese billing requirements.\"}]]}],[\"$\",\"div\",null,{\"className\":\"home-module__aUD9Yq__procureGrid\",\"children\":[[\"$\",\"div\",\"currency\",{\"className\":\"impeccable-module__CfFcga__card\",\"children\":[[\"$\",\"h3\",null,{\"children\":\"Billed in yen or US dollars\"}],[\"$\",\"p\",null,{\"children\":\"Each account is funded and charged in one currency â Japanese yen or US dollars â so its monthly figure never drifts with the exchange rate.\"}]]}],[\"$\",\"div\",\"invoice\",{\"className\":\"impeccable-module__CfFcga__card\",\"children\":[[\"$\",\"h3\",null,{\"children\":\"Qualified invoices (ã¤ã³ãã¤ã¹)\"}],[\"$\",\"p\",null,{\"children\":\"The operating company is a registered qualified-invoice issuer (T5010001015990); every credit purchase comes with one.\"}]]}],[\"$\",\"div\",\"transfer\",{\"className\":\"impeccable-module__CfFcga__card\",\"children\":[[\"$\",\"h3\",null,{\"children\":\"Bank transfer (prepaid)\"}],[\"$\",\"p\",null,{\"children\":\"Pay by card or by bank transfer. Choosing transfer issues a qualified invoice immediately, carrying a bank account dedicated to your organisation; credit is added automatically once the transfer is confirmed, with nothing to notify us about.\"}]]}],[\"$\",\"div\",\"prepaid\",{\"className\":\"impeccable-module__CfFcga__card\",\"children\":[[\"$\",\"h3\",null,{\"children\":\"Prepaid, so spend is capped\"}],[\"$\",\"p\",null,{\"children\":\"The balance you buy is the ceiling. A bill above it cannot happen.\"}]]}],[\"$\",\"div\",\"domestic\",{\"className\":\"impeccable-module__CfFcga__card\",\"children\":[[\"$\",\"h3\",null,{\"children\":\"Models that run inside Japan\"}],[\"$\",\"p\",null,{\"children\":\"Models whose id starts with japan- run inference inside Japan. For work whose data cannot leave the country, they are one model name away on the same key.\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"home-module__aUD9Yq__procureCtas\",\"children\":[\"$L3d\",\"$L3e\"]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"34:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"mcp\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__bandHead\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Works from your agent, too\"}],[\"$\",\"p\",null,{\"children\":\"FastMetal ships a built-in MCP server. Add it to Claude Code, Codex, Cursor, or any MCP client with one command, and your agent gets inference, image, and video generation as tools â billed to the same prepaid key.\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__mcp\",\"children\":[[\"$\",\"pre\",null,{\"className\":\"impeccable-module__CfFcga__mcpTerm impeccable-module__CfFcga__mono\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__mcpPrompt\",\"children\":\"$$ \"}],\"claude mcp add --transport http fastmetal \\\\\\n https://mcp.fastmetal.ai/mcp \\\\\\n --header \",\"\\\"Authorization: Bearer ${FASTMETAL_API_KEY}\\\"\"]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__mcpRight\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__mcpTools\",\"children\":[[\"$\",\"span\",\"ask\",{\"className\":\"impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono\",\"children\":\"ask\"}],[\"$\",\"span\",\"compare\",{\"className\":\"impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono\",\"children\":\"compare\"}],[\"$\",\"span\",\"generate_image\",{\"className\":\"impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono\",\"children\":\"generate_image\"}],[\"$\",\"span\",\"generate_video\",{\"className\":\"impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono\",\"children\":\"generate_video\"}],[\"$\",\"span\",\"analyze_image\",{\"className\":\"impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono\",\"children\":\"analyze_image\"}],[\"$\",\"span\",\"list_models\",{\"className\":\"impeccable-module__CfFcga__mcpChip impeccable-module__CfFcga__mono\",\"children\":\"list_models\"}]]}],\"$L3f\"]}]]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"35:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"catalog\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__bandHead\",\"children\":[[\"$\",\"h2\",null,{\"children\":\"Browse the catalog. Compare on the numbers.\"}],[\"$\",\"p\",null,{\"children\":\"94+ models ranked by arena performance, with transparent per-million-token pricing in yen or US dollars.\"}]]}],[\"$\",\"$L40\",null,{\"models\":[\"$b:2:props:children:props:children:0:props:children:1:props:children:1:props:models:0\",\"$b:2:props:children:props:children:0:props:children:1:props:children:1:props:models:1\",\"$b:2:props:children:props:children:0:props:children:1:props:children:1:props:models:2\",\"$b:2:props:children:props:children:0:props:children:1:props:children:1:props:models:3\",{\"name\":\"MiMo-V2.6-Pro\",\"provider\":\"xiaomi\",\"providerLabel\":\"Xiaomi\",\"modelId\":\"xiaomi/mimo-v2.6-pro\",\"href\":\"/models/xiaomi/mimo-v2-6-pro\",\"context\":\"1.0M ctx\",\"priceIn\":\"Â¥73.08 in\",\"priceOut\":\"Â¥146 out / 1M\",\"priceOutBare\":\"Â¥146\",\"usd\":{\"priceIn\":\"$$0.459 in\",\"priceOut\":\"$$0.9179 out / 1M\",\"priceOutBare\":\"$$0.9179\"},\"rank\":\"#26\"}],\"providers\":[{\"id\":\"anthropic\",\"label\":\"Anthropic\"},{\"id\":\"meta\",\"label\":\"Meta\"},{\"id\":\"google\",\"label\":\"Google\"},{\"id\":\"qwen\",\"label\":\"Qwen\"},{\"id\":\"xiaomi\",\"label\":\"Xiaomi\"}],\"totalModels\":94,\"labels\":{\"search\":\"Search 94 modelsâ¦\",\"searchAria\":\"Search the model catalog\",\"all\":\"All\",\"rankLabel\":\"Text overall\",\"unranked\":\"Unranked\",\"showing\":\"Showing {shown} of {total} models\",\"showingProvider\":\"{provider}: showing {shown} of {total} models\",\"showingSearch\":\"{shown} of {total} models match â{query}â\",\"noResults\":\"No models match â{query}â.\",\"seeAllResults\":\"See all results for â{query}â\",\"empty\":\"No sample models from that provider here â the full catalog has {total} across every provider.\",\"browseAll\":\"Browse the full catalog\",\"copyId\":\"Copy model ID\"}}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__diff\",\"id\":\"pricing\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__diffline impeccable-module__CfFcga__diffRem\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__mk\",\"children\":\"â\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__txt\",\"children\":\"base_url = \\\"https://api.openai.com/v1\\\"\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__diffline impeccable-module__CfFcga__diffAdd\",\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__mk\",\"children\":\"+\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__txt\",\"children\":\"base_url = \\\"https://api.fastmetal.ai/v1\\\"\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__diffNote\",\"children\":\"Switching model = switching a string. Switching provider = switching a string. Thatâs the whole migration.\"}]]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"37:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__band\",\"id\":\"faq\",\"children\":[\"$\",\"$L3c\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__bandHead\",\"children\":[\"$\",\"h2\",null,{\"children\":\"The things developers ask first\"}]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__faq\",\"children\":[[\"$\",\"details\",\"1\",{\"className\":\"impeccable-module__CfFcga__qa\",\"open\":true,\"children\":[[\"$\",\"summary\",null,{\"children\":[\"Is it really OpenAI-compatible?\",[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__plus\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ans\",\"children\":[\"Yes. Any OpenAI SDK or HTTP client works â set base_url to https://api.fastmetal.ai/v1 and use your FastMetal key. Chat completions, streaming, tool calls, and structured outputs are supported.\",false]}]]}],[\"$\",\"details\",\"2\",{\"className\":\"impeccable-module__CfFcga__qa\",\"open\":false,\"children\":[[\"$\",\"summary\",null,{\"children\":[\"What does it cost?\",[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__plus\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ans\",\"children\":[\"You pay per token at each modelâs published rate, drawn from prepaid credits. No subscription, no seat fees, no minimum spend.\",false]}]]}],[\"$\",\"details\",\"3\",{\"className\":\"impeccable-module__CfFcga__qa\",\"open\":false,\"children\":[[\"$\",\"summary\",null,{\"children\":[\"Am I locked in?\",[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__plus\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ans\",\"children\":[\"No. Itâs the standard OpenAI request shape â point your client back at any provider whenever you want. Your code doesnât depend on us.\",false]}]]}],[\"$\",\"details\",\"4\",{\"className\":\"impeccable-module__CfFcga__qa\",\"open\":false,\"children\":[[\"$\",\"summary\",null,{\"children\":[\"How long does integration take?\",[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__plus\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ans\",\"children\":[\"About a minute. Change one base URL, add your key, and your existing calls route through FastMetal.\",false]}]]}],[\"$\",\"details\",\"5\",{\"className\":\"impeccable-module__CfFcga__qa\",\"open\":false,\"children\":[[\"$\",\"summary\",null,{\"children\":[\"Which providers are covered?\",[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__plus\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ans\",\"children\":[\"25 providers and counting â 94+ models in one catalog, growing as new models ship.\",false]}]]}],[\"$\",\"details\",\"6\",{\"className\":\"impeccable-module__CfFcga__qa\",\"open\":false,\"children\":[[\"$\",\"summary\",null,{\"children\":[\"How does it compare with OpenRouter or going direct?\",[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__plus\"}]]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__ans\",\"children\":[\"We keep honest comparison pages, including the cases where the other option fits better.\",[\"$\",\"span\",null,{\"children\":[\" \",\"$L41\",\" · \",\"$L42\",\" · \",\"$L43\"]}]]}]]}]]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"38:[\"$\",\"section\",null,{\"className\":\"impeccable-module__CfFcga__final\",\"children\":[[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__finalBg\",\"aria-hidden\":\"true\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__wrap\",\"children\":[\"$\",\"$L3c\",null,{\"children\":[[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__finalMark\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"svg\",null,{\"className\":\"$undefined\",\"width\":18,\"height\":20,\"viewBox\":\"0 0 18 20\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M9 1 16.8 5.5V14.5L9 19 1.2 14.5V5.5Z\",\"fill\":\"none\",\"stroke\":\"#fafafa\",\"strokeWidth\":\"1.3\"}],[\"$\",\"path\",null,{\"d\":\"M9 6 12.5 8V12L9 14 5.5 12V8Z\",\"fill\":\"#fafafa\",\"opacity\":\".9\"}]]}]}],[\"$\",\"h2\",null,{\"children\":\"One key away from every model.\"}],[\"$\",\"p\",null,{\"children\":\"Create an account, add credits, change one line. Your agents get 94+ models behind one API key.\"}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__finalCta\",\"children\":[[\"$\",\"$L25\",null,{\"children\":\"$L44\"}],[\"$\",\"$L27\",null,{\"children\":\"$L45\"}],\"$L46\"]}],[\"$\",\"div\",null,{\"className\":\"impeccable-module__CfFcga__reassure\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Prepaid credits\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sep\",\"children\":\"·\"}],[\"$\",\"span\",null,{\"children\":\"no subscription\"}],[\"$\",\"span\",null,{\"className\":\"impeccable-module__CfFcga__sep\",\"children\":\"·\"}],[\"$\",\"span\",null,{\"children\":\"cancel by simply not topping up\"}]]}]]}]}]]}]\n"])</script>
10<script>self.__next_f.push([1,"26:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/auth/signin?mode=register\",\"locale\":\"$undefined\",\"localeCookie\":{\"name\":\"NEXT_LOCALE\",\"sameSite\":\"lax\"},\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnPrimary impeccable-module__CfFcga__btnLg\",\"children\":\"Create a free account\"}]\n28:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/dashboard\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnPrimary impeccable-module__CfFcga__btnLg\",\"children\":\"Open the dashboard\"}]\n29:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/pricing\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnSecondary impeccable-module__CfFcga__btnLg\",\"children\":\"View Pricing\"}]\n"])</script>
10<script>self.__next_f.push([1,"3b:[\"$\",\"$L3a\",null,{\"provider\":\"nvidia\",\"size\":26}]\n3d:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/enterprise\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnSecondary\",\"children\":\"See the enterprise page\"}]\n3e:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/pricing\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnSecondary\",\"children\":\"See Japan-hosted models and prices\"}]\n3f:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/docs/guides/mcp\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__mcpDocs\",\"children\":[\"See the MCP setup guide\",\" â\"]}]\n41:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/vs/openrouter\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"underline underline-offset-4\",\"children\":\"vs OpenRouter\"}]\n42:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/vs/claude-api\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"underline underline-offset-4\",\"children\":\"vs Anthropic direct\"}]\n43:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/vs\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"underline underline-offset-4\",\"children\":\"All comparisons\"}]\n44:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/auth/signin?mode=register\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnPrimary\",\"children\":\"Create a free account\"}]\n45:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/chat\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnPrimary\",\"children\":\"Open the chat\"}]\n46:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/docs/api/overview\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"impeccable-module__CfFcga__btn impeccable-module__CfFcga__btnGhost\",\"children\":[\"Read the docs\",\" â\"]}]\n"])</script>
10<script>self.__next_f.push([1,"36:[\"$\",\"section\",null,{\"className\":\"py-20\",\"children\":[\"$\",\"div\",null,{\"className\":\"max-w-[1220px] px-6 mx-auto\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-12 flex items-end justify-between gap-4\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-3xl font-bold\",\"children\":\"Latest Posts\"}],\"$L48\"]}],[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-6 md:grid-cols-3\",\"children\":[\"$L49\"]}]]}]}]\n"])</script>
10<script>self.__next_f.push([1,"48:[\"$\",\"$L47\",null,{\"ref\":\"$undefined\",\"href\":\"/blog\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"shrink-0 text-sm text-muted-foreground transition-colors hover:text-foreground\",\"children\":[\"View all posts\",\" â\"]}]\n49:[\"$\",\"$L47\",\"435\",{\"ref\":\"$undefined\",\"href\":\"/blog/which-model-800-websites\",\"locale\":\"$undefined\",\"localeCookie\":\"$26:props:localeCookie\",\"className\":\"group flex flex-col rounded-xl border border-neutral-800 bg-neutral-900/40 p-6 transition-colors hover:border-neutral-700\",\"children\":[[\"$\",\"span\",null,{\"className\":\"mb-3 inline-block w-fit rounded-full border px-2.5 py-0.5 text-xs bg-neutral-500/15 text-neutral-300 border-neutral-500/30\",\"children\":\"Column\"}],[\"$\",\"h3\",null,{\"className\":\"mb-2 text-lg font-semibold text-white transition-colors group-hover:text-primary\",\"children\":\"Which model do I trust with eight hundred websites?\"}],[\"$\",\"p\",null,{\"className\":\"line-clamp-3 text-sm leading-relaxed text-muted-foreground\",\"children\":\"I own eight hundred dropped domains and about four hours a week. This is the benchmark I built to decide which language model gets to write on all of them, and the two runs it took to stop measuring my own instrument.\"}],[\"$\",\"time\",null,{\"dateTime\":\"2026-09-09T23:43:10.677Z\",\"className\":\"mt-4 text-xs text-neutral-400\",\"children\":\"September 9, 2026\"}]]}]\n"])</script>
10</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.