Kamino
Solana' s Borrowing, Lending, Market Making, and Leverage venue. Earn yield on SOL, USDC, JUP, JLP, JitoSOL, and more
function a(p){if(p==null)return"/";p=""+p;if(""===p)return"/";return"/"===p.charAt(0)?p:"/"+p}
function u(p){if(p==null)return p;p=""+p;if(!p||p.charAt(p.length-1)==="/")return p.slice(0,-1);return p}
function i(p){if(p==null)return p;p=""+p;if(6<=p.length&&p.substring(p.length-6)==="/index")return p.substring(0,p.length-6);if("index"===p)return"";return p}
var p=(location.pathname||"").split("?")[0].split("#")[0]||"";
if(b)if(p===b)p="";else if(0===p.indexOf(b+"/"))p=p.substring(b.length);
p=a(p);p=u(p);p=i(p);p=""===p||"index"===p?"/":a(p);
document.documentElement.setAttribute("data-current-path",p);
}();!function(){
function read(){try{
var e=performance.getEntriesByType?performance.getEntriesByType("navigation"):[];
var st=(e[0]&&e[0].serverTiming)||[];
var g={};
for(var i=0;i<st.length;i++){var n=st[i].name,d=st[i].description;if(!d)continue;try{d=decodeURIComponent(d)}catch(x){}
if(n==="country")g.country=d;else if(n==="region")g.region=d;else if(n==="continent")g.continent=d;}
var w=window;w.mintlify=w.mintlify||{};w.mintlify.geo=g;
}catch(x){}}
read();document.addEventListener("DOMContentLoaded",read);
}();(function(a,b){try{let c=document.getElementById("banner")?.innerText;if(c){for(let d=0;d<localStorage.length;d++){let e=localStorage.key(d);if(e?.endsWith(a)&&localStorage.getItem(e)===c)return void document.documentElement.setAttribute(b,"hidden")}document.documentElement.setAttribute(b,"visible");return}for(let c=0;c<localStorage.length;c++){let d=localStorage.key(c);if(d?.endsWith(a)&&localStorage.getItem(d))return void document.documentElement.setAttribute(b,"hidden")}document.documentElement.setAttribute(b,"visible")}catch(a){document.documentElement.setAttribute(b,"hidden")}})(
"bannerDismissed",
"data-banner-state",
){"@context":"https://schema.org","@type":"WebSite","name":"Kamino Docs","creator":{"@type":"Organization","name":"Mintlify","url":"https://mintlify.com"}}((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","isDarkMode","light",null,["dark","light","true","false","system"],{"true":"dark","false":"light","dark":"dark","light":"light"},true,false)(function(){try{var f=null;var v=f||localStorage.getItem("isDarkMode");if(v==='true')v='dark';else if(v==='false')v='light';if(v!=='light'&&v!=='dark'&&v!=='system')v="light";document.documentElement.setAttribute("data-theme-preference",v)}catch(e){}})();Documentation IndexFetch the complete documentation index at: /docs/llms.txtUse this file to discover all available pages before exploring further.:root{--banner-height:0px!important}(self.__next_s=self.__next_s||[]).push([0,{"children":"(function g(a,b,c,d,e){try{let f,g,h=[];try{h=window.location.pathname.split("/").filter(a=\u003e""!==a\u0026\u0026"global"!==a).slice(0,2)}catch{h=[]}let i=h.find(a=\u003ec.includes(a)),j=[];for(let c of(i?j.push(i):j.push(b),j.push("global"),j)){if(!c)continue;let b=a[c];if(b?.content){f=b.content,g=c;break}}if(!f)return void document.documentElement.setAttribute(d,"hidden");let k=!0,l=0;for(;l\u003clocalStorage.length;){let a=localStorage.key(l);if(l++,!a?.endsWith(e))continue;let b=localStorage.getItem(a);if(b\u0026\u0026b===f){k=!1;break}g\u0026\u0026(a.startsWith(lang:${g}_)||!a.startsWith("lang:"))\u0026\u0026(localStorage.removeItem(a),l--)}document.documentElement.setAttribute(d,k?"visible":"hidden")}catch(a){console.error(a),document.documentElement.setAttribute(d,"hidden")}})(\n {},\n "en",\n [],\n "data-banner-state",\n "bannerDismissed",\n)","id":"_mintlify-banner-script"}]):root {
--primary: 8 42 86;
--primary-light: 190 227 254;
--primary-dark: 8 42 86;
--tooltip-foreground: 255 255 255;
--background-light: 255 255 255;
--background-dark: 13 13 16;
--gray-50: 243 244 245;
--gray-100: 238 239 240;
--gray-200: 222 223 225;
--gray-300: 206 207 208;
--gray-400: 158 159 161;
--gray-500: 112 113 114;
--gray-600: 80 81 82;
--gray-700: 62 63 65;
--gray-800: 37 38 39;
--gray-900: 23 24 25;
--gray-950: 10 11 12;
}
(function() {
function loadKatex() {
const link = document.querySelector('link[href="https://d4tuoctqmanu0.cloudfront.net/katex.min.css"]');
if (link) link.rel = 'stylesheet';
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', loadKatex);
} else {
loadKatex();
}
})();
(self.__next_s=self.__next_s||[]).push([0,{"suppressHydrationWarning":true,"children":"(function(a,b,c,d){var e;let f,g="mint"===d||"linden"===d?"sidebar":"sidebar-content",h=(e=d,f="navbar-transition","maple"===e\u0026\u0026(f+="-maple"),f),[i,j]=(()=\u003e{switch(d){case"almond":return["[--scroll-mt:2.5rem]","[--scroll-mt:2.5rem]"];case"luma":return["lg:[--scroll-mt:6rem]","lg:[--scroll-mt:6rem]"];case"sequoia":return["lg:[--scroll-mt:8.5rem]","lg:[--scroll-mt:11rem]"];default:return["lg:[--scroll-mt:9.5rem]","lg:[--scroll-mt:12rem]"]}})();function k(){document.documentElement.classList.add(i)}let l=document.documentElement.getAttribute("data-banner-state"),m=null!=l?"visible"===l:b;function n(a){let b=m?calc(var(--mintlify-slot-header-height, ${a-2.5}rem) + var(--banner-height, 2.5rem)):var(--mintlify-slot-header-height, ${a}rem);document.getElementById(g)?.style.setProperty("top",b)}function o(a){let b=m?calc(100vh - var(--mintlify-slot-header-height, ${a-2.5}rem) - var(--banner-height, 2.5rem)):calc(100vh - var(--mintlify-slot-header-height, ${a}rem));document.getElementById(g)?.style.setProperty("height",b)}function p(a,b){!a\u0026\u0026b||a\u0026\u0026!b?(k(),document.documentElement.classList.remove(j)):a\u0026\u0026b\u0026\u0026(document.documentElement.classList.add(j),document.documentElement.classList.remove(i))}switch(d){case"mint":n(c),p(a,m);break;case"palm":case"aspen":case"sequoia":n(c),o(c),p(a,m);break;case"luma":k();break;case"linden":n(c),m\u0026\u0026k();break;case"almond":k(),n(c),o(c)}let q=function(){let a=document.createElement("style");return a.appendChild(document.createTextNode(",::before,::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(a),function(){window.getComputedStyle(document.body),setTimeout(()=\u003e{document.head.removeChild(a)},1)}}();("requestAnimationFrame"in globalThis?requestAnimationFrame:setTimeout)(()=\u003e{let a;a=!1,a=window.scrollY\u003e50,document.getElementById(h)?.setAttribute("data-is-opaque",${!!a}),q()})})(\n true,\n false,\n (function l(a,b,c){let d=document.documentElement.getAttribute("data-banner-state"),e=2.5!!(null!=d?"visible"===d:b),f=3*!!a,g=4,h=e+g+f;switch(c){case"mint":case"palm":break;case"aspen":f=2.5*!!a,g=3.5,h=e+f+g;break;case"luma":g=3,h=e+g;break;case"linden":g=4,h=e+g;break;case"almond":g=3.5,h=e+g;break;case"sequoia":f=3*!!a,g=3,h=e+g+f}return h})(true, false, "mint"),\n "mint",\n)","id":"_mintlify-scroll-top-script"}])Skip to main content(function g(a,b,c,d){try{if(window.matchMedia("(max-width: 1024px)").matches||!d){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed"),d||localStorage.setItem(a,"false");return}let e=localStorage.getItem(a);if(null===e){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed");return}let f=JSON.parse(e),g=localStorage.getItem(b),h=null!==g?JSON.parse(g):368;document.documentElement.style.setProperty(c,f?h+"px":"0px"),document.documentElement.setAttribute("data-assistant-state",f?"open":"closed")}catch(a){document.documentElement.style.setProperty(c,"0px"),document.documentElement.setAttribute("data-assistant-state","closed")}})(
"chat-assistant-sheet-open",
"chat-assistant-sheet-width",
"--assistant-sheet-width",
true
)Kamino Docs home pageDocsSearch...⌘KAsk AssistantSupportOpen AppOpen AppSearch...NavigationOverviewProductsEarnBorrowMultiplySwapSecurityRiskSafeguardsKMNOLearnResources(function () {
try {
if (window.__mintlifyInitialSidebarScrollDone) return;
window.__mintlifyInitialSidebarScrollDone = true;
var path = (window.location.pathname || '/').split('#')[0].split('?')[0];
if (path.endsWith('/index')) path = path.slice(0, -6);
else if (path === 'index') path = '';
var candidates = [];
if (path) candidates.push(path);
if (path.startsWith('/')) candidates.push(path.slice(1));
else candidates.push('/' + path);
var item = null;
for (var i = 0; i < candidates.length && !item; i++) {
var matches = document.querySelectorAll('[id="' + candidates[i].replace(/"/g, '\\"') + '"]');
for (var j = 0; j < matches.length; j++) {
if (matches[j].closest('#sidebar, #sidebar-content')) {
item = matches[j];
break;
}
}
}
if (!item) return;
var parent = item.parentElement;
while (parent) {
var style = getComputedStyle(parent);
if (style.overflowY === 'auto' || style.overflowY === 'scroll') break;
parent = parent.parentElement;
}
if (!parent) return;
var parentRect = parent.getBoundingClientRect();
var itemRect = item.getBoundingClientRect();
if (itemRect.top >= parentRect.top && itemRect.bottom <= parentRect.bottom) return;
var itemTopRelative = itemRect.top - parentRect.top + parent.scrollTop;
parent.scrollTop = itemTopRelative - parentRect.height / 2 + itemRect.height / 2;
} catch (e) {}
})();{"@context":"https://schema.org","@type":["Article","TechArticle"],"headline":"Overview","name":"Overview","description":"Complete documentation for Kamino Finance: Earn yield with automated vaults, Borrow and Lend, Multiply for leveraged positions, and concentrated liquidity on Solana. Developer Buildkit with REST API and TypeScript SDK. Curator tools for vault creation and management.","url":"https://kamino.com/docs","mainEntityOfPage":{"@type":"WebPage","@id":"https://kamino.com/docs"},"dateModified":"2026-07-04T18:30:41.400Z","keywords":"kamino, kamino finance, solana defi, klend, lending markets, kamino earn, liquidity vaults, kamino borrow, kamino multiply, leveraged positions, ktokens, concentrated liquidity, clmm, raydium, kamino api, kamino sdk, klend-sdk, typescript sdk, rest api, flash loans, emode, cross mode, isolated mode, auto-compound, auto-rebalance, auto-swap, kamino curators, vault creation, kamino cli, kamino manager, defi yield, solana lending, solana borrowing, oracle aggregator, pyth, switchboard, scope, kswap, referral program, farm rewards, institutional defi, buildkit","publisher":{"@type":"Organization","name":"Kamino Docs","logo":{"@type":"ImageObject","url":"https://mintcdn.com/kamino-3d73a151/EHpt5rRzyV5R3dXt/images/logo/light.svg?fit=max&auto=format&n=EHpt5rRzyV5R3dXt&q=85&s=41146f93128a10f923dfe0829b84ceeb"}},"isPartOf":{"@type":"WebSite","name":"Kamino Docs","url":"https://kamino.com/docs"}}document.documentElement.setAttribute('data-page-mode', "custom");(self.__next_s=self.__next_s||[]).push([0,{"suppressHydrationWarning":true,"children":"(function m(a,b,c){if(!document.getElementById("footer")?.classList.contains("advanced-footer")||"maple"===b||"willow"===b||"almond"===b||"luma"===b||"sequoia"===b)return;let d=document.documentElement.getAttribute("data-banner-state"),e=null!=d?"visible"===d:c,f=document.documentElement.getAttribute("data-page-mode"),g=document.getElementById("navbar"),h=document.getElementById("navigation-items"),i=document.getElementById("sidebar"),j=document.getElementById("footer"),k=document.getElementById("table-of-contents-content"),l=document.getElementById("banner"),m=e?l?.offsetHeight??40:0,n=getComputedStyle(document.documentElement).getPropertyValue("--mintlify-slot-header-height").trim(),o=((n.endsWith("px")?parseFloat(n):0)||(e?a-2.5:a)16)+m;if(!j||"center"===f)return;let p=j.getBoundingClientRect().top,q=window.innerHeight-p,r=(h?.clientHeight??0)+o+32("mint"===b||"linden"===b);if(i\u0026\u0026h)if(q\u003e0){let a=Math.max(0,r-p);i.style.bottom=${q}px,i.style.top=${o-a}px}else i.style.bottom="",i.style.top=e?calc(var(--mintlify-slot-header-height, ${a-2.5}rem) + var(--banner-height, 2.5rem)):var(--mintlify-slot-header-height, ${a}rem),i.style.height="auto";k\u0026\u0026g\u0026\u0026(q\u003e0?k.style.top="custom"===f?${g.clientHeight-q}px:${40+g.clientHeight-q}px:k.style.top="")})(\n (function l(a,b,c){let d=document.documentElement.getAttribute("data-banner-state"),e=2.5*!!(null!=d?"visible"===d:b),f=3*!!a,g=4,h=e+g+f;switch(c){case"mint":case"palm":break;case"aspen":f=2.5*!!a,g=3.5,h=e+f+g;break;case"luma":g=3,h=e+g;break;case"linden":g=4,h=e+g;break;case"almond":g=3.5,h=e+g;break;case"sequoia":f=3*!!a,g=3,h=e+g+f}return h})(true, false, "mint"),\n "mint",\n false,\n)","id":"_mintlify-footer-and-sidebar-scroll-script"}])@import url('https://fonts.googleapis.com/css2?family=Inter:[email protected]&display=swap');
/* Aeonik (self-hosted variable font, all weights in one file). Uses absolute URLs (see the dual src below) so it works in both local dev and under the /docs subpath. / @font-face { font-family: 'Aeonik'; / Two sources. PRODUCTION URL IS LISTED FIRST on purpose: in prod the site lives under the /docs basePath, so /docs/fonts/ returns the real woff2. The bare /fonts/ URL must NOT be first — in prod it returns the app's HTML page (HTTP 200, text/html), which the browser downloads and fails to decode as a font, wasting a round-trip and causing a visible Inter->Aeonik flash. The /fonts/ URL stays second as the local-dev fallback (dev serves assets at root). */ src: url('/docs/fonts/aeonik-variable.woff2') format('woff2'), url('/fonts/aeonik-variable.woff2') format('woff2'); font-weight: 100 900; font-style: normal; font-display: swap; }
/* Apply Aeonik to the WHOLE earn + borrow pages. Recyclable: add a page's wrapper id to this list to extend it. !important + id specificity beats the global --font-body rule that otherwise forces Inter on every element. */ #earn-page, #earn-page *, #borrow-page, #borrow-page *, #learn-page, #learn-page , #products-page, #products-page * { font-family: 'Aeonik', var(--font-body) !important; } / Keep code blocks monospace (more specific than "#earn-page *"). */ #earn-page pre, #earn-page code, #earn-page pre *, #earn-page code *, #borrow-page pre, #borrow-page code, #borrow-page pre *, #borrow-page code * { font-family: var(--font-jetbrains-mono), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; }
/* Hero title (earn): fluid size in rem/vw, no fixed px. Tailwind's JIT won't build a clamp() arbitrary value, so it lives here. Desktop floor is 8.125rem (=130px at a 16px root) and it scales with viewport width, capped. */ .earn-hero-title { font-size: clamp(5.5rem, 13vw, 8rem); line-height: 1.05; } @media (min-width: 1024px) { .earn-hero-title { font-size: clamp(8.125rem, 10vw, 11rem); } }
/* Borrow hero dots graphic. Sized here because Mintlify's prebuilt CSS omits the h-40/h-48 height utilities, so the SVG would otherwise render at natural size. Dark mode inverts the black dots to white via filter (dark:invert is also absent). */ .borrow-hero-dots { height: 9rem; width: auto; } @media (min-width: 640px) { .borrow-hero-dots { height: 11rem; } } .dark .borrow-hero-dots { filter: invert(1); }
/* Products hero banner. Horizontal gradient: transparent on the left (so the heading has no colour behind it) fading into Kamino blue on the right. Dots in the top-right corner. Defined here because Mintlify's prebuilt CSS omits the arbitrary gradient / fixed-height utilities. */ .products-hero { position: relative; border-radius: 1rem; overflow: hidden; min-height: 168px; display: flex; align-items: center; padding: 2rem 2.5rem; background: linear-gradient(to right, rgba(198, 244, 255, 0) 45%, #C6F4FF 100%); } .dark .products-hero { background: linear-gradient(to right, rgba(29, 58, 102, 0) 45%, #1d3a66 100%); } .products-hero-dots { position: absolute; top: 0.9rem; right: 1.25rem; height: 5rem; width: auto; opacity: 0.9; pointer-events: none; } .dark .products-hero-dots { filter: invert(1); }
/* How It Works slide: pure-CSS scroll-snap carousel (no JS). Snap behaviour is set via Tailwind (snap-x/snap-mandatory/snap-center); this only hides the scrollbar so it reads as a clean slide. */ .hiw-track { scrollbar-width: none; -ms-overflow-style: none; } .hiw-track::-webkit-scrollbar { display: none; }
:root { --font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif; --background-dark: #091326; }
html, body { font-family: var(--font-body) !important; }
html.dark body .dark:bg-background-dark{ background-color: #091326 !important; }
/* Curator logo light/dark mode switching */ .curator-logo .logo-dark { display: none; }
.curator-logo .logo-light { display: inline-block; }
html.dark .curator-logo .logo-light { display: none; }
html.dark .curator-logo .logo-dark { display: inline-block; }
/* Curator logo marquee: pure-CSS, GPU-composited infinite scroll. The track holds three identical copies, so translateX(-33.333%) wraps seamlessly with a buffer copy. Pauses on hover; disabled under reduced-motion. Edges fade via a mask. */ .logo-marquee { width: 100%; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 32px, #000 calc(100% - 32px), transparent); mask-image: linear-gradient(90deg, transparent, #000 32px, #000 calc(100% - 32px), transparent); }
/* Curator card title link: arrow reveals on hover (scoped, not Tailwind group-hover, which does not reliably reach the Mintlify Icon element). */ .curator-card-arrow { color: #0ea5e9; opacity: 0; transition: opacity 0.2s ease, transform 0.2s ease; }
.curator-card-link:hover .curator-card-arrow, .curator-card-link:focus-visible .curator-card-arrow { opacity: 1; transform: translateX(3px); }
/* Toolchain code block fills the column height to match the left card list. The inner scroll area (2nd child; 1st is the absolute copy button) must grow too, otherwise the filled space is blank and blends into the white section. */ #toolchain-code .code-block { flex: 1 1 auto; margin: 0; display: flex; flex-direction: column; }
#toolchain-code .code-block > div:nth-child(2) { flex: 1 1 auto; }
/* Path-card hover arrow: revealed when the parent .group card is hovered. */ .hero-card-arrow { opacity: 0; transition: opacity 0.2s ease, transform 0.2s ease; }
.group:hover .hero-card-arrow, .hero-card-arrow:focus-visible { opacity: 1; transform: translateX(2px); }
.logo-marquee-track { display: flex; align-items: center; width: max-content; animation: curator-logo-scroll 28s linear infinite; will-change: transform; }
.logo-marquee:hover .logo-marquee-track { animation-play-state: paused; }
@keyframes curator-logo-scroll { from { transform: translateX(0); } to { transform: translateX(-33.333%); } }
@media (prefers-reduced-motion: reduce) { .logo-marquee { overflow-x: auto; -webkit-mask-image: none; mask-image: none; } .logo-marquee-track { animation: none; } }
/* Target specific elements that need Inter font */ p, h1, h2, h3, h4, h5, h6, span:not(.shiki *), div:not(.code-block *), .prose, .prose p, .prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6, nav, header, footer, aside, section, article { font-family: var(--font-body) !important; }
/* GitHub example link */ #github-example-link { font-size: 14px; margin-left: 6px; } #github-example-link svg{ margin-right: 5px; }
/* Additional Resources heading */ h2.flex.whitespace-pre-wrap.group.font-semibold#additional-resources { margin-top: 2rem !important; }
/* First H2 on a page (sits directly under the frontmatter title) — reduce the Tailwind Typography 2em default to a tighter 1em. */ .prose h2.flex.whitespace-pre-wrap.group.font-semibold:first-of-type { margin-top: 1em !important; }
.mint-mt-12.tools { margin-top: 0rem; }
/* Callout fit-content width */ .callout { width: fit-content !important; }
/* Homepage path cards: subtle shadow that lifts on hover */ .card-shadow { box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04); } .card-shadow:hover { box-shadow: 0 12px 28px rgba(15, 23, 42, 0.10); transform: translateY(-2px); }
/* Doc page intro/landing video: centered, 40% width */ .doc-intro-video { display: block; width: 40%; margin-inline: auto; }
/* Wide variant for landscape landing-page videos */ .doc-intro-video--wide { width: 100%; aspect-ratio: 1802 / 1050; }
/* In-step screenshots (e.g. vault creation): 60% width, centered */ .vault-step-img { display: block; width: 60%; margin-inline: auto; }
/* Make callout strong tags inherit color instead of black */ [data-component-part="callout-content"] strong { color: inherit !important; }
/* Make inline inside callouts inherit color and font-size. The light-mode ".prose code" rule above is (0,3,1) specificity, so we add ".prose" here to beat it at (0,4,1). Dark mode handled symmetrically. */ :root:not(.dark) .prose [data-component-part="callout-content"] code, .dark .prose [data-component-part="callout-content"] code, [data-component-part="callout-content"] code { color: inherit !important; font-size: inherit !important; }
/* Key Data Structures section width constraint */ .constrain-data-structures .tabs.tabs.tab-container .code-block { max-width: 65% !important; }
.constrain-data-structures-borrow .tabs.tabs.tab-container .code-block { max-width: 75% !important; }
/* Welcome page width rules removed - was causing mobile layout issues */
/* Clamp the custom-mode homepage to the viewport so full-width sections don't overflow horizontally on mobile (same fix as #brand-page). */ #docs-welcome-page { max-width: 100vw; overflow-x: hidden; }
/* Exempt brand page sections from width constraint */ #brand-page .w-full { width: 100% !important; }
/* Clamp the custom-mode brand page to the viewport so full-width sections don't overflow horizontally on mobile (content was running off the right). */ #brand-page { max-width: 100vw; overflow-x: hidden; }
/* Brand page cards keep light backgrounds in both modes (no dark: variant on
the card bg), so gray text inside those cards must stay dark in dark mode
or it gets washed out (e.g., hex codes on a #FCFCFC card). Mintlify
prefixes Tailwind utilities with mint-, so the actual class names are
.mint-text-gray-*. Scoped to #brand-page so the rest of the site's dark
mode is untouched. */
html.dark #brand-page .mint-text-gray-900 { color: #111827 !important; }
html.dark #brand-page .mint-text-gray-700 { color: #374151 !important; }
html.dark #brand-page .mint-text-gray-600 { color: #4B5563 !important; }
/* Section headings (h2) sit on the dark page background, not the light cards, so they must follow dark mode. Element-qualified selector outranks the broad .mint-text-gray-900 override above; swatch-card text (h3/code/p) stays dark. */ html.dark #brand-page h2.mint-text-gray-900 { color: #F3F4F6 !important; }
/* Inline on the light-bg brand cards: Mintlify's dark-mode :not(pre)>code rule paints text near-white and adds a faint white background, washing out the hex codes. Restore light-mode colors. */ html.dark #brand-page :not(pre) > code { color: #111827 !important; background-color: rgb(243 244 246 / 0.5) !important; border-color: transparent !important; }
/* Brand page copy buttons: in dark mode Mintlify's FontAwesome icons (rendered via background-color) default light, washing out on light-bg cards. Force dark. Dark-bg card icons use !bg-white explicitly, so they're unaffected. / html.dark #brand-page button:not([class="bg-gray-800"]) svg, html.dark #brand-page button:not([class*="bg-gray-800"]) [class*="fa-"] { background-color: #374151 !important; color: #374151 !important; fill: #374151 !important; }
/* Cards Styling */ .card { border: 1px solid #E6EAEE; text-align: left; min-height: 160px; box-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.1); transition: ease-in-out 0.2s; }
/* Knowledge Base Cards - Specific styling */ #knowledge-base-cards .card { min-height: 80px; }
#knowledge-base-cards svg { color: #082A56 !important; fill: #082A56 !important; }
.dark #knowledge-base-cards svg { color: #BEE3FE !important; fill: #BEE3FE !important; }
.integration-guides .card { height: 100%; display: flex; flex-direction: column; justify-content: space-between; }
.tools .card .text-base { font-size: 0.85rem; }
.card h2 { text-align: left; }
/* Optional: tweak spacing on smaller screens */ @media (max-width: 765px) { .integration-guides .card { height: auto; margin: 0 auto; } }
/* Hover only on clickable cards (those rendered as links) */ a.card:hover { border-color: #3E56C0; box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.1); transform: translateY(-2px); transition: ease-in-out 0.2s; }
.dark a.card:hover { border-color: #BEE3FE; box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.1); transform: translateY(-2px); transition: ease-in-out 0.2s; }
/* Primary Button */ .btn-primary { background: #082A56; box-sizing: border-box; color: white; padding: 8px 16px; border-radius: 12px; text-decoration: none; font-weight: 600; font-size: 14px; }
.btn-primary:hover { opacity: 0.9; }
.dark .btn-primary { background: #082A56; color: white; }
.dark .btn-primary:hover { opacity: 0.9; }
/* Sidebar */ #sidebar-title { font-size: 14px; font-weight: 600; }
/* Header at top of page - margin needed to move it down */ #header { margin-bottom: 1rem; }
/* Page divider */ .page-divider { border-bottom: 1px solid rgba(229, 231, 235, 0.3); margin-bottom: 2rem; }
/* Shiki code block styles - have not touched anything from here down */ :root { --shiki-light: #24292f; --shiki-light-bg: #ffffff; --shiki-dark: #e6edf3; --shiki-dark-bg: #0d1117; }
.constrained-width { max-width: 700px !important; }
.constrained-width .mdx-content { max-width: 700px !important; margin: 0 auto !important; }
/* Earn/Borrow dev overviews (frame mode): use full content width. Scoped to those pages via their own wrapper ids so no other page is affected. Removes the empty side panel and the ~700px content cap so the page's own max-w-[1200px] sections can expand. / body:has(#earn-page) #content-side-layout, body:has(#borrow-page) #content-side-layout, body:has(#learn-page) #content-side-layout, body:has(#products-page) #content-side-layout { display: none !important; } body:has(#earn-page) .mdx-content, body:has(#borrow-page) .mdx-content, body:has(#learn-page) .mdx-content, body:has(#products-page) .mdx-content { max-width: none !important; } / The real width cap in frame mode is Mintlify's content wrapper (the direct parent of #content-container), capped at 1472px with 64px side margins and only released in custom mode. Frame mode keeps it, squeezing the right side. Override it on these pages so the content column can extend right; the left nav padding on #content-area stays, so the sidebar is unaffected. */ body:has(#earn-page) :has(> #content-container), body:has(#borrow-page) :has(> #content-container), body:has(#learn-page) :has(> #content-container), body:has(#products-page) :has(> #content-container) { max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
/* User Guides landing (learn/guides): card illustration panel. Sized here because Mintlify's prebuilt CSS omits fixed height/object-fit utilities (same reason as .borrow-hero-dots). The 800x800 art centers on a Kamino-blue panel. */ .learn-card-media { aspect-ratio: 1 / 1; background: #C6F4FF; overflow: hidden; } .learn-card-media img { width: 100%; height: 100%; object-fit: cover; }
.mt-8 { margin-top: 0 !important; }
[data-current-page="/earn"] .px-5.lg:pr-10.lg:pl-[5.5rem] { padding-left: 2.75rem !important; }
.code-block, .shiki { /* background-color: #ffffff !important; */ color: #24292f !important; padding: 8px !important; border-radius: 8px !important; border: 1px solid #d1d9e0 !important; }
.code-block.bg-transparent, .shiki.bg-transparent, .code-block.dark:bg-transparent, .shiki.dark:bg-transparent { background-color: #ffffff !important; border: 1px solid #d1d9e0 !important; }
.code-block *, .shiki * { border: none !important; }
.dark .code-block, .dark .shiki { background-color: #0d1117 !important; color: #e6edf3 !important; border: 1px solid #30363d !important; }
.dark .code-block.bg-transparent, .dark .shiki.bg-transparent, .dark .code-block.dark:bg-transparent, .dark .shiki.dark:bg-transparent { background-color: #0d1117 !important; border: 1px solid #30363d !important; }
.dark .code-block *, .dark .shiki * { border: none !important; }
.code-group .code-block, .code-group .shiki { border: none !important; }
.dark .code-group .code-block, .dark .code-group .shiki { border: none !important; }
.dark:bg-codeblock:is(.dark *) { background-color: #0d1117 !important; }
.code-block span, .shiki span { opacity: 1 !important; }
.dark .code-block *, .dark .shiki * { color: #e6edf3 !important; opacity: 1 !important; }
/* Aave-style code blocks - light mode only */ :root:not(.dark) .code-block { border: none !important; }
:root:not(.dark) .code-block .rounded-2xl { background: #fcfbfb !important; border: none !important; }
:root:not(.dark) .prose pre { background: #fcfbfb !important; border: none !important; border-radius: 8px !important; padding: 1rem !important; margin: 1rem 0 !important; overflow-x: auto; font-family: 'Monaco', 'Consolas', 'Courier New', monospace !important; font-size: 14px !important; line-height: 1.5 !important; }
:root:not(.dark) .prose code { font-family: 'Monaco', 'Consolas', 'Courier New', monospace !important; background: transparent !important; padding: 0 !important; color: #334155 !important; }
:root:not(.dark) .prose pre code { color: #00827C !important; font-weight: 400 !important; }
/* JetBrains Mono font stack for light mode code blocks like Aave */ :root:not(.dark) .code-block .font-mono, :root:not(.dark) .code-block pre, :root:not(.dark) .code-block code { font-family: var(--font-jetbrains-mono), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important; line-height: 1.4 !important; font-weight: 400 !important; }
/* Override black text with medium gray for light mode / :root:not(.dark) .shiki span[style="color: rgb(31, 35, 40)"] { color: rgb(99, 97, 97) !important; /* Medium gray for default black text */ }
:root:not(.dark) .shiki span[style*="color: rgb(149, 56, 0)"] { color: rgb(99, 97, 97) !important; /* Medium gray for parameters */ }
:root:not(.dark) .shiki span[style*="color: rgb(10, 48, 105)"] { color: #00827C !important; /* Teal for package strings */ }
:root:not(.dark) .shiki span[style*="color: rgb(207, 34, 46)"] { color: #d1521b !important; /* Lighter red for keywords like const, await */ }
:root:not(.dark) .shiki span[style*="color: rgb(130, 80, 223)"] { color: #6a68da !important; /* Purple for functions */ }
:root:not(.dark) .shiki span[style*="color: rgb(5, 80, 174)"] { color: #636161 !important; /* Gray for variables */ }
:root:not(.dark) .shiki span[style*="color: rgb(110, 119, 129)"] { color: #6a7580 !important; /* Blue-gray for comments */ }
.code-block .absolute.top-3.right-4 .bg-primary-dark, .shiki .absolute.top-3.right-4 .bg-primary-dark { display: none !important; }
.code-block .bg-white { /* background-color: #ffffff !important; */ background-color: #fcfbfb; }
/* Override shiki pre background in light mode */ :root:not(.dark) [data-component-part="code-block-root"], :root:not(.dark) .code-block pre.shiki, :root:not(.dark) .shiki { background-color: #fcfbfb !important; }
.mdx-content[data-page-title="Getting Started"], .mdx-content[data-page-title="Kamino Earn Vaults: Deposit, Balance, Withdraw — Step‑by‑Step"] { margin-top: 0 !important; }
.container .search-input-container { display: flex; justify-content: center; margin-bottom: 2rem; }
.category-buttons { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
.category-button { display: inline-flex !important; align-items: center !important; gap: 6px !important; padding: 6px 12px !important; background-color: #f8f9fa !important; border: 2px solid #d1d9e0 !important; border-radius: 6px !important; font-size: 13px !important; font-weight: 500 !important; }
.dark .category-button { background-color: #21262d !important; border-color: #30363d !important; }
.contributing-section { text-align: center; }
.contributing-section p { font-size: 18px; margin-bottom: 1.5rem; }
/* Multi-level sidebar navigation indentation / / Sub-group items (L2) */ #navigation-items ul ul a.group, #navigation-items ul ul li > a, #navigation-items ul ul li > button { margin-left: 1.75rem !important; padding-left: 1rem !important; }
/* Sub-sub-group items (L3) */ #navigation-items li[data-group-tag] li[data-group-tag] > ul > li > a, #navigation-items li[data-group-tag] li[data-group-tag] > ul > li > button { margin-left: 2.75rem !important; padding-left: 1rem !important; }
/* Vertical tree connectors for nested items */ #navigation-items ul ul { position: relative; }
#navigation-items ul ul::before { content: ''; position: absolute; left: 1.55rem; top: 0; bottom: 0; width: 1px; background: rgba(148, 163, 184, 0.32); pointer-events: none; }
/* Level 3 vertical line - offset to avoid overlapping with L2 line */ #navigation-items ul ul ul::before { left: 2.55rem; }
/* Sidebar page icons: baseline 0.8rem, scale by 1.1 on hover/selected. Mintlify uses Tailwind's size-4 shorthand on sidebar icons, plus the older h-4 w-4 pair in some places — match both. */ #navigation-items svg.size-4, #navigation-items svg.h-4.w-4 { width: 0.8rem !important; height: 0.8rem !important; transition: transform 75ms ease-in-out, background-color 75ms ease-in-out; transform: scale(1); }
/* Fix alignment for navigation buttons - override items-start */ #navigation-items button.group.flex.items-start, #navigation-items a.group.flex.items-start { align-items: center !important; }
/* Fix alignment for expandable parent items */ #navigation-items button.group svg.size-4, #navigation-items button.group svg.h-4.w-4 { align-self: center !important; position: relative !important; top: 0 !important; }
/* Hover: subtle scale up */ #navigation-items a.group:hover svg.size-4, #navigation-items a.group:hover svg.h-4.w-4, #navigation-items button.group:hover svg.size-4, #navigation-items button.group:hover svg.h-4.w-4 { transform: scale(1.1); }
/* Selected page: keep the icon at the expanded scale and switch to the brand color */ #navigation-items a[aria-current="page"] svg.size-4, #navigation-items a[aria-current="page"] svg.h-4.w-4, #navigation-items li[data-active="true"] > a svg.size-4, #navigation-items li[data-active="true"] > a svg.h-4.w-4 { background-color: #082A56 !important; transform: scale(1.1); }
.dark #navigation-items a[aria-current="page"] svg.size-4, .dark #navigation-items a[aria-current="page"] svg.h-4.w-4, .dark #navigation-items li[data-active="true"] > a svg.size-4, .dark #navigation-items li[data-active="true"] > a svg.h-4.w-4 { background-color: #BEE3FE !important; transform: scale(1.1); }
/* Expanded parent groups: keep the icon in expanded state too */ #navigation-items button[aria-expanded="true"] svg.size-4, #navigation-items button[aria-expanded="true"] svg.h-4.w-4, #navigation-items button[data-active="true"] svg.size-4, #navigation-items button[data-active="true"] svg.h-4.w-4 { background-color: #082A56 !important; transform: scale(1.1); }
.dark #navigation-items button[aria-expanded="true"] svg.size-4, .dark #navigation-items button[aria-expanded="true"] svg.h-4.w-4, .dark #navigation-items button[data-active="true"] svg.size-4, .dark #navigation-items button[data-active="true"] svg.h-4.w-4 { background-color: #BEE3FE !important; transform: scale(1.1); }
/* Sidebar group headers: ALL CAPS, small, muted - no icons */ .sidebar-group-heading, .sidebar-group-header span, .sidebar-group-header > span:first-of-type { text-transform: uppercase !important; font-size: 0.65rem !important; font-weight: 500 !important; letter-spacing: 0.08em !important; color: #8b95a5 !important; }
.dark .sidebar-group-heading, .dark .sidebar-group-header span, .dark .sidebar-group-header > span:first-of-type { color: #6b7280 !important; }
.sidebar-group-header svg.sidebar-group-icon { color: #082A56 !important; transition: all 0.3s ease-in-out; }
.sidebar-group-header:hover svg.sidebar-group-icon { transform: scale(1.1); color: #082A56 !important; }
.dark .sidebar-group-header:hover svg.sidebar-group-icon { transform: scale(1.1); color: #BEE3FE !important; }
.dark .sidebar-group-header svg.sidebar-group-icon { color: #BEE3FE !important; }
[data-current-page="/earn"] .tabs .code-block { margin-top: 0.625rem !important; }
h2#earn-vaults.flex.whitespace-pre-wrap.group.font-semibold { margin-top: 0rem !important; }
h2#curated-vaults.flex.whitespace-pre-wrap.group.font-semibold { margin-top: 0rem !important; }
[data-current-page="/earn"] .tabs ul[data-component-part="tabs-list"] { margin-bottom: 0.75rem !important; }
[data-page-title="Earn Vaults"] .prose > :is(div:has(> table), table) { overflow-x: auto; display: block; }
[data-page-title="Earn Vaults"] table { border-collapse: separate; border-spacing: 0; width: 100%; border-radius: 12px; min-width: 600px; }
[data-page-title="Earn Vaults"] table thead th { background: #fff; border-bottom: 1px solid #e4e8ed; font-weight: 400; color: #201D1D; padding: 16px; text-align: left; font-size: 14px; }
[data-page-title="Earn Vaults"] table tbody tr { border-bottom: 1px solid #e4e8ed; }
[data-page-title="Earn Vaults"] table tbody tr:nth-child(even) { background: #fcfcfd; }
[data-page-title="Earn Vaults"] table tbody td { padding: 16px; color: #8F8E8E; font-weight: 400; vertical-align: top; font-size: 14px; border-bottom: 1px solid #e4e8ed; }
[data-page-title="Earn Vaults"] table tbody td:first-child { font-weight: 500; color: #1a1a1a; white-space: nowrap; }
[data-page-title="Earn Vaults"] table tbody td:nth-child(2) { max-width: 300px; }
[data-page-title="Earn Vaults"] table tbody td:nth-child(2) code, [data-page-title="Earn Vaults"] table tbody td:nth-child(3) code { font-size: 11px; }
.dark [data-page-title="Earn Vaults"] table thead th { background: transparent; border-bottom: 1px solid rgba(48, 54, 61, 0.3); color: #e6edf3; }
.dark [data-page-title="Earn Vaults"] table tbody tr { border-bottom: 1px solid rgba(48, 54, 61, 0.3); }
.dark [data-page-title="Earn Vaults"] table tbody td { border-bottom: 1px solid rgba(48, 54, 61, 0.3); color: #8b949e; }
.dark [data-page-title="Earn Vaults"] table tbody tr:nth-child(even) { background: transparent; }
.dark [data-page-title="Earn Vaults"] table tbody td:first-child { font-weight: 500; color: #e6edf3; }
.prose a.github-link { cursor: pointer; display: flex; align-items: center; gap: 6px; font-size: 12px; text-decoration: none !important; border-bottom: none !important; }
[data-page-title="Earn Vaults"] .prose a.github-link:hover { opacity: 0.8; }
[data-page-title="Earn Vaults"] .prose a svg { pointer-events: all; }
.earn-hero-image { position: relative; display: inline-block; width: 100%; max-width: 700px; height: auto; margin: 0; }
.earn-hero-image img { width: 100%; height: auto; object-fit: contain; border-radius: 8px; }
@media (max-width: 768px) { .earn-hero-image { height: auto; max-width: 100%; } }
@media (max-width: 480px) { .earn-hero-image { height: auto; margin: 0 0 1.5rem 0; } }
.dark .code-block, .dark .code-block .dark:bg-codeblock { background-color: #0d1117 !important; }
.code-block, .shiki { --shiki-light: #24292f !important; --shiki-light-bg: #ffffff !important; }
.dark .code-block, .dark .shiki { --shiki-dark: #e6edf3 !important; --shiki-dark-bg: #0d1117 !important; }
/* Add top padding to expandable content so text doesn't sit flush against the border */ .expandable-content { padding-top: 0.75rem !important; }
/* Code block width 50% for VaultAllocation */ .expandable .vault-allocation-code .code-block { max-width: 50% !important; }
.prose hr { margin-top: 0; margin-bottom: 1.5rem; }
/* Style h3 within Steps to match step title appearance */ .prose .step h3 { font-size: 1rem !important; line-height: 1.75 !important; font-weight: 600 !important; margin-top: .5rem !important; margin-bottom: 1.25em !important; }
/* Make chat assistant bar smaller */ #chat-assistant-textarea { height: 2rem !important; min-height: 2rem !important; max-height: 2rem !important; }
/* Hide background image on main docs index page ONLY in light mode */ :root:not(.dark) #docs-hero-section img[alt="Kamino Knowledge Base background"] { display: none !important; width: 0 !important; }
/* Hero is transparent so the wrapper's right-side background image shows through (docs index) */ :root:not(.dark) #docs-hero-section { background-color: transparent !important; }
/* Change hero text to dark gray/black on main docs index ONLY in light mode */ :root:not(.dark) #docs-hero-section .mint-text-white { color: rgb(17, 24, 39) !important; }
/* Earn hero section grid background ONLY in light mode */ :root:not(.dark) #earn-hero-section { background-color: white !important; }
/* :root:not(.dark) #earn-hero-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: 100%; height: 100%; background-image: url('/docs/images/bg-grid-light.png'); background-repeat: repeat; background-size: 500px; opacity: 0.3; pointer-events: none; z-index: 0; } */
/* Shared content container used by nav + page sections */ .k-container { width: 100%; max-width: 1400px; margin-left: auto; margin-right: auto; padding-left: 16px; padding-right: 16px; }
@media (min-width: 640px) { .k-container { padding-left: 24px; padding-right: 24px; } }
@media (min-width: 1024px) { .k-container { padding-left: 40px !important; padding-right: 32px !important; } }
@media (min-width: 1280px) { .k-container { padding-left: 40px !important; padding-right: 32px !important; } }
@media (min-width: 1440px) { .k-container { padding-left: 16px !important; padding-right: 16px !important; } }
/* Hero image sizing */ #hero-image { width: 85%; }
/* Earn page: style markdown h2 headings / #earn-page h2 { color: #111827; / gray-900 / font-weight: 700; font-size: 1.5rem; / 35% smaller than text-4xl */ line-height: 1.2; margin-top: 0; margin-bottom: 1rem; }
.dark #earn-page h2 { color: #f3f4f6; /* gray-100 */ }
@media (min-width: 1024px) { #earn-page h2 { font-size: 1.95rem; /* 35% smaller than text-5xl */ } }
/* Earn page: style markdown h3 headings in Technical Deep Dive */ #earn-page h3 { color: #111827; font-weight: 700; font-size: 1.5rem; line-height: 1.3; margin-top: 0; margin-bottom: 1.5rem; }
.dark #earn-page h3 { color: #f3f4f6; }
/* Remove margin-bottom from tab h3 elements */ #earn-page [role="tabpanel"] h3 { margin-bottom: 0 !important; display: flex; align-items: center; gap: 1rem; }
/* Add number badges to tab h3 titles */ #earn-page [role="tabpanel"]:nth-of-type(1) h3::before { content: "01"; display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; background-color: rgb(219 234 254); color: rgb(59 130 246); font-weight: 700; font-size: 1.125rem; flex-shrink: 0; }
.dark #earn-page [role="tabpanel"]:nth-of-type(1) h3::before { background-color: rgb(30 58 138 / 0.3); color: rgb(96 165 250); }
#earn-page [role="tabpanel"]:nth-of-type(2) h3::before { content: "02"; display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; background-color: rgb(219 234 254); color: rgb(59 130 246); font-weight: 700; font-size: 1.125rem; flex-shrink: 0; }
.dark #earn-page [role="tabpanel"]:nth-of-type(2) h3::before { background-color: rgb(30 58 138 / 0.3); color: rgb(96 165 250); }
#earn-page [role="tabpanel"]:nth-of-type(3) h3::before { content: "03"; display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; background-color: rgb(219 234 254); color: rgb(59 130 246); font-weight: 700; font-size: 1.125rem; flex-shrink: 0; }
.dark #earn-page [role="tabpanel"]:nth-of-type(3) h3::before { background-color: rgb(30 58 138 / 0.3); color: rgb(96 165 250); }
#earn-page [role="tabpanel"]:nth-of-type(4) h3::before { content: "04"; display: flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; background-color: rgb(219 234 254); color: rgb(59 130 246); font-weight: 700; font-size: 1.125rem; flex-shrink: 0; }
.dark #earn-page [role="tabpanel"]:nth-of-type(4) h3::before { background-color: rgb(30 58 138 / 0.3); color: rgb(96 165 250); }
/* Brand hero responsive K positioning */ .brand-hero { position: relative; }
.brand-hero__content { position: relative; z-index: 2; }
.brand-hero__k { position: absolute; top: 50%; right: clamp(120px, 20vw, 320px); transform: translateY(-50%); height: clamp(140px, 18vw, 240px); width: auto; pointer-events: none; z-index: 1; }
.brand-hero__k-svg { display: block; height: 100%; width: auto; }
@media (max-width: 1024px) { .brand-hero__k { display: none; } }
/* Fix white space below footer on brand page - stop wrapper from stretching */ body:has(#brand-page) .max-lg:contents.lg:flex-1.lg:min-w-0.lg:overflow-x-clip { align-self: flex-start !important; min-height: 0 !important; height: auto !important; }
/* Scope oracle types: shrink the summary table ~15%. These selectors outrank the global ".prose code" rule on specificity, so no !important is needed. */ :root:not(.dark) .prose .compact-table code, .dark .prose .compact-table code, .compact-table th, .compact-table td { font-size: 0.8rem; }
/* Landing-page contact form styles (used by the ContactForm component in
docs/index.mdx). Plain CSS keeps the styling independent of Tailwind's
content scanning/purge configuration. */
.kf-form {
display: flex;
flex-direction: column;
gap: 24px;
background: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 16px;
padding: 40px;
}
.dark .kf-form {
background: #0e1f3d;
border-color: #374151;
}
.kf-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
}
@media (max-width: 640px) {
.kf-row { grid-template-columns: 1fr; }
.kf-form { padding: 24px; }
}
.kf-group {
display: flex;
flex-direction: column;
gap: 8px;
}
.kf-business {
display: flex;
flex-direction: column;
gap: 24px;
}
.kf-label {
font-size: 14px;
font-weight: 500;
color: #111827;
}
.dark .kf-label { color: #f3f4f6; }
.kf-req { color: #ef4444; }
.kf-error {
font-size: 13px;
color: #ef4444;
}
.dark .kf-error { color: #f87171; }
.kf-input {
width: 100%;
box-sizing: border-box;
border: 1px solid #e5e7eb;
border-radius: 12px;
background: #fcfbfb;
color: #111827;
padding: 12px 16px;
font-size: 16px;
line-height: 1.5;
outline: none;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.kf-input::placeholder { color: #9ca3af; }
.kf-input:focus {
border-color: #082A56;
box-shadow: 0 0 0 1px #082A56;
}
.dark .kf-input {
background: #0c1b37;
border-color: #374151;
color: #f3f4f6;
}
.dark .kf-input:focus {
border-color: #BEE3FE;
box-shadow: 0 0 0 1px #BEE3FE;
}
.kf-textarea {
resize: vertical;
min-height: 120px;
}
.kf-actions {
display: flex;
justify-content: flex-end;
}
.kf-btn {
background: #0369a1;
color: #ffffff;
border: none;
cursor: pointer;
padding: 12px 24px;
border-radius: 12px;
font-weight: 600;
font-size: 16px;
transition: background-color 0.15s ease;
}
.kf-btn:hover { background: #075985; }
/* Liquidity developer overview: smaller card text */ #liquidity-dev-overview .card .text-base { font-size: 0.9rem; }
/* AI resources cards: smaller text */ #ai-resources-cards .card .text-base { font-size: 0.9rem; }
/* Skill files table: remove bold from links */ #skill-files-table :where(a):not(:where([class~=not-prose],[class~=not-prose] *)) { font-weight: 400 !important; } .mint-absolute { position: absolute } .mint-relative { position: relative } .mint-inset-y-0 { top: 0px; bottom: 0px } .mint-bottom-2 { bottom: 0.5rem } .mint-left-4 { left: 1rem } .mint-right-0 { right: 0px } .mint-z-0 { z-index: 0 } .mint-z-10 { z-index: 10 } .mint-m-0 { margin: 0px } .mint-mx-8 { margin-left: 2rem; margin-right: 2rem } .mint-mx-auto { margin-left: auto; margin-right: auto } .mint-mb-1 { margin-bottom: 0.25rem } .mint-mb-12 { margin-bottom: 3rem } .mint-mb-2 { margin-bottom: 0.5rem } .mint-mb-3 { margin-bottom: 0.75rem } .mint-mb-4 { margin-bottom: 1rem } .mint-mb-6 { margin-bottom: 1.5rem } .mint-mb-8 { margin-bottom: 2rem } .mint-mt-1 { margin-top: 0.25rem } .mint-mt-4 { margin-top: 1rem } .mint-mt-auto { margin-top: auto } .mint-block { display: block } .mint-flex { display: flex } .mint-inline-flex { display: inline-flex } .mint-grid { display: grid } .mint-hidden { display: none } .mint-h-10 { height: 2.5rem } .mint-h-32 { height: 8rem } .mint-h-4 { height: 1rem } .mint-h-5 { height: 1.25rem } .mint-h-6 { height: 1.5rem } .mint-h-8 { height: 2rem } .mint-h-full { height: 100% } .mint-min-h-[40px] { min-height: 40px } .mint-w-10 { width: 2.5rem } .mint-w-4 { width: 1rem } .mint-w-5 { width: 1.25rem } .mint-w-6 { width: 1.5rem } .mint-w-8 { width: 2rem } .mint-w-[2px] { width: 2px } .mint-w-[45%] { width: 45% } .mint-w-full { width: 100% } .mint-min-w-[40px] { min-width: 40px } .mint-max-w-2xl { max-width: 42rem } .mint-max-w-4xl { max-width: 56rem } .mint-max-w-6xl { max-width: 72rem } .mint-max-w-[1180px] { max-width: 1180px } .mint-shrink-0 { flex-shrink: 0 } .mint-grow { flex-grow: 1 } .mint-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)) } .mint-flex-col { flex-direction: column } .mint-flex-wrap { flex-wrap: wrap } .mint-items-start { align-items: flex-start } .mint-items-center { align-items: center } .mint-items-stretch { align-items: stretch } .mint-justify-center { justify-content: center } .mint-justify-between { justify-content: space-between } .mint-gap-1 { gap: 0.25rem } .mint-gap-1.5 { gap: 0.375rem } .mint-gap-2 { gap: 0.5rem } .mint-gap-3 { gap: 0.75rem } .mint-gap-4 { gap: 1rem } .mint-gap-6 { gap: 1.5rem } .mint-gap-8 { gap: 2rem } .mint-space-y-4 > :not([hidden]) ~ :not([hidden]) { --tw-space-y-reverse: 0; margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); margin-bottom: calc(1rem * var(--tw-space-y-reverse)) } .mint-self-stretch { align-self: stretch } .mint-overflow-hidden { overflow: hidden } .mint-rounded { border-radius: 0.25rem } .mint-rounded-2xl { border-radius: 1rem } .mint-rounded-full { border-radius: 9999px } .mint-rounded-xl { border-radius: 0.75rem } .mint-border { border-width: 1px } .mint-border-2 { border-width: 2px } .mint-border-t { border-top-width: 1px } .mint-border-[#0ea5e9] { --tw-border-opacity: 1; border-color: rgb(14 165 233 / var(--tw-border-opacity, 1)) } .mint-border-blue-100 { --tw-border-opacity: 1; border-color: rgb(219 234 254 / var(--tw-border-opacity, 1)) } .mint-border-blue-200 { --tw-border-opacity: 1; border-color: rgb(191 219 254 / var(--tw-border-opacity, 1)) } .mint-border-gray-200 { --tw-border-opacity: 1; border-color: rgb(229 231 235 / var(--tw-border-opacity, 1)) } .mint-border-slate-100 { --tw-border-opacity: 1; border-color: rgb(241 245 249 / var(--tw-border-opacity, 1)) } .mint-border-slate-200 { --tw-border-opacity: 1; border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)) } .mint-border-slate-50 { --tw-border-opacity: 1; border-color: rgb(248 250 252 / var(--tw-border-opacity, 1)) } .mint-bg-[#C6F4FF] { --tw-bg-opacity: 1; background-color: rgb(198 244 255 / var(--tw-bg-opacity, 1)) } .mint-bg-[#C6F4FF]/30 { background-color: rgb(198 244 255 / 0.3) } .mint-bg-[#F2FAFD] { --tw-bg-opacity: 1; background-color: rgb(242 250 253 / var(--tw-bg-opacity, 1)) } .mint-bg-[#FCFBFB] { --tw-bg-opacity: 1; background-color: rgb(252 251 251 / var(--tw-bg-opacity, 1)) } .mint-bg-[#fcfbfb] { --tw-bg-opacity: 1; background-color: rgb(252 251 251 / var(--tw-bg-opacity, 1)) } .mint-bg-blue-100 { --tw-bg-opacity: 1; background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1)) } .mint-bg-blue-50 { --tw-bg-opacity: 1; background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1)) } .mint-bg-gray-200 { --tw-bg-opacity: 1; background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1)) } .mint-bg-green-100 { --tw-bg-opacity: 1; background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1)) } .mint-bg-indigo-50 { --tw-bg-opacity: 1; background-color: rgb(238 242 255 / var(--tw-bg-opacity, 1)) } .mint-bg-orange-100 { --tw-bg-opacity: 1; background-color: rgb(255 237 213 / var(--tw-bg-opacity, 1)) } .mint-bg-purple-100 { --tw-bg-opacity: 1; background-color: rgb(243 232 255 / var(--tw-bg-opacity, 1)) } .mint-bg-slate-100 { --tw-bg-opacity: 1; background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1)) } .mint-bg-slate-50 { --tw-bg-opacity: 1; background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)) } .mint-bg-teal-100 { --tw-bg-opacity: 1; background-color: rgb(204 251 241 / var(--tw-bg-opacity, 1)) } .mint-bg-teal-50 { --tw-bg-opacity: 1; background-color: rgb(240 253 250 / var(--tw-bg-opacity, 1)) } .mint-bg-white { --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)) } .mint-p-4 { padding: 1rem } .mint-p-8 { padding: 2rem } .mint-px-1.5 { padding-left: 0.375rem; padding-right: 0.375rem } .mint-px-2 { padding-left: 0.5rem; padding-right: 0.5rem } .mint-py-0.5 { padding-top: 0.125rem; padding-bottom: 0.125rem } .mint-py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem } .mint-py-16 { padding-top: 4rem; padding-bottom: 4rem } .mint-pb-12 { padding-bottom: 3rem } .mint-pb-14 { padding-bottom: 3.5rem } .mint-pb-16 { padding-bottom: 4rem } .mint-pb-6 { padding-bottom: 1.5rem } .mint-pb-8 { padding-bottom: 2rem } .mint-pt-16 { padding-top: 4rem } .mint-pt-2 { padding-top: 0.5rem } .mint-pt-4 { padding-top: 1rem } .mint-pt-6 { padding-top: 1.5rem } .mint-pt-8 { padding-top: 2rem } .mint-text-center { text-align: center } .mint-font-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace } .mint-text-2xl { font-size: 1.5rem; line-height: 2rem } .mint-text-4xl { font-size: 2.25rem; line-height: 2.5rem } .mint-text-[10px] { font-size: 10px } .mint-text-[2.5rem] { font-size: 2.5rem } .mint-text-[8px] { font-size: 8px } .mint-text-base { font-size: 1rem; line-height: 1.5rem } .mint-text-lg { font-size: 1.125rem; line-height: 1.75rem } .mint-text-sm { font-size: 0.875rem; line-height: 1.25rem } .mint-text-xl { font-size: 1.25rem; line-height: 1.75rem } .mint-text-xs { font-size: 0.75rem; line-height: 1rem } .mint-font-bold { font-weight: 700 } .mint-font-medium { font-weight: 500 } .mint-font-semibold { font-weight: 600 } .mint-uppercase { text-transform: uppercase } .mint-leading-none { line-height: 1 } .mint-leading-relaxed { line-height: 1.625 } .mint-leading-snug { line-height: 1.375 } .mint-tracking-tight { letter-spacing: -0.025em } .mint-tracking-wide { letter-spacing: 0.025em } .mint-text-[#082A56] { --tw-text-opacity: 1; color: rgb(8 42 86 / var(--tw-text-opacity, 1)) } .mint-text-[#6B7280] { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity, 1)) } .mint-text-[#8A8F98] { --tw-text-opacity: 1; color: rgb(138 143 152 / var(--tw-text-opacity, 1)) } .mint-text-blue-500 { --tw-text-opacity: 1; color: rgb(59 130 246 / var(--tw-text-opacity, 1)) } .mint-text-blue-600 { --tw-text-opacity: 1; color: rgb(37 99 235 / var(--tw-text-opacity, 1)) } .mint-text-blue-700 { --tw-text-opacity: 1; color: rgb(29 78 216 / var(--tw-text-opacity, 1)) } .mint-text-gray-500 { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity, 1)) } .mint-text-gray-600 { --tw-text-opacity: 1; color: rgb(75 85 99 / var(--tw-text-opacity, 1)) } .mint-text-gray-700 { --tw-text-opacity: 1; color: rgb(55 65 81 / var(--tw-text-opacity, 1)) } .mint-text-gray-900 { --tw-text-opacity: 1; color: rgb(17 24 39 / var(--tw-text-opacity, 1)) } .mint-text-green-600 { --tw-text-opacity: 1; color: rgb(22 163 74 / var(--tw-text-opacity, 1)) } .mint-text-indigo-600 { --tw-text-opacity: 1; color: rgb(79 70 229 / var(--tw-text-opacity, 1)) } .mint-text-orange-600 { --tw-text-opacity: 1; color: rgb(234 88 12 / var(--tw-text-opacity, 1)) } .mint-text-purple-600 { --tw-text-opacity: 1; color: rgb(147 51 234 / var(--tw-text-opacity, 1)) } .mint-text-slate-300 { --tw-text-opacity: 1; color: rgb(203 213 225 / var(--tw-text-opacity, 1)) } .mint-text-slate-400 { --tw-text-opacity: 1; color: rgb(148 163 184 / var(--tw-text-opacity, 1)) } .mint-text-slate-500 { --tw-text-opacity: 1; color: rgb(100 116 139 / var(--tw-text-opacity, 1)) } .mint-text-slate-600 { --tw-text-opacity: 1; color: rgb(71 85 105 / var(--tw-text-opacity, 1)) } .mint-text-slate-900 { --tw-text-opacity: 1; color: rgb(15 23 42 / var(--tw-text-opacity, 1)) } .mint-text-teal-600 { --tw-text-opacity: 1; color: rgb(13 148 136 / var(--tw-text-opacity, 1)) } .mint-text-teal-700 { --tw-text-opacity: 1; color: rgb(15 118 110 / var(--tw-text-opacity, 1)) } .mint-text-white { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)) } .mint-no-underline { text-decoration-line: none } .mint-opacity-60 { opacity: 0.6 } .mint-transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms } .mint-transition-colors { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms } .mint-transition-opacity { transition-property: opacity; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms } .hover:mint-text-blue-600:hover { --tw-text-opacity: 1; color: rgb(37 99 235 / var(--tw-text-opacity, 1)) } .hover:mint-text-gray-900:hover { --tw-text-opacity: 1; color: rgb(17 24 39 / var(--tw-text-opacity, 1)) } .hover:mint-text-indigo-600:hover { --tw-text-opacity: 1; color: rgb(79 70 229 / var(--tw-text-opacity, 1)) } .hover:mint-text-teal-600:hover { --tw-text-opacity: 1; color: rgb(13 148 136 / var(--tw-text-opacity, 1)) } .hover:mint-underline:hover { text-decoration-line: underline } .hover:mint-opacity-80:hover { opacity: 0.8 } .dark:mint-border-blue-400:is(.dark *) { --tw-border-opacity: 1; border-color: rgb(96 165 250 / var(--tw-border-opacity, 1)) } .dark:mint-border-blue-400/20:is(.dark *) { border-color: rgb(96 165 250 / 0.2) } .dark:mint-border-gray-800:is(.dark *) { --tw-border-opacity: 1; border-color: rgb(31 41 55 / var(--tw-border-opacity, 1)) } .dark:mint-border-white/10:is(.dark *) { border-color: rgb(255 255 255 / 0.1) } .dark:mint-bg-[#081632]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(8 22 50 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#091326]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(9 19 38 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#0c1b37]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(12 27 55 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#0e1d3a]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(14 29 58 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#0ea5e9]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(14 165 233 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#0ea5e9]/20:is(.dark *) { background-color: rgb(14 165 233 / 0.2) } .dark:mint-bg-[#0f2347]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(15 35 71 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#13284d]:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(19 40 77 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-[#C6F4FF]/10:is(.dark *) { background-color: rgb(198 244 255 / 0.1) } .dark:mint-bg-blue-500:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-blue-500/10:is(.dark *) { background-color: rgb(59 130 246 / 0.1) } .dark:mint-bg-blue-500/15:is(.dark *) { background-color: rgb(59 130 246 / 0.15) } .dark:mint-bg-blue-500/20:is(.dark *) { background-color: rgb(59 130 246 / 0.2) } .dark:mint-bg-blue-900/30:is(.dark *) { background-color: rgb(30 58 138 / 0.3) } .dark:mint-bg-gray-700:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-green-600:is(.dark *) { --tw-bg-opacity: 1; background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1)) } .dark:mint-bg-indigo-500/15:is(.dark *) { background-color: rgb(99 102 241 / 0.15) } .dark:mint-bg-orange-900/30:is(.dark *) { background-color: rgb(124 45 18 / 0.3) } .dark:mint-bg-purple-900/30:is(.dark *) { background-color: rgb(88 28 135 / 0.3) } .dark:mint-bg-slate-700/40:is(.dark *) { background-color: rgb(51 65 85 / 0.4) } .dark:mint-bg-teal-500/15:is(.dark *) { background-color: rgb(20 184 166 / 0.15) } .dark:mint-bg-teal-500/20:is(.dark *) { background-color: rgb(20 184 166 / 0.2) } .dark:mint-text-[#C6F4FF]:is(.dark *) { --tw-text-opacity: 1; color: rgb(198 244 255 / var(--tw-text-opacity, 1)) } .dark:mint-text-blue-300:is(.dark *) { --tw-text-opacity: 1; color: rgb(147 197 253 / var(--tw-text-opacity, 1)) } .dark:mint-text-blue-400:is(.dark *) { --tw-text-opacity: 1; color: rgb(96 165 250 / var(--tw-text-opacity, 1)) } .dark:mint-text-gray-100:is(.dark *) { --tw-text-opacity: 1; color: rgb(243 244 246 / var(--tw-text-opacity, 1)) } .dark:mint-text-gray-300:is(.dark *) { --tw-text-opacity: 1; color: rgb(209 213 219 / var(--tw-text-opacity, 1)) } .dark:mint-text-gray-400:is(.dark *) { --tw-text-opacity: 1; color: rgb(156 163 175 / var(--tw-text-opacity, 1)) } .dark:mint-text-gray-500:is(.dark *) { --tw-text-opacity: 1; color: rgb(107 114 128 / var(--tw-text-opacity, 1)) } .dark:mint-text-gray-600:is(.dark *) { --tw-text-opacity: 1; color: rgb(75 85 99 / var(--tw-text-opacity, 1)) } .dark:mint-text-indigo-300:is(.dark *) { --tw-text-opacity: 1; color: rgb(165 180 252 / var(--tw-text-opacity, 1)) } .dark:mint-text-indigo-400:is(.dark *) { --tw-text-opacity: 1; color: rgb(129 140 248 / var(--tw-text-opacity, 1)) } .dark:mint-text-orange-400:is(.dark *) { --tw-text-opacity: 1; color: rgb(251 146 60 / var(--tw-text-opacity, 1)) } .dark:mint-text-purple-400:is(.dark *) { --tw-text-opacity: 1; color: rgb(192 132 252 / var(--tw-text-opacity, 1)) } .dark:mint-text-slate-300:is(.dark *) { --tw-text-opacity: 1; color: rgb(203 213 225 / var(--tw-text-opacity, 1)) } .dark:mint-text-teal-300:is(.dark *) { --tw-text-opacity: 1; color: rgb(94 234 212 / var(--tw-text-opacity, 1)) } .dark:mint-text-teal-400:is(.dark *) { --tw-text-opacity: 1; color: rgb(45 212 191 / var(--tw-text-opacity, 1)) } .dark:mint-text-white:is(.dark *) { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)) } .dark:hover:mint-text-blue-400:hover:is(.dark *) { --tw-text-opacity: 1; color: rgb(96 165 250 / var(--tw-text-opacity, 1)) } .dark:hover:mint-text-indigo-400:hover:is(.dark *) { --tw-text-opacity: 1; color: rgb(129 140 248 / var(--tw-text-opacity, 1)) } .dark:hover:mint-text-teal-400:hover:is(.dark *) { --tw-text-opacity: 1; color: rgb(45 212 191 / var(--tw-text-opacity, 1)) } .dark:hover:mint-text-white:hover:is(.dark *) { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity, 1)) } @media (min-width: 640px) { .sm:mint-flex-row { flex-direction: row } .sm:mint-py-20 { padding-top: 5rem; padding-bottom: 5rem } .sm:mint-pb-14 { padding-bottom: 3.5rem } .sm:mint-pb-20 { padding-bottom: 5rem } .sm:mint-pt-20 { padding-top: 5r
… [truncated — open the raw llms.txt above for the full file]
Automate transactions like real-time eligibility checks and claims processing with developer-friendly, JSON-based APIs that support thousands of payers.
Primev is building mev-commit, a credible commitment network for mev actors.
Dynamic offers a suite of tools for effortless log in, wallet creation and user management. Designed for users. Built for developers.
Mesh enables safer, easier crypto transfers and payments from 300+ leading exchanges and wallets, all without leaving your platform
Earn revenue today without delaying your roadmap. Payment processing for SaaS by SaaS.
FlowX.AI is redefining banking modernization with the first-ever unified, open, AI platform built to free banks from restrictive point solutions.
Markets, illuminated — World's largest provider of trading indicators for every market from stocks, crypto, and forex.