PageSourceSearch

https://inference.club/

html inference.club collected 2026-09-24 12:28:10 UTC 382,308 bytes, 207 lines download raw bytes

1<!DOCTYPE html><html  lang="en-US" dir="ltr"><head><meta charset="utf-8">
2<meta name="viewport" content="width=device-width, initial-scale=1">
3<title>inference.club</title>
4<style>/*! tailwindcss v4.1.5 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-400:oklch(76.5% .177 163.223);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-900:oklch(37.8% .077 168.94);--color-teal-400:oklch(77.7% .152 181.912);--color-teal-500:oklch(70.4% .14 182.503);--color-teal-600:oklch(60% .118 184.704);--color-teal-700:oklch(51.1% .096 186.391);--color-cyan-200:oklch(91.7% .08 205.041);--color-cyan-300:oklch(86.5% .127 207.078);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-cyan-600:oklch(60.9% .126 221.723);--color-cyan-700:oklch(52% .105 223.128);
4--color-sky-200:oklch(90.1% .058 230.902);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-400:oklch(74.6% .16 232.661);--color-sky-500:oklch(68.5% .169 237.323);--color-sky-600:oklch(58.8% .158 241.966);--color-sky-700:oklch(50% .134 242.749);--color-sky-900:oklch(39.1% .09 240.876);--color-blue-600:oklch(54.6% .245 262.881);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-400:oklch(70.2% .183 293.541);--color-violet-500:oklch(60.6% .25 292.717);--color-violet-600:oklch(54.1% .281 293.009);--color-violet-700:oklch(49.1% .27 292.581);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-300:oklch(83.3% .145 321.434);--color-fuchsia-400:oklch(74% .238 322.16);--color-fuchsia-500:oklch(66.7% .295 322.15);--color-fuchsia-600:oklch(59.1% .293 322.896);--color-fuchsia-700:oklch(51.8% .253 323.949);--color-rose-300:oklch(81% .117 11.638);--color-rose-400:oklch(71.2% .194 13.428);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--text-xl:1.25rem;--text-xl--line-height:1.4;--text-2xl:1.5rem;--text-2xl--line-height:1.33333;--text-3xl:1.875rem;--text-3xl--line-height:1.2;--text-4xl:2.25rem;--text-4xl--line-height:1.11111;--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-3xl:64px;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--text-2xs:.6875rem;--text-2xs--line-height:1rem}}@layer base{*,::backdrop,:after,:before{border:0 solid;box-sizing:border-box;margin:0;padding:0}::file-selector-button{border:0 solid;box-sizing:border-box;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}hr{border-top-width:1px;color:inherit;height:0}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}
4code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}::file-selector-button{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:currentColor}::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::-moz-placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}html{scrollbar-color:var(--muted-foreground)transparent;scrollbar-width:thin}@supports (color:color-mix(in lab,red,red)){html{scrollbar-color:color-mix(in oklch,var(--muted-foreground)40%,transparent)transparent}}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:var(--muted-foreground);border:2px solid #0000;border-radius:9999px}@supports (color:color-mix(in lab,red,red)){::-webkit-scrollbar-thumb{background-color:color-mix(in oklch,var(--muted-foreground)35%,transparent)}}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch,var(--muted-foreground)55%,transparent)}}::-webkit-scrollbar-corner{background:0 0}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\!{visibility:visible!important}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.not-sr-only{clip:auto;height:auto;margin:0;overflow:visible;padding:0;position:static;white-space:normal;width:auto}.\!absolute{position:absolute!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.static\!{position:static!important}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.-top-1\.5{top:calc(var(--spacing)*-1.5)}.-top-2{top:calc(var(--spacing)*-2)}.-top-3{top:calc(var(--spacing)*-3)}.-top-12{top:calc(var(--spacing)*-12)}.-top-20{top:calc(var(--spacing)*-20)}.top-0{top:calc(var(--spacing)*0)}.top-0\.5{top:calc(var(--spacing)*.5)}.top-1{top:calc(var(--spacing)*1)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-2\.5{top:calc(var(--spacing)*2.5)}.top-3{top:calc(var(--spacing)*3)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-12{top:calc(var(--spacing)*12)}.top-14{top:calc(var(--spacing)*14)}
4.top-28{top:calc(var(--spacing)*28)}.top-\[1px\]{top:1px}.top-\[6\.25rem\]{top:6.25rem}.top-\[50\%\]{top:50%}.top-\[60\%\]{top:60%}.top-full{top:100%}.-right-0\.5{right:calc(var(--spacing)*-.5)}.-right-1\.5{right:calc(var(--spacing)*-1.5)}.-right-2{right:calc(var(--spacing)*-2)}.-right-3{right:calc(var(--spacing)*-3)}.-right-12{right:calc(var(--spacing)*-12)}.right-0{right:calc(var(--spacing)*0)}.right-0\.5{right:calc(var(--spacing)*.5)}.right-1{right:calc(var(--spacing)*1)}.right-1\.5{right:calc(var(--spacing)*1.5)}.right-2{right:calc(var(--spacing)*2)}.right-2\.5{right:calc(var(--spacing)*2.5)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.-bottom-1\/2{bottom:-50%}.-bottom-12{bottom:calc(var(--spacing)*-12)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1\.5{bottom:calc(var(--spacing)*1.5)}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-0\.5{left:calc(var(--spacing)*-.5)}.-left-12{left:calc(var(--spacing)*-12)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-2\.5{left:calc(var(--spacing)*2.5)}.left-3{left:calc(var(--spacing)*3)}.left-6{left:calc(var(--spacing)*6)}.left-\[50\%\]{left:50%}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.-z-10{z-index:-10}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[60\]{z-index:60}.z-\[61\]{z-index:61}.z-\[100\]{z-index:100}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:calc(var(--spacing)*0)}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-1{margin-inline:calc(var(--spacing)*1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.-my-1{margin-block:calc(var(--spacing)*-1)}.my-1{margin-block:calc(var(--spacing)*1)}.my-4{margin-block:calc(var(--spacing)*4)}.my-5{margin-block:calc(var(--spacing)*5)}.my-6{margin-block:calc(var(--spacing)*6)}.my-7{margin-block:calc(var(--spacing)*7)}.my-8{margin-block:calc(var(--spacing)*8)}.my-auto{margin-block:auto}.prose{color:var(--tw-prose-body);--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75;max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}
4.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"“""”""‘""’"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.11111;margin-bottom:.888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.33333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.71429;margin-bottom:1.71429em;margin-top:1.71429em;overflow-x:auto;padding-inline-end:1.14286em;padding-bottom:.857143em;padding-top:.857143em;padding-inline-start:1.14286em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:#0000;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.71429;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.42857;margin-top:.857143em}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>
4li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not
4(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.571429em;padding-bottom:.571429em;padding-top:.571429em;padding-inline-start:.571429em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose\!{color:var(--tw-prose-body)!important;--tw-prose-body:oklch(37.3% .034 259.733)!important;--tw-prose-headings:oklch(21% .034 264.665)!important;--tw-prose-lead:oklch(44.6% .03 256.802)!important;--tw-prose-links:oklch(21% .034 264.665)!important;--tw-prose-bold:oklch(21% .034 264.665)!important;--tw-prose-counters:oklch(55.1% .027 264.364)!important;--tw-prose-bullets:oklch(87.2% .01 258.338)!important;--tw-prose-hr:oklch(92.8% .006 264.531)!important;--tw-prose-quotes:oklch(21% .034 264.665)!important;--tw-prose-quote-borders:oklch(92.8% .006 264.531)!important;--tw-prose-captions:oklch(55.1% .027 264.364)!important;--tw-prose-kbd:oklch(21% .034 264.665)!important;--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1)!important;--tw-prose-code:oklch(21% .034 264.665)!important;--tw-prose-pre-code:oklch(92.8% .006 264.531)!important;--tw-prose-pre-bg:oklch(27.8% .033 256.848)!important;--tw-prose-th-borders:oklch(87.2% .01 258.338)!important;--tw-prose-td-borders:oklch(92.8% .006 264.531)!important;--tw-prose-invert-body:oklch(87.2% .01 258.338)!important;--tw-prose-invert-headings:#fff!important;--tw-prose-invert-lead:oklch(70.7% .022 261.325)!important;--tw-prose-invert-links:#fff!important;--tw-prose-invert-bold:#fff!important;--tw-prose-invert-counters:oklch(70.7% .022 261.325)!important;--tw-prose-invert-bullets:oklch(44.6% .03 256.802)!important;--tw-prose-invert-hr:oklch(37.3% .034 259.733)!important;--tw-prose-invert-quotes:oklch(96.7% .003 264.542)!important;--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733)!important;--tw-prose-invert-captions:oklch(70.7% .022 261.325)!important;--tw-prose-invert-kbd:#fff!important;--tw-prose-invert-kbd-shadows:#ffffff1a!important;--tw-prose-invert-code:#fff!important;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338)!important;--tw-prose-invert-pre-bg:#00000080!important;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802)!important;--tw-prose-invert-td-borders:oklch(37.3% .034 259.733)!important;font-size:1rem!important;line-height:1.75!important;max-width:65ch!important}.prose\! :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em!important;margin-top:1.25em!important}.prose\! :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead)!important;font-size:1.25em!important;line-height:1.6!important;margin-bottom:1.2em!important;margin-top:1.2em!important}.prose\! :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links)!important;font-weight:500!important;text-decoration:underline!important}.prose\! :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold)!important;font-weight:600!important}.prose\! :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important}.prose\! :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal!important;margin-bottom:1.25em!important;margin-top:1.25em!important;padding-inline-start:1.625em!important}.prose\! :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha!important}.prose\! :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha!important}.prose\! :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha!important}.prose\! :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha!important}.prose\! :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman!important}.prose\! :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman!important}.prose\! :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman!important}.prose\! :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman!important}.prose\! :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal!important}.prose\! :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc!important;margin-bottom:1.25em!important;margin-top:1.25em!important;padding-inline-start:1.625em!important}.prose\! :where(ol>
4li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters)!important;font-weight:400!important}.prose\! :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)!important}.prose\! :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings)!important;font-weight:600!important;margin-top:1.25em!important}.prose\! :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr)!important;border-top-width:1px!important;margin-bottom:3em!important;margin-top:3em!important}.prose\! :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders)!important;border-inline-start-width:.25rem!important;color:var(--tw-prose-quotes)!important;font-style:italic!important;font-weight:500!important;margin-bottom:1.6em!important;margin-top:1.6em!important;padding-inline-start:1em!important;quotes:"“""”""‘""’"!important}.prose\! :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote!important}.prose\! :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote!important}.prose\! :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings)!important;font-size:2.25em!important;font-weight:800!important;line-height:1.11111!important;margin-bottom:.888889em!important;margin-top:0!important}.prose\! :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important;font-weight:900!important}.prose\! :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings)!important;font-size:1.5em!important;font-weight:700!important;line-height:1.33333!important;margin-bottom:1em!important;margin-top:2em!important}.prose\! :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important;font-weight:800!important}.prose\! :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings)!important;font-size:1.25em!important;font-weight:600!important;line-height:1.6!important;margin-bottom:.6em!important;margin-top:1.6em!important}.prose\! :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important;font-weight:700!important}.prose\! :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings)!important;font-weight:600!important;line-height:1.5!important;margin-bottom:.5em!important;margin-top:1.5em!important}.prose\! :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important;font-weight:700!important}.prose\! :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em!important;margin-top:2em!important}.prose\! :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block!important;margin-bottom:2em!important;margin-top:2em!important}.prose\! :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em!important;margin-top:2em!important}.prose\! :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem!important;box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows)!important;color:var(--tw-prose-kbd)!important;font-family:inherit!important;font-size:.875em!important;font-weight:500!important;padding-inline-end:.375em!important;padding-bottom:.1875em!important;padding-top:.1875em!important;padding-inline-start:.375em!important}.prose\! :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code)!important;font-size:.875em!important;font-weight:600!important}.prose\! :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose\! :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"!important}.prose\! :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important}.prose\! :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important;font-size:.875em!important}.prose\! :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important;font-size:.9em!important}.prose\! :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit!important}.prose\! :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg)!important;border-radius:.375rem!important;color:var(--tw-prose-pre-code)!important;font-size:.875em!important;font-weight:400!important;line-height:1.71429!important;margin-bottom:1.71429em!important;margin-top:1.71429em!important;overflow-x:auto!important;padding-inline-end:1.14286em!important;padding-bottom:.857143em!important;padding-top:.857143em!important;padding-inline-start:1.14286em!important}.prose\! :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:#0000!important;border-radius:0!important;border-width:0!important;color:inherit!important;font-family:inherit!important;font-size:inherit!important;font-weight:inherit!important;line-height:inherit!important;padding:0!important}.prose\! :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after,.prose\! :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none!important}.prose\! :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em!important;line-height:1.71429!important;margin-bottom:2em!important;margin-top:2em!important;table-layout:auto!important;width:100%!important}.prose\! :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders)!important;border-bottom-width:1px!important}.prose\! :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings)!important;font-weight:600!important;padding-inline-end:.571429em!important;padding-bottom:.571429em!important;padding-inline-start:.571429em!important;vertical-align:bottom!important}.prose\! :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders)!important;border-bottom-width:1px!important}.prose\! :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0!important}.prose\! :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline!important}.prose\! :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders)!important;border-top-width:1px!important}.prose\! :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top!important}.prose\! :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start!important}.prose\! :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0!important;margin-top:0!important}.prose\! :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions)!important;font-size:.875em!important;line-height:1.42857!important;margin-top:.857143em!important}.prose\! :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0!important;margin-top:0!important}.prose\! :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em!important;margin-top:.5em!important}.prose\! :where(ol>
4li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em!important}.prose\! :where(.prose\!>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em!important;margin-top:.75em!important}.prose\! :where(.prose\!>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em!important}.prose\! :where(.prose\!>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em!important}.prose\! :where(.prose\!>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em!important}.prose\! :where(.prose\!>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em!important}.prose\! :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em!important;margin-top:.75em!important}.prose\! :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em!important;margin-top:1.25em!important}.prose\! :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em!important;padding-inline-start:1.625em!important}.prose\! :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(h3+*):not
4(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose\! :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0!important}.prose\! :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0!important}.prose\! :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0!important}.prose\! :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.571429em!important;padding-bottom:.571429em!important;padding-top:.571429em!important;padding-inline-start:.571429em!important}.prose\! :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0!important}.prose\! :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0!important}.prose\! :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em!important;margin-top:2em!important}.prose\! :where(.prose\!>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0!important}.prose\! :where(.prose\!>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0!important}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em;margin-top:1.14286em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.28571em;line-height:1.55556;margin-bottom:.888889em;margin-top:.888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.33333em;margin-top:1.33333em;padding-inline-start:1.11111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.14286em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.42857em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.28571em;line-height:1.55556;margin-bottom:.444444em;margin-top:1.55556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.42857;margin-bottom:.571429em;margin-top:1.42857em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.71429em;margin-top:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.71429em;margin-top:1.71429em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.857143em;padding-inline-end:.357143em;padding-bottom:.142857em;padding-top:.142857em;padding-inline-start:.357143em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.857143em;line-height:1.66667;margin-bottom:1.66667em;margin-top:1.66667em;padding-inline-end:1em;padding-bottom:.666667em;padding-top:.666667em;padding-inline-start:1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em;margin-top:1.14286em;padding-inline-start:1.57143em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.285714em;margin-top:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>
4li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.571429em;margin-top:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.571429em;margin-top:.571429em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em;margin-top:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.85714em;margin-top:2.85714em}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not
4(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-top:.666667em;padding-inline-start:1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.71429em;margin-top:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.33333;margin-top:.666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.-mt-1{margin-top:calc(var(--spacing)*-1)}.-mt-4{margin-top:calc(var(--spacing)*-4)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-2\.5{margin-top:calc(var(--spacing)*2.5)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-5{margin-top:calc(var(--spacing)*5)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-12{margin-top:calc(var(--spacing)*12)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-auto{margin-top:auto}.-mr-1{margin-right:calc(var(--spacing)*-1)}.mr-0{margin-right:calc(var(--spacing)*0)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-1\.5{margin-right:calc(var(--spacing)*1.5)}.mr-2{margin-right:calc(var(--spacing)*2)}.-mb-1{margin-bottom:calc(var(--spacing)*-1)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-1\.5{margin-bottom:calc(var(--spacing)*1.5)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-2\.5{margin-bottom:calc(var(--spacing)*2.5)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-5{margin-bottom:calc(var(--spacing)*5)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-10{margin-bottom:calc(var(--spacing)*10)}.mb-14{margin-bottom:calc(var(--spacing)*14)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.-ml-1{margin-left:calc(var(--spacing)*-1)}.-ml-1\.5{margin-left:calc(var(--spacing)*-1.5)}.-ml-4{margin-left:calc(var(--spacing)*-4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-1\.5{margin-left:calc(var(--spacing)*1.5)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1}.line-clamp-1,.line-clamp-2{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2}.line-clamp-3{-webkit-line-clamp:3}.line-clamp-3,.line-clamp-4{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4}.line-clamp-5{-webkit-line-clamp:5}.line-clamp-5,.line-clamp-\[8\]{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-\[8\]{-webkit-line-clamp:8}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.hidden\!{display:none!important}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}
4.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.field-sizing-content{field-sizing:content}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-\[16\/9\]{aspect-ratio:16/9}.aspect-\[16\/10\]{aspect-ratio:16/10}.aspect-\[1536\/640\]{aspect-ratio:1536/640}.aspect-square{aspect-ratio:1}.aspect-video{aspect-ratio:var(--aspect-video)}.size-1\.5{height:calc(var(--spacing)*1.5);width:calc(var(--spacing)*1.5)}.size-2{height:calc(var(--spacing)*2);width:calc(var(--spacing)*2)}.size-2\.5{height:calc(var(--spacing)*2.5);width:calc(var(--spacing)*2.5)}.size-3{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.size-3\.5{height:calc(var(--spacing)*3.5);width:calc(var(--spacing)*3.5)}.size-4{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.size-4\.5{height:calc(var(--spacing)*4.5);width:calc(var(--spacing)*4.5)}.size-5{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}.size-6{height:calc(var(--spacing)*6);width:calc(var(--spacing)*6)}.size-7{height:calc(var(--spacing)*7);width:calc(var(--spacing)*7)}.size-8{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.size-9{height:calc(var(--spacing)*9);width:calc(var(--spacing)*9)}.size-10{height:calc(var(--spacing)*10);width:calc(var(--spacing)*10)}.size-11{height:calc(var(--spacing)*11);width:calc(var(--spacing)*11)}.size-12{height:calc(var(--spacing)*12);width:calc(var(--spacing)*12)}.size-14{height:calc(var(--spacing)*14);width:calc(var(--spacing)*14)}.size-16{height:calc(var(--spacing)*16);width:calc(var(--spacing)*16)}.size-20{height:calc(var(--spacing)*20);width:calc(var(--spacing)*20)}.size-24{height:calc(var(--spacing)*24);width:calc(var(--spacing)*24)}.size-36{height:calc(var(--spacing)*36);width:calc(var(--spacing)*36)}.size-\[11px\]{height:11px;width:11px}.size-full{height:100%;width:100%}.\!h-2{height:calc(var(--spacing)*2)!important}.\!h-2\.5{height:calc(var(--spacing)*2.5)!important}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-1\/2{height:50%}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-20{height:calc(var(--spacing)*20)}.h-24{height:calc(var(--spacing)*24)}.h-28{height:calc(var(--spacing)*28)}.h-32{height:calc(var(--spacing)*32)}.h-40{height:calc(var(--spacing)*40)}.h-48{height:calc(var(--spacing)*48)}.h-64{height:calc(var(--spacing)*64)}.h-\[1\.15rem\]{height:1.15rem}.h-\[3px\]{height:3px}.h-\[18px\]{height:18px}.h-\[60vh\]{height:60vh}.h-\[70vh\]{height:70vh}.h-\[120px\]{height:120px}.h-\[500px\]{height:500px}.h-\[520px\]{height:520px}.h-\[600px\]{height:600px}.h-\[800px\]{height:800px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[calc\(100vh-7rem\)\]{height:calc(100vh - 7rem)}.h-\[var\(--reka-navigation-menu-viewport-height\)\]{height:var(--reka-navigation-menu-viewport-height)}.h-\[var\(--reka-select-trigger-height\)\]{height:var(--reka-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--reka-context-menu-content-available-height\){max-height:var(--reka-context-menu-content-available-height)}.max-h-\(--reka-dropdown-menu-content-available-height\){max-height:var(--reka-dropdown-menu-content-available-height)}.max-h-\(--reka-select-content-available-height\){max-height:var(--reka-select-content-available-height)}.max-h-28{max-height:calc(var(--spacing)*28)}.max-h-40{max-height:calc(var(--spacing)*40)}.max-h-44{max-height:calc(var(--spacing)*44)}.max-h-48{max-height:calc(var(--spacing)*48)}.max-h-56{max-height:calc(var(--spacing)*56)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-64{max-height:calc(var(--spacing)*64)}.max-h-72{max-height:calc(var(--spacing)*72)}.max-h-80{max-height:calc(var(--spacing)*80)}.max-h-\[28rem\]{max-height:28rem}.max-h-\[40vh\]{max-height:40vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[75vh\]{max-height:75vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[88vh\]{max-height:88vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[92vh\]{max-height:92vh}.max-h-\[300px\]{max-height:300px}.max-h-\[calc\(100\%-1\.5rem\)\]{max-height:calc(100% - 1.5rem)}.max-h-\[calc\(100vh-6\.25rem\)\]{max-height:calc(100vh - 6.25rem)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-5{min-height:calc(var(--spacing)*5)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-32{min-height:calc(var(--spacing)*32)}.min-h-\[1rem\]{min-height:1rem}.min-h-\[2\.5rem\]{min-height:2.5rem}.min-h-\[2px\]{min-height:2px}.min-h-\[14rem\]{min-height:14rem}.min-h-\[18rem\]{min-height:18rem}.min-h-\[30vh\]{min-height:30vh}.min-h-\[35vh\]{min-height:35vh}.min-h-\[420px\]{min-height:420px}.min-h-\[480px\]{min-height:480px}.min-h-\[calc\(100vh-8rem\)\]{min-height:calc(100vh - 8rem)}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.\!w-2{width:calc(var(--spacing)*2)!important}.\!w-2\.5{width:calc(var(--spacing)*2.5)!important}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-0{width:calc(var(--spacing)*0)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/2{width:50%}.w-1\/3{width:33.3333%}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}
4.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-40{width:calc(var(--spacing)*40)}.w-44{width:calc(var(--spacing)*44)}.w-48{width:calc(var(--spacing)*48)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[--reka-dropdown-menu-trigger-width\]{width:--reka-dropdown-menu-trigger-width}.w-\[18px\]{width:18px}.w-\[18rem\]{width:18rem}.w-\[80vw\]{width:80vw}.w-\[100px\]{width:100px}.w-\[200px\]{width:200px}.w-\[240px\]{width:240px}.w-\[248px\]{width:248px}.w-\[900px\]{width:900px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-40{max-width:calc(var(--spacing)*40)}.max-w-56{max-width:calc(var(--spacing)*56)}.max-w-\[9rem\]{max-width:9rem}.max-w-\[11rem\]{max-width:11rem}.max-w-\[16rem\]{max-width:16rem}.max-w-\[18rem\]{max-width:18rem}.max-w-\[55vw\]{max-width:55vw}.max-w-\[85vw\]{max-width:85vw}.max-w-\[88rem\]{max-width:88rem}.max-w-\[90\%\]{max-width:90%}.max-w-\[90vw\]{max-width:90vw}.max-w-\[92vw\]{max-width:92vw}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-9{min-width:calc(var(--spacing)*9)}.min-w-10{min-width:calc(var(--spacing)*10)}.min-w-56{min-width:calc(var(--spacing)*56)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[12rem\]{min-width:12rem}.min-w-\[14rem\]{min-width:14rem}.min-w-\[16rem\]{min-width:16rem}.min-w-\[var\(--reka-select-trigger-width\)\]{min-width:var(--reka-select-trigger-width)}.flex-1{flex:1}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\(--reka-combobox-content-transform-origin\){transform-origin:var(--reka-combobox-content-transform-origin)}.origin-\(--reka-context-menu-content-transform-origin\){transform-origin:var(--reka-context-menu-content-transform-origin)}.origin-\(--reka-dropdown-menu-content-transform-origin\){transform-origin:var(--reka-dropdown-menu-content-transform-origin)}.origin-\(--reka-menubar-content-transform-origin\){transform-origin:var(--reka-menubar-content-transform-origin)}.origin-\(--reka-popover-content-transform-origin\){transform-origin:var(--reka-popover-content-transform-origin)}.-translate-x-1{--tw-translate-x:calc(var(--spacing)*-1)}.-translate-x-1,.-translate-x-1\/2{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[-50\%\],.translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.-translate-y-full{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-full{--tw-translate-y:-100%}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*.5)}.translate-y-0\.5,.translate-y-\[-50\%\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%}
4.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y: calc(-50% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.-rotate-90{rotate:-90deg}.rotate-0{rotate:none}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-help{cursor:help}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.cursor-zoom-in{cursor:zoom-in}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-mt-20{scroll-margin-top:calc(var(--spacing)*20)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-start{justify-items:start}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}.gap-10{gap:calc(var(--spacing)*10)}.gap-\[2px\]{gap:2px}.gap-\[3px\]{gap:3px}.gap-px{gap:1px}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*.5*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*.5*var(--tw-space-y-reverse))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1*var(--tw-space-y-reverse))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*1.5*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*1.5*var(--tw-space-y-reverse))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2*var(--tw-space-y-reverse))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*2.5*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*2.5*var(--tw-space-y-reverse))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*3*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*3*var(--tw-space-y-reverse))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*4*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*4*var(--tw-space-y-reverse))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*5*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*5*var(--tw-space-y-reverse))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*6*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*6*var(--tw-space-y-reverse))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*8*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*8*var(--tw-space-y-reverse))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-end:calc(var(--spacing)*10*(1 - var(--tw-space-y-reverse)));margin-block-start:calc(var(--spacing)*10*var(--tw-space-y-reverse))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}.gap-x-1{-moz-column-gap:calc(var(--spacing)*1);column-gap:calc(var(--spacing)*1)}.gap-x-1\.5{-moz-column-gap:calc(var(--spacing)*1.5);column-gap:calc(var(--spacing)*1.5)}.gap-x-2{-moz-column-gap:calc(var(--spacing)*2);column-gap:calc(var(--spacing)*2)}.gap-x-3{-moz-column-gap:calc(var(--spacing)*3);column-gap:calc(var(--spacing)*3)}.gap-x-4{-moz-column-gap:calc(var(--spacing)*4);column-gap:calc(var(--spacing)*4)}.gap-x-6{-moz-column-gap:calc(var(--spacing)*6);column-gap:calc(var(--spacing)*6)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*2*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*2*var(--tw-space-x-reverse))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}.gap-y-0{row-gap:calc(var(--spacing)*0)}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.gap-y-3{row-gap:calc(var(--spacing)*3)}.gap-y-4{row-gap:calc(var(--spacing)*4)}.gap-y-6{row-gap:calc(var(--spacing)*6)}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-end-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-style:var(--tw-border-style)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-bottom-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.self-center{align-self:center}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-clip{overflow-x:clip}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}
4.rounded-\[3px\]{border-radius:3px}.rounded-\[4px\]{border-radius:4px}.rounded-\[7px\]{border-radius:7px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-s{border-end-start-radius:.25rem}.rounded-s,.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-end-end-radius:.25rem}.rounded-e,.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-right-radius:.25rem}.rounded-l,.rounded-t{border-top-left-radius:.25rem}.rounded-l{border-bottom-left-radius:.25rem}.rounded-l-none{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-r{border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.rounded-r-none{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-left-radius:.25rem}.rounded-b,.rounded-br{border-bottom-right-radius:.25rem}.rounded-br-sm{border-bottom-right-radius:calc(var(--radius) - 4px)}.rounded-bl{border-bottom-left-radius:.25rem}.rounded-bl-md{border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-bl-sm{border-bottom-left-radius:calc(var(--radius) - 4px)}.\!border-2{border-style:var(--tw-border-style)!important;border-width:2px!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-x-2{border-inline-style:var(--tw-border-style);border-inline-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-300\/50{border-color:#ffd23680}@supports (color:color-mix(in lab,red,red)){.border-amber-300\/50{border-color:color-mix(in oklab,var(--color-amber-300)50%,transparent)}}.border-amber-400{border-color:var(--color-amber-400)}.border-amber-400\/60{border-color:#fcbb0099}@supports (color:color-mix(in lab,red,red)){.border-amber-400\/60{border-color:color-mix(in oklab,var(--color-amber-400)60%,transparent)}}.border-amber-500\/20{border-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/20{border-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.border-amber-500\/25{border-color:#f99c0040}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/25{border-color:color-mix(in oklab,var(--color-amber-500)25%,transparent)}}.border-amber-500\/30{border-color:#f99c004d}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/30{border-color:color-mix(in oklab,var(--color-amber-500)30%,transparent)}}.border-amber-500\/40{border-color:#f99c0066}@supports (color:color-mix(in lab,red,red)){.border-amber-500\/40{border-color:color-mix(in oklab,var(--color-amber-500)40%,transparent)}}.border-amber-600\/40{border-color:#dd740066}@supports (color:color-mix(in lab,red,red)){.border-amber-600\/40{border-color:color-mix(in oklab,var(--color-amber-600)40%,transparent)}}.border-background\/60{border-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.border-background\/60{border-color:color-mix(in oklab,var(--background)60%,transparent)}}.border-border,.border-border\/40{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/40{border-color:color-mix(in oklab,var(--border)40%,transparent)}}.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--border)60%,transparent)}}.border-cyan-500\/25{border-color:#00b7d740}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/25{border-color:color-mix(in oklab,var(--color-cyan-500)25%,transparent)}}.border-cyan-500\/40{border-color:#00b7d766}@supports (color:color-mix(in lab,red,red)){.border-cyan-500\/40{border-color:color-mix(in oklab,var(--color-cyan-500)40%,transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/40{border-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.border-destructive\/50{border-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.border-destructive\/50{border-color:color-mix(in oklab,var(--destructive)50%,transparent)}}.border-emerald-400\/70{border-color:#00d294b3}@supports (color:color-mix(in lab,red,red)){.border-emerald-400\/70{border-color:color-mix(in oklab,var(--color-emerald-400)70%,transparent)}}.border-emerald-500\/20{border-color:#00bb7f33}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/20{border-color:color-mix(in oklab,var(--color-emerald-500)20%,transparent)}}.border-emerald-500\/25{border-color:#00bb7f40}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/25{border-color:color-mix(in oklab,var(--color-emerald-500)25%,transparent)}}.border-emerald-500\/30{border-color:#00bb7f4d}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/30{border-color:color-mix(in oklab,var(--color-emerald-500)30%,transparent)}}.border-emerald-500\/40{border-color:#00bb7f66}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/40{border-color:color-mix(in oklab,var(--color-emerald-500)40%,transparent)}}.border-emerald-500\/50{border-color:#00bb7f80}@supports (color:color-mix(in lab,red,red)){.border-emerald-500\/50{border-color:color-mix(in oklab,var(--color-emerald-500)50%,transparent)}}.border-foreground{border-color:var(--foreground)}.border-fuchsia-400{border-color:var(--color-fuchsia-400)}.border-fuchsia-500\/25{border-color:#e12afb40}@supports (color:color-mix(in lab,red,red)){.border-fuchsia-500\/25{border-color:color-mix(in oklab,var(--color-fuchsia-500)25%,transparent)}}.border-fuchsia-500\/30{border-color:#e12afb4d}@supports (color:color-mix(in lab,red,red)){.border-fuchsia-500\/30{border-color:color-mix(in oklab,var(--color-fuchsia-500)30%,transparent)}}.border-fuchsia-500\/40{border-color:#e12afb66}@supports (color:color-mix(in lab,red,red)){.border-fuchsia-500\/40{border-color:color-mix(in oklab,var(--color-fuchsia-500)40%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500)40%,transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/40{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/40{border-color:color-mix(in oklab,var(--muted-foreground)40%,transparent)}}.border-orange-500\/25{border-color:#fe6e0040}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/25{border-color:color-mix(in oklab,var(--color-orange-500)25%,transparent)}}.border-orange-500\/30{border-color:#fe6e004d}@supports (color:color-mix(in lab,red,red)){.border-orange-500\/30{border-color:color-mix(in oklab,var(--color-orange-500)30%,transparent)}}.border-primary{border-color:var(--primary)}.border-primary-foreground\/25{border-color:var(--primary-foreground)}@supports (color:color-mix(in lab,red,red)){.border-primary-foreground\/25{border-color:color-mix(in oklab,var(--primary-foreground)25%,transparent)}}.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--primary)20%,transparent)}}.border-primary\/30{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--primary)30%,transparent)}}.border-primary\/50{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/50{border-color:color-mix(in oklab,var(--primary)50%,transparent)}}.border-red-300{border-color:var(--color-red-300)}.border-rose-400{border-color:var(--color-rose-400)}.border-rose-400\/60{border-color:#ff667f99}@supports (color:color-mix(in lab,red,red)){.border-rose-400\/60{border-color:color-mix(in oklab,var(--color-rose-400)60%,transparent)}}.border-rose-500\/25{border-color:#ff235740}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/25{border-color:color-mix(in oklab,var(--color-rose-500)25%,transparent)}}.border-rose-500\/30{border-color:#ff23574d}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/30{border-color:color-mix(in oklab,var(--color-rose-500)30%,transparent)}}.border-rose-500\/40{border-color:#ff235766}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/40{border-color:color-mix(in oklab,var(--color-rose-500)40%,transparent)}}.border-rose-500\/70{border-color:#ff2357b3}@supports (color:color-mix(in lab,red,red)){.border-rose-500\/70{border-color:color-mix(in oklab,var(--color-rose-500)70%,transparent)}}.border-sidebar-border{border-color:var(--sidebar-border)}.border-sky-400{border-color:var(--color-sky-400)}.border-sky-400\/50{border-color:#00bcfe80}@supports (color:color-mix(in lab,red,red)){.border-sky-400\/50{border-color:color-mix(in oklab,var(--color-sky-400)50%,transparent)}}.border-sky-500{border-color:var(--color-sky-500)}.border-sky-500\/20{border-color:#00a5ef33}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/20{border-color:color-mix(in oklab,var(--color-sky-500)20%,transparent)}}.border-sky-500\/25{border-color:#00a5ef40}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/25{border-color:color-mix(in oklab,var(--color-sky-500)25%,transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/30{border-color:color-mix(in oklab,var(--color-sky-500)30%,transparent)}}.border-sky-500\/40{border-color:#00a5ef66}@supports (color:color-mix(in lab,red,red)){.border-sky-500\/40{border-color:color-mix(in oklab,var(--color-sky-500)40%,transparent)}}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/50{border-color:#e2e8f080}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/50{border-color:color-mix(in oklab,var(--color-slate-200)50%,transparent)}}.border-slate-200\/80{border-color:#e2e8f0cc}@supports (color:color-mix(in lab,red,red)){.border-slate-200\/80{border-color:color-mix(in oklab,var(--color-slate-200)80%,transparent)}}.border-slate-500\/40{border-color:#62748e66}@supports (color:color-mix(in lab,red,red)){.border-slate-500\/40{border-color:color-mix(in oklab,var(--color-slate-500)40%,transparent)}}.border-teal-500\/25{border-color:#00baa740}@supports (color:color-mix(in lab,red,red)){.border-teal-500\/25{border-color:color-mix(in oklab,var(--color-teal-500)25%,transparent)}}.border-teal-500\/40{border-color:#00baa766}@supports (color:color-mix(in lab,red,red)){.border-teal-500\/40{border-color:color-mix(in oklab,var(--color-teal-500)40%,transparent)}}.border-transparent{border-color:#0000}.border-violet-400\/50{border-color:#a685ff80}@supports (color:color-mix(in lab,red,red)){.border-violet-400\/50{border-color:color-mix(in oklab,var(--color-violet-400)50%,transparent)}}.border-violet-500\/25{border-color:#8d54ff40}@supports (color:color-mix(in lab,red,red)){.border-violet-500\/25{border-color:color-mix(in oklab,var(--color-violet-500)25%,transparent)}}.border-violet-500\/30{border-color:#8d54ff4d}@supports (color:color-mix(in lab,red,red)){.border-violet-500\/30{border-color:color-mix(in oklab,var(--color-violet-500)30%,transparent)}}.border-violet-500\/40{border-color:#8d54ff66}@supports (color:color-mix(in lab,red,red)){.border-violet-500\/40{border-color:color-mix(in oklab,var(--color-violet-500)40%,transparent)}}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.border-white\/10{border-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.\!bg-muted-foreground{background-color:var(--muted-foreground)!important}.bg-\[\#f5f3ec\]{background-color:#f5f3ec}.bg-accent,.bg-accent\/40{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/40{background-color:color-mix(in oklab,var(--accent)40%,transparent)}}.bg-accent\/60{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/60{background-color:color-mix(in oklab,var(--accent)60%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-500{background-color:var(--color-amber-500)}.bg-amber-500\/5{background-color:#f99c000d}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/5{background-color:color-mix(in oklab,var(--color-amber-500)5%,transparent)}}.bg-amber-500\/10{background-color:#f99c001a}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/10{background-color:color-mix(in oklab,var(--color-amber-500)10%,transparent)}}.bg-amber-500\/15{background-color:#f99c0026}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/15{background-color:color-mix(in oklab,var(--color-amber-500)15%,transparent)}}.bg-amber-500\/20{background-color:#f99c0033}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/20{background-color:color-mix(in oklab,var(--color-amber-500)20%,transparent)}}.bg-amber-500\/\[0\.06\]{background-color:#f99c000f}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-amber-500)6%,transparent)}}.bg-amber-500\/\[0\.07\]{background-color:#f99c0012}@supports (color:color-mix(in lab,red,red)){.bg-amber-500\/\[0\.07\]{background-color:color-mix(in oklab,var(--color-amber-500)7%,transparent)}}.bg-background,.bg-background\/40{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/40{background-color:color-mix(in oklab,var(--background)40%,transparent)}}.bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--background)60%,transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/70{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background)95%,transparent)}}.bg-black{background-color:var(--color-black)}.bg-black\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-black\/0{background-color:color-mix(in oklab,var(--color-black)0%,transparent)}}.bg-black\/20{background-color:#0003}@supports (color:color-mix(in lab,red,red)){.bg-black\/20{background-color:color-mix(in oklab,var(--color-black)20%,transparent)}}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-black\/45{background-color:#00000073}@supports (color:color-mix(in lab,red,red)){.bg-black\/45{background-color:color-mix(in oklab,var(--color-black)45%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-black\/55{background-color:#0000008c}@supports (color:color-mix(in lab,red,red)){.bg-black\/55{background-color:color-mix(i
4n oklab,var(--color-black)55%,transparent)}}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\/80{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.bg-black\/80{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.bg-black\/85{background-color:#000000d9}@supports (color:color-mix(in lab,red,red)){.bg-black\/85{background-color:color-mix(in oklab,var(--color-black)85%,transparent)}}.bg-border{background-color:var(--border)}.bg-card,.bg-card\/70{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/70{background-color:color-mix(in oklab,var(--card)70%,transparent)}}.bg-cyan-500\/10{background-color:#00b7d71a}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/10{background-color:color-mix(in oklab,var(--color-cyan-500)10%,transparent)}}.bg-cyan-500\/\[0\.05\]{background-color:#00b7d70d}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/\[0\.05\]{background-color:color-mix(in oklab,var(--color-cyan-500)5%,transparent)}}.bg-destructive,.bg-destructive\/5{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/5{background-color:color-mix(in oklab,var(--destructive)5%,transparent)}}.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/10{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.bg-destructive\/15{background-color:color-mix(in oklab,var(--destructive)15%,transparent)}}.bg-emerald-200{background-color:var(--color-emerald-200)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-500\/5{background-color:#00bb7f0d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/5{background-color:color-mix(in oklab,var(--color-emerald-500)5%,transparent)}}.bg-emerald-500\/10{background-color:#00bb7f1a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/10{background-color:color-mix(in oklab,var(--color-emerald-500)10%,transparent)}}.bg-emerald-500\/15{background-color:#00bb7f26}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/15{background-color:color-mix(in oklab,var(--color-emerald-500)15%,transparent)}}.bg-emerald-500\/\[0\.04\]{background-color:#00bb7f0a}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/\[0\.04\]{background-color:color-mix(in oklab,var(--color-emerald-500)4%,transparent)}}.bg-emerald-500\/\[0\.05\]{background-color:#00bb7f0d}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/\[0\.05\]{background-color:color-mix(in oklab,var(--color-emerald-500)5%,transparent)}}.bg-emerald-500\/\[0\.06\]{background-color:#00bb7f0f}@supports (color:color-mix(in lab,red,red)){.bg-emerald-500\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-emerald-500)6%,transparent)}}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-foreground{background-color:var(--foreground)}.bg-fuchsia-500{background-color:var(--color-fuchsia-500)}.bg-fuchsia-500\/10{background-color:#e12afb1a}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-500\/10{background-color:color-mix(in oklab,var(--color-fuchsia-500)10%,transparent)}}.bg-fuchsia-500\/15{background-color:#e12afb26}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-500\/15{background-color:color-mix(in oklab,var(--color-fuchsia-500)15%,transparent)}}.bg-fuchsia-500\/30{background-color:#e12afb4d}@supports (color:color-mix(in lab,red,red)){.bg-fuchsia-500\/30{background-color:color-mix(in oklab,var(--color-fuchsia-500)30%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500)5%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500)20%,transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab,var(--muted-foreground)40%,transparent)}}.bg-muted-foreground\/50{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/50{background-color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}.bg-muted-foreground\/80{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.bg-muted-foreground\/80{background-color:color-mix(in oklab,var(--muted-foreground)80%,transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/20{background-color:color-mix(in oklab,var(--muted)20%,transparent)}}.bg-muted\/30{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}.bg-muted\/40{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/40{background-color:color-mix(in oklab,var(--muted)40%,transparent)}}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/60{background-color:color-mix(in oklab,var(--muted)60%,transparent)}}.bg-orange-500{background-color:var(--color-orange-500)}.bg-orange-500\/10{background-color:#fe6e001a}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/10{background-color:color-mix(in oklab,var(--color-orange-500)10%,transparent)}}.bg-orange-500\/\[0\.06\]{background-color:#fe6e000f}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-orange-500)6%,transparent)}}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--primary)5%,transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\/15{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/15{background-color:color-mix(in oklab,var(--primary)15%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-primary\/70{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/70{background-color:color-mix(in oklab,var(--primary)70%,transparent)}}.bg-primary\/\[0\.03\]{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/\[0\.03\]{background-color:color-mix(in oklab,var(--primary)3%,transparent)}}.bg-primary\/\[0\.04\]{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/\[0\.04\]{background-color:color-mix(in oklab,var(--primary)4%,transparent)}}.bg-primary\/\[0\.06\]{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/\[0\.06\]{background-color:color-mix(in oklab,var(--primary)6%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-rose-500\/0{background-color:#0000}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/0{background-color:color-mix(in oklab,var(--color-rose-500)0%,transparent)}}.bg-rose-500\/5{background-color:#ff23570d}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/5{background-color:color-mix(in oklab,var(--color-rose-500)5%,transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/10{background-color:color-mix(in oklab,var(--color-rose-500)10%,transparent)}}.bg-rose-500\/15{background-color:#ff235726}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/15{background-color:color-mix(in oklab,var(--color-rose-500)15%,transparent)}}.bg-rose-500\/25{background-color:#ff235740}@supports (color:color-mix(in lab,red,red)){.bg-rose-500\/25{background-color:color-mix(in oklab,var(--color-rose-500)25%,transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-sky-200{background-color:var(--color-sky-200)}
4.bg-sky-400{background-color:var(--color-sky-400)}.bg-sky-400\/30{background-color:#00bcfe4d}@supports (color:color-mix(in lab,red,red)){.bg-sky-400\/30{background-color:color-mix(in oklab,var(--color-sky-400)30%,transparent)}}.bg-sky-500{background-color:var(--color-sky-500)}.bg-sky-500\/5{background-color:#00a5ef0d}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/5{background-color:color-mix(in oklab,var(--color-sky-500)5%,transparent)}}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/10{background-color:color-mix(in oklab,var(--color-sky-500)10%,transparent)}}.bg-sky-500\/15{background-color:#00a5ef26}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/15{background-color:color-mix(in oklab,var(--color-sky-500)15%,transparent)}}.bg-sky-500\/\[0\.05\]{background-color:#00a5ef0d}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/\[0\.05\]{background-color:color-mix(in oklab,var(--color-sky-500)5%,transparent)}}.bg-sky-500\/\[0\.06\]{background-color:#00a5ef0f}@supports (color:color-mix(in lab,red,red)){.bg-sky-500\/\[0\.06\]{background-color:color-mix(in oklab,var(--color-sky-500)6%,transparent)}}.bg-sky-600{background-color:var(--color-sky-600)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-slate-400{background-color:var(--color-slate-400)}.bg-slate-500\/10{background-color:#62748e1a}@supports (color:color-mix(in lab,red,red)){.bg-slate-500\/10{background-color:color-mix(in oklab,var(--color-slate-500)10%,transparent)}}.bg-teal-500\/10{background-color:#00baa71a}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/10{background-color:color-mix(in oklab,var(--color-teal-500)10%,transparent)}}.bg-teal-500\/15{background-color:#00baa726}@supports (color:color-mix(in lab,red,red)){.bg-teal-500\/15{background-color:color-mix(in oklab,var(--color-teal-500)15%,transparent)}}.bg-transparent{background-color:#0000}.bg-violet-500\/5{background-color:#8d54ff0d}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/5{background-color:color-mix(in oklab,var(--color-violet-500)5%,transparent)}}.bg-violet-500\/10{background-color:#8d54ff1a}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/10{background-color:color-mix(in oklab,var(--color-violet-500)10%,transparent)}}.bg-violet-500\/15{background-color:#8d54ff26}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/15{background-color:color-mix(in oklab,var(--color-violet-500)15%,transparent)}}.bg-violet-500\/\[0\.05\]{background-color:#8d54ff0d}@supports (color:color-mix(in lab,red,red)){.bg-violet-500\/\[0\.05\]{background-color:color-mix(in oklab,var(--color-violet-500)5%,transparent)}}.bg-white{background-color:var(--color-white)}.bg-white\/15{background-color:#ffffff26}@supports (color:color-mix(in lab,red,red)){.bg-white\/15{background-color:color-mix(in oklab,var(--color-white)15%,transparent)}}.bg-white\/55{background-color:#ffffff8c}@supports (color:color-mix(in lab,red,red)){.bg-white\/55{background-color:color-mix(in oklab,var(--color-white)55%,transparent)}}.bg-white\/85{background-color:#ffffffd9}@supports (color:color-mix(in lab,red,red)){.bg-white\/85{background-color:color-mix(in oklab,var(--color-white)85%,transparent)}}.bg-white\/90{background-color:#ffffffe6}@supports (color:color-mix(in lab,red,red)){.bg-white\/90{background-color:color-mix(in oklab,var(--color-white)90%,transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.bg-white\/95{background-color:color-mix(in oklab,var(--color-white)95%,transparent)}}.bg-zinc-900\/40{background-color:#18181b66}@supports (color:color-mix(in lab,red,red)){.bg-zinc-900\/40{background-color:color-mix(in oklab,var(--color-zinc-900)40%,transparent)}}.bg-zinc-950{background-color:var(--color-zinc-950)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab}.bg-gradient-to-b,.bg-gradient-to-br{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab}.bg-gradient-to-l{--tw-gradient-position:to left in oklab}.bg-gradient-to-l,.bg-gradient-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[radial-gradient\(120\%_120\%_at_50\%_18\%\,\#222a44_0\%\,\#11151f_60\%\,\#080a12_100\%\)\]{background-image:radial-gradient(120% 120% at 50% 18%,#222a44 0,#11151f 60%,#080a12)}.bg-\[radial-gradient\(120\%_120\%_at_50\%_18\%\,\#ffffff_0\%\,\#eceae2_55\%\,\#dcd8cd_100\%\)\]{background-image:radial-gradient(120% 120% at 50% 18%,#fff 0,#eceae2 55%,#dcd8cd)}.bg-\[radial-gradient\(circle\,rgba\(217\,70\,239\,0\.25\)\,transparent_60\%\)\]{background-image:radial-gradient(circle,#d946ef40,#0000 60%)}.bg-\[radial-gradient\(ellipse_at_top\,rgba\(139\,92\,246\,0\.16\)\,transparent_55\%\)\]{background-image:radial-gradient(at top,#8b5cf629,#0000 55%)}.bg-\[radial-gradient\(ellipse_at_top\,rgba\(139\,92\,246\,0\.18\)\,transparent_55\%\)\]{background-image:radial-gradient(at top,#8b5cf62e,#0000 55%)}.from-background{--tw-gradient-from:var(--background);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var
4(--tw-gradient-to-position))}.from-black\/60{--tw-gradient-from:#0009;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-black\/60{--tw-gradient-from:color-mix(in oklab,var(--color-black)60%,transparent)}}.from-black\/80{--tw-gradient-from:#000c;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-black\/80{--tw-gradient-from:color-mix(in oklab,var(--color-black)80%,transparent)}}.from-cyan-500{--tw-gradient-from:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-emerald-500{--tw-gradient-from:var(--color-emerald-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-fuchsia-500{--tw-gradient-from:var(--color-fuchsia-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-fuchsia-500\/25{--tw-gradient-from:#e12afb40;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-fuchsia-500\/25{--tw-gradient-from:color-mix(in oklab,var(--color-fuchsia-500)25%,transparent)}}.from-fuchsia-500\/\[0\.04\]{--tw-gradient-from:#e12afb0a;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-fuchsia-500\/\[0\.04\]{--tw-gradient-from:color-mix(in oklab,var(--color-fuchsia-500)4%,transparent)}}.from-muted\/40{--tw-gradient-from:var(--muted);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-muted\/40{--tw-gradient-from:color-mix(in oklab,var(--muted)40%,transparent)}}.from-primary\/25{--tw-gradient-from:var(--primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-primary\/25{--tw-gradient-from:color-mix(in oklab,var(--primary)25%,transparent)}}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-violet-400{--tw-gradient-from:var(--color-violet-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-violet-500{--tw-gradient-from:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-violet-500\/25{--tw-gradient-from:#8d54ff40;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-violet-500\/25{--tw-gradient-from:color-mix(in oklab,var(--color-violet-500)25%,transparent)}}.from-violet-500\/30{--tw-gradient-from:#8d54ff4d;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var
4(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-violet-500\/30{--tw-gradient-from:color-mix(in oklab,var(--color-violet-500)30%,transparent)}}.from-violet-500\/70{--tw-gradient-from:#8d54ffb3;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.from-violet-500\/70{--tw-gradient-from:color-mix(in oklab,var(--color-violet-500)70%,transparent)}}.via-background{--tw-gradient-via:var(--background);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-black\/45{--tw-gradient-via:#00000073;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}@supports (color:color-mix(in lab,red,red)){.via-black\/45{--tw-gradient-via:color-mix(in oklab,var(--color-black)45%,transparent)}}.via-fuchsia-400{--tw-gradient-via:var(--color-fuchsia-400);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-fuchsia-500{--tw-gradient-via:var(--color-fuchsia-500);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-fuchsia-500\/15{--tw-gradient-via:#e12afb26;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}@supports (color:color-mix(in lab,red,red)){.via-fuchsia-500\/15{--tw-gradient-via:color-mix(in oklab,var(--color-fuchsia-500)15%,transparent)}}.via-fuchsia-500\/20{--tw-gradient-via:#e12afb33;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}@supports (color:color-mix(in lab,red,red)){.via-fuchsia-500\/20{--tw-gradient-via:color-mix(in oklab,var(--color-fuchsia-500)20%,transparent)}}.via-violet-500{--tw-gradient-via:var(--color-violet-500);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-violet-500\/20{--tw-gradient-via:#8d54ff33;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}@supports (color:color-mix(in lab,red,red)){.via-violet-500\/20{--tw-gradient-via:color-mix(in oklab,var(--color-violet-500)20%,transparent)}}.to-cyan-400{--tw-gradient-to:var(--color-cyan-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-cyan-500{--tw-gradient-to:var(--color-cyan-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-cyan-500\/25{--tw-gradient-to:#00b7d740;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var
4(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.to-cyan-500\/25{--tw-gradient-to:color-mix(in oklab,var(--color-cyan-500)25%,transparent)}}.to-cyan-500\/30{--tw-gradient-to:#00b7d74d;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.to-cyan-500\/30{--tw-gradient-to:color-mix(in oklab,var(--color-cyan-500)30%,transparent)}}.to-fuchsia-500{--tw-gradient-to:var(--color-fuchsia-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-fuchsia-500\/70{--tw-gradient-to:#e12afbb3;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.to-fuchsia-500\/70{--tw-gradient-to:color-mix(in oklab,var(--color-fuchsia-500)70%,transparent)}}.to-primary\/\[0\.04\]{--tw-gradient-to:var(--primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.to-primary\/\[0\.04\]{--tw-gradient-to:color-mix(in oklab,var(--primary)4%,transparent)}}.to-rose-500{--tw-gradient-to:var(--color-rose-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-violet-500{--tw-gradient-to:var(--color-violet-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-violet-500\/40{--tw-gradient-to:#8d54ff66;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}@supports (color:color-mix(in lab,red,red)){.to-violet-500\/40{--tw-gradient-to:color-mix(in oklab,var(--color-violet-500)40%,transparent)}}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.fill-current{fill:currentColor}
4.fill-primary,.fill-primary\/10{fill:var(--primary)}@supports (color:color-mix(in lab,red,red)){.fill-primary\/10{fill:color-mix(in oklab,var(--primary)10%,transparent)}}.stroke-primary\/50{stroke:var(--primary)}@supports (color:color-mix(in lab,red,red)){.stroke-primary\/50{stroke:color-mix(in oklab,var(--primary)50%,transparent)}}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-3{padding:calc(var(--spacing)*3)}.p-3\.5{padding:calc(var(--spacing)*3.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-10{padding:calc(var(--spacing)*10)}.p-12{padding:calc(var(--spacing)*12)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0\.5{padding-inline:calc(var(--spacing)*.5)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-3\.5{padding-inline:calc(var(--spacing)*3.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-3\.5{padding-block:calc(var(--spacing)*3.5)}.py-4{padding-block:calc(var(--spacing)*4)}.py-5{padding-block:calc(var(--spacing)*5)}.py-6{padding-block:calc(var(--spacing)*6)}.py-7{padding-block:calc(var(--spacing)*7)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.py-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.py-20{padding-block:calc(var(--spacing)*20)}.py-24{padding-block:calc(var(--spacing)*24)}.py-px{padding-block:1px}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-5{padding-top:calc(var(--spacing)*5)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-12{padding-top:calc(var(--spacing)*12)}.pt-16{padding-top:calc(var(--spacing)*16)}.pt-20{padding-top:calc(var(--spacing)*20)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.pr-3{padding-right:calc(var(--spacing)*3)}.pr-8{padding-right:calc(var(--spacing)*8)}.pr-10{padding-right:calc(var(--spacing)*10)}.pr-16{padding-right:calc(var(--spacing)*16)}.pb-0{padding-bottom:calc(var(--spacing)*0)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-2\.5{padding-bottom:calc(var(--spacing)*2.5)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.pb-20{padding-bottom:calc(var(--spacing)*20)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-3{padding-left:calc(var(--spacing)*3)}.pl-3\.5{padding-left:calc(var(--spacing)*3.5)}.pl-4{padding-left:calc(var(--spacing)*4)}.pl-5{padding-left:calc(var(--spacing)*5)}.pl-6{padding-left:calc(var(--spacing)*6)}.pl-8{padding-left:calc(var(--spacing)*8)}.pl-9{padding-left:calc(var(--spacing)*9)}.pl-\[42px\]{padding-left:42px}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-\[-0\.3em\]{vertical-align:-.3em}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-2xs{font-size:var(--text-2xs);line-height:var(--tw-leading,var(--text-2xs--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);
4line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.8rem\]{font-size:.8rem}.text-\[0\.85em\]{font-size:.85em}.text-\[8\.5px\]{font-size:8.5px}.text-\[9px\]{font-size:9px}.text-\[10\.5px\]{font-size:10.5px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.leading-6{--tw-leading:calc(var(--spacing)*6);line-height:calc(var(--spacing)*6)}.leading-7{--tw-leading:calc(var(--spacing)*7);line-height:calc(var(--spacing)*7)}.leading-\[1\.05\]{--tw-leading:1.05;line-height:1.05}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-500{color:var(--color-amber-500)}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-900\/80{color:#7b3306cc}@supports (color:color-mix(in lab,red,red)){.text-amber-900\/80{color:color-mix(in oklab,var(--color-amber-900)80%,transparent)}}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-cyan-500{color:var(--color-cyan-500)}.text-cyan-600{color:var(--color-cyan-600)}.text-cyan-700{color:var(--color-cyan-700)}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-400{color:var(--color-emerald-400)}.text-emerald-500{color:var(--color-emerald-500)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-foreground,.text-foreground\/35{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/35{color:color-mix(in oklab,var(--foreground)35%,transparent)}}.text-foreground\/70{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/70{color:color-mix(in oklab,var(--foreground)70%,transparent)}}.text-foreground\/80{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--foreground)80%,transparent)}}.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--foreground)90%,transparent)}}.text-fuchsia-500{color:var(--color-fuchsia-500)}.text-fuchsia-600{color:var(--color-fuchsia-600)}.text-fuchsia-700{color:var(--color-fuchsia-700)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-indigo-500{color:var(--color-indigo-500)}.text-muted-foreground,.text-muted-foreground\/30{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/30{color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.text-muted-foreground\/40{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/40{color:color-mix(in oklab,var(--muted-foreground)40%,transparent)}}.text-muted-foreground\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/50{color:color-mix(in oklab,var(--muted-foreground)50%,transparent)}}.text-muted-foreground\/60{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/60{color:color-mix(in oklab,var(--muted-foreground)60%,transparent)}}.text-muted-foreground\/70{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/70{color:color-mix(in oklab,var(--muted-foreground)70%,transparent)}}.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.text-muted-foreground\/80{color:color-mix(in oklab,var(--muted-foreground)80%,transparent)}}.text-orange-600{color:var(--color-orange-600)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-primary\/70{color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.text-primary\/70{color:color-mix(in oklab,var(--primary)70%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-rose-500{color:var(--color-rose-500)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-sky-500{color:var(--color-sky-500)}.text-sky-600{color:var(--color-sky-600)}.text-sky-700{color:var(--color-sky-700)}.text-slate-300{color:var(--color-slate-300)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-700\/90{color:#314158e6}@supports (color:color-mix(in lab,red,red)){.text-slate-700\/90{color:color-mix(in oklab,var(--color-slate-700)90%,transparent)}}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-teal-600{color:var(--color-teal-600)}.text-teal-700{color:var(--color-teal-700)}.text-transparent{color:#0000}.text-violet-500{color:var(--color-violet-500)}.text-violet-600{color:var(--color-violet-600)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.text-white\/80{color:#fffc}@supports (color:color-mix(in lab,red,red)){.text-white\/80{color:color-mix(in oklab,var(--color-white)80%,transparent)}}.text-white\/95{color:#fffffff2}@supports (color:color-mix(in lab,red,red)){.text-white\/95{color:color-mix(in oklab,var(--color-white)95%,transparent)}}.text-zinc-100{color:var(--color-zinc-100)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions}.diagonal-fractions,.lining-nums{font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums}.oldstyle-nums,.ordinal{font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal}.proportional-nums{--tw-numeric-spacing:proportional-nums}.proportional-nums,.slashed-zero{font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}
4.slashed-zero{--tw-slashed-zero:slashed-zero}.stacked-fractions{--tw-numeric-fraction:stacked-fractions}.stacked-fractions,.tabular-nums{font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.accent-primary{accent-color:var(--primary)}.accent-sky-500{accent-color:var(--color-sky-500)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.opacity-100{opacity:1}.opacity-\[0\.07\]{opacity:.07}.opacity-\[0\.18\]{opacity:.18}.opacity-\[0\.025\]{opacity:.025}
4.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow,.shadow-2xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040)}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)))}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\],.shadow-\[0_0_0_1px_rgba\(0\,0\,0\,0\.25\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(0\,0\,0\,0\.25\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,#00000040)}.shadow-\[0_0_0_3px_hsl\(var\(--primary\)\/0\.15\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,hsl(var(--primary)/.15))}.shadow-\[0_0_0_3px_hsl\(var\(--primary\)\/0\.15\)\],.shadow-\[0_0_0_3px_rgba\(56\,189\,248\,0\.15\)\]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.shadow-\[0_0_0_3px_rgba\(56\,189\,248\,0\.15\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#38bdf826)}.shadow-\[0_0_0_3px_rgba\(251\,191\,36\,0\.15\)\]{--tw-shadow:0 0 0 3px var(--tw-shadow-color,#fbbf2426)}.shadow-\[0_0_0_3px_rgba\(251\,191\,36\,0\.15\)\],.shadow-lg{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-md,.shadow-none{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)}.ring,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-0,.ring-1{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.inset-ring,.ring-2{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor)}.shadow-black\/40{--tw-shadow-color:#0006}@supports (color:color-mix(in lab,red,red)){.shadow-black\/40{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-black)40%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-red-500\/30{--tw-shadow-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.shadow-red-500\/30{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-red-500)30%,transparent)var(--tw-shadow-alpha),transparent)}}.shadow-violet-500\/20{--tw-shadow-color:#8d54ff33}@supports (color:color-mix(in lab,red,red)){.shadow-violet-500\/20{--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-violet-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.ring-border{--tw-ring-color:var(--border)}.ring-foreground\/40{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.ring-foreground\/40{--tw-ring-color:color-mix(in oklab,var(--foreground)40%,transparent)}}.ring-primary,.ring-primary\/30{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/30{--tw-ring-color:color-mix(in oklab,var(--primary)30%,transparent)}}.ring-primary\/40{--tw-ring-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.ring-primary\/40{--tw-ring-color:color-mix(in oklab,var(--primary)40%,transparent)}}.ring-ring\/10{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/10{--tw-ring-color:color-mix(in oklab,var(--ring)10%,transparent)}}.ring-ring\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.ring-ring\/50{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline:2px solid #0000;outline-offset:2px}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-ring\/50{outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.outline-ring\/50{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}.blur{--tw-blur:blur(8px)}.blur,.blur-3xl{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,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl))}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f)}.drop-shadow,.sepia{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,)}.sepia{--tw-sepia:sepia(100%)}.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,)}.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}.backdrop-blur{--tw-backdrop-blur:blur(8px)}.backdrop-blur,.backdrop-blur-\[2px\]{-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-\[2px\]{--tw-backdrop-blur:blur(2px)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm))}.backdrop-blur-sm,.backdrop-grayscale{-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-grayscale{--tw-backdrop-grayscale:grayscale(100%)}.backdrop-invert{--tw-backdrop-invert:invert(100%)}.backdrop-invert,.backdrop-sepia{-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-sepia{--tw-backdrop-sepia:sepia(100%)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[color\,box-shadow\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[left\,right\,width\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[margin\,opacity\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[width\,height\,padding\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[width\,height\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-\[width\]{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-all{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-colors{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-opacity{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-shadow{transition-duration:var(--tw-duration,var(--default-transition-duration));
4transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-transform{transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.transition-none{transition-property:none}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-transform{will-change:transform}.prose-neutral{--tw-prose-body:oklch(37.1% 0 0);--tw-prose-headings:oklch(20.5% 0 0);--tw-prose-lead:oklch(43.9% 0 0);--tw-prose-links:oklch(20.5% 0 0);--tw-prose-bold:oklch(20.5% 0 0);--tw-prose-counters:oklch(55.6% 0 0);--tw-prose-bullets:oklch(87% 0 0);--tw-prose-hr:oklch(92.2% 0 0);--tw-prose-quotes:oklch(20.5% 0 0);--tw-prose-quote-borders:oklch(92.2% 0 0);--tw-prose-captions:oklch(55.6% 0 0);--tw-prose-kbd:oklch(20.5% 0 0);--tw-prose-kbd-shadows:oklab(20.5% 0 0/.1);--tw-prose-code:oklch(20.5% 0 0);--tw-prose-pre-code:oklch(92.2% 0 0);--tw-prose-pre-bg:oklch(26.9% 0 0);--tw-prose-th-borders:oklch(87% 0 0);--tw-prose-td-borders:oklch(92.2% 0 0);--tw-prose-invert-body:oklch(87% 0 0);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.8% 0 0);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.8% 0 0);--tw-prose-invert-bullets:oklch(43.9% 0 0);--tw-prose-invert-hr:oklch(37.1% 0 0);--tw-prose-invert-quotes:oklch(97% 0 0);--tw-prose-invert-quote-borders:oklch(37.1% 0 0);--tw-prose-invert-captions:oklch(70.8% 0 0);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87% 0 0);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(43.9% 0 0);--tw-prose-invert-td-borders:oklch(37.1% 0 0)}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.paused{animation-play-state:paused}.repeat-1{animation-iteration-count:1}.ring-inset{--tw-ring-inset:inset}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.zoom-in-95{--tw-enter-scale:.95}.zoom-out{--tw-exit-scale:0}:is(.\*\:min-w-0>*){min-width:calc(var(--spacing)*0)}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:block:is(:where(.group):hover *){display:block}.group-hover\:grid:is(:where(.group):hover *){display:grid}.group-hover\:hidden:is(:where(.group):hover *){display:none}.group-hover\:translate-x-0:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.group-hover\:scale-\[1\.02\]:is(:where(.group):hover *){scale:1.02}.group-hover\:scale-\[1\.03\]:is(:where(.group):hover *){scale:1.03}.group-hover\:border-primary\/40:is(:where(.group):hover *){border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.group-hover\:border-primary\/40:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--primary)40%,transparent)}}.group-hover\:bg-accent\/30:is(:where(.group):hover *){background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-accent\/30:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--accent)30%,transparent)}}.group-hover\:bg-black\/30:is(:where(.group):hover *){background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-black\/30:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--primary)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\:shadow-md:is(:where(.group):hover *){--tw-shadow:0 4px 6px -1px var(--tw-sha
4dow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-hover\/art\:block:is(:where(.group\/art):hover *){display:block}.group-hover\/art\:hidden:is(:where(.group\/art):hover *){display:none}.group-hover\/art\:text-primary:is(:where(.group\/art):hover *){color:var(--primary)}.group-hover\/cmp\:opacity-100:is(:where(.group\/cmp):hover *){opacity:1}.group-hover\/cover\:bg-black\/45:is(:where(.group\/cover):hover *){background-color:#00000073}@supports (color:color-mix(in lab,red,red)){.group-hover\/cover\:bg-black\/45:is(:where(.group\/cover):hover *){background-color:color-mix(in oklab,var(--color-black)45%,transparent)}}.group-hover\/logo\:flex:is(:where(.group\/logo):hover *){display:flex}.group-hover\/logo\:opacity-100:is(:where(.group\/logo):hover *),.group-hover\/mem\:opacity-100:is(:where(.group\/mem):hover *),.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *){opacity:1}}.group-has-data-\[collapsible\=icon\]\/sidebar-wrapper\:h-12:is(:where(.group\/sidebar-wrapper):has([data-collapsible=icon]) *){height:calc(var(--spacing)*12)}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){height:calc(var(--spacing)*8)!important;width:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + var(--spacing)*4)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + var(--spacing)*4 + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\]\:bg-muted:is(:where(.group)[data-disabled] *){background-color:var(--muted)}.group-data-\[disabled\]\:text-muted-foreground:is(:where(.group)[data-disabled] *){color:var(--muted-foreground)}.group-data-\[disabled\]\:opacity-50:is(:where(.group)[data-disabled] *){opacity:.5}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[state\=active\]\:bg-primary:is(:where(.group)[data-state=active] *){background-color:var(--primary)}.group-data-\[state\=active\]\:text-primary-foreground:is(:where(.group)[data-state=active] *){color:var(--primary-foreground)}.group-data-\[state\=completed\]\:bg-accent:is(:where(.group)[data-state=completed] *){background-color:var(--accent)}.group-data-\[state\=completed\]\:bg-accent-foreground:is(:where(.group)[data-state=completed] *){background-color:var(--accent-foreground)}.group-data-\[state\=completed\]\:text-accent-foreground:is(:where(.group)[data-state=completed] *){color:var(--accent-foreground)}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[state\=open\]\/collapsible\:rotate-90:is(:where(.group\/collapsible)[data-state=open] *){rotate:90deg}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-sha
4dow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block:is(:where(.group\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.group-data-\[viewport\=false\]\/navigation-menu\:top-full:is(:where(.group\/navigation-menu)[data-viewport=false] *){top:100%}.group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5:is(:where(.group\/navigation-menu)[data-viewport=false] *){margin-top:calc(var(--spacing)*1.5)}.group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden:is(:where(.group\/navigation-menu)[data-viewport=false] *){overflow:hidden}.group-data-\[viewport\=false\]\/navigation-menu\:rounded-md:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-radius:calc(var(--radius) - 2px)}.group-data-\[viewport\=false\]\/navigation-menu\:border:is(:where(.group\/navigation-menu)[data-viewport=false] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[viewport\=false\]\/navigation-menu\:bg-popover:is(:where(.group\/navigation-menu)[data-viewport=false] *){background-color:var(--popover)}.group-data-\[viewport\=false\]\/navigation-menu\:text-popover-foreground:is(:where(.group\/navigation-menu)[data-viewport=false] *){color:var(--popover-foreground)}.group-data-\[viewport\=false\]\/navigation-menu\:shadow:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-shadow:0 1px 3px 0 var(--tw-sha
4dow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.group-data-\[viewport\=false\]\/navigation-menu\:duration-200:is(:where(.group\/navigation-menu)[data-viewport=false] *){--tw-duration:.2s;transition-duration:.2s}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::-moz-selection{background-color:var(--primary)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::-moz-selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::-moz-selection{color:var(--primary-foreground)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::-moz-selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::-moz-placeholder{color:var(--muted-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:top-1\/2:before{content:var(--tw-content);top:50%}.before\:left-0:before{content:var(--tw-content);left:calc(var(--spacing)*0)}.before\:h-4:before{content:var(--tw-content);height:calc(var(--spacing)*4)}.before\:w-0\.5:before{content:var(--tw-content);width:calc(var(--spacing)*.5)}.before\:-translate-y-1\/2:before{content:var(--tw-content);--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.before\:rounded-full:before{border-radius:3.40282e+38px;content:var(--tw-content)}.before\:bg-primary:before{background-color:var(--primary);content:var(--tw-content)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-1:after{content:var(--tw-content);width:calc(var(--spacing)*1)}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.after\:-translate-x-1\/2:after{content:var(--tw-content);--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.first\:rounded-l-full:first-child{border-bottom-left-radius:3.40282e+38px;border-top-left-radius:3.40282e+38px}.first\:rounded-l-md:first-child{border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:border-l:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.last\:mb-0:last-child{margin-bottom:calc(var(--spacing)*0)}.last\:rounded-r-md:last-child{border-bottom-right-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}.last\:border-r-0:last-child{border-right-style:var(--tw-border-style);border-right-width:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-within\:relative:focus-within{position:relative}.focus-within\:z-20:focus-within{z-index:20}.focus-within\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.focus-within\:ring-ring:focus-within{--tw-ring-color:var(--ring)}@media (hover:hover){.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing)*-.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:scale-\[1\.03\]:hover{scale:1.03}.hover\:border-cyan-500\/40:hover{border-color:#00b7d766}@supports (color:color-mix(in lab,red,red)){.hover\:border-cyan-500\/40:hover{border-color:color-mix(in oklab,var(--color-cyan-500)40%,transparent)}}.hover\:border-foreground\/20:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:border-foreground\/20:hover{border-color:color-mix(in oklab,var(--foreground)20%,transparent)}}.hover\:border-fuchsia-500\/40:hover{border-color:#e12afb66}@supports (color:color-mix(in lab,red,red)){.hover\:border-fuchsia-500\/40:hover{border-color:color-mix(in oklab,var(--color-fuchsia-500)40%,transparent)}}.hover\:border-muted-foreground\/40:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:border-muted-foreground\/40:hover{border-color:color-mix(in oklab,var(--muted-foreground)40%,transparent)}}.hover\:border-primary:hover,.hover\:border-primary\/40:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/40:hover{border-color:color-mix(in oklab,var(--primary)40%,transparent)}}.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--primary)50%,transparent)}}.hover\:border-slate-300:hover{border-color:var(--color-slate-300)}.hover\:border-violet-500\/40:hover{border-color:#8d54ff66}@supports (color:color-mix(in lab,red,red)){.hover\:border-violet-500\/40:hover{border-color:color-mix(in oklab,var(--color-violet-500)40%,transparent)}}.hover\:bg-accent:hover,.hover\:bg-accent\/30:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/30:hover{background-color:color-mix(in oklab,var(--accent)30%,transparent)}}.hover\:bg-accent\/40:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/40:hover{background-color:color-mix(in oklab,var(--accent)40%,transparent)}}.hover\:bg-accent\/50:hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/50:hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.hover\:bg-background:hover{background-color:var(--background)}.hover\:bg-black\/75:hover{background-color:#000000bf}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/75:hover{background-color:color-mix(in oklab,var(--color-black)75%,transparent)}}.hover\:bg-black\/80:hover{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/80:hover{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-emerald-500\/25:hover{background-color:#00bb7f40}@supports (color:color-mix(in lab,red,red)){.hover\:bg-emerald-500\/25:hover{background-color:color-mix(in oklab,var(--color-emerald-500)25%,transparent)}}.hover\:bg-emerald-600:hover{background-color:var(--color-emerald-600)}.hover\:bg-foreground\/10:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-foreground\/10:hover{background-color:color-mix(in oklab,var(--foreground)10%,transparent)}}.hover\:bg-fuchsia-600:hover{background-color:var(--color-fuchsia-600)}.hover\:bg-muted:hover{background-color:var(--muted)}.hover\:bg-muted-foreground\/20:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted-foreground\/20:hover{background-color:color-mix(in oklab,var(--muted-foreground)20%,transparent)}}.hover\:bg-muted\/30:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/30:hover{background-color:color-mix(in oklab,var(--muted)30%,transparent)}}
4.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-muted\/60:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/60:hover{background-color:color-mix(in oklab,var(--muted)60%,transparent)}}.hover\:bg-primary:hover,.hover\:bg-primary\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/10:hover{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:bg-rose-500\/50:hover{background-color:#ff235780}@supports (color:color-mix(in lab,red,red)){.hover\:bg-rose-500\/50:hover{background-color:color-mix(in oklab,var(--color-rose-500)50%,transparent)}}.hover\:bg-rose-600:hover{background-color:var(--color-rose-600)}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-sky-500\/20:hover{background-color:#00a5ef33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-sky-500\/20:hover{background-color:color-mix(in oklab,var(--color-sky-500)20%,transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white:hover{background-color:var(--color-white)}.hover\:bg-white\/5:hover{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/5:hover{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.hover\:bg-white\/25:hover{background-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/25:hover{background-color:color-mix(in oklab,var(--color-white)25%,transparent)}}.hover\:bg-white\/30:hover{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/30:hover{background-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-amber-600:hover{color:var(--color-amber-600)}.hover\:text-amber-700:hover{color:var(--color-amber-700)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-muted-foreground:hover{color:var(--muted-foreground)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-red-700:hover{color:var(--color-red-700)}.hover\:text-rose-500:hover{color:var(--color-rose-500)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-sky-500:hover{color:var(--color-sky-500)}.hover\:text-slate-700:hover{color:var(--color-slate-700)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-zinc-100:hover{color:var(--color-zinc-100)}.hover\:text-zinc-300:hover{color:var(--color-zinc-300)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-sha
4dow-color,hsl(var(--sidebar-accent)))}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover,.hover\:shadow-lg:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.hover\:shadow-md:hover,.hover\:shadow-sm:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.hover\:ring-2:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.hover\:ring-2:hover,.hover\:ring-4:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.hover\:ring-4:hover{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.hover\:ring-ring:hover{--tw-ring-color:var(--ring)}.hover\:ring-sky-400:hover{--tw-ring-color:var(--color-sky-400)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{background-color:var(--sidebar-border);content:var(--tw-content)}}.focus\:z-10:focus{z-index:10}.focus\:border-ring:focus{border-color:var(--ring)}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.focus\:ring-\[3px\]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.focus\:ring-ring:focus,.focus\:ring-ring\/50:focus{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus\:ring-ring\/50:focus{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus\:ring-sky-400:focus{--tw-ring-color:var(--color-sky-400)}.focus\:ring-sky-400\/60:focus{--tw-ring-color:#00bcfe99}@supports (color:color-mix(in lab,red,red)){.focus\:ring-sky-400\/60:focus{--tw-ring-color:color-mix(in oklab,var(--color-sky-400)60%,transparent)}}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline:2px solid #0000;outline-offset:2px}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:bg-accent:focus-visible{background-color:var(--accent)}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-sha
4dow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-4:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus-visible\:outline-hidden:focus-visible{outline:2px solid #0000;outline-offset:2px}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-20:disabled{opacity:.2}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:opacity-100:disabled{opacity:1}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-disabled\:opacity-50:has(:disabled){opacity:.5}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing)*4)1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){-moz-column-gap:calc(var(--spacing)*3);column-gap:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus\:aria-invalid\:border-destructive:focus[aria-invalid=true]{border-color:var(--destructive)}.focus\:aria-invalid\:ring-destructive\/20:focus[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus\:aria-invalid\:ring-destructive\/20:focus[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.aria-selected\:opacity-100[aria-selected=true]{opacity:1}.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[active\=true\]\:bg-accent\/50[data-active=true]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-accent-foreground[data-active=true]{color:var(--accent-foreground)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}@media (hover:hover){.data-\[active\=true\]\:hover\:bg-accent[data-active=true]:hover{background-color:var(--accent)}}.data-\[active\=true\]\:focus\:bg-accent[data-active=true]:focus{background-color:var(--accent)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:text-muted-foreground[data-disabled]{color:var(--muted-foreground)}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[error\=true\]\:text-destructive-foreground[data-error=true]{color:var(--destructive-foreground)}.data-\[highlighted\]\:bg-accent[data-highlighted]{background-color:var(--accent)}.data-\[highlighted\]\:text-accent-foreground[data-highlighted]{color:var(--accent-foreground)}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}
4.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion=from-end]{--tw-enter-translate-x:calc(var(--spacing)*52)}.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion=from-start]{--tw-enter-translate-x:calc(var(--spacing)*52*-1)}.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion=to-end]{--tw-exit-translate-x:calc(var(--spacing)*52)}.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion=to-start]{--tw-exit-translate-x:calc(var(--spacing)*52*-1)}.data-\[motion\^\=from-\]\:animate-in[data-motion^=from-]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[motion\^\=from-\]\:fade-in[data-motion^=from-]{--tw-enter-opacity:0}.data-\[motion\^\=to-\]\:animate-out[data-motion^=to-]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[motion\^\=to-\]\:fade-out[data-motion^=to-]{--tw-exit-opacity:0}.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation=horizontal]{height:calc(var(--spacing)*1.5)}.data-\[orientation\=horizontal\]\:h-full[data-orientation=horizontal]{height:100%}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-4[data-orientation=vertical]{height:calc(var(--spacing)*4)}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:h-px[data-orientation=vertical]{height:1px}.data-\[orientation\=vertical\]\:min-h-44[data-orientation=vertical]{min-height:calc(var(--spacing)*44)}.data-\[orientation\=vertical\]\:w-1\.5[data-orientation=vertical]{width:calc(var(--spacing)*1.5)}.data-\[orientation\=vertical\]\:w-auto[data-orientation=vertical]{width:auto}.data-\[orientation\=vertical\]\:w-full[data-orientation=vertical]{width:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[orientation\=vertical\]\:flex-col[data-orientation=vertical]{flex-direction:column}.data-\[orientation\=vertical\]\:after\:left-0[data-orientation=vertical]:after{content:var(--tw-content);left:calc(var(--spacing)*0)}.data-\[orientation\=vertical\]\:after\:h-1[data-orientation=vertical]:after{content:var(--tw-content);height:calc(var(--spacing)*1)}.data-\[orientation\=vertical\]\:after\:w-full[data-orientation=vertical]:after{content:var(--tw-content);width:100%}.data-\[orientation\=vertical\]\:after\:translate-x-0[data-orientation=vertical]:after{content:var(--tw-content);--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[orientation\=vertical\]\:after\:-translate-y-1\/2[data-orientation=vertical]:after{content:var(--tw-content);--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[outside-view\]\:text-muted-foreground[data-outside-view],.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\]\:bg-primary[data-selected]{background-color:var(--primary)}.data-\[selected\]\:text-primary-foreground[data-selected]{color:var(--primary-foreground)}.data-\[selected\]\:opacity-100[data-selected]{opacity:1}@media (hover:hover){.data-\[selected\]\:hover\:bg-primary[data-selected]:hover{background-color:var(--primary)}.data-\[selected\]\:hover\:text-primary-foreground[data-selected]:hover{color:var(--primary-foreground)}}.data-\[selected\]\:focus\:bg-primary[data-selected]:focus{background-color:var(--primary)}.data-\[selected\]\:focus\:text-primary-foreground[data-selected]:focus{color:var(--primary-foreground)}.data-\[selection-end\]\:bg-primary[data-selection-end]{background-color:var(--primary)}.data-\[selection-end\]\:text-primary-foreground[data-selection-end]{color:var(--primary-foreground)}@media (hover:hover){.data-\[selection-end\]\:hover\:bg-primary[data-selection-end]:hover{background-color:var(--primary)}.data-\[selection-end\]\:hover\:text-primary-foreground[data-selection-end]:hover{color:var(--primary-foreground)}}.data-\[selection-end\]\:focus\:bg-primary[data-selection-end]:focus{background-color:var(--primary)}.data-\[selection-end\]\:focus\:text-primary-foreground[data-selection-end]:focus{color:var(--primary-foreground)}.data-\[selection-start\]\:bg-primary[data-selection-start]{background-color:var(--primary)}.data-\[selection-start\]\:text-primary-foreground[data-selection-start]{color:var(--primary-foreground)}@media (hover:hover){.data-\[selection-start\]\:hover\:bg-primary[data-selection-start]:hover{background-color:var(--primary)}.data-\[selection-start\]\:hover\:text-primary-foreground[data-selection-start]:hover{color:var(--primary-foreground)}}.data-\[selection-start\]\:focus\:bg-primary[data-selection-start]:focus{background-color:var(--primary)}.data-\[selection-start\]\:focus\:text-primary-foreground[data-selection-start]:focus{color:var(--primary-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(var(--spacing)*2*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(var(--spacing)*2)}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(var(--spacing)*2*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}
4.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(var(--spacing)*2)}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive)90%,transparent)}}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:ring-0 *)[data-slot=navigation-menu-link]:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}:is(.\*\*\:data-\[slot\=navigation-menu-link\]\:focus\:outline-none *)[data-slot=navigation-menu-link]:focus{--tw-outline-style:none;outline-style:none}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-sha
4dow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.data-\[state\=active\]\:ring-2[data-state=active],.data-\[state\=active\]\:shadow-sm[data-state=active]{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=active\]\:ring-2[data-state=active]{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor)}.data-\[state\=active\]\:ring-ring[data-state=active]{--tw-ring-color:var(--ring)}.data-\[state\=active\]\:ring-offset-2[data-state=active]{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state=checked]{--tw-translate-x: calc(100% - 2px) ;translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:border-primary[data-state=checked]{border-color:var(--primary)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.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-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\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=hidden\]\:animate-out[data-state=hidden]{animation:exit var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=hidden\]\:fade-out[data-state=hidden]{--tw-exit-opacity:0}.data-\[state\=on\]\:bg-accent[data-state=on]{background-color:var(--accent)}.data-\[state\=on\]\:text-accent-foreground[data-state=on]{color:var(--accent-foreground)}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=open\]\:bg-accent[data-state=open],.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}
4.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-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\]\:zoom-in-90[data-state=open]{--tw-enter-scale:.9}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-opacity:0}.group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95:is(:where(.group\/navigation-menu)[data-viewport=false] *)[data-state=open]{--tw-enter-scale:.95}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-accent[data-state=open]:hover{background-color:var(--accent)}.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=open\]\:focus\:bg-accent[data-state=open]:focus{background-color:var(--accent)}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[state\=visible\]\:animate-in[data-state=visible]{animation:enter var(--tw-duration,.15s)var(--tw-ease,ease)}.data-\[state\=visible\]\:fade-in[data-state=visible]{--tw-enter-opacity:0}.data-\[unavailable\]\:text-destructive-foreground[data-unavailable]{color:var(--destructive-foreground)}.data-\[unavailable\]\:line-through[data-unavailable]{text-decoration-line:line-through}.data-\[variant\=destructive\]\:text-destructive-foreground[data-variant=destructive]{color:var(--destructive-foreground)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive-foreground[data-variant=destructive]:focus{color:var(--destructive-foreground)}.data-\[variant\=outline\]\:border-l-0[data-variant=outline]{border-left-style:var(--tw-border-style);border-left-width:0}.data-\[variant\=outline\]\:shadow-xs[data-variant=outline]{--tw-shadow:0 1px 2px 0 var(--tw-sha
4dow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[variant\=outline\]\:first\:border-l[data-variant=outline]:first-child{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(var(--spacing)*24)}.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction=bottom]{max-height:80vh}.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction=bottom]{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction=left]{left:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction=left]{width:75%}.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction=right]{right:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction=right]{width:75%}.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction=top]{top:calc(var(--spacing)*0)}.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(var(--spacing)*24)}.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction=top]{max-height:80vh}.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction=top]{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius)}@supports ((-webkit-backdrop-filter:var(--tw )) or (backdrop-filter:var(--tw ))){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:color-mix(in oklab,var(--background)60%,transparent)}}.supports-\[backdrop-filter\]\:bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.supports-\[backdrop-filter\]\:bg-background\/80{background-color:color-mix(in oklab,var(--background)80%,transparent)}}}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:mt-16{margin-top:calc(var(--spacing)*16)}.sm\:mr-4{margin-right:calc(var(--spacing)*4)}.sm\:mr-6{margin-right:calc(var(--spacing)*6)}.sm\:mb-10{margin-bottom:calc(var(--spacing)*10)}.sm\:ml-auto{margin-left:auto}.sm\:block{display:block}.sm\:contents{display:contents}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-block{display:inline-block}.sm\:inline-flex{display:inline-flex}.sm\:table-cell{display:table-cell}.sm\:size-28{height:calc(var(--spacing)*28);width:calc(var(--spacing)*28)}.sm\:size-44{height:calc(var(--spacing)*44);width:calc(var(--spacing)*44)}.sm\:h-\[620px\]{height:620px}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-64{width:calc(var(--spacing)*64)}.sm\:w-\[16rem\]{width:16rem}.sm\:w-\[18rem\]{width:18rem}.sm\:w-auto{width:auto}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-3xl{max-width:var(--container-3xl)}.sm\:max-w-\[16rem\]{max-width:16rem}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:max-w-xs{max-width:var(--container-xs)}.sm\:flex-1{flex:1}.sm\:flex-initial{flex:0 auto}.sm\:flex-none{flex:none}.sm\:basis-1\/4{flex-basis:25%}.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\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:items-stretch{align-items:stretch}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:justify-start{justify-content:flex-start}.sm\:gap-2{gap:calc(var(--spacing)*2)}
4.sm\:gap-2\.5{gap:calc(var(--spacing)*2.5)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:gap-x-4{-moz-column-gap:calc(var(--spacing)*4);column-gap:calc(var(--spacing)*4)}.sm\:gap-y-0{row-gap:calc(var(--spacing)*0)}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:p-6{padding:calc(var(--spacing)*6)}.sm\:p-8{padding:calc(var(--spacing)*8)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-2{padding-inline:calc(var(--spacing)*2)}.sm\:px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:py-2\.5{padding-block:calc(var(--spacing)*2.5)}.sm\:py-3{padding-block:calc(var(--spacing)*3)}.sm\:py-12{padding-block:calc(var(--spacing)*12)}.sm\:py-14{padding-block:calc(var(--spacing)*14)}.sm\:pt-28{padding-top:calc(var(--spacing)*28)}.sm\:pr-2\.5{padding-right:calc(var(--spacing)*2.5)}.sm\:pb-20{padding-bottom:calc(var(--spacing)*20)}.sm\:pl-30{padding-left:calc(var(--spacing)*30)}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.sm\:leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction=left],.data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--container-sm)}}@media (min-width:48rem){.md\:absolute{position:absolute}.md\:block{display:block}.md\:flex{display:flex}.md\:inline{display:inline}.md\:aspect-auto{aspect-ratio:auto}.md\:h-\[720px\]{height:720px}.md\:min-h-\[18rem\]{min-height:18rem}.md\:min-h-\[20rem\]{min-height:20rem}.md\:min-h-\[26rem\]{min-height:26rem}.md\:w-\[var\(--reka-navigation-menu-viewport-width\)\]{width:var(--reka-navigation-menu-viewport-width)}.md\:w-auto{width:auto}.md\:w-full{width:100%}.md\:max-w-3xl{max-width:var(--container-3xl)}.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\:flex-row{flex-direction:row}.md\:p-8{padding:calc(var(--spacing)*8)}.md\:p-10{padding:calc(var(--spacing)*10)}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:text-\[1\.7rem\]{font-size:1.7rem}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-sha
4dow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:col-span-1{grid-column:span 1/span 1}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:inline-flex{display:inline-flex}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-\[1fr_16rem\]{grid-template-columns:1fr 16rem}.lg\:grid-cols-\[1fr_18rem\]{grid-template-columns:1fr 18rem}.lg\:grid-cols-\[1fr_360px\]{grid-template-columns:1fr 360px}.lg\:gap-10{gap:calc(var(--spacing)*10)}.lg\:px-8{padding-inline:calc(var(--spacing)*8)}.lg\:px-10{padding-inline:calc(var(--spacing)*10)}}@media (min-width:80rem){.xl\:block{display:block}}.dark\:border-cyan-500\/40:is(.dark *){border-color:#00b7d766}@supports (color:color-mix(in lab,red,red)){.dark\:border-cyan-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-cyan-500)40%,transparent)}}.dark\:border-fuchsia-500\/40:is(.dark *){border-color:#e12afb66}@supports (color:color-mix(in lab,red,red)){.dark\:border-fuchsia-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-fuchsia-500)40%,transparent)}}.dark\:border-indigo-500\/40:is(.dark *){border-color:#625fff66}@supports (color:color-mix(in lab,red,red)){.dark\:border-indigo-500\/40:is(.dark *){border-color:color-mix(in oklab,var(--color-indigo-500)40%,transparent)}}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-slate-700:is(.dark *){border-color:var(--color-slate-700)}.dark\:border-slate-700\/60:is(.dark *){border-color:#31415899}@supports (color:color-mix(in lab,red,red)){.dark\:border-slate-700\/60:is(.dark *){border-color:color-mix(in oklab,var(--color-slate-700)60%,transparent)}}.dark\:border-slate-800\/50:is(.dark *){border-color:#1d293d80}@supports (color:color-mix(in lab,red,red)){.dark\:border-slate-800\/50:is(.dark *){border-color:color-mix(in oklab,var(--color-slate-800)50%,transparent)}}.dark\:bg-\[\#0a0d18\]:is(.dark *){background-color:#0a0d18}.dark\:bg-amber-950\/20:is(.dark *){background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-black:is(.dark *){background-color:var(--color-black)}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-emerald-300:is(.dark *){background-color:var(--color-emerald-300)}.dark\:bg-emerald-700:is(.dark *){background-color:var(--color-emerald-700)}.dark\:bg-emerald-900:is(.dark *){background-color:var(--color-emerald-900)}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-sky-300:is(.dark *){background-color:var(--color-sky-300)}.dark\:bg-sky-700:is(.dark *){background-color:var(--color-sky-700)}.dark\:bg-sky-900:is(.dark *){background-color:var(--color-sky-900)}.dark\:bg-slate-700\/80:is(.dark *){background-color:#314158cc}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-700\/80:is(.dark *){background-color:color-mix(in oklab,var(--color-slate-700)80%,transparent)}}.dark\:bg-slate-800:is(.dark *){background-color:var(--color-slate-800)}.dark\:bg-slate-900\/80:is(.dark *){background-color:#0f172bcc}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-900\/80:is(.dark *){background-color:color-mix(in oklab,var(--color-slate-900)80%,transparent)}}.dark\:bg-slate-900\/90:is(.dark *){background-color:#0f172be6}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-900\/90:is(.dark *){background-color:color-mix(in oklab,var(--color-slate-900)90%,transparent)}}.dark\:bg-slate-950\/45:is(.dark *){background-color:#02061873}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-950\/45:is(.dark *){background-color:color-mix(in oklab,var(--color-slate-950)45%,transparent)}}.dark\:bg-slate-950\/70:is(.dark *){background-color:#020618b3}@supports (color:color-mix(in lab,red,red)){.dark\:bg-slate-950\/70:is(.dark *){background-color:color-mix(in oklab,var(--color-slate-950)70%,transparent)}}.dark\:bg-\[radial-gradient\(ellipse_at_center\,rgba\(124\,58\,237\,0\.18\)\,transparent_60\%\)\]:is(.dark *){background-image:radial-gradient(#7c3aed2e,#0000 60%)}.dark\:text-amber-200\/70:is(.dark *){color:#fee685b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-amber-200\/70:is(.dark *){color:color-mix(in oklab,var(--color-amber-200)70%,transparent)}}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-amber-400:is(.dark *){color:var(--color-amber-400)}.dark\:text-amber-500:is(.dark *){color:var(--color-amber-500)}.dark\:text-cyan-200:is(.dark *){color:var(--color-cyan-200)}.dark\:text-cyan-300:is(.dark *){color:var(--color-cyan-300)}.dark\:text-cyan-300\/80:is(.dark *){color:#53eafdcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-cyan-300\/80:is(.dark *){color:color-mix(in oklab,var(--color-cyan-300)80%,transparent)}}.dark\:text-cyan-400:is(.dark *){color:var(--color-cyan-400)}.dark\:text-emerald-300:is(.dark *){color:var(--color-emerald-300)}.dark\:text-emerald-400:is(.dark *){color:var(--color-emerald-400)}.dark\:text-fuchsia-200:is(.dark *){color:var(--color-fuchsia-200)}.dark\:text-fuchsia-300\/80:is(.dark *){color:#f2a9ffcc}@supports (color:color-mix(in lab,red,red)){.dark\:text-fuchsia-300\/80:is(.dark *){color:color-mix(in oklab,var(--color-fuchsia-300)80%,transparent)}}.dark\:text-fuchsia-400:is(.dark *){color:var(--color-fuchsia-400)}.dark\:text-green-400:is(.dark *){color:var(--color-green-400)}.dark\:text-green-500:is(.dark *){color:var(--color-green-500)}.dark\:text-indigo-300:is(.dark *){color:var(--color-indigo-300)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-orange-400:is(.dark *){color:var(--color-orange-400)}.dark\:text-rose-300:is(.dark *){color:var(--color-rose-300)}.dark\:text-rose-400:is(.dark *){color:var(--color-rose-400)}.dark\:text-sky-400:is(.dark *){color:var(--color-sky-400)}.dark\:text-slate-100:is(.dark *){color:var(--color-slate-100)}.dark\:text-slate-200:is(.dark *){color:var(--color-slate-200)}.dark\:text-slate-200\/90:is(.dark *){color:#e2e8f0e6}@supports (color:color-mix(in lab,red,red)){.dark\:text-slate-200\/90:is(.dark *){color:color-mix(in oklab,var(--color-slate-200)90%,transparent)}}.dark\:text-slate-300:is(.dark *){color:var(--color-slate-300)}.dark\:text-slate-400:is(.dark *){color:var(--color-slate-400)}.dark\:text-slate-400\/70:is(.dark *){color:#90a1b9b3}@supports (color:color-mix(in lab,red,red)){.dark\:text-slate-400\/70:is(.dark *){color:color-mix(in oklab,var(--color-slate-400)70%,transparent)}}.dark\:text-slate-500:is(.dark *){color:var(--color-slate-500)}.dark\:text-slate-600:is(.dark *){color:var(--color-slate-600)}.dark\:text-teal-400:is(.dark *){color:var(--color-teal-400)}.dark\:text-violet-400:is(.dark *){color:var(--color-violet-400)}.dark\:text-white:is(.dark *){color:var(--color-white)}.dark\:opacity-\[0\.06\]:is(.dark *){opacity:.06}.dark\:opacity-\[0\.18\]:is(.dark *){opacity:.18}.dark\:opacity-\[0\.25\]:is(.dark *){opacity:.25}.dark\:shadow-cyan-500\/20:is(.dark *){--tw-shadow-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.dark\:shadow-cyan-500\/20:is(.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-cyan-500)20%,transparent)var(--tw-sha
4dow-alpha),transparent)}}.dark\:shadow-fuchsia-500\/20:is(.dark *){--tw-shadow-color:#e12afb33}@supports (color:color-mix(in lab,red,red)){.dark\:shadow-fuchsia-500\/20:is(.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-fuchsia-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.dark\:shadow-indigo-500\/20:is(.dark *){--tw-shadow-color:#625fff33}@supports (color:color-mix(in lab,red,red)){.dark\:shadow-indigo-500\/20:is(.dark *){--tw-shadow-color:color-mix(in oklab,color-mix(in oklab,var(--color-indigo-500)20%,transparent)var(--tw-shadow-alpha),transparent)}}.dark\:ring-ring\/20:is(.dark *){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.dark\:ring-ring\/20:is(.dark *){--tw-ring-color:color-mix(in oklab,var(--ring)20%,transparent)}}.dark\:outline-ring\/40:is(.dark *){outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.dark\:outline-ring\/40:is(.dark *){outline-color:color-mix(in oklab,var(--ring)40%,transparent)}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media (hover:hover){.dark\:hover\:border-slate-500:is(.dark *):hover{border-color:var(--color-slate-500)}.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}.dark\:hover\:text-slate-200:is(.dark *):hover{color:var(--color-slate-200)}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:focus\:aria-invalid\:ring-destructive\/40:is(.dark *):focus[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus\:aria-invalid\:ring-destructive\/40:is(.dark *):focus[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[state\=checked\]\:bg-primary-foreground:is(.dark *)[data-state=checked]{background-color:var(--primary-foreground)}
4.dark\:data-\[state\=unchecked\]\:bg-foreground:is(.dark *)[data-state=unchecked]{background-color:var(--foreground)}.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=unchecked\]\:bg-input\/80:is(.dark *)[data-state=unchecked]{background-color:color-mix(in oklab,var(--input)80%,transparent)}}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/40:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/40:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.prose-headings\:scroll-mt-20 :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){scroll-margin-top:calc(var(--spacing)*20)}.prose-a\:underline-offset-4 :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-underline-offset:4px}.prose-pre\:max-w-full :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){max-width:100%}.prose-pre\:overflow-x-auto :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){overflow-x:auto}.prose-pre\:bg-zinc-950 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--color-zinc-950)}.prose-pre\:text-zinc-100 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-zinc-100)}.prose-img\:rounded-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.\[\&_a\]\:font-medium a{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_a\]\:underline-offset-4 a{text-underline-offset:4px}.\[\&_code\]\:rounded code{border-radius:.25rem}.\[\&_code\]\:bg-background\/70 code{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.\[\&_code\]\:bg-background\/70 code{background-color:color-mix(in oklab,var(--background)70%,transparent)}}.\[\&_code\]\:bg-muted code{background-color:var(--muted)}.\[\&_code\]\:px-1 code{padding-inline:calc(var(--spacing)*1)}.\[\&_code\]\:py-0\.5 code{padding-block:calc(var(--spacing)*.5)}.\[\&_code\]\:text-\[0\.85em\] code{font-size:.85em}.\[\&_li\]\:my-0\.5 li{margin-block:calc(var(--spacing)*.5)}.\[\&_p\]\:my-1 p{margin-block:calc(var(--spacing)*1)}.\[\&_p\]\:my-1\.5 p{margin-block:calc(var(--spacing)*1.5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_p\:first-child\]\:mt-0 p:first-child{margin-top:calc(var(--spacing)*0)}.\[\&_p\:last-child\]\:mb-0 p:last-child{margin-bottom:calc(var(--spacing)*0)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_svg\:not\(\[class\*\=\\\'size-\\\'\]\)\]\:size-4 svg:not([class*="'size-'"]){height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&_ul\]\:my-1\.5 ul{margin-block:calc(var(--spacing)*1.5)}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-5 ul{padding-left:calc(var(--spacing)*5)}.\[\&\:has\(\[data-selected\]\)\]\:rounded-md:has([data-selected]){border-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[data-selected\]\)\]\:bg-accent:has([data-selected]){background-color:var(--accent)}.first\:\[\&\:has\(\[data-selected\]\)\]\:rounded-l-md:first-child:has([data-selected]){border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[data-selected\]\[data-selection-end\]\)\]\:rounded-r-md:has([data-selected][data-selection-end]),.last\:\[\&\:has\(\[data-selected\]\)\]\:rounded-r-md:last-child:has([data-selected]){border-bottom-right-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[data-selected\]\[data-selection-start\]\)\]\:rounded-l-md:has([data-selected][data-selection-start]){border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-4>*):is(a){text-underline-offset:4px}@media (hover:hover){:is(.\*\:\[a\]\:hover\:text-primary>*):is(a):hover{color:var(--primary)}}
4:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive-foreground[data-variant=destructive]>*):is(svg){color:var(--destructive-foreground)!important}.\[\&\>\[data-slot\=input\]\]\:has-\[\[data-slot\=decrement\]\]\:pl-5>[data-slot=input]:has([data-slot=decrement]){padding-left:calc(var(--spacing)*5)}.\[\&\>\[data-slot\=input\]\]\:has-\[\[data-slot\=increment\]\]\:pr-5>[data-slot=input]:has([data-slot=increment]){padding-right:calc(var(--spacing)*5)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-3\.5>svg{height:calc(var(--spacing)*3.5);width:calc(var(--spacing)*3.5)}.\[\&\>svg\]\:size-4>svg{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-orientation\=vertical\]\>div\]\:rotate-90[data-orientation=vertical]>div{rotate:90deg}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}.\[\&\[data-today\]\:not\(\[data-selected\]\)\]\:bg-accent[data-today]:not([data-selected]){background-color:var(--accent)}.\[\&\[data-today\]\:not\(\[data-selected\]\)\]\:text-accent-foreground[data-today]:not([data-selected]){color:var(--accent-foreground)}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}:root{--background:oklch(1 0 0);--foreground:oklch(.145 0 0);--card:oklch(1 0 0);--card-foreground:oklch(.145 0 0);--popover:oklch(1 0 0);--popover-foreground:oklch(.145 0 0);--primary:oklch(.205 0 0);--primary-foreground:oklch(.985 0 0);--secondary:oklch(.97 0 0);--secondary-foreground:oklch(.205 0 0);--muted:oklch(.97 0 0);--muted-foreground:oklch(.556 0 0);--accent:oklch(.97 0 0);--accent-foreground:oklch(.205 0 0);--destructive:oklch(.577 .245 27.325);--destructive-foreground:oklch(.577 .245 27.325);--border:oklch(.922 0 0);--input:oklch(.922 0 0);--ring:oklch(.708 0 0);--chart-1:oklch(.646 .222 41.116);--chart-2:oklch(.6 .118 184.704);--chart-3:oklch(.398 .07 227.392);--chart-4:oklch(.828 .189 84.429);--chart-5:oklch(.769 .188 70.08);--radius:.625rem;--sidebar:oklch(.985 0 0);--sidebar-foreground:oklch(.145 0 0);--sidebar-primary:oklch(.205 0 0);--sidebar-primary-foreground:oklch(.985 0 0);--sidebar-accent:oklch(.97 0 0);--sidebar-accent-foreground:oklch(.205 0 0);--sidebar-border:oklch(.922 0 0);--sidebar-ring:oklch(.708 0 0)}.dark{--background:oklch(.21 0 0);--foreground:oklch(.985 0 0);--card:oklch(.235 0 0);--card-foreground:oklch(.985 0 0);--popover:oklch(.235 0 0);--popover-foreground:oklch(.985 0 0);--primary:oklch(.985 0 0);--primary-foreground:oklch(.205 0 0);--secondary:oklch(.269 0 0);--secondary-foreground:oklch(.985 0 0);--muted:oklch(.269 0 0);--muted-foreground:oklch(.708 0 0);--accent:oklch(.269 0 0);--accent-foreground:oklch(.985 0 0);--destructive:oklch(.396 .141 25.723);--destructive-foreground:oklch(.637 .237 25.331);--border:oklch(.269 0 0);--input:oklch(.269 0 0);--ring:oklch(.439 0 0);--chart-1:oklch(.488 .243 264.376);--chart-2:oklch(.696 .17 162.48);--chart-3:oklch(.769 .188 70.08);
4--chart-4:oklch(.627 .265 303.9);--chart-5:oklch(.645 .246 16.439);--sidebar:oklch(.205 0 0);--sidebar-foreground:oklch(.985 0 0);--sidebar-primary:oklch(.488 .243 264.376);--sidebar-primary-foreground:oklch(.985 0 0);--sidebar-accent:oklch(.269 0 0);--sidebar-accent-foreground:oklch(.985 0 0);--sidebar-border:oklch(.269 0 0);--sidebar-ring:oklch(.439 0 0)}.prose{--tw-prose-pre-bg:#f6f8fa;--tw-prose-pre-code:#24292e}.dark .prose{--tw-prose-pre-bg:#24292e;--tw-prose-pre-code:#e1e4e8}.prose pre{border:1px solid var(--border)}.docs-content :is(h1,h2,h3,h4){scroll-margin-top:7rem}.docs-content .prose :where(h2){border-top:1px solid var(--border);font-weight:650;letter-spacing:-.01em;margin-top:2.5rem;padding-top:1.75rem}.docs-content .prose :where(h2):first-child{border-top:0;margin-top:0;padding-top:0}.docs-content .prose :where(h3){font-weight:600;letter-spacing:-.01em}.docs-content .prose>p:first-of-type{color:var(--muted-foreground);font-size:1.075rem;line-height:1.7}.docs-content .prose :where(a):not(.not-prose a){color:var(--foreground);font-weight:500;text-decoration:underline;text-decoration-color:var(--muted-foreground);text-underline-offset:3px;transition:text-decoration-color .15s}@supports (color:color-mix(in lab,red,red)){.docs-content .prose :where(a):not(.not-prose a){text-decoration-color:color-mix(in oklch,var(--muted-foreground)45%,transparent)}}.docs-content .prose :where(a):not(.not-prose a):hover{text-decoration-color:var(--foreground)}.docs-content .prose :where(code):not(pre code){background:var(--muted-foreground);border:1px solid var(--border);border-radius:.375rem;font-size:.83em;font-weight:500;padding:.1rem .34rem}@supports (color:color-mix(in lab,red,red)){.docs-content .prose :where(code):not(pre code){background:color-mix(in oklch,var(--muted-foreground)12%,transparent)}}.docs-content .prose :where(code):not(pre code):after,.docs-content .prose :where(code):not(pre code):before{content:none}.docs-content .prose :where(pre){border-radius:.75rem;font-size:.85em;padding:1rem 1.1rem}.docs-content .prose :where(table){border:1px solid var(--border);border-collapse:separate;border-radius:.75rem;border-spacing:0;display:table;font-size:.875rem;margin:1.5rem 0;overflow:hidden;width:100%}.docs-content .prose :where(thead){background:var(--muted)}.docs-content .prose :where(th){border-bottom:1px solid var(--border);color:var(--muted-foreground);font-size:.78rem;font-weight:600;letter-spacing:.02em;padding:.6rem .85rem;text-transform:uppercase}.docs-content .prose :where(td){border-bottom:1px solid var(--border);padding:.6rem .85rem;vertical-align:top}.docs-content .prose :where(tbody tr:last-child td){border-bottom:0}.docs-content .prose :where(tbody tr:hover){background:var(--muted)}@supports (color:color-mix(in lab,red,red)){.docs-content .prose :where(tbody tr:hover){background:color-mix(in oklch,var(--muted)50%,transparent)}}.docs-content .prose :where(blockquote){border-left-color:var(--border);border-left-width:3px;color:var(--muted-foreground);font-style:normal;font-weight:400}.docs-content .prose :where(blockquote p:first-of-type):before,.docs-content .prose :where(blockquote p:last-of-type):after{content:none}.docs-content .prose :where(hr){border-color:var(--border);margin:2.5rem 0}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0}
4@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@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))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,auto))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,auto))}to{height:0}}</style>
5<style>.lb-fade-enter-active[data-v-23ae33be],.lb-fade-leave-active[data-v-23ae33be]{transition:opacity .15s ease}.lb-fade-enter-from[data-v-23ae33be],.lb-fade-leave-to[data-v-23ae33be]{opacity:0}
5</style>
6<style>.code-scroll[data-v-67e79543] code,.code-scroll[data-v-67e79543] pre{background:transparent!important;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;line-height:1.5;margin:0;padding:0}.code-scroll[data-v-67e79543] pre{padding:1.25rem}.code-scroll[data-v-67e79543] .line{display:inline-block;line-height:1.5;min-height:1em}.code-scroll[data-v-67e79543]{scrollbar-width:none;-ms-overflow-style:none}.code-scroll[data-v-67e79543]::-webkit-scrollbar{display:none}</style>
7<style>.model-viewer[data-v-696298e5]{aspect-ratio:4/3}.model-viewer[data-v-696298e5] canvas{touch-action:none}</style>
8<link rel="stylesheet" href="/_nuxt/entry.Be8i3bz-.css" crossorigin>
9<link rel="stylesheet" href="/_nuxt/MarqueeText.BSVtqc1O.css" crossorigin>
10<link rel="stylesheet" href="/_nuxt/Viewer.DRUVk22Q.css" crossorigin>
11<link rel="stylesheet" href="/_nuxt/CodeTabs.CwBzenN5.css" crossorigin>
12<link href="https://www.googletagmanager.com/gtag/js?id=G-SJR3D8KS94" rel="preload" crossorigin="anonymous" referrerpolicy="no-referrer" fetchpriority="low" as="script">
13<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DdRirg_F.js">
14<link rel="modulepreload" as="script" crossorigin href="/_nuxt/IBBazJwM.js">
15<link rel="modulepreload" as="script" crossorigin href="/_nuxt/C4Gjcg_n.js">
16<link rel="modulepreload" as="script" crossorigin href="/_nuxt/pdY2MUYK.js">
17<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DjqsqOe8.js">
18<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BiXMX3Yw.js">
19<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DpG9jOH_.js">
20<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DznoOI6y.js">
21<link rel="modulepreload" as="script" crossorigin href="/_nuxt/Barf_tMS.js">
22<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BSDIl-Rg.js">
23<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CQcqXkxB.js">
24<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DXg8-ZlZ.js">
25<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BWOpokTX.js">
26<link rel="modulepreload" as="script" crossorigin href="/_nuxt/0U2laMoF.js">
27<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DkTFzEMZ.js">
28<link rel="modulepreload" as="script" crossorigin href="/_nuxt/l8922Ki5.js">
29<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DnwgGaPl.js">
30<link rel="modulepreload" as="script" crossorigin href="/_nuxt/QtoC-LA8.js">
31<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DiR4NhX5.js">
32<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CVD8vQq9.js">
33<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BfQazVYU.js">
34<link rel="modulepreload" as="script" crossorigin href="/_nuxt/Dz0oePQ6.js">
35<link rel="modulepreload" as="script" crossorigin href="/_nuxt/KdNsXV-M.js">
36<link rel="modulepreload" as="script" crossorigin href="/_nuxt/D1Lb80-q.js">
37<link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cbz1u67l.js">
38<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CtI20tKM.js">
39<link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cy95Yz-M.js">
40<link rel="modulepreload" as="script" crossorigin href="/_nuxt/w7KbznrT.js">
41<link rel="modulepreload" as="script" crossorigin href="/_nuxt/n0DLI1-7.js">
42<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BLrA2EAi.js">
43<link rel="modulepreload" as="script" crossorigin href="/_nuxt/C5fXR7Sy.js">
44<link rel="modulepreload" as="script" crossorigin href="/_nuxt/D3CdzYgb.js">
45<link rel="modulepreload" as="script" crossorigin href="/_nuxt/D7HkDpCF.js">
46<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BcwM39UU.js">
47<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CUxyLFc9.js">
48<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BsGF8U89.js">
49<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DqExnm_w.js">
50<link rel="modulepreload" as="script" crossorigin href="/_nuxt/rt51KvPn.js">
51<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CXdCiIlG.js">
52<link rel="modulepreload" as="script" crossorigin href="/_nuxt/B_ICYNYQ.js">
53<link rel="modulepreload" as="script" crossorigin href="/_nuxt/D3tAEQab.js">
54<link rel="modulepreload" as="script" crossorigin href="/_nuxt/B5tVNN1J.js">
55<link rel="modulepreload" as="script" crossorigin href="/_nuxt/_6iFKbkW.js">
56<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BaVsNOEF.js">
57<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BPUnTXX5.js">
58<link rel="modulepreload" as="script" crossorigin href="/_nuxt/Df4SDNBy.js">
59<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CJz17bmF.js">
60<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CKyCA_mm.js">
61<link rel="modulepreload" as="script" crossorigin href="/_nuxt/uCkHq_Pc.js">
62<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BT13vD65.js">
63<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CeZ6AZjI.js">
64<link rel="modulepreload" as="script" crossorigin href="/_nuxt/NFnJxYsL.js">
65<link rel="modulepreload" as="script" crossorigin href="/_nuxt/y98Hve7D.js">
66<link rel="modulepreload" as="script" crossorigin href="/_nuxt/llS6sEYV.js">
67<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CT6oeXmt.js">
68<link rel="modulepreload" as="script" crossorigin href="/_nuxt/IVqhOkfq.
68js">
69<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DNz9wx8t.js">
70<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DkWBPxBh.js">
71<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DdvcPr-t.js">
72<link rel="modulepreload" as="script" crossorigin href="/_nuxt/p1Qte30L.js">
73<link rel="modulepreload" as="script" crossorigin href="/_nuxt/C1X33mSG.js">
74<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BD2HhoGD.js">
75<link rel="modulepreload" as="script" crossorigin href="/_nuxt/pq4RECVq.js">
76<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BoE8DsGH.js">
77<link rel="modulepreload" as="script" crossorigin href="/_nuxt/F9OdJaEW.js">
78<link rel="modulepreload" as="script" crossorigin href="/_nuxt/C4aaEZIL.js">
79<link rel="modulepreload" as="script" crossorigin href="/_nuxt/UdcgcO9k.js">
80<link rel="modulepreload" as="script" crossorigin href="/_nuxt/BbHVlsie.js">
81<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DxPyUkcV.js">
82<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CckayPC8.js">
83<link rel="modulepreload" as="script" crossorigin href="/_nuxt/Cgao9B05.js">
84<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CXn86KKj.js">
85<link rel="modulepreload" as="script" crossorigin href="/_nuxt/DteCZysK.js">
86<link rel="modulepreload" as="script" crossorigin href="/_nuxt/CmBm5NKp.js">
87<link rel="preload" as="fetch" fetchpriority="low" crossorigin="anonymous" href="/_nuxt/builds/meta/f2683bb8-d337-4dfa-9436-ccdcd24c0bde.json">
88<link rel="prefetch" as="script" crossorigin href="/_nuxt/Basjd2_M.js">
89<link rel="prefetch" as="script" crossorigin href="/_nuxt/M0RHIoGX.js">
90<link rel="prefetch" as="script" crossorigin href="/_nuxt/D2oz_qY6.js">
91<link rel="prefetch" as="script" crossorigin href="/_nuxt/D_i2EJFZ.js">
92<link rel="prefetch" as="script" crossorigin href="/_nuxt/B2FaPVb1.js">
93<link rel="prefetch" as="script" crossorigin href="/_nuxt/Bn9k2nIS.js">
94<link rel="prefetch" as="script" crossorigin href="/_nuxt/DeoOIwLt.js">
95<link rel="prefetch" as="script" crossorigin href="/_nuxt/k5uAJCCz.js">
96<link rel="prefetch" as="script" crossorigin href="/_nuxt/BDYL61W3.js">
97<link rel="prefetch" as="script" crossorigin href="/_nuxt/DmoN1mff.js">
98<link rel="prefetch" as="script" crossorigin href="/_nuxt/BMDl7Sj0.js">
99<link rel="prefetch" as="script" crossorigin href="/_nuxt/B5rxJs06.js">
100<link rel="prefetch" as="script" crossorigin href="/_nuxt/DvQgtGW_.js">
101<link rel="prefetch" as="script" crossorigin href="/_nuxt/tYUqxmEy.js">
102<link rel="prefetch" as="script" crossorigin href="/_nuxt/_QnsKoaR.js">
103<link rel="prefetch" as="script" crossorigin href="/_nuxt/Cu2UFbJT.js">
104<link rel="prefetch" as="script" crossorigin href="/_nuxt/CP95P4Qq.js">
105<link rel="prefetch" as="script" crossorigin href="/_nuxt/BM2Ctgyn.js">
106<link rel="prefetch" as="script" crossorigin href="/_nuxt/CbWvH4wu.js">
107<link rel="prefetch" as="script" crossorigin href="/_nuxt/Cyth82IR.js">
108<link rel="prefetch" as="script" crossorigin href="/_nuxt/CfazBoLb.js">
109<link rel="prefetch" as="script" crossorigin href="/_nuxt/DZvMGAf-.js">
110<link rel="prefetch" as="script" crossorigin href="/_nuxt/BTR0J1Vf.js">
111<link rel="prefetch" as="script" crossorigin href="/_nuxt/DtgUyJYN.js">
112<link rel="prefetch" as="script" crossorigin href="/_nuxt/CLvJvR1s.js">
113<link rel="prefetch" as="script" crossorigin href="/_nuxt/BJK7LRom.js">
114<link rel="prefetch" as="script" crossorigin href="/_nuxt/Doom5z1y.js">
115<link rel="prefetch" as="script" crossorigin href="/_nuxt/2w6Wgkjt.js">
116<link rel="prefetch" as="script" crossorigin href="/_nuxt/B4koq-0Q.js">
117<link rel="icon" type="image/svg+xml" href="/logo.svg">
118<link rel="alternate icon" href="/favicon.ico">
119<link rel="alternate" href="https://inference.club" hreflang="x-default">
120<link rel="alternate" href="https://inference.club" hreflang="en">
121<link rel="alternate" href="https://inference.club" hreflang="en-US">
122<link rel="alternate" href="https://inference.club/zh" hreflang="zh">
123<link rel="alternate" href="https://inference.club/zh" hreflang="zh-CN">
124<link rel="alternate" href="https://inference.club/ja" hreflang="ja">
125<link rel="alternate" href="https://inference.club/ja" hreflang="ja-JP">
126<link rel="alternate" href="https://inference.club/ru" hreflang="ru">
127<link rel="alternate" href="https://inference.club/ru" hreflang="ru-RU">
128<link rel="alternate" href="https://inference.club/fr" hreflang="fr">
129<link rel="alternate" href="https://inference.club/fr" hreflang="fr-FR">
130<link rel="alternate" href="https://inference.club/ko" hreflang="ko">
131<link rel="alternate" href="https://inference.club/ko" hreflang="ko-KR">
132<link rel="alternate" href="https://inference.club/es" hreflang="es">
133<link rel="alternate" href="https://inference.club/es" hreflang="es-ES">
134<link rel="canonical" href="https://inference.club">
135<meta property="og:url" content="https://inference.club">
136<meta property="og:locale" content="en_US">
137<meta property="og:locale:alternate" content="zh_CN">
138<meta property="og:locale:alternate" content="ja_JP">
139<meta property="og:locale:alternate" content="ru_RU">
140<meta property="og:locale:alternate" content="fr_FR">
141<meta property="og:locale:alternate" content="ko_KR">
142<meta property="og:locale:alternate" content="es_ES">
143<script type="module" src="/_nuxt/DdRirg_F.js" crossorigin></script>
vendor: 1 bytes, line 143
143
144<script id="unhead:payload" type="application/json">{"title":"inference.club"}</script>
144</head><body><!--teleport start anchor--><!----><!--teleport anchor--><!--teleport start anchor--><!----><!--teleport anchor--><div id="__nuxt"><div class=""><div class="min-h-screen flex flex-col"><header class="sticky top-0 z-50 w-full border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"><div class="flex h-14 items-center px-4 sm:px-6 lg:px-8"><div class="mr-2 sm:mr-4 flex min-w-0"><a aria-current="page" href="/" class="router-link-active router-link-exact-active mr-0 sm:mr-6 flex min-w-0 items-center gap-1.5 sm:gap-2"><!--[--><svg viewbox="0 0 24 24" fill="currentColor" aria-hidden="true" class="shrink-0 text-primary" style="width:24px;height:24px;"><path d="M12 1.3 L13.9 9.5 L10.1 9.5 Z"></path><path d="M12 22.7 L13.9 14.5 L10.1 14.5 Z"></path><g stroke="currentColor" stroke-width="2.7" stroke-linecap="round"><line x1="12" y1="12" x2="6" y2="6"></line><line x1="12" y1="12" x2="18" y2="6"></line><line x1="12" y1="12" x2="6" y2="18"></line><line x1="12" y1="12" x2="18" y2="18"></line></g><circle cx="5.1" cy="5.1" r="2.6"></circle><circle cx="18.9" cy="5.1" r="2.6"></circle><circle cx="5.1" cy="18.9" r="2.6"></circle><circle cx="18.9" cy="18.9" r="2.6"></circle><circle cx="12" cy="12" r="3.2"></circle></svg><!--]--><span class="whitespace-nowrap font-bold text-sm sm:text-xl">
144inference.club</span></a><nav class="hidden md:flex items-center space-x-4 text-sm"><!----><a href="/status" class="text-muted-foreground transition-colors hover:text-foreground">Network</a><a href="/docs" class="text-muted-foreground transition-colors hover:text-foreground">Docs</a><a href="/blog" class="text-muted-foreground transition-colors hover:text-foreground">Blog</a></nav></div><div class="flex flex-1 shrink-0 items-center justify-end gap-0.5 sm:gap-2"><!--[--><!--[--><!--[--><button data-slot="popover-trigger" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-8 rounded-md has-[&gt;svg]:px-2.5 gap-1 px-1.5 sm:px-2" aria-label="Select language" id="reka-popover-trigger-v-0-0" type="button" aria-haspopup="dialog" aria-expanded="false" aria-controls data-state="closed"><!--[--><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-languages-icon lucide-languages hidden sm:block h-5 w-5"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><span class="text-xs font-medium uppercase tracking-wide">EN</span><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-chevron-down-icon lucide-chevron-down h-3 w-3 opacity-60"><path d="m6 9 6 6 6-6"></path></svg><span class="sr-only">Select language</span><!--]--></button><!----><!--]--><!--]--><!--]--><button data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-8 rounded-md gap-1.5 has-[&gt;svg]:px-2.5 px-1.5 sm:px-2"><!--[--><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-moon-icon lucide-moon h-5 w-5"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg><span class="sr-only">Toggle theme</span><!--]--></button><button data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-8 rounded-md gap-1.5 has-[&gt;svg]:px-2.5 px-1.5 sm:px-2"><!--[--><a href="/login" class="">Login</a><!--]--></button></div></div></header><main class="flex-1"><!--[--><div class="relative overflow-x-clip"><div class="pointer-events-none absolute inset-0 -z-10"><div class="absolute inset-x-0 top-0 h-[800px] bg-[radial-gradient(ellipse_at_top,rgba(139,92,246,0.18),transparent_55%)]"></div><div class="absolute -top-20 left-1/2 -translate-x-1/2 h-[500px] w-[900px] rounded-full blur-3xl op
144acity-50 bg-[radial-gradient(circle,rgba(217,70,239,0.25),transparent_60%)]"></div><div class="absolute inset-0 opacity-[0.025] dark:opacity-[0.06]" style="background-image:radial-gradient(circle at 1px 1px, currentColor 1px, transparent 0);background-size:32px 32px;"></div></div><section class="relative px-4 sm:px-6 lg:px-8 pt-20 pb-16 sm:pt-28 sm:pb-20"><div class="max-w-5xl mx-auto text-center"><div class="inline-flex items-center gap-2 rounded-full border bg-background/60 backdrop-blur px-3 py-1 text-xs font-mono mb-8 shadow-sm"><span class="relative flex h-2 w-2"><span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-emerald-400 opacity-60"></span><span class="relative inline-flex rounded-full h-2 w-2 bg-emerald-500"></span></span><span class="text-muted-foreground">live at</span><span class="text-foreground">api.inference.club</span></div><h1 class="text-5xl sm:text-6xl md:text-7xl font-bold tracking-tight leading-[1.05]">A distributed inference network powered by <span class="bg-gradient-to-r from-violet-500 via-fuchsia-500 to-cyan-500 bg-clip-text text-transparent">consumer GPUs</span> and <span class="bg-gradient-to-r from-cyan-500 via-violet-500 to-fuchsia-500 bg-clip-text text-transparent">Tailscale</span></h1><p class="mt-8 text-lg sm:text-xl text-muted-foreground max-w-2xl mx-auto leading-relaxed">inference.club merges local AI with the cloud — a tailnet that puts your computer on the world&#39;s largest network of distributed consumer AI hardware. After all, the cloud is just someone else&#39;s computer.</p><div class="mt-10 flex flex-col sm:flex-row gap-3 justify-center"><!--[--><a href="/login" class=""><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground hover:bg-primary/90 rounded-md has-[&gt;svg]:px-4 w-full sm:w-auto h-12 px-6 text-base shadow-lg shadow-violet-500/20"><!--[-->Get an API key <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-arrow-right-icon lucide-arrow-right ml-2 h-4 w-4"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg><!--]--></button></a><a href="/docs/providers/run-an-agent" class=""><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 rounded-md has-[&gt;svg]:px-4 w-full sm:w-auto h-12 px-6 text-base"><!--[-->Run an agent<!--]--></button></a><!--]--></div><!----></div></section><section class="relative pb-20"><div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8"><div class="text-center mb-8"><p class="text-xs font-mono uppercase tracking-wider text-muted-foreground mb-3">How it fits together</p><h2 class="text-3xl sm:text-4xl font-bold tracking-tight">One tailnet, every <span class="bg-gradient-to-r from-violet-500 via-fuchsia-500 to-cyan-500 bg-clip-text text-transparent">modality</span>. </h2><p class="mt-5 text-muted-foreground max-w-3xl mx-auto leading-relaxed">inference.club is a Tailscale tailnet that joins consumer hardware — RTX PCs, the DGX Spark, Apple silicon — so members can safely expose their inference through one unified API, across the whole range of AI modalities: chat, images, video, speech, music, 3D.</p></div></div><div class="w-full h-[520px] sm:h-[620px] md:h-[720px] relative bg-[#f5f3ec] dark:bg-[#0a0d18] overflow-hidden border-y border-slate-200/50 dark:border-slate-800/50"><div class="pointer-events-none absolute inset-0 opacity-[0.07] dark:opacity-[0.18] text-slate-700 dark:text-cyan-300" style="background-image:radial-gradient(circle at 1px 1px, currentColor 1px, transparent 0);background-size:28px 28px;"></div><div class="pointer-events-none absolute inset-0 dark:bg-[radial-gradient(ellipse_at_center,rgba(124,58,237,0.18),transparent_60%)]"></div><span></span></div></section><section class="relative px-4 sm:px-6 lg:px-8 pb-24"><div class="max-w-6xl mx-auto"><div class="text-center mb-10"><p class="text-xs font-mono uppercase tracking-wider text-muted-foreground mb-3">Featured generations</p><h2 class="text-3xl sm:text-4xl font-bold tracking-tight">Made on the <span class="bg-gradient-to-r from-violet-500 via-fuchsia-500 to-cyan-500 bg-clip-text text-transparent">network</span></h2><p class="mt-3 text-muted-foreground text-sm sm:text-base max-w-2xl mx-auto">Real requests from members — a showcase of the best results consumer hardware can produce. Click any card to see the full request.</p></div><div class="grid gap-5 sm:grid-cols-2 lg:grid-cols-3 *:min-w-0"><!--[--><a href="/s/bmp82Yl98II28sbn7pFWkA" class="group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all hover:-translate-y-0.5 hover:shadow-md"><div class="relative aspect-[4/3] w-full overflow-hidden bg-muted"><div class="relative size-full"><img src="https://storage.googleapis.com/inference-club-media-public/output_image/1/8ab31ebf8b914e0faa742ede20f5226f/image-0.png" class="size-full object-cover" alt="disco funk vibes party" loading="lazy"><p class="pointer-events-none absolute inset-x-0 bottom-0 truncate bg-gradient-to-t from-black/60 to-transparent px-3 pb-2 pt-8 pr-16 text-sm text-white">disco funk vibes party</p><audio src="https://storage.googleapis.com/inference-club-media-public/output_audio/1/9d461fb3c8ec4074a5c3882aee85e686/song.wav" preload="none" class="hidden"></audio><button type="button" class="absolute bottom-3 right-3 z-10 flex size-11 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg transition-transform hover:scale-105" title="Play"><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-play-icon lucide-play size-5 translate-x-px"><polygon points="6 3 20 12 6 21 6 3"></polygon></svg></button></div><div class="absolute left-3 top-3"><span class="inline-flex shrink-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium bg-fuchsia-500/10 text-fuchsia-700 dark:text-fuchsia-400 border-fuchsia-500/25 shadow-sm"><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-music-icon lucide-music size-3"><path d="M9 18V5l12-2v13"></path><circle cx="6" cy="18" r="3"></circle><circle cx="18" cy="16" r="3"></circle></svg> MUSIC</span></div></div><div class="flex items-center gap-3 px-4 py-3 text-xs text-muted-foreground"><span class="inline-flex min-w-0 items-center gap-1"><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-github-icon lucide-github size-3.5 shrink-0"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="truncate font-mono">briancaffey</span></span><span class="inline-flex min-w-0 items-center gap-1"><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-server-icon lucide-server size-3.5 shrink-0"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="truncate">
144club-host</span></span><span class="hidden items-center gap-1 sm:inline-flex"><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-cpu-icon lucide-cpu size-3.5 shrink-0"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg> NVIDIA-GeForce-RTX-4090 +1</span><span class="ml-auto inline-flex shrink-0 items-center gap-1"><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-star-icon lucide-star size-3.5 fill-current text-amber-500"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg> 1</span></div></a><a href="/s/cnzGOkowanz_jrfB48irtQ" class="group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all hover:-translate-y-0.5 hover:shadow-md"><div class="relative aspect-[4/3] w-full overflow-hidden bg-muted"><div class="flex size-full flex-col justify-between gap-3 px-4 pb-4 pt-12"><p class="line-clamp-4 text-sm text-muted-foreground"> “Type text, pick a voice, and synthesize natural speech.” </p><audio src="https://storage.googleapis.com/inference-club-media-public/output_audio/1/6124af1d039e4e97bab74f6a77249989/speech.wav" controls preload="metadata" class="h-9 w-full"></audio></div><div class="absolute left-3 top-3"><span class="inline-flex shrink-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium bg-violet-500/10 text-violet-700 dark:text-violet-400 border-violet-500/25 shadow-sm"><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-audio-lines-icon lucide-audio-lines size-3"><path d="M2 10v3"></path><path d="M6 6v11"></path><path d="M10 3v18"></path><path d="M14 8v7"></path><path d="M18 5v13"></path><path d="M22 10v3"></path></svg> TTS</span></div></div><div class="flex items-center gap-3 px-4 py-3 text-xs text-muted-foreground"><span class="inline-flex min-w-0 items-center gap-1"><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-github-icon lucide-github size-3.5 shrink-0"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="truncate font-mono">briancaffey</span></span><span class="inline-flex min-w-0 items-center gap-1"><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-server-icon lucide-server size-3.5 shrink-0"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="truncate">club-host</span></span><span class="hidden items-center gap-1 sm:inline-flex"><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-cpu-icon lucide-cpu size-3.5 shrink-0"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg> NVIDIA-GeForce-RTX-4090 +1</span><!----></div></a><a href="/s/dyzQUf85PeczLbUTvKgN6Q" class="group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all hover:-translate-y-0.5 hover:shadow-md"><div class="relative aspect-[4/3] w-full overflow-hidden bg-muted"><div class="flex size-full flex-col gap-2.5 px-4 pb-4 pt-12 text-sm"><div class="rounded-lg rounded-br-sm bg-primary/10 px-3 py-2 self-end max-w-[90%]"><p class="line-clamp-2">summarize this article: AI Outperforms Law Professors in Stanford Law Study
145In a rigorous blind study, law professors overwhelmingly preferred AI-generated answers to student legal questions over answers written by fellow law professors—and flagged the AI answers as potentially m…</p></div><div class="rounded-lg rounded-bl-sm bg-muted px-3 py-2 self-start max-w-[90%]"><p class="line-clamp-5 text-muted-foreground">**Summary**
146
147A blind study led by Stanford Law professor Julian Nyarko found that law professors overwhelmingly preferred AI‑generated answers to contract‑law questions over answers written by their fellow professors. In a head‑to‑head comparison of nearly 3,000 anonymized respon…</p></div></div><div class="absolute left-3 top-3"><span class="inline-flex shrink-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium bg-sky-500/10 text-sky-700 dark:text-sky-400 border-sky-500/25 shadow-sm"><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-message-square-icon lucide-message-square size-3"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg> LLM</span></div></div><div class="flex items-center gap-3 px-4 py-3 text-xs text-muted-foreground"><span class="inline-flex min-w-0 items-center gap-1"><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-github-icon lucide-github size-3.5 shrink-0"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="truncate font-mono">briancaffey</span></span><span class="inline-flex min-w-0 items-center gap-1"><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-server-icon lucide-server size-3.5 shrink-0"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="truncate">
147club-host</span></span><span class="hidden items-center gap-1 sm:inline-flex"><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-cpu-icon lucide-cpu size-3.5 shrink-0"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg> NVIDIA-GeForce-RTX-4090 +1</span><span class="ml-auto inline-flex shrink-0 items-center gap-1"><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-star-icon lucide-star size-3.5 fill-current text-amber-500"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z"></path></svg> 1</span></div></a><a href="/s/gP7X7RCxYS5aaSwPyDvHsw" class="group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all hover:-translate-y-0.5 hover:shadow-md"><div class="relative aspect-[4/3] w-full overflow-hidden bg-muted"><img src="https://storage.googleapis.com/inference-club-media-public/output_image/1/a299aee985ef401ca641218507f58f4a/image-0.png" class="size-full object-cover transition-transform duration-300 group-hover:scale-[1.03]" alt="a tulip" loading="lazy"><div class="absolute left-3 top-3"><span class="inline-flex shrink-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium bg-amber-500/10 text-amber-700 dark:text-amber-400 border-amber-500/25 shadow-sm"><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-image-icon lucide-image size-3"><rect width="18" height="18" x="3" y="3" rx="2" ry="2"></rect><circle cx="9" cy="9" r="2"></circle><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"></path></svg> IMAGE</span></div></div><div class="flex items-center gap-3 px-4 py-3 text-xs text-muted-foreground"><span class="inline-flex min-w-0 items-center gap-1"><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-github-icon lucide-github size-3.5 shrink-0"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="truncate font-mono">briancaffey</span></span><span class="inline-flex min-w-0 items-center gap-1"><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-server-icon lucide-server size-3.5 shrink-0"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="truncate">club-host</span></span><span class="hidden items-center gap-1 sm:inline-flex"><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-cpu-icon lucide-cpu size-3.5 shrink-0"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg> NVIDIA-GeForce-RTX-4090 +1</span><!----></div></a><a href="/s/wKKEcUyp4mVSg48l2_ICEg" class="group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all hover:-translate-y-0.5 hover:shadow-md"><div class="relative aspect-[4/3] w-full overflow-hidden bg-muted"><div class="size-full"><div class="model-viewer group/mv relative w-full overflow-hidden rounded-xl border bg-[radial-gradient(120%_120%_at_50%_18%,#ffffff_0%,#eceae2_55%,#dcd8cd_100%)] size-full" data-v-696298e5><span data-v-696298e5></span><img src="https://storage.googleapis.com/inference-club-media-public/input_image/1/7ded3ec8d5ee42a5bbe3d6373dbbfad0/image.png" alt="Generated 3D model" class="opacity-100 pointer-events-none absolute inset-0 h-full w-full object-contain p-8" data-v-696298e5><!----><!----><div class="pointer-events-none absolute left-2 top-2 inline-flex items-center gap-1 rounded-md bg-background/70 px-2 py-0.5 text-[11px] font-medium text-foreground
147/80 backdrop-blur" data-v-696298e5><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-rotate3d-icon lucide-rotate-3d size-3.5" data-v-696298e5><path d="M16.466 7.5C15.643 4.237 13.952 2 12 2 9.239 2 7 6.477 7 12s2.239 10 5 10c.342 0 .677-.069 1-.2"></path><path d="m15.194 13.707 3.814 1.86-1.86 3.814"></path><path d="M19 15.57c-1.804.885-4.274 1.43-7 1.43-5.523 0-10-2.239-10-5s4.477-5 10-5c4.838 0 8.873 1.718 9.8 4"></path></svg> 3D </div><!--[--><button type="button" class="absolute right-2 top-2 inline-flex size-8 items-center justify-center rounded-md bg-background/70 text-foreground/80 backdrop-blur transition-colors hover:bg-background hover:text-foreground" title="Show original image" aria-pressed="false" data-v-696298e5><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-images-icon lucide-images size-4" data-v-696298e5><path d="M18 22H4a2 2 0 0 1-2-2V6"></path><path d="m22 13-1.296-1.296a2.41 2.41 0 0 0-3.408 0L11 18"></path><circle cx="12" cy="8" r="2"></circle><rect width="16" height="16" x="6" y="2" rx="2"></rect></svg></button><!----><!--]--><!----></div></div><div class="absolute left-3 top-3"><span class="inline-flex shrink-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium bg-emerald-500/10 text-emerald-700 dark:text-emerald-400 border-emerald-500/25 shadow-sm"><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-box-icon lucide-box size-3"><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"></path><path d="m3.3 7 8.7 5 8.7-5"></path><path d="M12 22V12"></path></svg> MESH</span></div></div><div class="flex items-center gap-3 px-4 py-3 text-xs text-muted-foreground"><span class="inline-flex min-w-0 items-center gap-1"><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-github-icon lucide-github size-3.5 shrink-0"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="truncate font-mono">briancaffey</span></span><span class="inline-flex min-w-0 items-center gap-1"><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-server-icon lucide-server size-3.5 shrink-0"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="truncate">club-host</span></span><span class="hidden items-center gap-1 sm:inline-flex"><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-cpu-icon lucide-cpu size-3.5 shrink-0"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg> NVIDIA-GeForce-RTX-4090 +1</span><!----></div></a><a href="/s/aXGFSSA44_IWu2g_wYyfRg" class="group flex min-w-0 flex-col overflow-hidden rounded-xl border bg-card shadow-sm transition-all hover:-translate-y-0.5 hover:shadow-md"><div class="relative aspect-[4/3] w-full overflow-hidden bg-muted"><video src="https://storage.googleapis.com/inference-club-media-public/output_video/1/bceb37a3ab6f48b7a530e7a359892e42/video.mp4" poster="https://storage.googleapis.com/inference-club-media-public/input_image/1/974f460b5d454a638544a4d5d9f51abc/first-frame.png" muted loop autoplay playsinline preload="metadata" class="size-full object-cover"></video><div class="absolute left-3 top-3"><span class="inline-flex shrink-0 items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium bg-rose-500/10 text-rose-700 dark:text-rose-400 border-rose-500/25 shadow-sm"><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-clapperboard-icon lucide-clapperboard size-3"><path d="M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z"></path><path d="m6.2 5.3 3.1 3.9"></path><path d="m12.4 3.4 3.1 4"></path><path d="M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z"></path></svg> VIDEO</span></div></div><div class="flex items-center gap-3 px-4 py-3 text-xs text-muted-foreground"><span class="inline-flex min-w-0 items-center gap-1"><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-github-icon lucide-github size-3.5 shrink-0"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"></path><path d="M9 18c-4.51 2-5-2-7-2"></path></svg><span class="truncate font-mono">briancaffey</span></span><span class="inline-flex min-w-0 items-center gap-1"><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-server-icon lucide-server size-3.5 shrink-0"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><span class="truncate">
147club-host</span></span><span class="hidden items-center gap-1 sm:inline-flex"><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-cpu-icon lucide-cpu size-3.5 shrink-0"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg> NVIDIA-GeForce-RTX-4090 +1</span><!----></div></a><!--]--></div></div></section><section class="relative px-4 sm:px-6 lg:px-8 pb-24"><div class="max-w-6xl mx-auto"><div class="grid lg:grid-cols-2 gap-8 lg:gap-10 *:min-w-0"><div class="space-y-4"><div class="flex items-center gap-2"><div class="h-8 w-8 rounded-lg bg-gradient-to-br from-violet-500 to-fuchsia-500 flex items-center justify-center"><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-send-icon lucide-send h-4 w-4 text-white"><path d="M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"></path><path d="m21.854 2.147-10.94 10.939"></path></svg></div><span class="text-xs font-mono uppercase tracking-wider text-muted-foreground">For consumers</span></div><h2 class="text-2xl sm:text-3xl font-bold tracking-tight whitespace-nowrap">Drop-in for the OpenAI SDK.</h2><p class="text-muted-foreground text-sm sm:text-base">Sign up, mint a token, point your client at <!--[--><code class="px-1.5 py-0.5 rounded bg-muted font-mono text-foreground text-xs">api.inference.club/v1</code><!--]-->. One simple API — a superset of OpenAI, NVIDIA NIM, and other popular standards — serving the best and most popular open models for every major modality.</p><div class="rounded-xl border border-white/10 bg-zinc-950 shadow-2xl shadow-black/40 overflow-hidden" data-v-67e79543><div class="flex items-center justify-between border-b border-white/10 bg-zinc-900/40 pl-2 pr-3" data-v-67e79543><div class="flex items-center" data-v-67e79543><!--[--><button type="button" class="text-zinc-100 px-3 py-2 text-xs font-mono transition-colors relative" data-v-67e79543>curl <span class="absolute bottom-0 left-1 right-1 h-px bg-gradient-to-r from-violet-400 via-fuchsia-400 to-cyan-400" data-v-67e79543></span></button><button type="button" class="text-zinc-500 hover:text-zinc-300 px-3 py-2 text-xs font-mono transition-colors relative" data-v-67e79543>Python <!----></button><button type="button" class="text-zinc-500 hover:text-zinc-300 px-3 py-2 text-xs font-mono transition-colors relative" data-v-67e79543>TypeScript <!----></button><!--]--></div><div class="flex items-center gap-2" data-v-67e79543><span class="text-[10px] uppercase tracking-wider text-zinc-600 font-mono hidden sm:block" data-v-67e79543>consumer</span><button type="button" class="p-1.5 rounded-md text-zinc-400 hover:text-zinc-100 hover:bg-white/5 transition-colors" aria-label="Copy" data-v-67e79543><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-copy-icon lucide-copy h-3.5 w-3.5" data-v-67e79543><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></button></div></div><div class="relative" data-v-67e79543><!--[--><div class="code-scroll overflow-x-auto text-sm text-zinc-100" style="" data-v-67e79543><pre><code>export OPENAI_API_KEY=ic_xxxxxxxxxxxxxxxxxxxx
148export OPENAI_BASE_URL=https://api.inference.club/v1
149
150curl $OPENAI_BASE_URL/chat/completions \
151  -H "Authorization: Bearer $OPENAI_API_KEY" \
152  -H "Content-Type: application/json" \
153  -d '{
154    "model": "qwen/qwen3.6-27b",
155    "messages": [
156      {"role": "user", "content": "explain MoE in one sentence"}
157    ]
158  }'</code></pre></div><div class="code-scroll overflow-x-auto text-sm text-zinc-100" style="display:none;" data-v-67e79543><pre><code>from openai import OpenAI
159
160client = OpenAI(
161    api_key="ic_xxxxxxxxxxxxxxxxxxxx",
162    base_url="https://api.inference.club/v1",
163)
164
165resp = client.chat.completions.create(
166    model="qwen/qwen3.6-27b",
167    messages=[
168        {"role": "user", "content": "explain MoE in one sentence"},
169    ],
170)
171print(resp.choices[0].message.content)</code></pre></div><div class="code-scroll overflow-x-auto text-sm text-zinc-100" style="display:none;" data-v-67e79543><pre><code>import OpenAI from "openai"
172
173const client = new OpenAI({
174  apiKey: process.env.INFERENCE_CLUB_KEY,
175  baseURL: "https://api.inference.club/v1",
176})
177
178const resp = await client.chat.completions.create({
179  model: "qwen/qwen3.6-27b",
180  messages: [
181    { role: "user", content: "explain MoE in one sentence" },
182  ],
183})
184
185console.log(resp.choices[0].message.content)</code></pre></div><!--]--></div></div></div><div class="space-y-4"><div class="flex items-center gap-2"><div class="h-8 w-8 rounded-lg bg-gradient-to-br from-cyan-500 to-violet-500 flex items-center justify-center"><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-cpu-icon lucide-cpu h-4 w-4 text-white"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg></div><span class="text-xs font-mono uppercase tracking-wider text-muted-foreground">For providers</span></div><h2 class="text-2xl sm:text-3xl font-bold tracking-tight whitespace-nowrap">Wrap any OpenAI-compatible server.</h2><p class="text-muted-foreground text-sm sm:text-base">Exposing local inference usually means ngrok, Cloudflare tunnels, or a custom tangle of ports and firewall rules. Here it&#39;s one simple container: run the agent next to <!--[--><code class="px-1.5 py-0.5 rounded bg-muted font-mono text-foreground text-xs">vllm</code><!--]-->, <!--[--><code class="px-1.5 py-0.5 rounded bg-muted font-mono text-foreground text-xs">llama.cpp</code><!--]-->, or <!--[--><code class="px-1.5 py-0.5 rounded bg-muted font-mono text-foreground text-xs">ollama</code><!--]--> and it routes requests straight to your local services.</p><div class="rounded-xl border border-white/10 bg-zinc-950 shadow-2xl shadow-black/40 overflow-hidden" data-v-67e79543><div class="flex items-center justify-between border-b border-white/10 bg-zinc-900/40 pl-2 pr-3" data-v-67e79543><div class="flex items-center" data-v-67e79543><!--[--><button type="button" class="text-zinc-100 px-3 py-2 text-xs font-mono transition-colors relative" data-v-67e79543>docker <span class="absolute bottom-0 left-1 right-1 h-px bg-gradient-to-r from-violet-400 via-fuchsia-400 to-cyan-400" data-v-67e79543></span></button><button type="button" class="text-zinc-500 hover:text-zinc-300 px-3 py-2 text-xs font-mono transition-colors relative" data-v-67e79543>binary <!----></button><!--]--></div><div class="flex items-center gap-2" data-v-67e79543><span class="text-[10px] uppercase tracking-wider text-zinc-600 font-mono hidden sm:block" data-v-67e79543>provider</span><button type="button" class="p-1.5 rounded-md text-zinc-400 hover:text-zinc-100 hover:bg-white/5 transition-colors" aria-label="Copy" data-v-67e79543><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-copy-icon lucide-copy h-3.5 w-3.5" data-v-67e79543><rect width="14" height="14" x="8" y="8" rx="2" ry="2"></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"></path></svg></button></div></div><div class="relative" data-v-67e79543><!--[--><div class="code-scroll overflow-x-auto text-sm text-zinc-100" style="" data-v-67e79543><pre><code># Already running vLLM, llama.cpp, or Ollama on your GPU?
186# Point the agent at it and join the network.
187
188export INFERENCE_CLUB_API_KEY=ic_xxxxxxxxxxxxxxxxxxxx
189export OPENAI_BASE_URL=http://localhost:8000/v1
190export OPENAI_API_KEY=local-key  # whatever your local server expects
191
192docker run --rm -d --name club-agent --network host \
193  -e INFERENCE_CLUB_API_KEY \
194  -e OPENAI_BASE_URL \
195  -e OPENAI_API_KEY \
196  ghcr.io/inference-club/inference-club-agent:latest</code></pre></div><div class="code-scroll overflow-x-auto text-sm text-zinc-100" style="display:none;" data-v-67e79543><pre><code># Or just run the static binary — no Docker required.
197
198export INFERENCE_CLUB_API_KEY=ic_xxxxxxxxxxxxxxxxxxxx
199export OPENAI_BASE_URL=http://localhost:8000/v1
200export OPENAI_API_KEY=local-key
201
202./inference-club-agent
203
204# The agent registers, joins the inference.club tailnet,
205# advertises the models your local server is serving,
206# and starts taking requests. That's it.</code></pre></div><!--]--></div></div></div></div></div></section><section class="relative px-4 sm:px-6 lg:px-8 py-24 border-y bg-muted/30"><div class="max-w-6xl mx-auto"><div class="text-center mb-14"><p class="text-xs font-mono uppercase tracking-wider text-muted-foreground mb-3">Architecture</p><h2 class="text-3xl sm:text-4xl font-bold tracking-tight">Three pieces. <span class="text-muted-foreground font-normal">Nothing magic.</span></h2><p class="mt-5 text-muted-foreground max-w-3xl mx-auto leading-relaxed">Follow a single request from your code to a GPU and back. The cloud control plane authenticates, applies your privacy rules, and routes — but the model itself runs on hardware you own.</p></div><div class="grid md:grid-cols-3 gap-6 relative"><div class="group relative rounded-xl border bg-card p-6 hover:border-violet-500/40 transition-colors"><div class="absolute -top-3 left-6 inline-flex items-center gap-1.5 rounded-full bg-background border px-2.5 py-0.5 text-xs font-mono"><span class="text-muted-foreground">step</span><span class="bg-gradient-to-r from-violet-500 to-fuchsia-500 bg-clip-text text-transparent font-semibold">01</span></div><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-cpu-icon lucide-cpu h-7 w-7 text-violet-500 mb-4 mt-2"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg><h3 class="font-semibold text-lg mb-2">Operators run agents</h3><p class="text-sm text-muted-foreground leading-relaxed">Members run <!--[--><code class="font-mono text-foreground text-xs">inference-club-agent</code><!--]--> next to their local LLM server. The agent advertises whatever models the server is hosting.</p></div><div class="group relative rounded-xl border bg-card p-6 hover:border-fuchsia-500/40 transition-colors"><div class="absolute -top-3 left-6 inline-flex items-center gap-1.5 rounded-full bg-background border px-2.5 py-0.5 text-xs font-mono"><span class="text-muted-foreground">step</span><span class="bg-gradient-to-r from-fuchsia-500 to-cyan-500 bg-clip-text text-transparent font-semibold">02</span></div><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-network-icon lucide-network h-7 w-7 text-fuchsia-500 mb-4 mt-2"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg><h3 class="font-semibold text-lg mb-2">Agents join the tailnet</h3><p class="text-sm text-muted-foreground leading-relaxed">Each agent receives a short-lived Tailscale key and joins our private mesh. No ngrok, no Cloudflare configs, no ports or firewall holes. Just WireGuard.</p></div><div class="group relative rounded-xl border bg-card p-6 hover:border-cyan-500/40 transition-colors"><div class="absolute -top-3 left-6 inline-flex items-center gap-1.5 rounded-full bg-background border px-2.5 py-0.5 text-xs font-mono"><span class="text-muted-foreground">step</span><span class="bg-gradient-to-r from-cyan-500 to-violet-500 bg-clip-text text-transparent font-semibold">03</span></div><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-send-icon lucide-send h-7 w-7 text-cyan-500 mb-4 mt-2"><path d="M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z"></path><path d="m21.854 2.147-10.94 10.939"></path></svg><h3 class="font-semibold text-lg mb-2">Consumers send requests</h3><p class="text-sm text-muted-foreground leading-relaxed">Calls to <!--[--><code class="font-mono text-foreground text-xs">api.inference.club</code><!--]--> route to an online agent serving the requested model. Streaming works. Latency is direct.</p></div></div><div class="mt-16"><div class="relative"><div class="mx-auto max-w-3xl space-y-3"><div class="rounded-2xl border bg-card p-5 sm:p-6 shadow-sm"><div class="flex items-center gap-3 mb-4"><div class="h-9 w-9 shrink-0 rounded-lg bg-gradient-to-br from-violet-500 to-fuchsia-500 flex items-center justify-center"><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-terminal-icon lucide-terminal h-[18px] w-[18px] text-white"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" x2="20" y1="19" y2="19"></line></svg></div><div class="min-w-0"><p class="font-semibold leading-tight">Your application</p><p class="text-xs text-muted-foreground">curl · OpenAI SDK · the Playground · your agents</p></div><span class="ml-auto hidden sm:inline-block text-[10px] font-mono uppercase tracking-wider text-muted-foreground">client</span></div><div class="rounded-lg bg-muted/60 border border-border/60 p-3 font-mono text-[11px] sm:text-xs leading-relaxed overflow-x-auto"><span class="text-muted-foreground">base_url</span> = <span class="text-fuchsia-500">&quot;https://api.inference.club/v1&quot;</span><br><span class="text-muted-foreground">api_key</span> = <span class="text-violet-500">&quot;ic_xxxxxxxxxxxxxxxxxxxx&quot;</span></div></div><div class="flex items-center justify-center gap-3 py-1"><div class="h-px w-10 bg-gradient-to-r from-transparent to-violet-500/40"></div><span class="inline-flex items-center gap-1.5 rounded-full border bg-background px-3 py-1 text-[11px] font-mono text-muted-foreground"><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-key-round-icon lucide-key-round h-3.5 w-3.5 text-violet-500"><path d="M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z"></path><circle cx="16.5" cy="7.5" r=".5" fill="currentColor"></circle></svg> HTTPS · Authorization: Bearer ic_… </span><div class="h-px w-10 bg-gradient-to-l from-transparent to-violet-500/40"></div></div><div class="flex justify-center -my-1"><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-arrow-down-icon lucide-arrow-down h-4 w-4 text-muted-foreground
206/60"><path d="M12 5v14"></path><path d="m19 12-7 7-7-7"></path></svg></div><div class="relative rounded-2xl border border-fuchsia-500/30 bg-gradient-to-b from-fuchsia-500/[0.04] to-transparent p-5 sm:p-6 shadow-sm"><div class="flex items-center gap-3 mb-4"><div class="h-9 w-9 shrink-0 rounded-lg bg-gradient-to-br from-fuchsia-500 to-rose-500 flex items-center justify-center"><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-boxes-icon lucide-boxes h-[18px] w-[18px] text-white"><path d="M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z"></path><path d="m7 16.5-4.74-2.85"></path><path d="m7 16.5 5-3"></path><path d="M7 16.5v5.17"></path><path d="M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z"></path><path d="m17 16.5-5-3"></path><path d="m17 16.5 4.74-2.85"></path><path d="M17 16.5v5.17"></path><path d="M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z"></path><path d="M12 8 7.26 5.15"></path><path d="m12 8 4.74-2.85"></path><path d="M12 13.5V8"></path></svg></div><div class="min-w-0"><p class="font-semibold leading-tight">api.inference.club <span class="text-muted-foreground font-normal">— the control plane</span></p><p class="text-xs text-muted-foreground">one small cloud VPS (Hetzner). It routes; it never runs the model.</p></div><span class="ml-auto hidden sm:inline-block text-[10px] font-mono uppercase tracking-wider text-muted-foreground">cloud</span></div><div class="grid sm:grid-cols-2 gap-2"><!--[--><div class="flex items-start gap-2.5 rounded-lg border bg-card/70 px-3 py-2.5"><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-lock-icon lucide-lock h-4 w-4 mt-0.5 shrink-0 text-fuchsia-500"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg><div class="min-w-0"><p class="text-sm font-medium leading-tight">Caddy</p><p class="text-[11px] text-muted-foreground leading-snug">TLS · reverse proxy</p></div></div><div class="flex items-start gap-2.5 rounded-lg border bg-card/70 px-3 py-2.5"><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-server-icon lucide-server h-4 w-4 mt-0.5 shrink-0 text-fuchsia-500"><rect width="20" height="8" x="2" y="2" rx="2" ry="2"></rect><rect width="20" height="8" x="2" y="14" rx="2" ry="2"></rect><line x1="6" x2="6.01" y1="6" y2="6"></line><line x1="6" x2="6.01" y1="18" y2="18"></line></svg><div class="min-w-0"><p class="text-sm font-medium leading-tight">Django + DRF</p><p class="text-[11px] text-muted-foreground leading-snug">OpenAI-compatible /v1 router · auth · routing</p></div></div><div class="flex items-start gap-2.5 rounded-lg border bg-card/70 px-3 py-2.5"><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-shield-check-icon lucide-shield-check h-4 w-4 mt-0.5 shrink-0 text-fuchsia-500"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><div class="min-w-0"><p class="text-sm font-medium leading-tight">Access control</p><p class="text-[11px] text-muted-foreground leading-snug">visibility · per-service ACLs · kill switch</p></div></div><div class="flex items-start gap-2.5 rounded-lg border bg-card/70 px-3 py-2.5"><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-workflow-icon lucide-workflow h-4 w-4 mt-0.5 shrink-0 text-fuchsia-500"><rect width="8" height="8" x="3" y="3" rx="2"></rect><path d="M7 11v4a2 2 0 0 0 2 2h4"></path><rect width="8" height="8" x="13" y="13" rx="2"></rect></svg><div class="min-w-0"><p class="text-sm font-medium leading-tight">
206Celery workers</p><p class="text-[11px] text-muted-foreground leading-snug">async jobs · batches · workflow DAG</p></div></div><div class="flex items-start gap-2.5 rounded-lg border bg-card/70 px-3 py-2.5"><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-database-icon lucide-database h-4 w-4 mt-0.5 shrink-0 text-fuchsia-500"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg><div class="min-w-0"><p class="text-sm font-medium leading-tight">Postgres + Redis</p><p class="text-[11px] text-muted-foreground leading-snug">state · queue · throttling</p></div></div><div class="flex items-start gap-2.5 rounded-lg border bg-card/70 px-3 py-2.5"><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-hard-drive-icon lucide-hard-drive h-4 w-4 mt-0.5 shrink-0 text-fuchsia-500"><line x1="22" x2="2" y1="12" y2="12"></line><path d="M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"></path><line x1="6" x2="6.01" y1="16" y2="16"></line><line x1="10" x2="10.01" y1="16" y2="16"></line></svg><div class="min-w-0"><p class="text-sm font-medium leading-tight">GCS</p><p class="text-[11px] text-muted-foreground leading-snug">images · video · voice · music</p></div></div><!--]--></div></div><div class="flex justify-center -mb-1 mt-1"><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-arrow-down-icon lucide-arrow-down h-4 w-4 text-muted-foreground/60"><path d="M12 5v14"></path><path d="m19 12-7 7-7-7"></path></svg></div><div class="relative rounded-2xl border border-cyan-500/40 bg-cyan-500/[0.05] px-5 py-4 overflow-hidden"><div class="pointer-events-none absolute inset-0 opacity-[0.18] dark:opacity-[0.25]" style="background-image:radial-gradient(circle at 1px 1px, rgb(34 211 238) 1px, transparent 0);background-size:20px 20px;"></div><div class="relative flex flex-col sm:flex-row sm:items-center gap-3"><div class="flex items-center gap-3"><div class="h-9 w-9 shrink-0 rounded-lg bg-gradient-to-br from-cyan-500 to-violet-500 flex items-center justify-center"><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-network-icon lucide-network h-[18px] w-[18px] text-white"><rect x="16" y="16" width="6" height="6" rx="1"></rect><rect x="2" y="16" width="6" height="6" rx="1"></rect><rect x="9" y="2" width="6" height="6" rx="1"></rect><path d="M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3"></path><path d="M12 12V8"></path></svg></div><div><p class="font-semibold leading-tight">The inference.club tailnet</p><p class="text-xs text-muted-foreground">a private Tailscale mesh — pure WireGuard</p></div></div><div class="sm:ml-auto flex flex-wrap gap-1.5 font-mono text-[10px]"><span class="rounded-full border border-cyan-500/40 bg-background/60 px-2 py-0.5">SOCKS5 sidecar</span><span class="rounded-full border border-cyan-500/40 bg-background/60 px-2 py-0.5">MagicDNS · club-host-17:443</span><span class="rounded-full border border-cyan-500/40 bg-background/60 px-2 py-0.5">short-lived auth keys</span><span class="rounded-full border border-cyan-500/40 bg-background/60 px-2 py-0.5">no ports · no firewall holes</span></div></div></div><div class="flex justify-center -mt-1"><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-arrow-down-icon lucide-arrow-down h-4 w-4 text-muted-foreground/60"><path d="M12 5v14"></path><path d="m19 12-7 7-7-7"></path></svg></div><div class="rounded-2xl border bg-card p-5 sm:p-6 shadow-sm"><div class="flex items-center gap-3 mb-4"><div class="h-9 w-9 shrink-0 rounded-lg bg-gradient-to-br from-emerald-500 to-cyan-500 flex items-center justify-center"><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-cpu-icon lucide-cpu h-[18px] w-[18px] text-white"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg></div><div class="min-w-0"><p class="font-semibold leading-tight">Your rig <span class="text-muted-foreground font-normal">— where inference actually happens</span></p><p class="text-xs text-muted-foreground">a GPU you own, at home, on hardware you trust</p></div><span class="ml-auto hidden sm:inline-block text-[10px] font-mono uppercase tracking-wider text-muted-foreground">operator</span></div><div class="rounded-xl border border-dashed border-emerald-500/50 bg-emerald-500/[0.04] p-3 sm:p-4"><div class="flex items-center gap-2 mb-3"><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-boxes-icon lucide-boxes h-4 w-4 text-emerald-500"><path d="M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z"></path><path d="m7 16.5-4.74-2.85"></path><path d="m7 16.5 5-3"></path><path d="M7 16.5v5.17"></path><path d="M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z"></path><path d="m17 16.5-5-3"></path><path d="m17 16.5 4.74-2.85"></path><path d="M17 16.5v5.17"></path><path d="M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z"></path><path d="M12 8 7.26 5.15"></path><path d="m12 8 4.74-2.85"></path><path d="M12 13.5V8"></path></svg><code class="text-xs font-mono">inference-club-agent</code><span class="text-[10px] font-mono text-muted-foreground">container · --network host</span></div><p class="text-[11px] text-muted-foreground leading-snug mb-3"> Joins the tailnet with its minted key, advertises models from <code class="font-mono text-foreground">agent.yaml</code>, and forwards each request to whatever you already run locally: </p><div class="flex flex-wrap gap-1.5 mb-1"><!--[--><span class="rounded-md border bg-background px-2 py-1 font-mono text-[11px]">vLLM</span><span class="rounded-md border bg-background px-2 py-1 font-mono text-[11px]">llama.cpp</span><span class="rounded-md border bg-background px-2 py-1 font-mono text-[11px]">Ollama</span><span class="rounded-md border bg-background px-2 py-1 font-mono text-[11px]">LM Studio</span><span class="rounded-md border bg-background px-2 py-1 font-mono text-[11px]">Dia</span><span class="rounded-md border bg-background px-2 py-1 font-mono text-[11px]">LTX-2</span><!--]--></div><p class="mt-3 text-[11px] font-mono text-muted-foreground">→ http://localhost:1234/v1</p></div><div class="mt-3 flex flex-wrap items-center gap-1.5"><span class="text-[10px] font-mono uppercase tracking-wider text-muted-foreground mr-1">running on</span><!--[--><span class="rounded-full border border-emerald-500/30 bg-emerald-500/[0.06] px-2.5 py-0.5 text-[11px] font-mono">brian&#39;s 4090</span><span class="rounded-full border border-emerald-500/30 bg-emerald-500/[0.06] px-2.5 py-0.5 text-[11px] font-mono">M3 Ultra · 192GB</span><span class="rounded-full border border-emerald-500/30 bg-emerald-500/[0.06] px-2.5 py-0.5 text-[11px] font-mono">DGX Spark</span><span class="rounded-full border border-emerald-500/30 bg-emerald-500/[0.06] px-2.5 py-0.5 text-[11px] font-mono">2× 3090 rig</span><!--]--><span class="rounded-full border bg-muted px-2.5 py-0.5 text-[11px] font-mono text-muted-foreground">k3s home cluster</span></div></div></div><div class="mx-auto max-w-3xl mt-10"><p class="text-xs font-mono uppercase tracking-wider text-muted-foreground mb-4 text-center">Follow one request</p><ol class="grid sm:grid-cols-2 gap-x-6 gap-y-3"><!--[--><li class="flex gap-3"><span class="mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-violet-500 to-cyan-500 text-[10px] font-mono font-semibold text-white">1</span><span class="text-sm text-muted-foreground leading-snug">
206Your code calls api.inference.club/v1 with your ic_ key — the same request you’d send OpenAI.</span></li><li class="flex gap-3"><span class="mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-violet-500 to-cyan-500 text-[10px] font-mono font-semibold text-white">2</span><span class="text-sm text-muted-foreground leading-snug">Caddy terminates TLS; Django authenticates the key and applies your privacy + access rules.</span></li><li class="flex gap-3"><span class="mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-violet-500 to-cyan-500 text-[10px] font-mono font-semibold text-white">3</span><span class="text-sm text-muted-foreground leading-snug">The router picks a healthy, online node that actually serves the requested model.</span></li><li class="flex gap-3"><span class="mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-violet-500 to-cyan-500 text-[10px] font-mono font-semibold text-white">4</span><span class="text-sm text-muted-foreground leading-snug">Django (via a Tailscale SOCKS5 sidecar) dials the node by MagicDNS over WireGuard — no ports, no tunnels.</span></li><li class="flex gap-3"><span class="mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-violet-500 to-cyan-500 text-[10px] font-mono font-semibold text-white">5</span><span class="text-sm text-muted-foreground leading-snug">The agent container hands the request to your local LLM server on localhost.</span></li><li class="flex gap-3"><span class="mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-gradient-to-br from-violet-500 to-cyan-500 text-[10px] font-mono font-semibold text-white">6</span><span class="text-sm text-muted-foreground leading-snug">Tokens (or images / video / audio) stream back along the exact same path.</span></li><!--]--></ol></div></div></div></div></section><section class="relative px-4 sm:px-6 lg:px-8 py-24 border-t overflow-hidden"><div class="pointer-events-none absolute inset-0 -z-10 opacity-70" style="background:radial-gradient(ellipse at 50% 0%, rgba(34,211,238,0.10), transparent 60%);"></div><div class="max-w-3xl mx-auto"><div class="flex items-center justify-center gap-2 mb-8"><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-wind-icon lucide-wind h-4 w-4 text-cyan-500"><path d="M12.8 19.6A2 2 0 1 0 14 16H2"></path><path d="M17.5 8a2.5 2.5 0 1 1 2 4H2"></path><path d="M9.8 4.4A2 2 0 1 1 11 8H2"></path></svg><p class="text-xs font-mono uppercase tracking-wider text-muted-foreground">In one breath</p></div><blockquote class="relative text-balance text-center text-xl sm:text-2xl md:text-[1.7rem] font-medium leading-relaxed sm:leading-relaxed tracking-tight text-foreground/90"><span class="select-none text-4xl align-[-0.3em] mr-1 bg-gradient-to-br from-violet-500 to-fuchsia-500 bg-clip-text text-transparent">“</span>inference.club is what happens when you point an <span class="text-foreground font-semibold">OpenAI-compatible API</span> at a pile of consumer GPUs you actually <em class="not-italic bg-gradient-to-r from-violet-500 to-fuchsia-500 bg-clip-text text-transparent">own and trust</em> — a private <span class="text-foreground font-semibold">Tailscale</span> tailnet quietly stitching a 4090 here, an M3 Ultra there, a DGX Spark and a couple of 3090s into one <span class="text-foreground font-semibold">WireGuard</span> mesh with no ports forwarded and no firewall holes, where a little <code class="font-mono text-[0.85em] text-foreground">inference-club-agent</code> container sits next to whatever you’re already running — <span class="text-foreground">vLLM, llama.cpp, Ollama, LM Studio</span> — and advertises it through a manifest, while back in the cloud a <span class="text-foreground font-semibold">Django + Celery</span> server behind Caddy authenticates your <code class="font-mono text-[0.85em] text-foreground">ic_</code> key, enforces your <em class="not-italic bg-gradient-to-r from-fuchsia-500 to-rose-500 bg-clip-text text-transparent">privacy and per-service access controls</em>, and routes the call over the tailnet by MagicDNS to a healthy online node, with Redis and Postgres driving <span class="text-foreground">async jobs, batches and a whole workflow DAG engine</span>, GCS holding the images, video, voice and music that come back, a <span class="text-foreground font-semibold">Nuxt playground</span> and dashboard to poke at all of it, the home fleet itself migrating from Docker to <span class="text-foreground font-semibold">k3s</span>, and the entire thing — chat, images, LTX-2 video, Dia voice cloning, speech, the works — sitting behind <em class="not-italic bg-gradient-to-r from-cyan-500 to-violet-500 bg-clip-text text-transparent">one base URL you can curl</em>, so go ahead and build something, and, as the prompt says: <span class="whitespace-nowrap font-semibold text-foreground">Make no mistakes.</span><span class="select-none text-4xl align-[-0.3em] ml-1 bg-gradient-to-br from-cyan-500 to-violet-500 bg-clip-text text-transparent">”</span></blockquote></div></section><section class="px-4 sm:px-6 lg:px-8 py-24"><div class="max-w-6xl mx-auto"><div class="text-center mb-14"><p class="text-xs font-mono uppercase tracking-wider text-muted-foreground mb-3">Why inference.club</p><h2 class="text-3xl sm:text-4xl font-bold tracking-tight">The cloud is just <span class="bg-gradient-to-r from-violet-500 to-cyan-500 bg-clip-text text-transparent">someone else&#39;s computer</span> — own yours.</h2></div>
206<div class="grid sm:grid-cols-2 lg:grid-cols-4 gap-5"><!--[--><div class="group rounded-xl border bg-card p-6 hover:shadow-lg transition-all"><div class="from-violet-500 to-fuchsia-500 h-10 w-10 rounded-lg bg-gradient-to-br flex items-center justify-center mb-4"><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-code-xml-icon lucide-code-xml h-5 w-5 text-white"><path d="m18 16 4-4-4-4"></path><path d="m6 8-4 4 4 4"></path><path d="m14.5 4-5 16"></path></svg></div><h3 class="font-semibold mb-1.5">OpenAI-compatible</h3><p class="text-sm text-muted-foreground leading-relaxed">A superset of the APIs you already use — OpenAI, NVIDIA NIM, and friends. Swap the base URL and key; your existing SDKs and prompts just work.</p></div><div class="group rounded-xl border bg-card p-6 hover:shadow-lg transition-all"><div class="from-fuchsia-500 to-rose-500 h-10 w-10 rounded-lg bg-gradient-to-br flex items-center justify-center mb-4"><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-cpu-icon lucide-cpu h-5 w-5 text-white"><path d="M12 20v2"></path><path d="M12 2v2"></path><path d="M17 20v2"></path><path d="M17 2v2"></path><path d="M2 12h2"></path><path d="M2 17h2"></path><path d="M2 7h2"></path><path d="M20 12h2"></path><path d="M20 17h2"></path><path d="M20 7h2"></path><path d="M7 20v2"></path><path d="M7 2v2"></path><rect x="4" y="4" width="16" height="16" rx="2"></rect><rect x="8" y="8" width="8" height="8" rx="1"></rect></svg></div><h3 class="font-semibold mb-1.5">Real GPUs, real models</h3><p class="text-sm text-muted-foreground leading-relaxed">Members serve the best open-weight models on hardware they own — Qwen, Llama, DeepSeek, LTX — for chat, images, video, speech, and more.</p></div><div class="group rounded-xl border bg-card p-6 hover:shadow-lg transition-all"><div class="from-cyan-500 to-violet-500 h-10 w-10 rounded-lg bg-gradient-to-br flex items-center justify-center mb-4"><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-lock-icon lucide-lock h-5 w-5 text-white"><rect width="18" height="11" x="3" y="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg></div><h3 class="font-semibold mb-1.5">Private by default</h3><p class="text-sm text-muted-foreground leading-relaxed">Requests reach providers over Tailscale, end-to-end encrypted. No public endpoints to scrape.</p></div><div class="group rounded-xl border bg-card p-6 hover:shadow-lg transition-all"><div class="from-emerald-500 to-cyan-500 h-10 w-10 rounded-lg bg-gradient-to-br flex items-center justify-center mb-4"><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-users-icon lucide-users h-5 w-5 text-white"><path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"></path><circle cx="9" cy="7" r="4"></circle><path d="M22 21v-2a4 4 0 0 0-3-3.87"></path><path d="M16 3.13a4 4 0 0 1 0 7.75"></path></svg></div><h3 class="font-semibold mb-1.5">A club, not a vendor</h3><p class="text-sm text-muted-foreground leading-relaxed">Connect with passionate local-AI enthusiasts and evangelists. Pool compute with people you trust, and showcase the best results consumer hardware can produce.</p></div><!--]--></div></div></section><section class="relative px-4 sm:px-6 lg:px-8 py-20 border-t"><div class="max-w-5xl mx-auto"><div class="flex items-end justify-between mb-8"><h2 class="text-2xl sm:text-3xl font-bold tracking-tight">From the blog</h2><a href="/blog" class="text-sm text-muted-foreground hover:text-foreground inline-flex items-center gap-1">All posts <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-arrow-right-icon lucide-arrow-right h-3.5 w-3.5"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div><a href="/blog/from-docker-sprawl-to-k3s" class="group block rounded-2xl border bg-card overflow-hidden shadow-sm hover:shadow-lg hover:border-primary/40 transition-all"><div class="grid md:grid-cols-2">
206<div class="relative aspect-[16/10] md:aspect-auto md:min-h-[18rem] overflow-hidden"><img src="/images/blog/from-docker-sprawl-to-k3s.png" alt="From docker sprawl to k3s: rebuilding my home inference fleet" class="absolute inset-0 size-full object-cover transition-transform duration-500 group-hover:scale-[1.03]"></div><div class="p-6 sm:p-8 flex flex-col justify-center"><p class="text-xs uppercase tracking-wide text-primary font-medium mb-2">Featured</p><h3 class="text-xl sm:text-2xl font-bold tracking-tight group-hover:text-primary transition-colors">From docker sprawl to k3s: rebuilding my home inference fleet</h3><p class="mt-3 text-muted-foreground line-clamp-3">A &#39;healthy&#39; mesh-generation service sat wedged for three days while my agent.yaml described services that didn&#39;t exist. So I moved four GPU boxes — three RTX 4090s and a DGX Spark — onto k3s and taught the inference-club-agent to discover services from the Kubernetes API instead of a config file. Health checks lie; queues don&#39;t. Config is fiction; clusters are testimony.</p><div class="mt-5 flex flex-wrap gap-1.5"><!--[--><span class="px-2 py-0.5 text-xs rounded-full bg-muted text-muted-foreground"> #k3s</span><span class="px-2 py-0.5 text-xs rounded-full bg-muted text-muted-foreground"> #kubernetes</span><span class="px-2 py-0.5 text-xs rounded-full bg-muted text-muted-foreground"> #homelab</span><span class="px-2 py-0.5 text-xs rounded-full bg-muted text-muted-foreground"> #architecture</span><span class="px-2 py-0.5 text-xs rounded-full bg-muted text-muted-foreground"> #deep-dive</span><!--]--></div><span class="mt-6 inline-flex items-center gap-1 text-sm font-medium text-primary">Read article <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-arrow-right-icon lucide-arrow-right h-4 w-4"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></span></div></div></a></div></section><section class="relative px-4 sm:px-6 lg:px-8 py-24 border-t overflow-hidden"><div class="pointer-events-none absolute inset-0 -z-10 opacity-60" style="background:radial-gradient(ellipse at center, rgba(139,92,246,0.12), transparent 60%);"></div><div class="max-w-3xl mx-auto text-center"><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-zap-icon lucide-zap h-10 w-10 mx-auto mb-6 text-violet-500"><path d="M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"></path></svg><h2 class="text-3xl sm:text-4xl font-bold tracking-tight mb-4">Ready to plug in?</h2><p class="text-muted-foreground text-lg mb-10 max-w-xl mx-auto">Sign in, mint a key, and you&#39;re live in under a minute. Bring a node whenever you have spare cycles — your hardware is the cloud now.</p><div class="flex flex-col sm:flex-row gap-3 justify-center"><a href="/login" class=""><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground hover:bg-primary/90 rounded-md has-[&gt;svg]:px-4 w-full sm:w-auto h-12 px-6 text-base shadow-lg shadow-violet-500/20"><!--[-->Get an API key <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-arrow-right-icon lucide-arrow-right ml-2 h-4 w-4"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg><!--]--></button></a><a href="/docs" class=""><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#39;size-&#39;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 rounded-md has-[&gt;svg]:px-4 w-full sm:w-auto h-12 px-6 text-base"><!--[-->Read the docs<!--]--></button></a></div><div class="mt-10 flex items-center justify-center gap-6 text-muted-foreground"><a href="https://discord.gg/4fVcmJq4X" target="_blank" rel="noopener" aria-label="Discord" class="transition hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" viewBox="0 0 16 16"><path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"></path></svg></a><a href="https://github.com/inference-club" target="_blank" rel="noopener" aria-label="GitHub" class="transition hover:text-primary"><svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" fill="currentColor" viewBox="0 0 16 16"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.
20604 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"></path></svg></a><a href="https://x.com/briancaffey" target="_blank" rel="noopener" aria-label="X / Twitter" class="text-xl leading-none transition hover:text-primary"> 𝕏 </a></div></div></section></div><!--]--></main><footer class="border-t bg-background py-8 px-4 sm:px-6 lg:px-8 mt-16"><div class="max-w-7xl mx-auto flex flex-col md:flex-row items-center justify-between gap-6"><div class="flex items-center space-x-2"><!--[--><svg viewbox="0 0 24 24" fill="currentColor" aria-hidden="true" class="shrink-0 text-primary" style="width:22px;height:22px;"><path d="M12 1.3 L13.9 9.5 L10.1 9.5 Z"></path><path d="M12 22.7 L13.9 14.5 L10.1 14.5 Z"></path><g stroke="currentColor" stroke-width="2.7" stroke-linecap="round"><line x1="12" y1="12" x2="6" y2="6"></line><line x1="12" y1="12" x2="18" y2="6"></line><line x1="12" y1="12" x2="6" y2="18"></line><line x1="12" y1="12" x2="18" y2="18"></line></g><circle cx="5.1" cy="5.1" r="2.6"></circle><circle cx="18.9" cy="5.1" r="2.6"></circle><circle cx="5.1" cy="18.9" r="2.6"></circle><circle cx="18.9" cy="18.9" r="2.6"></circle><circle cx="12" cy="12" r="3.2"></circle></svg><!--]--><a aria-current="page" href="/" class="router-link-active router-link-exact-active font-bold text-lg">inference.club</a></div><nav class="flex flex-wrap gap-4 text-muted-foreground text-sm"><a href="/about" class="hover:text-primary transition">About</a><a href="/contact" class="hover:text-primary transition">Contact</a><a href="/privacy-policy" class="hover:text-primary transition">Privacy Policy</a><a href="/terms-of-service" class="hover:text-primary transition">Terms of Service</a></nav><div class="flex items-center gap-4"><a href="https://x.com/briancaffey" target="_blank" rel="noopener" aria-label="X / Twitter" class="hover:text-primary transition"> 𝕏 </a><a href="https://discord.gg/4fVcmJq4X" target="_blank" rel="noopener" aria-label="Discord" class="hover:text-primary transition"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-discord" viewBox="0 0 16 16"><path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"></path></svg></a><a href="https://github.com/inference-club" target="_blank" rel="noopener" aria-label="GitHub" class="hover:text-primary transition"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-github" viewBox="0 0 16 16"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8"></path></svg></a></div></div><div class="mt-8 flex flex-col items-center gap-1 text-center text-xs text-muted-foreground"><span>© 2026 inference.club. All rights reserved.</span><!----></div></footer><!----><!--teleport start--><!--teleport end--></div><!--teleport start--><!--teleport end--></div></div><div id="teleports"></div>
206<script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__">[["ShallowReactive",1],{"data":2,"state":1544,"once":1548,"_errors":1549,"serverRendered":1388,"path":1551,"pinia":1552},["ShallowReactive",3],{"home:featured":4,"home:featured-requests":1403},{"id":5,"title":6,"author":7,"body":8,"description":1386,"extension":1387,"featured":1388,"image":1389,"image_prompt":1390,"meta":1391,"navigation":1388,"path":1392,"publishedAt":1211,"seo":1393,"stem":1394,"tags":1395,"__hash__":1401,"isFallback":1402},"blog_en/blog/from-docker-sprawl-to-k3s.md","From docker sprawl to k3s: rebuilding my home inference fleet","briancaffey",{"type":9,"value":10,"toc":1373},"minimal",[11,23,26,58,84,99,104,114,117,124,128,131,209,226,233,237,249,258,264,271,275,278,281,287,309,319,329,339,346,350,360,367,581,588,591,675,689,694,704,727,730,736,743,750,826,837,841,844,859,1109,1120,1134,1137,1141,1144,1178,1192,1202,1208,1215,1219,1230,1286,1293,1297,1327,1338,1344,1369],[12,13,14,15,19,20],"p",{},"On 2026-06-11 I noticed that TRELLIS — the service that turns text and images into 3D meshes on my DGX Spark — had been \"healthy\" for three days. Green health check, container up, port answering. It had also completed zero requests in those three days, because a single wedged worker was sitting on the queue and every new request lined up politely behind it. The health endpoint said ",[16,17,18],"em",{},"the process is alive",". Nobody had asked the only question that matters: ",[16,21,22],{},"is work coming out?",[12,24,25],{},"Health checks lie. Queues don't.",[12,27,28,29,33,34,41,42,45,46,49,50,53,54,57],{},"While digging into that, I did an honest inventory of my fleet and found something more embarrassing. The ",[30,31,32],"code",{},"agent.yaml"," file that describes my machines to ",[35,36,40],"a",{"href":37,"rel":38},"https://github.com/inference-club/inference.club",[39],"nofollow","inference.club"," — the hand-maintained map of hosts, GPUs, services, and models that the agent uploads so the platform knows what I can serve — declared a ",[30,43,44],{},"qwen3-asr"," service on a3 that was not running at all. It declared flux as a service on a2, which was technically true, except flux wasn't even a container: it was a bare Python process that had been running since May 19, launched with ",[30,47,48],{},"uv run"," from a git checkout, surviving only because nobody had rebooted the box. Meanwhile two services that ",[16,51,52],{},"were"," running (a voice-conversion NIM and a couple of Open WebUI instances) appeared nowhere. And almost every container on every box was ",[30,55,56],{},"restart: no"," — one power blip away from a fleet that silently doesn't come back.",[12,59,60,61,64,65,72,73,75,76,79,80,83],{},"Config drifts. Clusters don't — or rather, a cluster ",[16,62,63],{},"is"," the thing, not a description of the thing. That's the realization this post is about. I spent an evening moving four mixed-architecture GPU boxes onto k3s, and then — before migrating a single service — taught the ",[35,66,69],{"href":67,"rel":68},"https://github.com/briancaffey/inference-club-agent",[39],[30,70,71],{},"inference-club-agent"," to stop reading a YAML file and start reading the Kubernetes API. The agent's 130-line ",[30,74,32],{}," collapsed to two environment variables, and the manifest it uploads got ",[16,77,78],{},"more"," accurate and ",[16,81,82],{},"richer"," at the same time, because every field is now derived from running state instead of typed by a human who last updated the file three services ago.",[12,85,86,87,92,93,98],{},"Both repos are open source — ",[35,88,90],{"href":37,"rel":89},[39],[30,91,40],{}," and ",[35,94,96],{"href":67,"rel":95},[39],[30,97,71],{}," — and the migration itself lives in a third repo of kustomize manifests and docs, so you can follow along in the actual code.",[100,101,103],"h2",{"id":102},"the-five-second-version","The five-second version",[105,106,111],"pre",{"className":107,"code":109,"language":110},[108],"language-text","        inference.club backend\n              │\n              │  http://\u003Cnode-LAN-IP>:8090   (LoadBalancer via k3s ServiceLB)\n              ▼\n┌──────────── k3s cluster · namespace: inference-club ─────────────┐\n│                                                                  │\n│  inference-club-agent (Deployment, Helm chart)                   │\n│    AGENT_DISCOVERY=kubernetes                                    │\n│    └─ every 30s: LIST Services/Pods/EndpointSlice
206s (+ Nodes)     │\n│       Services labeled inference-club.com/managed=true           │\n│       → manifest → upload (only when the bytes changed)          │\n│    └─ routes requests to http://\u003Csvc>.inference-club.svc:…       │\n│                                                                  │\n│  a3 · amd64 · RTX 4090 ── control plane + ltx2 (video)*          │\n│  a1 · amd64 · RTX 4090 ── magpie-tts (speech)                    │\n│  a2 · amd64 · RTX 4090 ── flux (image)*  ⚠ awaiting reboot       │\n│  spark · arm64 · DGX Spark GB10 ── acestep (music),              │\n│                    nemotron-asr (transcription), trellis2 (mesh) │\n│                                                                  │\n│  lmstudio Service (no selector)                                  │\n│    └─ EndpointSlice → 192.168.6.19:1234 ──────────┐              │\n└───────────────────────────────────────────────────┼──────────────┘\n                                                    ▼\n                                     LM Studio on spark's host OS\n                                     (outside the cluster, on purpose)\n","text",[30,112,109],{"__ignoreMap":113},"",[12,115,116],{},"* still on docker as of this writing — services migrate one at a time.",[12,118,119,120,123],{},"Three boxes with RTX 4090s (amd64) and a DGX Spark (arm64, GB10, 121 GB unified memory) run k3s. Inference services become Deployments + Services carrying a small label/annotation schema. The agent runs in-cluster and polls the Kubernetes API every 30 seconds, building its manifest from what is ",[16,121,122],{},"actually running"," — exact image, exact command, which node, which GPU — instead of from a hand-typed file. A service that lives outside the cluster (LM Studio) is represented by a selector-less Service with a manual EndpointSlice, so the agent and router treat it identically to everything else. Docker keeps running beside k3s the whole time; each service cuts over only when its k8s copy is verified end to end.",[100,125,127],{"id":126},"the-fleet-before","The fleet, before",[12,129,130],{},"Four Ubuntu boxes on one LAN, serving seven inference services for inference.club through a single agent:",[132,133,134,153],"table",{},[135,136,137],"thead",{},[138,139,140,144,147,150],"tr",{},[141,142,143],"th",{},"node",[141,145,146],{},"arch",[141,148,149],{},"GPU",[141,151,152],{},"what it serves",[154,155,156,171,183,195],"tbody",{},[138,157,158,162,165,168],{},[159,160,161],"td",{},"a1",[159,163,164],{},"amd64",[159,166,167],{},"RTX 4090 24GB",[159,169,170],{},"magpie-tts (speech), maxine-studio-voice",[138,172,173,176,178,180],{},[159,174,175],{},"a2",[159,177,164],{},[159,179,167],{},[159,181,182],{},"flux (image) — as a bare process",[138,184,185,188,190,192],{},[159,186,187],{},"a3",[159,189,164],{},[159,191,167],{},[159,193,194],{},"ltx2 (video: a proxy + a ComfyUI worker)",[138,196,197,200,203,206],{},[159,198,199],{},"spark",[159,201,202],{},"arm64",[159,204,205],{},"DGX Spark GB10, 121GB unified",[159,207,208],{},"trellis2 (mesh), acestep (music), nemotron-asr (transcription), LM Studio (LLM)",[12,210,211,212,215,216,218,219,221,222,225],{},"Every one of those was started by hand: ",[30,213,214],{},"docker run"," invocations of varying vintage, one bare ",[30,217,48],{}," process, four locally-built images that exist nowhere but the box they were built on. The pre-migration inventory found that almost everything was ",[30,220,56],{},", secrets rode along as plain ",[30,223,224],{},"-e"," env vars, and ltx2's proxy used host networking because that was the path of least resistance at the time.",[12,227,228,229,232],{},"This is not a confession of unusual sloppiness — I'd argue it's the ",[16,230,231],{},"default end state"," of a homelab that grew one exciting model at a time. Each service was set up in an afternoon of \"let's get LTX-2 working,\" and afternoon-projects don't write systemd units. The system worked, mostly, which is exactly why nothing forced the cleanup until TRELLIS quietly stopped working in a way that all my monitoring called healthy.",[100,234,236],{"id":235},"why-kubernetes-and-not-just-better-docker-hygiene","Why Kubernetes, and not just better docker hygiene",[12,238,239,240,243,244,248],{},"The obvious counter-move is discipline: docker compose files in git, ",[30,241,242],{},"restart: unless-stopped"," everywhere, a real healthcheck per service. I considered it. It fixes the restart problem and nothing else, because the deeper problem isn't restart policy — it's that ",[245,246,247],"strong",{},"the description of the system and the system itself are two different artifacts that drift apart",".",[12,250,251,253,254,257],{},[30,252,32],{}," is a map of hosts → GPUs → services → models. Every field in it is something I typed, which means every field is something I can forget to update. The file said qwen3-asr existed; the fleet said otherwise. The file said flux was a service at a2:8000; the fleet said it was an unsupervised process with no container, no restart policy, and no record of how it was launched beyond my shell history. Better docker hygiene gives you a ",[16,255,256],{},"more disciplined fiction",". It's still fiction.",[12,259,260,261,263],{},"Kubernetes inverts the relationship. The cluster's API ",[16,262,63],{}," the inventory — not a description that hopes to track reality, but the control loop that produces reality. If a pod isn't running, it isn't in the API as running, and there is no second artifact to fall out of sync. When my agent asks \"what services exist, where, with what command?\", the answer comes from the same source of truth the scheduler uses. Config is fiction;
206 clusters are testimony.",[12,265,266,267,270],{},"That reframing is what made the migration worth it for me, and it dictated the build order: the agent learns to read the cluster ",[16,268,269],{},"first",", before any service migrates, so that from day one the thing reporting my fleet to inference.club is reading testimony, not fiction. No interim agent.yaml-in-a-ConfigMap step — that would just relocate the fiction.",[100,272,274],{"id":273},"k3s-on-mixed-amd64arm64-with-gpus-what-actually-mattered","k3s on mixed amd64/arm64 with GPUs: what actually mattered",[12,276,277],{},"The cluster itself was the easy evening. k3s installs with a shell script per node; a3 became the single server (it's a 4090 box, so it runs workloads too — taints are for people with spare machines), and a1, a2, and spark joined as agents. A homelab note on the single control plane: yes, a3 is a single point of failure. So is my electrical panel. Revisit if it bites.",[12,279,280],{},"Three details actually mattered:",[12,282,283,286],{},[245,284,285],{},"Embedded containerd, not the docker shim."," k3s ships its own containerd, and using it means docker keeps running untouched beside the cluster for the entire migration. Every service keeps serving production traffic from its docker copy until its k8s replacement is verified. Cutover per service, not per fleet.",[12,288,289,292,293,296,297,300,301,304,305,308],{},[245,290,291],{},"The NVIDIA RuntimeClass + device plugin, with a version that knows about unified memory."," GPU pods need the nvidia container runtime (k3s detects it and writes the containerd config; you add the ",[30,294,295],{},"RuntimeClass",") plus the NVIDIA device plugin so nodes advertise ",[30,298,299],{},"nvidia.com/gpu",". On the 4090 boxes, this just worked. On the DGX Spark's GB10 — where there is no discrete VRAM, just 121 GB of unified memory — device plugin ",[245,302,303],{},"v0.17.0 fails"," to read the GPU's memory and won't advertise it. ",[245,306,307],{},"v0.17.4 handles GB10 unified memory correctly."," That patch-version gap cost me the better part of an hour and is exactly the kind of detail you only learn by doing it, which is why it's in this post.",[310,311,313],"blog-note",{"type":312},"tip",[12,314,315,316,318],{},"Running k8s on a DGX Spark (or anything GB10-based with unified memory): use NVIDIA device plugin v0.17.4 or newer. v0.17.0 can't read GB10 unified memory and the node will never advertise ",[30,317,299],{},", with no error that says why.",[12,320,321,324,325,328],{},[245,322,323],{},"Multi-arch is mostly a non-event — until images."," k3s itself and the standard manifests are happily multi-arch. The pain arrives with ",[16,326,327],{},"your"," images: anything that has to run on spark needs an arm64 build, and four of my service images were locally built with no registry at all. The agent's own image now publishes as a multi-arch manifest (amd64 + arm64) from CI so one Helm chart serves the whole cluster.",[12,330,331,332,335,336,338],{},"Each node also gets a label, ",[30,333,334],{},"inference-club.com/box=a1"," through ",[30,337,199],{},", which the agent uses as the stable host identity in the manifest it uploads — the successor to agent.yaml's hand-assigned host IDs.",[12,340,341,342,345],{},"One box sat the evening out: a2 has an NVML driver/library mismatch (userspace 580.159 against an older loaded kernel module), so new GPU processes fail until it reboots. The flux process ",[16,343,344],{},"survives"," because it predates the driver upgrade — a perfect little museum exhibit of why \"it's been up for weeks\" and \"it will come back up\" are unrelated claims.",[100,347,349],{"id":348},"teaching-the-agent-to-read-the-cluster","Teaching the agent to read the cluster",[12,351,352,353,359],{},"This is the part I care most about, because it's the part that generalizes beyond my basement: commit ",[35,354,356],{"href":67,"rel":355},[39],[30,357,358],{},"1908505"," in the agent repo, \"kubernetes discovery mode + helm chart.\"",[12,361,362,363,366],{},"The design question was: what replaces agent.yaml? The answer: almost nothing. Identity stays as config (the agent's name and API key — Kubernetes can't know 
206who you are on inference.club). ",[16,364,365],{},"Everything service-shaped"," moves onto the Services themselves, as labels and annotations:",[105,368,372],{"className":369,"code":370,"language":371,"meta":113,"style":113},"language-yaml shiki shiki-themes github-light github-dark","apiVersion: v1\nkind: Service\nmetadata:\n  name: magpie-tts\n  namespace: inference-club\n  labels:\n    inference-club.com/managed: \"true\"   # the discovery selector — only required label\n    inference-club.com/type: tts         # llm|stt|tts|image|mesh|music|video\n    inference-club.com/engine: other     # same enum agent.yaml used\n  annotations:\n    inference-club.com/models: |\n      - id: magpie-tts-multilingual\n    inference-club.com/base-path: \"/v1\"\nspec:\n  selector: { app: magpie-tts }\n  ports: [{ name: http, port: 9000 }]\n","yaml",[30,373,374,391,402,411,422,433,441,456,470,484,492,504,510,521,529,549],{"__ignoreMap":113},[375,376,379,383,387],"span",{"class":377,"line":378},"line",1,[375,380,382],{"class":381},"s9eBZ","apiVersion",[375,384,386],{"class":385},"sVt8B",": ",[375,388,390],{"class":389},"sZZnC","v1\n",[375,392,394,397,399],{"class":377,"line":393},2,[375,395,396],{"class":381},"kind",[375,398,386],{"class":385},[375,400,401],{"class":389},"Service\n",[375,403,405,408],{"class":377,"line":404},3,[375,406,407],{"class":381},"metadata",[375,409,410],{"class":385},":\n",[375,412,414,417,419],{"class":377,"line":413},4,[375,415,416],{"class":381},"  name",[375,418,386],{"class":385},[375,420,421],{"class":389},"magpie-tts\n",[375,423,425,428,430],{"class":377,"line":424},5,[375,426,427],{"class":381},"  namespace",[375,429,386],{"class":385},[375,431,432],{"class":389},"inference-club\n",[375,434,436,439],{"class":377,"line":435},6,[375,437,438],{"class":381},"  labels",[375,440,410],{"class":385},[375,442,444,447,449,452],{"class":377,"line":443},7,[375,445,446],{"class":381},"    inference-club.com/managed",[375,448,386],{"class":385},[375,450,451],{"class":389},"\"true\"",[375,453,455],{"class":454},"sJ8bj","   # the discovery selector — only required label\n",[375,457,459,462,464,467],{"class":377,"line":458},8,[375,460,461],{"class":381},"    inference-club.com/type",[375,463,386],{"class":385},[375,465,466],{"class":389},"tts",[375,468,469],{"class":454},"         # llm|stt|tts|image|mesh|music|video\n",[375,471,473,476,478,481],{"class":377,"line":472},9,[375,474,475],{"class":381},"    inference-club.com/engine",[375,477,386],{"class":385},[375,479,480],{"class":389},"other",[375,482,483],{"class":454},"     # same enum agent.yaml used\n",[375,485,487,490],{"class":377,"line":486},10,[375,488,489],{"class":381},"  annotations",[375,491,410],{"class":385},[375,493,495,498,500],{"class":377,"line":494},11,[375,496,497],{"class":381},"    inference-club.com/models",[375,499,386],{"class":385},[375,501,503],{"class":502},"szBVR","|\n",[375,505,507],{"class":377,"line":506},12,[375,508,509],{"class":389},"      - id: magpie-tts-multilingual\n",[375,511,513,516,518],{"class":377,"line":512},13,[375,514,515],{"class":381},"    inference-club.com/base-path",[375,517,386],{"class":385},[375,519,520],{"class":389},"\"/v1\"\n",[375,522,524,527],{"class":377,"line":523},14,[375,525,526],{"class":381},"spec",[375,528,410],{"class":385},[375,530,532,535,538,541,543,546],{"class":377,"line":531},15,[375,533,534],{"class":381},"  selector",[375,536,537],{"class":385},": { ",[375,539,540],{"class":381},"app",[375,542,386],{"class":385},[375,544,545],{"class":389},"magpie-tts",[375,547,548],{"class":385}," }\n",[375,550,552,555,558,561,563,566,569,572,574,578],{"class":377,"line":551},16,[375,553,554],{"class":381},"  ports",[375,556,557],{"class":385},": [{ ",[375,559,560],{"class":381},"name",[375,562,386],{"class":385},[375,564,565],{"class":389},"http",[375,567,568],{"class":385},", ",[375,570,571],{"class":381},"port",[375,573,386],{"class":385},[375,575,577],{"class":576},"sj4cs","9000",[375,579,580],{"class":385}," }]\n",[12,582,583,584,587],{},"Labels carry the few fields worth ",[16,585,586],{},"selecting"," on; annotations carry the structured payload (the models list, features, base path) that doesn't fit label syntax. The service's description now lives on the service. It cannot drift to a different file, because there is no different file.",[12,589,590],{},"And here's the payoff — the fields nobody declares anymore, because they're derived from running state:",[132,592,593,603],{},[135,594,595],{},[138,596,597,600],{},[141,598,599],{},"agent.yaml field (old, hand-typed)",[141,601,602],{},"k8s source (new, derived)",[154,604,605,623,633,645,667],{},[138,606,607,616],{},[159,608,609,612,613],{},[30,610,611],{},"hosts[].address"," / ",[30,614,615],{},"hostname",[159,617,618,619,622],{},"the backing Pod's ",[30,620,621],{},"nodeName"," → Node addresses",[138,624,625,630],{},[159,626,627],{},[30,628,629],{},"hosts[].gpu.{model, vram_gb, count}",[159,631,632],{},"device plugin allocatable + GPU-feature-discovery node labels",[138,634,635,640],{},[159,636,637],{},[30,638,639],{},"services[].url",[159,641,642],{},[30,643,644],{},"http://\u003Csvc>.\u003Cns>.svc.cluster.local:\u003Cport>",[138,646,647,653],{},[159,648,649,652],{},[30,650,651],{}
206,"services[].command"," (cosmetic, often stale)",[159,654,655,656,659,660,659,663,666],{},"Pod ",[30,657,658],{},"image"," + ",[30,661,662],{},"command",[30,664,665],{},"args"," — exact and always true",[138,668,669,672],{},[159,670,671],{},"— (never had it)",[159,673,674],{},"pod phase, readiness, restart counts",[12,676,677,678,680,681,684,685,688],{},"That ",[30,679,662],{}," row deserves a beat. The old agent.yaml had a ",[30,682,683],{},"command:"," field that was pure documentation — whatever I remembered typing when I launched the container. The new manifest reports the ",[16,686,687],{},"literal"," image, command, and args from the pod spec. When someone looks at my provider page on inference.club and wonders how to run ACE-Step on their own Spark, the answer on the page is now guaranteed to be the answer that's running. Exact-command manifests, for free.",[690,691,693],"h3",{"id":692},"stdlib-rest-and-a-30-second-poll-not-client-go","Stdlib REST and a 30-second poll, not client-go",[12,695,696,697,700,701,248],{},"The textbook Go implementation here is client-go with informers — a watch-based cache that reacts to cluster changes in real time. I read the textbook and put it down. The agent needs four namespace-scoped LISTs (Services filtered by ",[30,698,699],{},"inference-club.com/managed=true",", Pods, EndpointSlices, plus cluster-scoped Nodes) on a slow loop, at homelab scale: tens of objects, not tens of thousands. client-go would dwarf every other dependency in a binary that ships to operators, and the repo deliberately keeps its Docker builds free of a committed ",[30,702,703],{},"go.sum",[12,705,706,707,710,711,714,715,718,719,722,723,726],{},"So ",[30,708,709],{},"internal/discovery/kubernetes.go"," is ~470 lines of stdlib: ",[30,712,713],{},"net/http"," against the cluster API with the mounted serviceaccount CA and token (re-read on every request, because bound serviceaccount tokens rotate), minimal typed views of just the JSON fields we read, and a poll every 30 seconds (",[30,716,717],{},"AGENT_DISCOVERY_INTERVAL","). The built manifest is marshaled to YAML and ",[245,720,721],{},"byte-diffed against the previous build"," — services are walked in sorted order so identical cluster state always marshals to identical bytes — and an unchanged cluster re-pushes nothing. ",[30,724,725],{},"SIGHUP"," forces an immediate re-list, same signal the file mode always used for reloads.",[12,728,729],{},"Configuration, in its entirety:",[105,731,734],{"className":732,"code":733,"language":110},[108],"AGENT_DISCOVERY=kubernetes\nAGENT_DISCOVERY_NAMESPACE=inference-club   # this is also the default\n",[30,735,733],{"__ignoreMap":113},[12,737,738,739,742],{},"That's what's left of 130 lines of agent.yaml. There's a subtle correctness rule in the builder, too: a Service whose selector matches no running pod is ",[16,740,741],{},"dropped from the manifest"," rather than reported. The manifest describes what is serving — a declared-but-dead service is exactly the qwen3-asr fiction this whole project exists to kill, and the next 30-second poll picks it up the moment a pod lands.",[12,744,745,746,749],{},"The Helm chart (",[30,747,748],{},"charts/inference-club-agent",", in the agent repo so any provider can use it — my fleet repo holds only values) ships the Deployment, the ServiceAccount and RBAC (read-only: Services/Pods/EndpointSlices/named Secrets in the namespace, plus Nodes cluster-wide), the API-key Secret plumbing, and a LoadBalancer Service for the inbound path — on k3s, the built-in ServiceLB binds it on the node LAN IPs, so the backend reaches the agent at any node's IP on port 8090 with zero extra infrastructure:",[105,751,755],{"className":752,"code":753,"language":754,"meta":113,"style":113},"language-bash shiki shiki-themes github-light github-dark","helm install agent charts/inference-club-agent \\\n  --namespace inference-club \\\n  --set agentName=club-host-k8s \\\n  --set apiKey.existingSecret=club-api-key \\\n  --set direct.enabled=true \\\n  --set direct.advertiseHost=192.168.5.173\n","bash",[30,756,757,775,785,795,804,816],{"__ignoreMap":113},[375,758,759,763,766,769,772],{"class":377,"line":378},[375,760,762],{"class":761},"sScJk","helm",[375,764,765],{"class":389}," install",[375,767,768],{"class":389}," agent",[375,770,771],{"class":389}," charts/inference-club-agent",[375,773,774],{"class":576}," \\\n",[375,776,777,780,783],{"class":377,"line":393},[375,778,779],{"class":576},"  --namespace",[375,781,782],{"class":389}," inference-club",[375,784,774],{"class":576},[375,786,787,790,793],{"class":377,"line":404},[375,788,789],{"class":576},"  --set",[375,791,792],{"class":389}," agentName=club-host-k8s",[375,794,774],{"class":576},[375,796,797,799,802],{"class":377,"line":413},[375,798,789],{"class":576},[375,800,801],{"class":389}," apiKey.existingSecret=club-api-key",[375,803,774],{"class":576},[375,805,806,808,811,814],{"class":377,"line":424},[375,807,789],{"class":576},[375,809,810],{"class":389}," direct.enabled=",[375,812,813],{"class":576},"true",[375,815,774],{"class":576},[375,817,818,820,823],{"class":377,"line":435},[375,819,789],{"class":576},[375,821,822],{"class":389}," direct.advertiseHost=",[375,824,825],{"class":576},"192.168.5.173\n",[12,827,828,829,832,833,836],{},"The in-cluster agent runs under a ",[16,830,831],{},"separate experimental account"," (",[30,834,835],{},"club-host-k8s",") while the untouched production docker agent keeps serving the real one. Cutover is the last step of the whole migration, not the first.",[100,838,840],{"id":839},"first-light-a-completion-through-a-service-that-points-at-nothing","First light: a completion through a Service that points at nothing",[12,842,843],{},"Here's my favorite part. The first real request through the new path — verified end to end on 202
2066-06-11 — was a chat completion served by a \"service\" that was never migrated anywhere.",[12,845,846,847,850,851,854,855,858],{},"LM Studio runs on spark's host OS, on ",[30,848,849],{},":1234",", the way LM Studio wants to run. It is not a container and is not going to become one (it's a desktop app with its own model manager; containerizing it buys nothing). But Kubernetes has a first-class way to give a name to something outside the cluster: a ",[245,852,853],{},"Service with no selector",", paired with a ",[245,856,857],{},"manually-created EndpointSlice",":",[105,860,862],{"className":369,"code":861,"language":371,"meta":113,"style":113},"apiVersion: v1\nkind: Service\nmetadata:\n  name: lmstudio\n  namespace: inference-club\n  labels:\n    inference-club.com/managed: \"true\"\n    inference-club.com/type: llm\n    inference-club.com/engine: lmstudio\n  annotations:\n    inference-club.com/base-path: \"/v1\"\n    inference-club.com/api-key-secret: lmstudio-key\n    inference-club.com/models: |\n      - id: google/gemma-4-12b\nspec:\n  ports: [{ port: 1234 }]\n---\napiVersion: discovery.k8s.io/v1\nkind: EndpointSlice\nmetadata:\n  name: lmstudio-1\n  namespace: inference-club\n  labels: { kubernetes.io/service-name: lmstudio }\naddressType: IPv4\nports: [{ port: 1234 }]\nendpoints: [{ addresses: [\"192.168.6.19\"] }]\n",[30,863,864,872,880,886,895,903,909,918,927,935,941,949,959,967,972,978,993,999,1009,1019,1026,1036,1045,1062,1073,1089],{"__ignoreMap":113},[375,865,866,868,870],{"class":377,"line":378},[375,867,382],{"class":381},[375,869,386],{"class":385},[375,871,390],{"class":389},[375,873,874,876,878],{"class":377,"line":393},[375,875,396],{"class":381},[375,877,386],{"class":385},[375,879,401],{"class":389},[375,881,882,884],{"class":377,"line":404},[375,883,407],{"class":381},[375,885,410],{"class":385},[375,887,888,890,892],{"class":377,"line":413},[375,889,416],{"class":381},[375,891,386],{"class":385},[375,893,894],{"class":389},"lmstudio\n",[375,896,897,899,901],{"class":377,"line":424},[375,898,427],{"class":381},[375,900,386],{"class":385},[375,902,432],{"class":389},[375,904,905,907],{"class":377,"line":435},[375,906,438],{"class":381},[375,908,410],{"class":385},[375,910,911,913,915],{"class":377,"line":443},[375,912,446],{"class":381},[375,914,386],{"class":385},[375,916,917],{"class":389},"\"true\"\n",[375,919,920,922,924],{"class":377,"line":458},[375,921,461],{"class":381},[375,923,386],{"class":385},[375,925,926],{"class":389},"llm\n",[375,928,929,931,933],{"class":377,"line":472},[375,930,475],{"class":381},[375,932,386],{"class":385},[375,934,894],{"class":389},[375,936,937,939],{"class":377,"line":486},[375,938,489],{"class":381},[375,940,410],{"class":385},[375,942,943,945,947],{"class":377,"line":494},[375,944,515],{"class":381},[375,946,386],{"class":385},[375,948,520],{"class":389},[375,950,951,954,956],{"class":377,"line":506},[375,952,953],{"class":381},"    inference-club.com/api-key-secret",[375,955,386],{"class":385},[375,957,958],{"class":389},"lmstudio-key\n",[375,960,961,963,965],{"class":377,"line":512},[375,962,497],{"class":381},[375,964,386],{"class":385},[375,966,503],{"class":502},[375,968,969],{"class":377,"line":523},[375,970,971],{"class":389},"      - id: google/gemma-4-12b\n",[375,973,974,976],{"class":377,"line":531},[375,975,526],{"class":381},[375,977,410],{"class":385},[375,979,980,982,984,986,988,991],{"class":377,"line":551},[375,981,554],{"class":381},[375,983,557],{"class":385},[375,985,571],{"class":381},[375,987,386],{"class":385},[375,989,990],{"class":576},"1234",[375,992,580],{"class":385},[375,994,996],{"class":377,"line":995},17,[375,997,998],{"class":761},"---\n",[375,1000,1002,1004,1006],{"class":377,"line":1001},18,[375,1003,382],{"class":381},[375,1005,386],{"class":385},[375,1007,1008],{"class":389},"discovery.k8s.io/v1\n",[375,1010,1012,1014,1016],{"class":377,"line":1011},19,[375,1013,396],{"class":381},[375,1015,386],{"class":385},[375,1017,1018],{"class":389},"EndpointSlice\n",[375,1020,1022,1024],{"class":377,"line":1021},20,[375,1023,407],{"class":381},[375,1025,410],{"class":385},[375,1027,1029,1031,1033],{"class":377,"line":1028},21,[375,1030,416],{"class":381},[375,1032,386],{"class":385},[375,1034,1035],{"class":389},"lmstudio-1\n",[375,1037,1039,1041,1043],{"class":377,"line":1038},22,[375,1040,427],{"class":381},[375,1042,386],{"class":385},[375,1044,432],{"class":389},[375,1046,1048,1050,1052,1055,1057,1060],{"class":377,"line":1047},23,[375,1049,438],{"class":381},[375,1051,537],{"class":385},[375,1053,1054],{"class":381},"kubernetes.io/service-name",[375,1056,386],{"class":385},[375,1058,1059],{"class":389},"lmstudio",[375,1061,548],{"class":385},[375,1063,1065,1068,1070],{"class":377,"line":1064},24,[375,1066,1067],{"class":381},"addressType",[375,1069,386],{"class":385}
206,[375,1071,1072],{"class":389},"IPv4\n",[375,1074,1076,1079,1081,1083,1085,1087],{"class":377,"line":1075},25,[375,1077,1078],{"class":381},"ports",[375,1080,557],{"class":385},[375,1082,571],{"class":381},[375,1084,386],{"class":385},[375,1086,990],{"class":576},[375,1088,580],{"class":385},[375,1090,1092,1095,1097,1100,1103,1106],{"class":377,"line":1091},26,[375,1093,1094],{"class":381},"endpoints",[375,1096,557],{"class":385},[375,1098,1099],{"class":381},"addresses",[375,1101,1102],{"class":385},": [",[375,1104,1105],{"class":389},"\"192.168.6.19\"",[375,1107,1108],{"class":385},"] }]\n",[12,1110,1111,1112,1115,1116,1119],{},"No selector means Kubernetes doesn't manage the endpoints — ",[16,1113,1114],{},"you"," do, by writing the EndpointSlice yourself. But kube-proxy doesn't care who wrote the endpoints. ",[30,1117,1118],{},"lmstudio.inference-club.svc.cluster.local:1234"," resolves and routes from any pod, straight to the host process on spark, exactly as if a pod were behind it.",[12,1121,1122,1123,1126,1127,1129,1130,1133],{},"The beautiful consequence: ",[245,1124,1125],{},"the agent has no \"external service\" code path."," The Service carries the same labels as every other Service, so discovery picks it up the same way; the router gets the same cluster-DNS URL shape; kube-proxy does the actual delivery. The only difference in the built manifest is that an external endpoint has no ",[30,1128,621],{},", so it reports without GPU metadata — which is exactly the fidelity agent.yaml's hand-typed blocks had, so nothing is lost. (The one annotation doing extra work is ",[30,1131,1132],{},"api-key-secret",": LM Studio wants a bearer token, so the agent reads the named k8s Secret and sends its value upstream — and never uploads it.)",[12,1135,1136],{},"So first light was: dev backend → in-cluster agent → Service DNS → kube-proxy → LM Studio on a host machine, returning gemma tokens — through a Service that selects nothing. If you only steal one trick from this post, steal the selector-less Service. It's the bridge that lets a half-migrated fleet behave like a whole one.",[100,1138,1140],{"id":1139},"migrating-the-services-one-at-a-time","Migrating the services, one at a time",[12,1142,1143],{},"With discovery proven, services move one by one: containerize if needed → push to a registry → write the Deployment/Service with the discovery labels → verify end to end on the experimental account → retire the docker 
206copy. The war stories from the first wave, briefly, because each one taught me something:",[12,1145,1146,1149,1150,1153,1154,1157,1158,1161,1162,1165,1166,1169,1170,1173,1174,1177],{},[245,1147,1148],{},"magpie-tts (a1, speech)"," went first, as the boring self-contained NIM that proves GPU scheduling + Service DNS + discovery + routing in one shot. It refused to be boring. The image pull filled a1's 110 GB root disk mid-pull, triggering kubelet eviction and a disk-pressure taint (fix: move the k3s data dir to the big disk — the same move docker made on that box years ago). Then ",[30,1151,1152],{},"latest"," had moved since my two-week-old docker copy, so the NIM kicked off a ~30-minute TensorRT engine rebuild on first boot — which my default-ish 15-minute startup probe SIGKILLed, forever, in a loop. A pod stuck ",[30,1155,1156],{},"Pending"," with empty logs is answered by ",[30,1159,1160],{},"kubectl describe",", not ",[30,1163,1164],{},"kubectl logs",": the events table tells you about taints and probe kills that no log line ever will. Fixes: a 40-minute startup budget and an ",[30,1167,1168],{},"emptyDir"," on the engine cache so rebuilt engines survive restarts. One more cute trick: the k8s pod takes the box's old port via ",[30,1171,1172],{},"hostPort: 9000",", so the ",[16,1175,1176],{},"production"," docker agent — which still has that URL hard-coded in its agent.yaml — healed with zero config changes.",[12,1179,1180,1183,1184,1187,1188,1191],{},[245,1181,1182],{},"acestep (spark, music)"," proved arm64 — and then proved the thesis a second time. Music generation ran fine; every MP3 save failed, because torchaudio 2.10 removed its backend-dispatch save path out from under ACE-Step. Healthy but wedged, again — and reproducing it against the ",[16,1185,1186],{},"production docker copy"," showed prod music had been quietly broken the same way since that image was rebuilt days earlier. The migration didn't cause the bug; it ",[16,1189,1190],{},"exposed"," a bug that uniform redeployment forced into the light. The fix (saving via soundfile + the ffmpeg CLI) repaired prod at cutover.",[12,1193,1194,1197,1198,1201],{},[245,1195,1196],{},"nemotron-asr (spark, transcription)"," closed a small poetic loop: its end-to-end verification was transcribing a WAV that magpie-tts had generated ",[16,1199,1200],{},"inside the same cluster"," minutes earlier. TTS → STT, round trip, no humans.",[12,1203,1204,1207],{},[245,1205,1206],{},"trellis2 (spark, mesh)"," — the service that started all of this — moved last of the wave, and its migration paid for itself in evidence: the mysterious CPU-spin behavior reproduces under containerd, which formally exonerates docker and narrows an open performance investigation. And the mesh export that wedged for three days? Verified end to end on k8s: a 692k-vertex GLB in 243 seconds, no wedge.",[310,1209,1212],{"type":1210,"date":1211},"note","2026-06-12",[12,1213,1214],{},"The migration is ongoing as of publication. Still on docker: ltx2 (video, a3 — its host networking needs unwinding) and flux (image, a2 — blocked on a reboot to clear an NVML driver/library mismatch, plus containerizing what is currently a bare process). The production agent cutover to the in-cluster agent (over Tailscale, same pathway as today) is the final phase.",[100,1216,1218],{"id":1217},"what-you-get-for-free","What you get for free",[12,1220,1221,1222,1225,1226,1229],{},"The list of things I ",[16,1223,1224],{},"deleted"," or ",[16,1227,1228],{},"stopped doing"," is the real scorecard:",[1231,1232,1233,1243,1253,1259,1268,1280],"ul",{},[1234,1235,1236,1239,1240,1242],"li",{},[245,1237,1238],{},"Restart semantics."," Every migrated service went from ",[30,1241,56],{}," to a Deployment's default restart-always, with real liveness/startup probes. A box reboot is now a non-event instead of a silent partial outage discovered days later.",[1234,1244,1245,1248,1249,1252],{},[245,1246,1247],{},"The inventory question, answered by the system itself."," \"What runs where, with what command, on which GPU?\" is now ",[30,1250,1251],{},"kubectl get pods -o wide"," — or, for the world, the manifest my agent uploads, every field derived.",[1234,1254,1255,1258],{},[245,1256,1257],{},"Exact-command manifests."," The reproducibility documentation writes itself, and can't lie.",[1234,1260,1261,1264,1265,1267],{},[245,1262,1263],{},"Secrets that are secrets."," NGC keys, HF tokens, the LM Studio key, and the agent's API key are k8s Secrets instead of ",[30,1266,224],{}," flags fossilized in shell history.",[1234,1269,1270,1273,1274,1276,1277,248],{},[245,1271,1272],{},"A debugging vocabulary."," ",[30,1275,1160],{}," on a Pending pod replaced ssh-ing box to box and squinting at ",[30,1278,1279],{},"docker ps",[1234,1281,1282,1285],{},[245,1283,1284],{},"A place to hang what's next"," — monitoring that watches queue depth and tokens-out rather than process-up, because the TRELLIS lesson is that liveness is the wrong question.",[12,1287,1288,1289,1292],{},"None of this is news to anyone running Kubernetes at work. The point is the ",[16,1290,1291],{},"price",": at homelab scale, with k3s, the whole control plane costs one evening and a few hundred MB of RAM on a box that's mostly busy making videos anyway.",[100,1294,1296],{"id":1295},"seven-modalities-one-cluster","Seven modalities, one cluster",[12,1298,1299,1300,1303,1304,1306,1307,1310,1311,1314,1315,1318,1319,1322,1323,1326],{},"Step back and look at what this little cluster actually serves through inference.club: ",[245,1301,1302],{},"LLM"," chat (LM Studio, via the selector-less Service), ",[245,1305,658],{}," generation (flux), ",[245,1308,1309],{},"video"," (LTX-2), ",[245,1312,1313],{},"music"," (ACE-Step), ",[245,1316,1317],{},"speech synthesis"," (magpie-tts), ",[245,1320,1321],{},"transcription"," (nemotron-asr), and ",[245,1324,1325],{},"3D mesh"," generation (TRELLIS) — seven modalities across three RTX 4090s and a DGX Spark, registered to the platform by one agent that nobody has to update when things change, because it reads the cluster instead of a file.",[12,1328,1329,1330,1333,1334,1337],{},"And the loop is starting to close in a way I find genuinely fun: the same discovery code now feeds a live ",[30,1331,1332],{},"/cluster/state"," endpoint, which powers a 3D visualization of the cluster on inference.club — whose 3D assets are generated by the mesh service running ",[16,1335,1336],{},"on the cluster being visualized",". The substrate is learning to draw itself. That's a story for its own post.",[12,1339,1340,1341,1343],{},"If you run local AI on more than one box and your services are a pile of ",[30,1342,214],{}," commands you half-remember — that was me two days ago, and the distance from there to \"the cluster is the config\" is shorter than it looks. Start with k3s and the device plugin (v0.17.4 if you have a Spark), put labels on your Services, and let the system testify.",[12,1345,1346,1347,1352,1353,1355,1356,1358,1359,1364,1365,248],{}
206,"The code: ",[35,1348,1350],{"href":67,"rel":1349},[39],[30,1351,71],{}," (the discovery mode is ",[30,1354,709],{},"; the chart is ",[30,1357,748],{},") and ",[35,1360,1362],{"href":37,"rel":1361},[39],[30,1363,40],{},". To put your own hardware on the network: ",[35,1366,1368],{"href":1367},"/docs/providers/run-an-agent","run-an-agent",[1370,1371,1372],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}",{"title":113,"searchDepth":393,"depth":393,"links":1374},[1375,1376,1377,1378,1379,1382,1383,1384,1385],{"id":102,"depth":393,"text":103},{"id":126,"depth":393,"text":127},{"id":235,"depth":393,"text":236},{"id":273,"depth":393,"text":274},{"id":348,"depth":393,"text":349,"children":1380},[1381],{"id":692,"depth":404,"text":693},{"id":839,"depth":393,"text":840},{"id":1139,"depth":393,"text":1140},{"id":1217,"depth":393,"text":1218},{"id":1295,"depth":393,"text":1296},"A 'healthy' mesh-generation service sat wedged for three days while my agent.yaml described services that didn't exist. So I moved four GPU boxes — three RTX 4090s and a DGX Spark — onto k3s and taught the inference-club-agent to discover services from the Kubernetes API instead of a config file. Health checks lie; queues don't. Config is fiction; clusters are testimony.","md",true,"/images/blog/from-docker-sprawl-to-k3s.png","Wide cinematic abstract illustration: four glowing GPU server towers of different sizes connected into one luminous orbital control ring, streams of cyan and violet light flowing from chaotic tangled cables on the left into clean orderly orbital paths on the right, one small node glowing outside the ring still connected by a thin thread of light, dark moody futuristic, soft glow, no text, no words, no letters",{},"/blog/from-docker-sprawl-to-k3s",{"title":6,"description":1386},"blog/from-docker-sprawl-to-k3s",[1396,1397,1398,1399,1400],"k3s","kubernetes","homelab","architecture","deep-dive","b4wkYQvwoLZ5uWzzYj1pLLL1T-sl2-Dk08mEHP3GJDI",false,[1404,1430,1450,1471,1489,1520],{"id":1405,"public_id":1406,"inference_type":1407,"status":1408,"model_name":1409,"provider":1410,"owner":7,"github_login":7,"is_owner":1402,"visibility":1412,"share_token":1413,"star_count":378,"is_starred":1402,"is_bookmarked":1402,"is_featured":1388,"latency_ms":1414,"gpu_label":1415,"host":1416,"usage":1415,"audio_seconds":1418,"audio_url":1415,"output_audio_url":1419,"image_count":1415,"image_urls":1420,"input_image_url":1415,"input_image_urls":1421,"model_url":1415,"mesh":1415,"video_url":1415,"video":1415,"cover_image_url":1422,"prompt_preview":1423,"response_preview":113,"message_count":378,"streamed":1402,"has_reasoning":1402,"created_on":1424,"modified_on":1425,"gpus":1426,"featured_at":1429},205,"Hr3rPnqtOE0","MUSIC","PROCESSED","acestep-v15-turbo",{"id":378,"name":1411,"owner_handle":7,"is_online":1402},"club-host","PUBLIC","bmp82Yl98II28sbn7pFWkA",32007,null,{"host_id":1415,"hostname":113,"provider_id":378,"gpus":1417,"gpu":14
20615},[],90,"https://storage.googleapis.com/inference-club-media-public/output_audio/1/9d461fb3c8ec4074a5c3882aee85e686/song.wav",[],[],"https://storage.googleapis.com/inference-club-media-public/output_image/1/8ab31ebf8b914e0faa742ede20f5226f/image-0.png","disco funk vibes party","2026-06-13T21:19:44.027443Z","2026-06-16T12:58:03.644774Z",[1427,1428],"NVIDIA-GeForce-RTX-4090","NVIDIA-GB10","2026-06-16T12:58:03.644453Z",{"id":1431,"public_id":1432,"inference_type":1433,"status":1408,"model_name":1434,"provider":1435,"owner":7,"github_login":7,"is_owner":1402,"visibility":1412,"share_token":1436,"star_count":1437,"is_starred":1402,"is_bookmarked":1402,"is_featured":1388,"latency_ms":1438,"gpu_label":1415,"host":1439,"usage":1415,"audio_seconds":1441,"audio_url":1415,"output_audio_url":1442,"image_count":1415,"image_urls":1443,"input_image_url":1415,"input_image_urls":1444,"model_url":1415,"mesh":1415,"video_url":1415,"video":1415,"cover_image_url":1415,"prompt_preview":1445,"response_preview":113,"message_count":1437,"streamed":1402,"has_reasoning":1402,"created_on":1446,"modified_on":1447,"gpus":1448,"featured_at":1449},183,"evuIhwZyFD4","TTS","magpie-tts-multilingual",{"id":378,"name":1411,"owner_handle":7,"is_online":1402},"cnzGOkowanz_jrfB48irtQ",0,1478,{"host_id":1415,"hostname":113,"provider_id":378,"gpus":1440,"gpu":1415},[],4.133,"https://storage.googleapis.com/inference-club-media-public/output_audio/1/6124af1d039e4e97bab74f6a77249989/speech.wav",[],[],"Type text, pick a voice, and synthesize natural speech.","2026-06-11T03:23:55.612271Z","2026-06-13T05:32:46.779194Z",[1427,1428],"2026-06-13T05:32:46.778933Z",{"id":1451,"public_id":1452,"inference_type":1302,"status":1408,"model_name":1453,"provider":1454,"owner":7,"github_login":7,"is_owner":1402,"visibility":1412,"share_token":1455,"star_count":378,"is_starred":1402,"is_bookmarked":1402,"is_featured":1388,"latency_ms":1456,"gpu_label":1415,"host":1457,"usage":1459,"audio_seconds":1415,"audio_url":1415,"output_audio_url":1415,"image_count":1415,"image_urls":1463,"input_image_url":1415,"input_image_urls":1464,"model_url":1415,"mesh":1415,"video_url":1415,"video":1415,"cover_image_url":1415,"prompt_preview":1465,"response_preview":1466,"message_count":378,"streamed":1388,"has_reasoning":1388,"created_on":1467,"modified_on":1468,"gpus":1469,"featured_at":1470},81,"hnUOMGTMBaA","nvidia/nemotron-3-nano-omni-30b-a3b-reasoning-nvfp4",{"id":378,"name":1411,"owner_handle":7,"is_online":1402},"dyzQUf85PeczLbUTvKgN6Q",8745,{"host_id":1415,"hostname":113,"provider_id":378,"gpus":1458,"gpu":1415},[],{"prompt_tokens":1460,"completion_tokens":1461,"total_tokens":1462},1236,306,1542,[],[],"summarize this article: AI Outperforms Law Professors in Stanford Law Study\nIn a rigorous blind study, law professors overwhelmingly preferred AI-generated answers to student legal questions over answers written by fellow law professors—and flagged the AI answers as potentially m…","**Summary**\n\nA blind study led by Stanford Law professor Julian Nyarko found that law professors overwhelmingly preferred AI‑generated answers to contract‑law questions over answers written by their fellow professors. In a head‑to‑head comparison of nearly 3,000 anonymized respon…","2026-06-03T05:30:02.394830Z","2026-06-13T05:31:42.959361Z",[1427,1428],"2026-06-13T05:31:42.958988Z",{"id":1472,"public_id":1473,"inference_type":1474,"status":1408,"model_name":1475,"provider":1476,"owner":7,"github_login":7,"is_owner":1402,"visibility":1412,"share_token":1477,"star_count":1437,"is_starred":1402,"is_bookmarked":1402,"is_featured":1388,"latency_ms":1478,"gpu_label":1415,"host":1479,"usage":1415,"audio_seconds":1415,"audio_url":1415,"output_audio_url":1415,"image_count":378,"image_urls":1481,"input_image_url":1415,"input_image_urls":1483,"model_url":1415,"mesh":1415,"video_url":1415,"video":1415,"cover_image_url":1415,"prompt_preview":1484,"response_preview":113,"message_count":378,"streamed":1402,"has_reasoning":1402,"created_on":1485,"modified_on":1486,"gpus":1487,"featured_at":1488},119,"knMeYs64z88","IMAGE","flux-2-klein",{"id":378,"name":1411,"owner_handle":7,"is_online":1402},"gP7X7RCxYS5aaSwPyDvHsw",6913,{"host_id":1415,"hostname":113,"provider_id":378,"gpus":1480,"gpu":14
20615},[],[1482],"https://storage.googleapis.com/inference-club-media-public/output_image/1/a299aee985ef401ca641218507f58f4a/image-0.png",[],"a tulip","2026-06-07T16:49:08.345150Z","2026-06-13T05:26:31.196421Z",[1427,1428],"2026-06-13T05:26:31.196224Z",{"id":1490,"public_id":1491,"inference_type":1492,"status":1408,"model_name":1493,"provider":1494,"owner":7,"github_login":7,"is_owner":1402,"visibility":1412,"share_token":1495,"star_count":1437,"is_starred":1402,"is_bookmarked":1402,"is_featured":1388,"latency_ms":1496,"gpu_label":1415,"host":1497,"usage":1415,"audio_seconds":1415,"audio_url":1415,"output_audio_url":1415,"image_count":1415,"image_urls":1499,"input_image_url":1500,"input_image_urls":1501,"model_url":1502,"mesh":1503,"video_url":1415,"video":1415,"cover_image_url":1415,"prompt_preview":113,"response_preview":113,"message_count":1437,"streamed":1402,"has_reasoning":1402,"created_on":1516,"modified_on":1517,"gpus":1518,"featured_at":1519},128,"5CsVxQsVvcY","MESH","trellis-2",{"id":378,"name":1411,"owner_handle":7,"is_online":1402},"wKKEcUyp4mVSg48l2_ICEg",72900,{"host_id":1415,"hostname":113,"provider_id":378,"gpus":1498,"gpu":1415},[],[],"https://storage.googleapis.com/inference-club-media-public/input_image/1/7ded3ec8d5ee42a5bbe3d6373dbbfad0/image.png",[],"https://storage.googleapis.com/inference-club-media-public/output_model/1/1584f16cb633473eb28ed41b2cb23a3f/model.glb",{"seed":1504,"faces":1505,"formats":1506,"variant":1508,"vertices":1509,"resolution":1510,"timing_sec":1511,"texture_size":1514,"pipeline_type":1510,"decimation_target":1515},42,477208,[1507],"glb","bf16",314050,"512",{"bake":1512,"sample":1513},7.58,26.78,2048,500000,"2026-06-08T05:10:38.900815Z","2026-06-13T05:26:25.805645Z",[1427,1428],"2026-06-13T05:26:25.805349Z",{"id":1521,"public_id":1522,"inference_type":1523,"status":1408,"model_name":1524,"provider":1525,"owner":7,"github_login":7,"is_owner":1402,"visibility":1412,"share_token":1526,"star_count":1437,"is_starred":1402,"is_bookmarked":1402,"is_featured":1388,"latency_ms":1527,"gpu_label":1415,"host":1528,"usage":1415,"audio_seconds":1530,"audio_url":1415,"output_audio_url":1415,"image_count":1415,"image_urls":1531,"input_image_url":1532,"input_image_urls":1533,"model_url":1415,"mesh":1415,"video_url":1534,"video":1535,"cover_image_url":1415,"prompt_preview":1539,"response_preview":113,"message_count":378,"streamed":1402,"has_reasoning":1402,"created_on":1540,"modified_on":1541,"gpus":1542,"featured_at":1543},175,"RMOQCU6jbpg","VIDEO","ltx-2",{"id":378,"name":1411,"owner_handle":7,"is_online":1402},"aXGFSSA44_IWu2g_wYyfRg",94401,{"host_id":1415,"hostname":113,"provider_id":378,"gpus":1529,"gpu":1415},[],5.042,[],"https://storage.googleapis.com/inference-club-media-public/input_image/1/974f460b5d454a638544a4d5d9f51abc/first-frame.png",[],"https://storage.googleapis.com/inference-club-media-public/output_video/1/bceb37a3ab6f48b7a530e7a359892e42/video.mp4",{"seconds":1530,"width":1536,"height":1537,"fps":1064,"num_frames":1538,"seed":1504},1280,704,121,"a monk in bright orange robes with a shaved head walks gently from behind the camera toward the temple in the forest, holding wood and other items gathered from the forest. His footsteps are light on the ground, sounds of tropical birds in the background. the camera stays still a…","2026-06-10T06:49:27.741810Z","2026-06-13T05:24:26.088466Z",[1427,1428],"2026-06-13T05:24:26.088176Z",["Reactive",1545],{"$snuxt-i18n-meta":1546,"$sappMeta":1415,"$simage-lightbox":1415,"$simage-lightbox-list":1547,"$simage-lightbox-index":1437},{},[],["Set"],["ShallowReactive",1550],{"home:featured":1415,"home:featured-requests":1415},"/",{"player":1553,"auth":1558},{"queue":1554,"index":1555,"order":1556,"shuffle":1402,"repeat":1557,"playing":1402,"currentTime":1437,"duration":1437,"volume":378,"queueVersion":1437},[],-1,[],"off",{"user":1415,"isAuthenticated":1402,"ready":1402}]</script>
vendor: 1 bytes, line 206
206
207<script>window.__NUXT__={};window.__NUXT__.config={public:{apiBase:"https://api.inference.club",content:{wsUrl:""},mdc:{components:{prose:true,map:{}},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}}},"nuxt-scripts":{version:"",defaultScriptOptions:{trigger:"onNuxtReady"}},i18n:{baseUrl:"https://inference.club",defaultLocale:"en",defaultDirection:"ltr",strategy:"prefix_except_default",lazy:true,rootRedirect:"",routesNameSeparator:"___",defaultLocaleRouteNameSuffix:"default",skipSettingLocaleOnNavigate:false,differentDomains:false,trailingSlash:false,locales:[{code:"en",language:"en-US",name:"English",files:[{path:"/app/i18n/locales/en.json",cache:""}]},{code:"zh",language:"zh-CN",name:"中文",files:[{path:"/app/i18n/locales/zh.json",cache:""}]},{code:"ja",language:"ja-JP",name:"日本語",files:[{path:"/app/i18n/locales/ja.json",cache:""}]},{code:"ru",language:"ru-RU",name:"Русский",files:[{path:"/app/i18n/locales/ru.json",cache:""}]},{code:"fr",language:"fr-FR",name:"Français",files:[{path:"/app/i18n/locales/fr.json",cache:""}]},{code:"ko",language:"ko-KR",name:"한국어",files:[{path:"/app/i18n/locales/ko.json",cache:""}]},{code:"es",language:"es-ES",name:"Español",files:[{path:"/app/i18n/locales/es.json",cache:""}]}],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_locale",cookieSecure:false,fallbackLocale:"",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",switchLocalePathLinkSSR:false,autoImportTranslationFunctions:false,typedPages:true,typedOptionsAndMessages:false,generatedLocaleFilePathFormat:"absolute",alternateLinkCanonicalQueries:false,hmr:true},multiDomainLocales:false,domainLocales:{en:{domain:""},zh:{domain:""},ja:{domain:""},ru:{domain:""},fr:{domain:""},ko:{domain:""},es:{domain:""}}}},app:{baseURL:"/",buildId:"f2683bb8-d337-4dfa-9436-ccdcd24c0bde",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script>
207</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.