PageSourceSearch

https://blinkerhub.lovable.app/categories

html blinkerhub.lovable.app collected 2026-10-03 03:23:55 UTC 27,445 bytes, 256 lines download raw bytes

1<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/assets/styles-CAyjCrZ5.css" data-precedence="default"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&amp;family=JetBrains+Mono:wght@400;500&amp;display=swap" data-precedence="default"/><title>All categories — AI, APIs &amp; Dev Tools | BlinkerHub</title><meta name="google-site-verification" content="bp8jjJfDh2dAImD_z77Y6kONPJHXqSHXKjLJbrNq1Cs"/><meta name="theme-color" content="#0a0f1f"/><meta property="og:site_name" content="BlinkerHub"/><meta property="og:type" content="website"/><meta name="twitter:card" content="summary_large_image"/><meta name="apple-mobile-web-app-title" content="BlinkerHub"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="mobile-web-app-capable" content="yes"/><meta name="description" content="Browse every category in the BlinkerHub directory: LLMs, image generation, speech, payments, search, MCP servers, and more."/><meta property="og:title" content="All categories | BlinkerHub"/><meta property="og:description" content="Browse every category in the BlinkerHub AI &amp; API marketplace — LLMs, image, speech, payments, search, MCP servers and more."/><meta property="og:url" content="https://blinkerhub.lovable.app/categories"/><meta property="og:image" content="https://blinkerhub.lovable.app/og.png"/><meta name="twitter:image" content="https://blinkerhub.lovable.app/og.png"/><link rel="modulepreload" href="/assets/index-CJxmbAdg.js"/><link rel="modulepreload" href="/assets/auth-DF7kgtsR.js"/><link rel="modulepreload" href="/assets/redirect-DCb_aIiF.js"/><link rel="modulepreload" href="/assets/categories-xwqQFsrW.js"/><link rel="modulepreload" href="/assets/site-footer-CqIb1jb9.js"/><link rel="manifest" href="/manifest.webmanifest"/><link rel="preconnect" href="https://fonts.googleapis.com"/><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous"/><link rel="icon" type="image/png" href="/favicon.png"/><link rel="apple-touch-icon" href="/icon.png"/><link rel="canonical" href="https://blinkerhub.lovable.app/categories"/>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"BlinkerHub","url":"https://blinkerhub.lovable.app/","description":"Discover, compare, test and review the best AI models, APIs, SDKs and MCP servers.","potentialAction":{"@type":"SearchAction","target":"https://blinkerhub.lovable.app/browse?q={search_term_string}","query-input":"required name=search_term_string"}}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"BlinkerHub","url":"https://blinkerhub.lovable.app/","logo":"https://blinkerhub.lovable.app/icon.png"}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"CollectionPage","name":"All categories | BlinkerHub","description":"Every category in the BlinkerHub AI & API marketplace.","url":"https://blinkerhub.lovable.app/categories","isPartOf":{"@type":"WebSite","name":"BlinkerHub","url":"https://blinkerhub.lovable.app/"},"hasPart":[{"@type":"CollectionPage","name":"LLMs & Chat","description":"Large language models, chat completions, reasoning","url":"https://blinkerhub.lovable.app/browse?category=llm"},{"@type":"CollectionPage","name":"Image Generation","description":"Text-to-image, editing, upscaling","url":"https://blinkerhub.lovable.app/browse?category=image"},{"@type":"CollectionPage","name":"Speech & Audio","description":"Text-to-speech, transcription, voice cloning","url":"https://blinkerhub.lovable.app/browse?category=speech"},{"@type":"CollectionPage","name":"Vision & OCR","description":"Object detection, OCR, image understanding","url":"https://blinkerhub.lovable.app/browse?category=vision"},{"@type":"CollectionPage","name":"Video","description":"Text-to-video, editing, avatars","url":"https://blinkerhub.lovable.app/browse?category=video"},{"@type":"CollectionPage","name":"Payments","description":"Cards, subscriptions, payouts","url":"https://blinkerhub.lovable.app/browse?category=payments"},{"@type":"CollectionPage","name":"Data & Scraping","description":"Web scraping, enrichment, datasets","url":"https://blinkerhub.lovable.app/browse?category=data"},{"@type":"CollectionPage","name":"Developer Tools","description":"SDKs, CLIs, infra for builders","url":"https://blinkerhub.lovable.app/browse?category=devtools"},{"@type":"CollectionPage","name":"Search","description":"Semantic, keyword and hybrid search APIs","url":"https://blinkerhub.lovable.app/browse?category=search"},{"@type":"CollectionPage","name":"MCP Servers","description":"Model Context Protocol connectors","url":"https://blinkerhub.lovable.app/browse?category=mcp"},{"@type":"CollectionPage","name":"Automation","description":"Workflows, agents, orchestration","url":"https://blinkerhub.lovable.app/browse?category=automation"},{"@type":"CollectionPage","name":"Email & Comms","description":"Transactional email, SMS, notifications","url":"https://blinkerhub.lovable.app/browse?category=email"},{"@type":"CollectionPage","name":"Auth & Identity","description":"Sign-in, OAuth, user management","url":"https://blinkerhub.lovable.app/browse?category=auth"}]}</script>
1
2<style>
3	#lovable-badge {
4		--badge-bg: #1b1b1b;
5		--badge-text: #c5c1b9;
6		--badge-text-hover: #dcdad5;
7		--badge-radius: 6px;
8		--badge-padding: 8px;
9		--badge-gap: 6px;
10		--badge-shadow: 
11			0 0 0 1px rgba(0, 0, 0, 0.88),
12			0 1px 0 0 rgba(0, 0, 0, 0.04),
13			0 2px 2px -1px rgba(0, 0, 0, 0.08),
14			0 4px 4px -2px rgba(0, 0, 0, 0.08),
15			0 8px 8px -4px rgba(0, 0, 0, 0.08),
16			0 16px 16px -8px rgba(0, 0, 0, 0.08);
17		--badge-transition-duration: 0.2s;
18		--badge-transition-easing: cubic-bezier(0.16, 1, 0.32, 1);
19		--focus-color: #575ECF;
20		--focus-offset: 2px;
21		--focus-width: 2px;
22		
23		position: fixed;
24		bottom: 12px;
25		right: 12px;
26		height: 24px;
27		display: flex;
28		align-items: center;
29		z-index: 1000000;
30		background-color: var(--badge-bg) !important;
31		color: var(--badge-text) !important;
32		border-radius: var(--badge-radius);
33		box-shadow: var(--badge-shadow) !important;
34		font-size: 12px;
35		font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
36		font-weight: 400 !important;
37		text-transform: none !important;
38		font-feature-settings: normal !important;
39		transform: translateZ(0);
40		will-change: transform, opacity;
41		transition: opacity var(--badge-transition-duration) var(--badge-transition-easing);
42	}
43
44	#lovable-badge.closing {
45		opacity: 0;
46		pointer-events: none;
47	}
48
49	#lovable-badge-cta {
50		display: flex;
51		align-items: baseline;
52		gap: var(--badge-gap);
53		box-sizing: border-box;
54		padding: 4px var(--badge-padding) 0;
55		height: 100%;
56		color: inherit;
57		text-decoration: none;
58		white-space: nowrap;
59		border-radius: var(--badge-radius) 0 0 var(--badge-radius);
60		transition: 
61			background-color var(--badge-transition-duration) ease,
62			color var(--badge-transition-duration) ease,
63			transform 0.1s ease;
64	}
65
66	#lovable-badge-cta:hover {
67		background: rgba(255, 255, 255, 0.04);
68		color: var(--badge-text-hover);
69	}
70
71	#lovable-badge-cta:active {
72		transform: scale(0.98);
73	}
74
75	#lovable-badge-cta:focus {
76		outline: none;
77	}
78
79	#lovable-badge-cta:focus-visible {
80		outline: var(--focus-width) solid var(--focus-color);
81		outline-offset: var(--focus-offset);
82		z-index: 1;
83	}
84
85	#lovable-badge-text {
86		line-height: 1;
87	}
88
89	/* The wordmark baseline sits at y=12 of the 16px logo; an empty 12px box
90	   makes that the flex baseline so the text aligns to it on any system font. */
91	#lovable-badge-logo {
92		position: relative;
93		display: block;
94		width: 52px;
95		height: 12px;
96	}
97
98	#lovable-badge-logo svg {
99		position: absolute;
100		top: 0;
101		left: 0;
102	}
103
104	#lovable-badge-divider {
105		width: 1px;
106		height: 24px;
107		background-color: rgba(255, 255, 255, 0.04);
108		flex-shrink: 0;
109	}
110
111	#lovable-badge-close {
112		width: 24px;
113		height: 24px;
114		min-width: 24px;
115		min-height: 24px;
116		cursor: pointer;
117		background: none;
118		border: none;
119		padding: 0;
120		display: flex;
121		align-items: center;
122		justify-content: center;
123		border-radius: 0 var(--badge-radius) var(--badge-radius) 0;
124		flex-shrink: 0;
125		transition: 
126			background-color var(--badge-transition-duration) ease,
127			transform 0.1s ease;
128	}
129
130	#lovable-badge-close:hover {
131		background: rgba(255, 255, 255, 0.04);
132	}
133
134	#lovable-badge-close:active {
135		transform: scale(0.92);
136	}
137
138	#lovable-badge-close:focus {
139		outline: none;
140	}
141
142	#lovable-badge-close:focus-visible {
143		outline: var(--focus-width) solid var(--focus-color);
144		outline-offset: calc(var(--focus-offset) * -1);
145		z-index: 1;
146	}
147
148	#lovable-badge-close svg path {
149		fill: var(--badge-text);
150		transition: fill var(--badge-transition-duration) ease;
151	}
152
153	#lovable-badge-close:hover svg path {
154		fill: var(--badge-text-hover);
155	}
156
157	@media (prefers-reduced-motion: reduce) {
158		#lovable-badge,
159		#lovable-badge-cta,
160		#lovable-badge-close,
161		#lovable-badge-close svg path {
162			transition: none;
163		}
164		
165		#lovable-badge-cta:active,
166		#lovable-badge-close:active {
167			transform: none;
168		}
169	}
170
171	@media (prefers-contrast: high) {
172		#lovable-badge {
173			--badge-bg: #000;
174			--badge-text: #fff;
175			--badge-text-hover: #fff;
176			border: 2px solid currentColor;
177		}
178		
179		#lovable-badge-cta:focus-visible,
180		#lovable-badge-close:focus-visible {
181			outline-width: 3px;
182		}
183	}
184</style>
185<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
185<meta name="twitter:title" content="All categories | BlinkerHub"><meta name="twitter:description" content="Browse every category in the BlinkerHub AI &amp;amp; API marketplace — LLMs, image, speech, payments, search, MCP servers and more."></head><body><!--$--><div class="min-h-screen flex flex-col"><header class="sticky top-0 z-40 border-b border-border/60 bg-background/70 backdrop-blur-xl"><div class="mx-auto flex h-14 max-w-7xl items-center justify-between px-4 sm:px-6"><div class="flex items-center gap-8"><a href="/" class="flex items-center gap-2 font-semibold tracking-tight"><span class="inline-flex h-7 w-7 items-center justify-center rounded-md bg-gradient-to-br from-cyan-400 to-violet-500 text-background"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap h-4 w-4" aria-hidden="true"><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></span><span>BlinkerHub</span></a><nav class="hidden items-center gap-6 text-sm text-muted-foreground md:flex"><a href="/browse" class="hover:text-foreground transition-colors">Browse</a><a href="/browse?kind=ai" class="hover:text-foreground transition-colors">AI Models</a><a href="/browse?kind=api" class="hover:text-foreground transition-colors">APIs</a><a href="/browse?kind=mcp" class="hover:text-foreground transition-colors">MCP</a><a class="hover:text-foreground transition-colors active" href="/categories" data-status="active" aria-current="page">Categories</a></nav></div><div class="flex items-center gap-2"><a href="/browse" class="hidden rounded-md border border-border bg-surface px-3 py-1.5 text-xs text-muted-foreground hover:text-foreground hover:bg-surface-hover transition-colors sm:inline-flex items-center">Search…<kbd class="ml-6 rounded border border-border px-1 font-mono text-[10px]">⌘K</kbd></a><a href="/auth" class="inline-flex items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs font-medium text-background hover:opacity-90"><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-user h-3.5 w-3.5" aria-hidden="true"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>Sign in</a></div></div></header><main class="mx-auto w-full max-w-7xl px-4 sm:px-6 py-10 flex-1"><header class="mb-10"><h1 class="text-3xl font-semibold tracking-tight sm:text-4xl">Browse by category</h1><p class="mt-2 text-muted-foreground">Every category in the BlinkerHub directory.</p></header><div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3"><a href="/browse?category=llm" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">LLMs &amp; Chat</h2><span class="font-mono text-xs text-muted-foreground">15</span></div><p class="mt-1 text-sm text-muted-foreground">Large language models, chat completions, reasoning</p></a><a href="/browse?category=image" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Image Generation</h2><span class="font-mono text-xs text-muted-foreground">5</span></div><p class="mt-1 text-sm text-muted-foreground">Text-to-image, editing, upscaling</p></a><a href="/browse?category=speech" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Speech &amp; Audio</h2><span class="font-mono text-xs text-muted-foreground">7</span></div><p class="mt-1 text-sm text-muted-foreground">Text-to-speech, transcription, voice cloning</p></a><a href="/browse?category=vision" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Vision &amp; OCR</h2><span class="font-mono text-xs text-muted-foreground">4</span></div><p class="mt-1 text-sm text-muted-foreground">Object detection, OCR, image understanding</p></a><a href="/browse?category=video" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Video</h2><span class="font-mono text-xs text-muted-foreground">4</span></div><p class="mt-1 text-sm text-muted-foreground">
185Text-to-video, editing, avatars</p></a><a href="/browse?category=payments" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Payments</h2><span class="font-mono text-xs text-muted-foreground">4</span></div><p class="mt-1 text-sm text-muted-foreground">Cards, subscriptions, payouts</p></a><a href="/browse?category=data" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Data &amp; Scraping</h2><span class="font-mono text-xs text-muted-foreground">10</span></div><p class="mt-1 text-sm text-muted-foreground">Web scraping, enrichment, datasets</p></a><a href="/browse?category=devtools" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Developer Tools</h2><span class="font-mono text-xs text-muted-foreground">15</span></div><p class="mt-1 text-sm text-muted-foreground">SDKs, CLIs, infra for builders</p></a><a href="/browse?category=search" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Search</h2><span class="font-mono text-xs text-muted-foreground">11</span></div><p class="mt-1 text-sm text-muted-foreground">Semantic, keyword and hybrid search APIs</p></a><a href="/browse?category=mcp" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">MCP Servers</h2><span class="font-mono text-xs text-muted-foreground">5</span></div><p class="mt-1 text-sm text-muted-foreground">Model Context Protocol connectors</p></a><a href="/browse?category=automation" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Automation</h2><span class="font-mono text-xs text-muted-foreground">9</span></div><p class="mt-1 text-sm text-muted-foreground">Workflows, agents, orchestration</p></a><a href="/browse?category=email" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Email &amp; Comms</h2><span class="font-mono text-xs text-muted-foreground">4</span></div><p class="mt-1 text-sm text-muted-foreground">Transactional email, SMS, notifications</p></a><a href="/browse?category=auth" class="group rounded-xl border border-border bg-card p-5 hover:bg-surface-hover transition-colors"><div class="flex items-center justify-between"><h2 class="font-semibold tracking-tight">Auth &amp; Identity</h2><span class="font-mono text-xs text-muted-foreground">4</span></div><p class="mt-1 text-sm text-muted-foreground">Sign-in, OAuth, user management</p></a></div></main><footer class="border-t border-border/60 mt-24"><div class="mx-auto max-w-7xl px-4 sm:px-6 py-10 grid gap-8 md:grid-cols-4 text-sm"><div><div class="flex items-center gap-2 font-semibold"><span class="inline-flex h-6 w-6 items-center justify-center rounded-md bg-gradient-to-br from-cyan-400 to-violet-500 text-background"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap h-3.5 w-3.5" aria-hidden="true"><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></span>BlinkerHub</div><p class="mt-3 text-muted-foreground max-w-xs">The AI &amp; API marketplace for builders. Discover, test and review the tools shipping the future.</p></div><div><div class="mb-3 text-xs uppercase tracking-wider text-muted-foreground">Discover</div><ul class="space-y-2"><li><a href="/browse" class="hover:text-foreground text-muted-foreground">All tools</a></li><li><a href="/browse?kind=ai" class="hover:text-foreground text-muted-foreground">AI models</a></li><li><a href="/browse?kind=api" class="hover:text-foreground text-muted-foreground">APIs</a></li><li><a href="/browse?kind=mcp" class="hover:text-foreground text-muted-foreground">MCP servers</a></li></ul></div><div><div class="mb-3 text-xs uppercase tracking-wider text-muted-foreground">Categories</div><ul class="space-y-2"><li><a class="hover:text-foreground text-muted-foreground active" href="/categories" data-status="active" aria-current="page">All categories</a></li><li><a href="/browse?category=llm" class="hover:text-foreground text-muted-foreground">LLMs</a></li><li><a href="/browse?category=image" class="hover:text-foreground text-muted-foreground">Image generation</a></li><li><a href="/browse?category=payments" class="hover:text-foreground text-muted-foreground">Payments</a></li></ul></div><div><div class="mb-3 text-xs uppercase tracking-wider text-muted-foreground">Account</div><ul class="space-y-2 text-muted-foreground"><li><a href="/auth" class="hover:text-foreground">Sign in</a></li><li>Submit a tool</li><li>Changelog</li><li>Contact</li></ul></div></div><div class="border-t border-border/60"><div class="mx-auto max-w-7xl px-4 sm:px-6 py-4 text-xs text-muted-foreground flex justify-between"><span>© <!-- -->2026<!-- --> BlinkerHub</span><span class="font-mono">v1.0.0</span></div></div></footer></div>
185<script>(function(a,f){let l;try{l=JSON.parse(sessionStorage.getItem(a)||"{}")}catch{return}const n=l?.[f||history.state?.__TSR_key];let c=!1;for(const t in n){const e=n[t],o=e?.scrollX,s=e?.scrollY;if(Number.isFinite(o)&&Number.isFinite(s)){if(t==="window")scrollTo(o,s),c=!0;else if(t)try{const r=document.querySelector(t);r&&(r.scrollLeft=o,r.scrollTop=s)}catch{}}}if(c)return;const i=location.hash.slice(1);if(i){const t=history.state?.__hashScrollIntoViewOptions??!0;if(t){const e=document.getElementById(i);e&&e.scrollIntoView(t)}return}scrollTo(0,0)})("tsr-scroll-restoration-v1_3");document.currentScript.remove()</script>
185<!--/$--><section aria-label="Notifications alt+T" tabindex="-1" aria-live="polite" aria-relevant="additions text" aria-atomic="false"></section>
185<script class="$tsr" id="$tsr-stream-barrier">(self.$R=self.$R||{})["tsr"]=[];self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]};$_TSR.router=($R=>$R[0]={manifest:$R[1]={routes:$R[2]={__root__:$R[3]={preloads:$R[4]=["/assets/index-CJxmbAdg.js","/assets/auth-DF7kgtsR.js","/assets/redirect-DCb_aIiF.js"],scripts:$R[5]=[$R[6]={attrs:$R[7]={type:"module",async:!0,src:"/assets/index-CJxmbAdg.js"}}]},"/categories":$R[8]={preloads:$R[9]=["/assets/categories-xwqQFsrW.js","/assets/site-footer-CqIb1jb9.js"]}}},matches:$R[10]=[$R[11]={i:"__root__�",u:1790997835121,s:"success",ssr:!0},$R[12]={i:"�categories�categories",u:1790997835121,s:"success",ssr:!0}],lastMatchId:"�categories�categories"})($R["tsr"]);$_TSR.e();document.currentScript.remove()</script>
185<script type="module" async="" src="/assets/index-CJxmbAdg.js"></script>
185
186<aside
187	id="lovable-badge"
188	role="complementary"
189	dir="ltr"
190	lang="en"
191	aria-label="Edit with Lovable">
192	<a
193		id="lovable-badge-cta" 
194		target="_blank" 
195		href="https://lovable.dev/projects/lovp_3p6535nw2h9vnatnmm3kt0bq80?utm_source=lovable-badge"
196		rel="noopener nofollow"
197		aria-label="Edit with Lovable">
198		<span id="lovable-badge-text">Edit with</span>
199		<span id="lovable-badge-logo"><svg xmlns="http://www.w3.org/2000/svg" width="52" height="16" fill="none" viewBox="0 0 52 16">
200  <path fill="#FCFBF8" fill-rule="evenodd" d="M20.318 5.25c.643 0 1.206.14 1.69.418a2.81 2.81 0 0 1 1.118 1.191c.266.513.4 1.115.4 1.807s-.134 1.296-.4 1.812a2.81 2.81 0 0 1-1.118 1.193c-.484.278-1.047.418-1.69.418s-1.208-.14-1.695-.418a2.85 2.85 0 0 1-1.125-1.193c-.262-.516-.393-1.12-.393-1.812s.131-1.294.393-1.807a2.848 2.848 0 0 1 1.125-1.191c.487-.279 1.052-.418 1.695-.418Zm0 1.425c-.27 0-.504.076-.7.228-.193.147-.34.37-.443.67-.102.295-.153.66-.153 1.093 0 .435.05.801.153 1.1.102.3.25.524.443.676.196.147.43.22.7.22.27 0 .502-.073.694-.22.193-.152.341-.375.443-.67.103-.299.153-.667.153-1.106 0-.65-.112-1.145-.337-1.481a1.08 1.08 0 0 0-.953-.51ZM32.7 5.25c.61 0 1.127.1 1.549.3.422.197.74.48.953.849.217.368.325.809.325 1.32v2.704c0 .29.02.562.062.812.044.245.108.4.19.466V12h-1.935a5.895 5.895 0 0 1-.105-.684 7.745 7.745 0 0 1-.02-.228 2.293 2.293 0 0 1-.151.203c-.205.242-.47.437-.793.584-.32.143-.685.215-1.094.215-.406 0-.77-.08-1.094-.24a1.845 1.845 0 0 1-.756-.682 1.984 1.984 0 0 1-.27-1.045c0-.606.178-1.069.535-1.388.356-.324.87-.534 1.542-.633l1.125-.16c.225-.032.403-.074.534-.123a.622.622 0 0 0 .288-.196.549.549 0 0 0 .093-.327.65.65 0 0 0-.11-.367.702.702 0 0 0-.32-.27c-.14-.07-.31-.105-.51-.105-.32 0-.576.083-.768.251-.193.164-.298.39-.314.676h-1.923c.016-.434.147-.82.393-1.155.25-.34.596-.604 1.039-.792.442-.189.954-.283 1.535-.283Zm.99 3.498a.98.98 0 0 1-.215.14 2.49 2.49 0 0 1-.584.178l-.473.092c-.315.061-.553.156-.713.283-.155.127-.233.305-.233.534 0 .23.084.412.252.547.168.135.383.203.645.203s.494-.058.694-.173c.201-.118.355-.282.461-.49.11-.21.166-.448.166-.714v-.6Zm4.526-2.375c.065-.125.138-.243.221-.349.197-.25.437-.44.719-.571.282-.135.6-.203.952-.203.528 0 .988.138 1.377.412.389.275.688.67.896 1.186.21.512.314 1.12.314 1.824 0 .7-.107 1.309-.32 1.825-.213.512-.518.906-.915 1.18-.393.275-.854.412-1.383.412-.352 0-.667-.062-.946-.184a1.832 1.832 0 0 1-.7-.554 2.2 2.2 0 0 1-.234-.383V12h-1.843V3h1.862v3.373Zm1.284.296c-.274 0-.51.085-.707.253-.192.163-.338.397-.436.7a3.376 3.376 0 0 0-.148 1.05c0 .406.05.759.148 1.058.098.299.243.53.436.694.197.164.433.246.707.246.279 0 .512-.082.7-.246.193-.164.336-.395.43-.694.099-.3.148-.652.148-1.058 0-.405-.05-.757-.147-1.056-.095-.299-.238-.53-.43-.694a1.015 1.015 0 0 0-.7-.253Zm9.416-1.419c.602 0 1.136.131 1.604.393.466.262.829.643 1.086 1.143.263.5.394 1.097.394 1.794 0 .25-.002.449-.006.596H47.51c.018.288.071.538.164.75a1.3 1.3 0 0 0 .491.596c.214.13.465.196.757.196.319 0 .583-.082.792-.246.209-.167.34-.403.393-.706h1.862a2.48 2.48 0 0 1-.485 1.235 2.54 2.54 0 0 1-1.051.805c-.439.188-.949.283-1.53.283-.655 0-1.225-.125-1.708-.375a2.672 2.672 0 0 1-1.13-1.143c-.267-.508-.4-1.137-.4-1.887 0-.712.14-1.327.418-1.843a2.86 2.86 0 0 1 1.155-1.186c.491-.27 1.051-.405 1.678-.405Zm-.044 1.345c-.274 0-.516.068-.725.203a1.29 1.29 0 0 0-.479.59 2.045 2.045 0 0 0-.132.498h2.562a1.873 1.873 0 0 0-.138-.602 1.061 1.061 0 0 0-.418-.516 1.243 1.243 0 0 0-.67-.173Z" clip-rule="evenodd"/>
201  <path fill="#FCFBF8" d="m26.605 9.995 1.342-4.566h1.924L27.628 12h-2.07l-2.33-6.57h1.98l1.397 4.565Zm-13.013.143h2.256c1.632 0 1.421 1.837 1.418 1.861h-5.603V3h1.93v7.138Zm31.516 1.861h-1.862V3h1.862v8.999Z"/>
202  <path fill="url(#a)" fill-rule="evenodd" d="M2.7 3c1.492 0 2.7 1.192 2.7 2.663v1.012h.9c1.49 0 2.7 1.192 2.7 2.662S7.791 12 6.3 12H0V5.663C0 4.193 1.209 3 2.7 3Z" clip-rule="evenodd"/>
203  <defs>
204    <radialGradient id="a" cx="0" cy="0" r="1" gradientTransform="matrix(-1.54236 7.07838 -10.231 -2.15602 4.627 5.022)" gradientUnits="userSpaceOnUse">
205      <stop offset=".106" stop-color="#FE7B02"/>
206      <stop offset=".394" stop-color="#FE3F21"/>
207      <stop offset=".608" stop-color="#F858BC"/>
208      <stop offset=".929" stop-color="#575ECF"/>
209    </radialGradient>
210  </defs>
211</svg>
212
213</span>
214	</a>
215	
216	<span id="lovable-badge-divider" aria-hidden="true"></span>
217	
218	<button 
219		id="lovable-badge-close"
220		aria-label="Dismiss"
221		title="Dismiss"
222		type="button">
223		<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 16 16" aria-hidden="true">
224			<path d="M10.646 4.646a.5.5 0 1 1 .707.708L8.707 8l2.646 2.646a.5.5 0 1 1-.707.707L8 8.707l-2.646 2.646a.5.5 0 1 1-.708-.707L7.293 8 4.646 5.354a.5.5 0 1 1 .708-.708L8 7.293l2.646-2.647Z"/>
225		</svg>
226	</button>
227</aside>
228<script>
229	(() => {
230		if (window.self !== window.top || navigator.userAgent.includes('puppeteer')) {
231			const badge = document.querySelector('#lovable-badge');
232			if (badge) {
233				badge.style.display = 'none';
234			}
235			return;
236		}
237
238		const closeButton = document.querySelector('#lovable-badge-close');
239		if (closeButton) {
240			closeButton.addEventListener('click', function(event) {
241				event.preventDefault();
242				event.stopPropagation();
243				const badge = document.querySelector('#lovable-badge');
244				if (badge) {
245					badge.classList.add('closing');
246					setTimeout(function() {
247						if (badge) {
248							badge.style.display = 'none';
249						}
250					}, 240);
251				}
252			});
253		}
254	})();
255</script>
255
256</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.