Help
RSS
API
Feed
Maltego
Contact
Domain > keld.app
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-02-06
93.127.173.151
(
ClassC
)
2026-03-08
147.79.120.30
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Sun, 08 Mar 2026 10:32:32 GMTContent-Type: text/htmlContent-Length: 795Connection: keep-aliveLocation: https://keld.app/platform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsServer: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: f41ce9775d866dd60400f6a0dcaae4b8-phx-edge5x-hcdn-cache-status: MISSx-hcdn-upstream-rt: 0.269 !DOCTYPE html>html styleheight:100%>head>meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno />title> 301 Moved Permanently/title>style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}/style>/head>body stylecolor: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;>div styleheight:auto; min-height:100%; > div styletext-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;> h1 stylemargin:0; font-size:150px; line-height:150px; font-weight:bold;>301/h1>h2 stylemargin-top:20px;font-size: 30px;>Moved Permanently/h2>p>The document has been permanently moved./p>/div>/div>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Sun, 08 Mar 2026 10:32:33 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingLast-Modified: Tue, 03 Feb 2026 20:09:12 GMTEtag: W/a0d5-698255e8-c752f3c7ad7f9cf2;gzplatform: hostingerpanel: hpanelRetry-After: 60Content-Security-Policy: upgrade-insecure-requestsServer: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: 027df67c1f525fb4356ae17e4adff1d2-phx-edge7x-hcdn-cache-status: DYNAMICx-hcdn-upstream-rt: 0.413 !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Keld - Meet people. In person./title> meta namedescription contentYes, another networking app. But this one involves leaving your house and talking to humans. Keld connects remote workers with great cafés and the interesting people working there.> !-- Distinctive Typography --> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link hrefhttps://fonts.googleapis.com/css2?familyInstrument+Serif:ital@0;1&familySatoshi:wght@400;500;600;700&displayswap relstylesheet> !-- Tailwind CSS CDN --> script srchttps://cdn.tailwindcss.com>/script> !-- Supabase JS --> script srchttps://cdn.jsdelivr.net/npm/@supabase/supabase-js@2>/script> style> :root { --keld-copper: #C27B5C; --keld-copper-light: #D4967A; --keld-copper-dark: #A86544; --keld-limestone: #F8F7F4; --keld-cream: #FAF9F6; --keld-text: #2D2D2D; --keld-teal: #4A6670; --keld-teal-light: #5A7A86; } * { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } html { scroll-behavior: smooth; } body { font-family: Satoshi, sans-serif; background: var(--keld-limestone); color: var(--keld-text); overflow-x: hidden; } .font-display { font-family: Instrument Serif, serif; } /* Grain overlay for texture */ .grain::before { content: ; position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; opacity: 0.03; background-image: url(data:image/svg+xml,%3Csvg viewBox0 0 256 256 xmlnshttp://www.w3.org/2000/svg%3E%3Cfilter idnoise%3E%3CfeTurbulence typefractalNoise baseFrequency0.9 numOctaves4 stitchTilesstitch/%3E%3C/filter%3E%3Crect width100%25 height100%25 filterurl(%23noise)/%3E%3C/svg%3E); z-index: 1000; } /* Flowing gradient background */ .hero-gradient { position: absolute; inset: 0; background: radial-gradient(ellipse 80% 50% at 20% 40%, rgba(194, 123, 92, 0.12) 0%, transparent 50%), radial-gradient(ellipse 60% 80% at 80% 20%, rgba(74, 102, 112, 0.08) 0%, transparent 50%), radial-gradient(ellipse 50% 50% at 60% 80%, rgba(194, 123, 92, 0.06) 0%, transparent 50%); pointer-events: none; } /* Animated flowing lines - representing connection */ .flow-lines { position: absolute; inset: 0; overflow: hidden; pointer-events: none; } .flow-line { position: absolute; height: 1px; background: linear-gradient(90deg, transparent, rgba(194, 123, 92, 0.3), transparent); animation: flowAcross 20s linear infinite; } .flow-line:nth-child(1) { top: 20%; animation-delay: 0s; width: 40%; } .flow-line:nth-child(2) { top: 40%; animation-delay: -5s; width: 60%; } .flow-line:nth-child(3) { top: 60%; animation-delay: -10s; width: 35%; } .flow-line:nth-child(4) { top: 80%; animation-delay: -15s; width: 50%; } @keyframes flowAcross { 0% { transform: translateX(-100%); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translateX(200vw); opacity: 0; } } /* Floating nav */ .nav-glass { backdrop-filter: blur(24px) saturate(180%); background: rgba(248, 247, 244, 0.75); border: 1px solid rgba(45, 45, 45, 0.06); box-shadow: 0 4px 24px rgba(0, 0, 0, 0.04); } /* Mobile-first: Minimum tap targets */ .tap-target { min-height: 44px; min-width: 44px; } /* Sticky mobile CTA */ .mobile-sticky-cta { position: fixed; bottom: 0; left: 0; right: 0; padding: 1rem 1.5rem; padding-bottom: calc(1rem + env(safe-area-inset-bottom)); background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(20px); border-top: 1px solid rgba(45, 45, 45, 0.08); z-index: 50; transform: translateY(100%); transition: transform 0.3s ease; } .mobile-sticky-cta.visible { transform: translateY(0); } @media (min-width: 1024px) { .mobile-sticky-cta { display: none; } } /* Mobile menu animation */ #mobileMenu { animation: slideDown 0.2s ease-out; } @keyframes slideDown { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } /* Form card with depth */ .form-card { background: white; border: 1px solid rgba(45, 45, 45, 0.06); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 4px 16px rgba(0, 0, 0, 0.04), 0 12px 48px rgba(0, 0, 0, 0.06); } /* Input styling */ .form-input { border: 1.5px solid rgba(45, 45, 45, 0.1); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .form-input:hover { border-color: rgba(45, 45, 45, 0.2); } .form-input:focus { outline: none; border-color: var(--keld-copper); box-shadow: 0 0 0 4px rgba(194, 123, 92, 0.1); } /* Toggle styling */ .toggle-group { background: rgba(45, 45, 45, 0.04); } .toggle-btn { position: relative; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); z-index: 1; } .toggle-btn.active { color: white; } .toggle-slider { position: absolute; top: 4px; bottom: 4px; left: 4px; width: calc(50% - 4px); background: var(--keld-copper); border-radius: 12px; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); z-index: 0; } .toggle-slider.right { transform: translateX(100%); } /* Primary button */ .btn-primary { background: var(--keld-copper); position: relative; overflow: hidden; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .btn-primary::before { content: ; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(255,255,255,0.1) 0%, transparent 50%); pointer-events: none; } .btn-primary:hover { background: var(--keld-copper-dark); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(194, 123, 92, 0.3); } .btn-primary:active { transform: translateY(0); } /* Secondary button */ .btn-secondary { background: var(--keld-teal); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .btn-secondary:hover { background: var(--keld-teal-light); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(74, 102, 112, 0.3); } /* Reveal animations - start visible, animate on scroll for below-fold */ .reveal { opacity: 1; transform: translateY(0); } .reveal-on-scroll { opacity: 0; transform: translateY(30px); transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1); } .reveal-on-scroll.visible { opacity: 1; transform: translateY(0); } .reveal-delay-1 { transition-delay: 0.1s; } .reveal-delay-2 { transition-delay: 0.2s; } .reveal-delay-3 { transition-delay: 0.3s; } /* Hero fade in on load */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } .animate-in { animation: fadeInUp 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards; } .animate-delay-1 { animation-delay: 0.1s; opacity: 0; } .animate-delay-2 { animation-delay: 0.2s; opacity: 0; } .animate-delay-3 { animation-delay: 0.3s; opacity: 0; } /* Feature cards */ .feature-card { position: relative; padding: 2.5rem; border-radius: 24px; background: white; border: 1px solid rgba(45, 45, 45, 0.06); transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); } .feature-card::before { content: ; position: absolute; inset: 0; border-radius: 24px; background: linear-gradient(135deg, rgba(194, 123, 92, 0.03) 0%, transparent 50%); opacity: 0; transition: opacity 0.4s ease; } .feature-card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.08); } .feature-card:hover::before { opacity: 1; } /* Connection visualization */ .connection-visual { position: relative; height: 400px; border-radius: 32px; background: linear-gradient(135deg, #FDFCFA 0%, #F5F3EF 100%); overflow: hidden; } .connection-node { position: absolute; width: 48px; height: 48px; border-radius: 50%; background: white; border: 2px solid rgba(194, 123, 92, 0.3); display: flex; align-items: center; justify-content: center; font-weight: 600; color: var(--keld-copper); font-size: 14px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06); animation: float 6s ease-in-out infinite; } .connection-node:nth-child(1) { top: 20%; left: 20%; animation-delay: 0s; } .connection-node:nth-child(2) { top: 60%; left: 35%; animation-delay: -1s; } .connection-node:nth-child(3) { top: 30%; left: 65%; animation-delay: -2s; } .connection-node:nth-child(4) { top: 70%; left: 70%; animation-delay: -3s; } .connection-node:nth-child(5) { top: 45%; left: 50%; animation-delay: -4s; background: var(--keld-copper); color: white; border-color: var(--keld-copper); } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } .connection-line { position: absolute; height: 1px; background: linear-gradient(90deg, var(--keld-copper), rgba(194, 123, 92, 0.2)); transform-origin: left center; opacity: 0.4; } /* Phone mockup styling */ .phone-mockup { position: relative; max-width: 320px; margin: 0 auto; } .phone-mockup img { border-radius: 2.5rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15), 0 0 0 1px rgba(0, 0, 0, 0.05); } .phone-mockup-hero { max-width: 280px; } /* Phone tilt effect */ .phone-tilt-left { transform: perspective(1000px) rotateY(5deg); } .phone-tilt-right { transform: perspective(1000px) rotateY(-5deg); } /* Spinner */ .spinner { width: 20px; height: 20px; border: 2px solid rgba(255, 255, 255, 0.3); border-top-color: white; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Banner pill */ .launch-pill { background: linear-gradient(135deg, var(--keld-copper) 0%, var(--keld-copper-dark) 100%); box-shadow: 0 2px 8px rgba(194, 123, 92, 0.3); } /* Footer link hover */ .footer-link { position: relative; } .footer-link::after { content: ; position: absolute; bottom: -2px; left: 0; width: 0; height: 1px; background: var(--keld-copper); transition: width 0.3s ease; } .footer-link:hover::after { width: 100%; } /style> script> tailwind.config { theme: { extend: { colors: { keld-copper: #C27B5C, keld-limestone: #F8F7F4, keld-text: #2D2D2D, keld-teal: #4A6670, } } } } /script>/head>body classgrain> !-- Launch Pill (floating, desktop only) --> div classhidden md:block fixed top-4 left-1/2 -translate-x-1/2 z-50> div classlaunch-pill text-white text-sm font-medium px-5 py-2 rounded-full> Launching in Manchester · 2026 /div> /div> !-- Floating Navigation --> nav classfixed top-4 md:top-16 left-1/2 -translate-x-1/2 z-40 nav-glass rounded-2xl px-4 md:px-6 py-3 w-calc(100%-2rem) max-w-4xl> div classflex items-center justify-between> a href# classflex items-center gap-3 group> div classh-7 w-7 rounded-lg bg-keld-copper flex items-center justify-center transition-transform group-hover:scale-110> span classtext-white font-bold text-sm>K/span> /div> span classfont-semibold text-lg tracking-tight>Keld/span> /a> !-- Desktop nav --> div classhidden md:flex items-center gap-8> a href#how-it-works classtext-sm text-gray-500 hover:text-keld-text transition-colors>How it works/a> a href#venues classtext-sm text-gray-500 hover:text-keld-text transition-colors>For venues/a> button onclickdocument.getElementById(hero-form).scrollIntoView({ behavior: smooth }) classbtn-primary text-sm text-white px-5 py-3 rounded-xl font-medium tap-target> Join waitlist /button> /div> !-- Mobile burger --> button idburgerBtn classmd:hidden p-2 tap-target flex items-center justify-center aria-labelOpen menu > svg classw-6 h-6 text-keld-text fillnone strokecurrentColor viewBox0 0 24 24> path idburgerIcon stroke-linecapround stroke-linejoinround stroke-width2 dM4 6h16M4 12h16M4 18h16/> /svg> /button> /div> !-- Mobile menu dropdown --> div idmobileMenu classmd:hidden hidden mt-4 pt-4 border-t border-gray-200/50> div classflex flex-col gap-2> a href#how-it-works classmobile-menu-link text-base text-gray-600 hover:text-keld-text py-3 px-2 rounded-xl hover:bg-gray-100/50 transition-colors tap-target>How it works/a> a href#venues classmobile-menu-link text-base text-gray-600 hover:text-keld-text py-3 px-2 rounded-xl hover:bg-gray-100/50 transition-colors tap-target>For venues/a> a hrefabout.html classmobile-menu-link text-base text-gray-600 hover:text-keld-text py-3 px-2 rounded-xl hover:bg-gray-100/50 transition-colors tap-target>Our story/a> button onclickdocument.getElementById(hero-form).scrollIntoView({ behavior: smooth }); closeMobileMenu(); classbtn-primary text-white font-semibold py-4 px-6 rounded-xl mt-2 tap-target w-full > Join waitlist /button> p classtext-xs text-gray-400 text-center mt-2>Launching in Manchester · 2026/p> /div> /div> /nav> !-- Hero Section --> section classrelative min-h-screen flex items-center pt-28 md:pt-40 pb-24 px-6 md:px-12> div classhero-gradient>/div> div classflow-lines> div classflow-line>/div> div classflow-line>/div> div classflow-line>/div> div classflow-line>/div> /div> div classmax-w-7xl mx-auto w-full> div classgrid lg:grid-cols-12 gap-12 lg:gap-20 items-center> !-- Left: Headline (7 cols) --> div classlg:col-span-7 relative z-10> h1 classfont-display text-5xl sm:text-6xl md:text-7xl lg:text-8xl leading-1.05 tracking-tight mb-8 animate-in> Meet people.br> span classtext-keld-copper>In person./span> /h1> p classtext-xl md:text-2xl text-gray-600 leading-relaxed max-w-xl animate-in animate-delay-1> Yes, another networking app. Were cringing too. But this one involves leaving your house and talking to humans. Radical stuff. /p> /div> !-- Right: Form (5 cols) --> div classlg:col-span-5 relative z-10 animate-in animate-delay-2 idhero-form> div classform-card rounded-3xl p-8 md:p-10> p classtext-sm text-gray-500 mb-6 font-medium uppercase tracking-wide>The bit where you sign up/p> form idwaitlistForm classspace-y-4> input typeemail idemail nameemail placeholderYour email required classform-input w-full px-5 py-4 rounded-2xl bg-white text-keld-text placeholder-gray-400 > !-- Toggle --> div classtoggle-group relative flex p-1 rounded-2xl> div classtoggle-slider idtoggleSlider>/div> button typebutton iduserTypeRemote classtoggle-btn active flex-1 py-3.5 px-4 rounded-xl font-medium text-sm text-center tap-target data-typeremote_worker > Remote worker /button> button typebutton iduserTypeVenue classtoggle-btn flex-1 py-3.5 px-4 rounded-xl font-medium text-sm text-center text-gray-500 tap-target data-typevenue_owner > Venue owner /button> /div> input typehidden iduserType nameuser_type valueremote_worker> div iderrorMessage classhidden text-red-500 text-sm px-1>/div> div idsuccessMessage classhidden text-green-600 text-sm px-1>/div> button typesubmit idsubmitBtn classbtn-primary w-full text-white font-semibold py-4 px-6 rounded-2xl flex items-center justify-center gap-2 > span idsubmitText>Get early access/span> span idsubmitSpinner classhidden> div classspinner>/div> /span> /button> /form> p classtext-xs text-gray-400 mt-4 text-center>We wont spam you. Lifes too short./p> p classtext-xs text-gray-400 mt-3 text-center italic>Built by a remote worker who got tired of eating lunch alone./p> /div> /div> /div> /div> /section> !-- Value Proposition --> section classpy-24 md:py-32 px-6 md:px-12 relative overflow-hidden> div classmax-w-7xl mx-auto> div classgrid lg:grid-cols-2 gap-12 lg:gap-20 items-center> !-- Left: Phone mockup showing profile --> div classphone-mockup phone-tilt-left reveal-on-scroll> img srcassets/Simulator Screenshot - iPhone 16e - 2026-02-03 at 14.10.27.png altYour Keld profile classw-full> /div> !-- Right: Text --> div classreveal-on-scroll> h2 classfont-display text-3xl md:text-4xl lg:text-5xl leading-tight mb-6> Not anotherbr> em classtext-keld-copper>networking app./em> /h2> p classtext-xl text-gray-600 leading-relaxed mb-6> (Fine, it technically is. But stay with us.) /p> p classtext-lg text-gray-500 leading-relaxed> Tell us what youre working on, who you want to meet, and well do the rest. No algorithmic small talk. No lets circle back. Just people you might genuinely like, in places youd go anyway. /p> /div> /div> /div> /section> !-- Product Showcase --> section idhow-it-works classpy-24 md:py-32 px-6 md:px-12 bg-white overflow-hidden> div classmax-w-7xl mx-auto> !-- Feature 1: Discover --> div classgrid lg:grid-cols-2 gap-12 lg:gap-20 items-center mb-32 md:mb-48> div classorder-2 lg:order-1 reveal-on-scroll> div classphone-mockup> img srcassets/Simulator Screenshot - iPhone 16e - 2026-02-03 at 14.09.20.png altDiscover venues in Keld classw-full rounded-2.5rem shadow-2xl> /div> /div> div classorder-1 lg:order-2 reveal-on-scroll> p classtext-keld-copper font-medium text-sm uppercase tracking-wide mb-4>Discover/p> h2 classfont-display text-3xl md:text-4xl lg:text-5xl leading-tight mb-6> Better than yourbr>kitchen table. /h2> p classtext-lg text-gray-500 leading-relaxed> Cafés, bars, and hotels that want remote workers. (Yes, they exist.) Good wifi. Decent coffee. Zero passive-aggressive sighs when you order one flat white and stay for four hours. Weve done the awkward asking so you dont have to. /p> /div> /div> !-- Feature 2: Map & Check In --> div classgrid lg:grid-cols-2 gap-12 lg:gap-20 items-center mb-32 md:mb-48> div classreveal-on-scroll> p classtext-keld-copper font-medium text-sm uppercase tracking-wide mb-4>Check in/p> h2 classfont-display text-3xl md:text-4xl lg:text-5xl leading-tight mb-6> See whos about.br>Or dont. /h2> p classtext-lg text-gray-500 leading-relaxed> Feeling social? Go visible. Deep in a deadline? Hide. Nobodys going to tap you on the shoulder and ask what you do. Unless you want them to. (Some people are into that. No judgement.) /p> /div> div classreveal-on-scroll> div classphone-mockup> img srcassets/Simulator Screenshot - iPhone 16e - 2026-02-03 at 14.09.36.png altMap view showing nearby workers classw-full rounded-2.5rem shadow-2xl> /div> /div> /div> !-- Feature 3: Connect --> div classgrid lg:grid-cols-2 gap-12 lg:gap-20 items-center> div classorder-2 lg:order-1 reveal-on-scroll> div classphone-mockup> img srcassets/Simulator Screenshot - iPhone 16e - 2026-02-03 at 14.09.52.png altSchedule a meeting in Keld classw-full rounded-2.5rem shadow-2xl> /div> /div> div classorder-1 lg:order-2 reveal-on-scroll> p classtext-keld-copper font-medium text-sm uppercase tracking-wide mb-4>Connect/p> h2 classfont-display text-3xl md:text-4xl lg:text-5xl leading-tight mb-6> Talk to someone.br>With your face. /h2> p classtext-lg text-gray-500 leading-relaxed> Coffee. Lunch. Working session. Walk and talk. Whatever youre comfortable with. No forced icebreakers. No So, whats your elevator pitch? Just two people who might get along, meeting like its 2005. /p> /div> /div> /div> /section> !-- Gamification / Stay Motivated --> section classpy-24 md:py-32 px-6 md:px-12 bg-gradient-to-b from-white to-keld-limestone> div classmax-w-7xl mx-auto> div classgrid lg:grid-cols-2 gap-12 lg:gap-20 items-center> div classreveal-on-scroll> p classtext-keld-copper font-medium text-sm uppercase tracking-wide mb-4>Stay motivated/p> h2 classfont-display text-3xl md:text-4xl lg:text-5xl leading-tight mb-6> Gamification.br>em classtext-keld-teal>But not annoying./em> /h2> p classtext-lg text-gray-500 leading-relaxed> Streaks. Achievements. Little dopamine hits for leaving your house. Were not above bribing you to build better habits. Eventually the baristas will know your order. Thats the real achievement unlocked. /p> /div> div classphone-mockup phone-tilt-right reveal-on-scroll> img srcassets/Simulator Screenshot - iPhone 16e - 2026-02-03 at 14.10.35.png altAchievements and streaks in Keld classw-full> /div> /div> /div> /section> !-- For Venues --> section idvenues classpy-32 md:py-48 px-6 md:px-12 relative overflow-hidden> div classhero-gradient styletransform: rotate(180deg);>/div> div classmax-w-5xl mx-auto relative z-10> div classgrid md:grid-cols-2 gap-12 lg:gap-16 items-center> !-- Illustration --> div classreveal-on-scroll order-2 md:order-1> img srchttps://doodleipsum.com/700x500/hand-drawn?bgF8F7F4 altPeople working in a café classw-full max-w-md mx-auto rounded-2xl loadinglazy referrerpolicyno-referrer /> /div> !-- Content --> div classreveal-on-scroll order-1 md:order-2> p classtext-sm text-keld-copper font-medium uppercase tracking-wide mb-4>For venues/p> h2 classfont-display text-4xl md:text-5xl leading-tight mb-6> Your quiet hours.br>em classtext-keld-teal>Their office./em> /h2> p classtext-lg text-gray-500 mb-8 leading-relaxed> Fill those awkward mid-morning lulls with remote workers who buy things. We send you people. You give them somewhere nice to sit. Everyone wins. /p> a hrefvenues.html classbtn-secondary text-white font-semibold py-4 px-8 rounded-2xl inline-flex items-center gap-2 tap-target > Learn more svg classw-4 h-4 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM17 8l4 4m0 0l-4 4m4-4H3/> /svg> /a> /div> /div> /div> /section> !-- Sticky Mobile CTA --> div classmobile-sticky-cta lg:hidden idmobileCta> button onclickdocument.getElementById(hero-form).scrollIntoView({ behavior: smooth }) classbtn-primary w-full text-white font-semibold py-4 px-6 rounded-2xl tap-target > Get early access /button> /div> !-- Footer --> footer classpy-16 pb-32 lg:pb-16 px-6 md:px-12 border-t border-gray-200/50> div classmax-w-6xl mx-auto> div classflex flex-col md:flex-row justify-between items-center gap-8> div classflex items-center gap-3> div classh-6 w-6 rounded-md bg-keld-copper/60 flex items-center justify-center> span classtext-white font-bold text-xs>K/span> /div> span classtext-sm text-gray-500>© 2026 Keld/span> /div> div classflex flex-wrap items-center justify-center md:justify-end gap-4 md:gap-8> a hrefabout.html classfooter-link text-sm text-gray-500 hover:text-keld-text transition-colors py-2 tap-target>Our story/a> a hrefvenues.html classfooter-link text-sm text-gray-500 hover:text-keld-text transition-colors py-2 tap-target>For venues/a> a hrefprivacy.html classfooter-link text-sm text-gray-500 hover:text-keld-text transition-colors py-2 tap-target>Privacy/a> a hrefterms.html classfooter-link text-sm text-gray-500 hover:text-keld-text transition-colors py-2 tap-target>Terms/a> div classflex gap-2 ml-4> a href# classtext-gray-400 hover:text-keld-copper transition-colors p-2 tap-target flex items-center justify-center aria-labelTwitter> svg classw-5 h-5 fillcurrentColor viewBox0 0 24 24> path dM18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z/> /svg> /a> a href# classtext-gray-400 hover:text-keld-copper transition-colors p-2 tap-target flex items-center justify-center aria-labelLinkedIn> svg classw-5 h-5 fillcurrentColor viewBox0 0 24 24> path dM19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z/> /svg> /a> /div> /div> /div> /div> /footer> script> // Supabase configuration const SUPABASE_URL https://grhxizaaeqiyythjcthm.supabase.co; const SUPABASE_ANON_KEY sb_publishable_AztyE7uEAqerthoKkv-5wQ_oXUcOZWh; const supabaseClient window.supabase ? window.supabase.createClient(SUPABASE_URL, SUPABASE_ANON_KEY) : null; // Mobile menu toggle const burgerBtn document.getElementById(burgerBtn); const mobileMenu document.getElementById(mobileMenu); const burgerIcon document.getElementById(burgerIcon); const mobileCta document.getElementById(mobileCta); let menuOpen false; function closeMobileMenu() { menuOpen false; mobileMenu.classList.add(hidden); burgerIcon.setAttribute(d, M4 6h16M4 12h16M4 18h16); } burgerBtn?.addEventListener(click, () > { menuOpen !menuOpen; if (menuOpen) { mobileMenu.classList.remove(hidden); // Change to X icon burgerIcon.setAttribute(d, M6 18L18 6M6 6l12 12); // Hide sticky CTA when menu open mobileCta?.classList.remove(visible); } else { closeMobileMenu(); } }); // Close menu when clicking a link document.querySelectorAll(.mobile-menu-link).forEach(link > { link.addEventListener(click, () > { closeMobileMenu(); }); }); // Toggle functionality const userTypeRemote document.getElementById(userTypeRemote); const userTypeVenue document.getElementById(userTypeVenue); const userTypeInput document.getElementById(userType); const toggleSlider document.getElementById(toggleSlider); function setActiveToggle(isVenue) { if (isVenue) { userTypeVenue.classList.add(active); userTypeVenue.classList.remove(text-gray-500); userTypeRemote.classList.remove(active); userTypeRemote.classList.add(text-gray-500); toggleSlider.classList.add(right); userTypeInput.value venue_owner; } else { userTypeRemote.classList.add(active); userTypeRemote.classList.remove(text-gray-500); userTypeVenue.classList.remove(active); userTypeVenue.classList.add(text-gray-500); toggleSlider.classList.remove(right); userTypeInput.value remote_worker; } } userTypeRemote.addEventListener(click, () > setActiveToggle(false)); userTypeVenue.addEventListener(click, () > setActiveToggle(true)); // Form submission const waitlistForm document.getElementById(waitlistForm); const submitBtn document.getElementById(submitBtn); const submitText document.getElementById(submitText); const submitSpinner document.getElementById(submitSpinner); const errorMessage document.getElementById(errorMessage); const successMessage document.getElementById(successMessage); waitlistForm.addEventListener(submit, async (e) > { e.preventDefault(); errorMessage.classList.add(hidden); successMessage.classList.add(hidden); const email document.getElementById(email).value.trim(); const userType userTypeInput.value; const emailRegex /^^\s@+@^\s@+\.^\s@+$/; if (!emailRegex.test(email)) { errorMessage.textContent Please enter a valid email address.; errorMessage.classList.remove(hidden); return; } submitBtn.disabled true; submitText.classList.add(hidden); submitSpinner.classList.remove(hidden); try { if (!supabaseClient) { throw new Error(Connection error. Please try again.); } const { error } await supabaseClient .from(waitlist_signups) .insert({ email, user_type: userType, source: landing_page }); if (error) throw error; successMessage.textContent Youre in! Well be in touch soon.; successMessage.classList.remove(hidden); waitlistForm.reset(); setActiveToggle(false); } catch (error) { console.error(Error:, error); errorMessage.textContent error.message || Something went wrong. Please try again.; errorMessage.classList.remove(hidden); } finally { submitBtn.disabled false; submitText.classList.remove(hidden); submitSpinner.classList.add(hidden); } }); // Venue CTA document.getElementById(venueCtaBtn)?.addEventListener(click, () > { document.getElementById(hero-form).scrollIntoView({ behavior: smooth }); setTimeout(() > { setActiveToggle(true); document.getElementById(email).focus(); }, 600); }); // Scroll reveal const revealElements document.querySelectorAll(.reveal-on-scroll); const revealObserver new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.classList.add(visible); } }); }, { threshold: 0.1, rootMargin: -50px }); revealElements.forEach(el > revealObserver.observe(el)); // Mobile sticky CTA - show when hero form is out of view (and menu is closed) const heroForm document.getElementById(hero-form); if (heroForm && mobileCta) { const ctaObserver new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting || menuOpen) { mobileCta.classList.remove(visible); } else { mobileCta.classList.add(visible); } }); }, { threshold: 0, rootMargin: -100px 0px 0px 0px }); ctaObserver.observe(heroForm); } /script>/body>/html>!-- Deployment test --># Deployment timestamp: Tue Feb 3 20:04:32 GMT 2026
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]