6989a98d75
- Arkitektur: docs/auth/passwordless-architecture.md - Backend: iom/quixzoom-auth-service/ (FastAPI + Redis) - Webb: quixzoom-market-pages/se/login/ (QR-kod + polling) - App: iom/quixzoom-app/src/features/auth/ (push + deep links) Flöde: QR-kod → app-godkännande → webb-inloggad
1986 lines
220 KiB
HTML
1986 lines
220 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<link rel="alternate" hreflang="x-default" href="https://www.quixzoom.com/">
|
||
<link rel="alternate" hreflang="en" href="https://www.quixzoom.com/">
|
||
<link rel="alternate" hreflang="sv" href="https://quixzoom.se/">
|
||
<link rel="alternate" hreflang="de" href="https://quixzoom.de/">
|
||
<link rel="alternate" hreflang="nl" href="https://quixzoom.nl/">
|
||
<link rel="alternate" hreflang="fr" href="https://quixzoom.fr/">
|
||
<link rel="alternate" hreflang="es" href="https://quixzoom.es/">
|
||
<link rel="alternate" hreflang="it" href="https://quixzoom.it/">
|
||
<link rel="alternate" hreflang="pl" href="https://quixzoom.pl/">
|
||
<link rel="alternate" hreflang="zh-CN" href="https://quixzoom.asia/zh-cn/">
|
||
<link rel="alternate" hreflang="ja" href="https://quixzoom.asia/ja/">
|
||
<link rel="alternate" hreflang="ko" href="https://quixzoom.asia/ko/">
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
||
|
||
|
||
<meta name="color-scheme" content="light">
|
||
<title>quiXzoom — Earn Money Taking Photos | Flexible Work</title>
|
||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||
<link rel="apple-touch-icon" sizes="192x192" href="/apple-touch-icon.png">
|
||
<meta name="description" content="quiXzoom rewards you per approved mission with QX Credits — redeemable as cash. No platform fee. No commission. Launching August 2026.">
|
||
<link rel="canonical" href="https://www.quixzoom.com/">
|
||
<!-- hreflang — canonical paths -->
|
||
<link rel="alternate" hreflang="x-default" href="https://www.quixzoom.com/" />
|
||
<link rel="alternate" hreflang="en" href="https://www.quixzoom.com/" />
|
||
<link rel="alternate" hreflang="sv" href="https://www.quixzoom.com/markets/se/" />
|
||
<link rel="alternate" hreflang="nl" href="https://www.quixzoom.com/markets/nl/" />
|
||
<meta name="keywords" content="quiXzoom, quixzoom, earn money photos, photo missions, zoomer, crowdsourced field data, tjäna pengar foton, fältdatainsamling Sverige">
|
||
<meta name="keywords" content="quiXzoom, earn money taking photos, crowdsourced field data, photo missions, zoomer platform, fältdatainsamling, tjäna pengar foton">
|
||
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:title" content="quiXzoom — Capture the World. Get Paid.">
|
||
<meta property="og:description" content="Take photo missions near you. Get paid every Monday. No platform fee — you keep 100% of your earned mission pay. Launching August 1, 2026.">
|
||
<meta property="og:url" content="https://www.quixzoom.com/">
|
||
<meta property="og:image" content="https://www.quixzoom.com/images/hero-zoomer-city.jpg">
|
||
<meta property="og:image:width" content="1200">
|
||
<meta property="og:image:height" content="630">
|
||
<meta property="og:image:alt" content="quiXzoom — Earn per Mission photographing city infrastructure">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:image" content="https://www.quixzoom.com/images/hero-zoomer-city.jpg">
|
||
<meta name="theme-color" content="#F7F7F5">
|
||
<link rel="manifest" href="/site.webmanifest">
|
||
<link rel="icon" type="image/png" sizes="512x512" href="/favicon-512x512.png">
|
||
<link rel="preconnect" href="https://api.quixzoom.com">
|
||
<script type="application/ld+json">{"@context":"https://schema.org","@graph":[
|
||
{"@type":["Organization","Corporation"],"@id":"https://www.quixzoom.com/#organization","name":"quiXzoom","legalName":"Landvex AB","alternateName":["quiXzoom","quixzoom","QuiXzoom","QUIXZOOM","quick zoom app","quix zoom","qui xzoom","quiX zoom","quixzoom app","quixzoom platform","quiXzoom platform","quiXzoom Sverige","quiXzoom Sweden"],"url":"https://www.quixzoom.com/","foundingDate":"2026","description":"quiXzoom is a crowdsourced field data collection platform. Independent contractors called Zoomers photograph infrastructure, roads, buildings and urban environments on demand and earn money per approved mission.","logo":{"@type":"ImageObject","url":"https://www.quixzoom.com/favicon-512x512.png","width":512,"height":512},"brand":{"@type":"Brand","name":"quiXzoom","slogan":"Collect reality."},"disambiguatingDescription":"quiXzoom (spelled with a capital X) is a crowdsourced field data platform — not related to Zoom video conferencing or camera zoom features.","sameAs":["https://www.quixzoom.com","https://app.quixzoom.com","https://www.linkedin.com/company/quixzoom","https://www.instagram.com/quixzoom","https://twitter.com/quixzoom","https://x.com/quixzoom","https://www.crunchbase.com/organization/quixzoom"]},
|
||
{"@type":"WebSite","@id":"https://www.quixzoom.com/#website","url":"https://www.quixzoom.com/","name":"quiXzoom","description":"Crowdsourced field data collection — earn money photographing infrastructure and urban environments near you.","publisher":{"@id":"https://www.quixzoom.com/#organization"}},
|
||
{"@type":"SoftwareApplication","name":"quiXzoom","applicationCategory":"LifestyleApplication","operatingSystem":"iOS, Android","description":"Crowdsourced field data collection platform. Zoomers earn money photographing infrastructure and urban environments on demand.","offers":{"@type":"Offer","price":"0","priceCurrency":"EUR","description":"Free to join — earn per approved mission"}},
|
||
{"@type":"FAQPage","mainEntity":[
|
||
{"@type":"Question","name":"How much can I earn as a Zoomer?","acceptedAnswer":{"@type":"Answer","text":"Missions reward 30–120 QX Credits each. Active Zoomers doing 8–12 missions per week typically accumulate 400–1,200 Credits weekly. Credits are redeemable as cash via weekly payout — the exact amount depends on your local payout rate."}},
|
||
{"@type":"Question","name":"Do I need a professional camera?","acceptedAnswer":{"@type":"Answer","text":"No. iPhone 12 or later, or any Android with 12MP or better, is all you need."}},
|
||
{"@type":"Question","name":"When do I get paid?","acceptedAnswer":{"@type":"Answer","text":"QX Credits are added to your balance when each mission is approved. Once your balance reaches the minimum payout threshold (250 Credits), funds are transferred to your registered payout account via Stripe Connect. Tax treatment of payouts varies by country — you are responsible for your own tax obligations."}},
|
||
{"@type":"Question","name":"Is there a signup fee?","acceptedAnswer":{"@type":"Answer","text":"No. quiXzoom is completely free to join. quiXzoom charges no commission or platform fee — you receive 100% of your earned QX Credits."}},
|
||
{"@type":"Question","name":"How do you spell quiXzoom?","acceptedAnswer":{"@type":"Answer","text":"The correct spelling is quiXzoom — with a capital X in the middle. Common misspellings include quixzoom (all lowercase), QuiXzoom, quick zoom, and quix zoom. All refer to the same platform. The brand name quiXzoom has no relation to Zoom video conferencing software."}},
|
||
{"@type":"Question","name":"Vad heter appen quiXzoom?","acceptedAnswer":{"@type":"Answer","text":"Appen heter quiXzoom och stavas med stort X i mitten. Ibland skrivs det quixzoom eller QuiXzoom. Det är samma plattform. quiXzoom är inte relaterat till Zoom-videokonferens."}}
|
||
]}
|
||
]}</script>
|
||
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Speakable","speakableSelector":{"@type":"CssSelectorType","cssSelector":["h1",".hero-h1",".hero-tagline"]},"url":"https://www.quixzoom.com/"}</script>
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@graph": [
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/og-image.jpg", "url": "https://www.quixzoom.com/images/og-image.jpg", "name": "quiXzoom — Collect Reality. Get Paid.", "description": "Official quiXzoom brand image with logo and tagline.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "representativeOfPage": true, "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/hero-zoomer-city.jpg", "url": "https://www.quixzoom.com/images/hero-zoomer-city.jpg", "name": "quiXzoom Zoomer photographing city storefront", "description": "A quiXzoom Zoomer photographs a storefront for a field data collection mission.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/mission-map.jpg", "url": "https://www.quixzoom.com/images/mission-map.jpg", "name": "quiXzoom mission map", "description": "quiXzoom app real-time mission map with active photo mission pins.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/zoomer-earnings.jpg", "url": "https://www.quixzoom.com/images/zoomer-earnings.jpg", "name": "quiXzoom Zoomer weekly earnings", "description": "quiXzoom Zoomer earnings dashboard showing QX Credits and weekly cash payout.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/infrastructure-scan.jpg", "url": "https://www.quixzoom.com/images/infrastructure-scan.jpg", "name": "quiXzoom infrastructure photo mission", "description": "Zoomer holds iPhone photographing building for quiXzoom infrastructure mission.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/quixzoom-team.jpg", "url": "https://www.quixzoom.com/images/quixzoom-team.jpg", "name": "quiXzoom global Zoomer network", "description": "quiXzoom global network of Zoomers collecting field data in 120+ cities.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/app-screenshot.jpg", "url": "https://www.quixzoom.com/images/app-screenshot.jpg", "name": "quiXzoom app on iPhone showing mission list", "description": "quiXzoom app screenshot on iPhone showing active missions and QX Credit rewards.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"},
|
||
{"@type": "ImageObject", "@id": "https://www.quixzoom.com/images/sweden-launch.jpg", "url": "https://www.quixzoom.com/images/sweden-launch.jpg", "name": "quiXzoom Sweden launch Stockholm August 2026", "description": "quiXzoom launches in Sweden August 1 2026 starting with Stockholm.", "width": 1200, "height": 630, "encodingFormat": "image/jpeg", "creditText": "quiXzoom"}
|
||
]
|
||
}
|
||
</script>
|
||
<style>
|
||
:root{
|
||
--bg-dark:#1a1a1a;--bg-white:#FFFFFF;--bg-off:#F7F7F5;
|
||
--blue:#0066FF;--blue-dark:#0052CC;--blue-pale:rgba(0,102,255,.07);
|
||
--green:#00C853;--text-dark:#1a1a1a;--text-body:#3a3a3a;--text-muted:#6B6B6B;
|
||
--radius-card:16px;--shadow-hover:0 16px 48px rgba(0,0,0,.14);
|
||
--transition:.22s cubic-bezier(.25,.46,.45,.94);
|
||
--text-xs:.75rem;
|
||
--text-sm:.875rem;
|
||
--text-base:1rem;
|
||
--text-lg:1.125rem;
|
||
--text-xl:1.375rem;
|
||
--text-2xl:1.75rem;
|
||
--radius-sm:8px;
|
||
--radius-md:14px;
|
||
--radius-lg:24px;
|
||
--radius-full:100px
|
||
}
|
||
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
|
||
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
|
||
body{font-family:-apple-system,BlinkMacSystemFont,'Inter','Helvetica Neue',sans-serif;font-size:1rem;line-height:1.65;color:var(--text-body);background:var(--bg-white);-webkit-font-smoothing:antialiased;overflow-x:hidden}
|
||
a{color:inherit;text-decoration:none}
|
||
ul{list-style:none}
|
||
button{cursor:pointer;font-family:inherit}
|
||
h1{font-size:clamp(2.75rem,6vw,5rem);font-weight:900;letter-spacing:-.05em;line-height:1}
|
||
h2{font-size:clamp(2rem,3.5vw,3rem);font-weight:800;letter-spacing:-.04em;line-height:1.1}
|
||
h3{font-size:var(--text-xl);font-weight:700;letter-spacing:-.02em;line-height:1.3}
|
||
.container{width:100%;max-width:1160px;margin:0 auto;padding:0 24px}
|
||
.section-pad{padding:96px 0}
|
||
.section-header{text-align:center;margin-bottom:64px}
|
||
.section-header h2{color:var(--text-dark);margin-bottom:16px}
|
||
.section-header p{font-size:var(--text-lg);color:var(--text-muted);max-width:580px;margin:0 auto}
|
||
|
||
/* NAV */
|
||
nav{position:sticky;top:0;z-index:300;background:var(--bg-white);border-bottom:1px solid rgba(0,0,0,.08);box-shadow:0 1px 3px rgba(0,0,0,.05)}
|
||
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px;gap:32px}
|
||
.nav-logo{font-size:1.375rem;font-weight:900;color:var(--text-dark);letter-spacing:-.04em}
|
||
.nav-logo .x{color:var(--blue)}
|
||
.nav-links{display:flex;align-items:center;gap:32px;flex:1;justify-content:center}
|
||
.nav-links a{color:var(--text-muted);font-size:var(--text-base);font-weight:500;transition:color .15s}
|
||
.nav-links a:hover{color:var(--text-dark)}
|
||
.btn-nav{background:var(--blue);color:var(--text-dark);border:none;border-radius:var(--radius-lg);padding:10px 24px;font-size:var(--text-base);font-weight:700;transition:background .15s;white-space:nowrap;flex-shrink:0}
|
||
.btn-nav:hover{background:var(--blue-dark)}
|
||
.mobile-menu{display:none}@media(max-width:768px){.nav-links{display:none}.btn-nav{display:none}
|
||
.hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:8px;background:none;border:none;z-index:999}
|
||
.hamburger span{display:block;width:22px;height:2px;background:var(--text-dark);border-radius:2px;transition:all .3s}
|
||
.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
|
||
.hamburger.open span:nth-child(2){opacity:0}
|
||
.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
|
||
.mobile-menu{display:none;position:fixed;inset:0;top:68px;background:var(--bg-white);z-index:299;padding:24px;flex-direction:column;gap:0;border-top:1px solid rgba(0,0,0,.08);box-shadow:0 4px 20px rgba(0,0,0,.1)}
|
||
.mobile-menu.open{display:flex}
|
||
.mobile-menu a{color:var(--text-body);font-size:1.1rem;font-weight:500;padding:18px 0;border-bottom:1px solid rgba(0,0,0,.08);display:block}
|
||
.mobile-menu a:last-child{border-bottom:none}
|
||
.mobile-menu .btn-mobile{display:block;margin-top:24px;background:var(--blue);color:var(--text-dark);text-align:center;border-radius:var(--radius-lg);padding:16px 24px;font-size:1rem;font-weight:700}
|
||
@media(max-width:768px){.hamburger{display:flex}}}
|
||
|
||
/* HERO */
|
||
#hero{background:var(--bg-off);min-height:calc(100vh - 68px);display:flex;align-items:center;padding:80px 0 96px}
|
||
.hero-layout{display:grid;grid-template-columns:1fr 420px;gap:64px;align-items:center;width:100%}
|
||
.hero-inner{max-width:560px}
|
||
.hero-visual{display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden}
|
||
.phone-frame{width:240px;height:480px;background:#1a1a1a;border-radius:36px;border:2px solid rgba(0,0,0,.1);box-shadow:0 40px 80px rgba(0,0,0,.15),0 0 0 1px rgba(0,0,0,.05);position:relative;overflow:hidden;flex-shrink:0}
|
||
.phone-notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:80px;height:24px;background:#2a2a2a;border-radius:0 0 16px 16px;z-index:10}
|
||
.phone-screen{position:absolute;inset:0;background:#fff;border-radius:34px;overflow:hidden;display:flex;flex-direction:column}
|
||
.ps-statusbar{height:40px;background:#f5f5f5;display:flex;align-items:flex-end;justify-content:space-between;padding:0 16px 6px;flex-shrink:0}
|
||
.ps-time{color:rgba(0,0,0,.9);font-size:.65rem;font-weight:700}
|
||
.ps-icons{display:flex;gap:4px;align-items:center}
|
||
.ps-map{flex:1;background:linear-gradient(160deg,#1a2535 0%,#1e3a2f 40%,#162030 100%);position:relative;overflow:hidden}
|
||
.ps-road{position:absolute;background:rgba(0,0,0,.08);border-radius:2px}
|
||
.ps-mission-pin{position:absolute;top:38%;left:52%;transform:translate(-50%,-50%)}
|
||
.ps-pin-outer{width:44px;height:44px;border-radius:50%;background:rgba(0,102,255,.2);display:flex;align-items:center;justify-content:center;animation:pingPulse 2s ease infinite}
|
||
.ps-pin-inner{width:24px;height:24px;border-radius:50%;background:#0066FF;display:flex;align-items:center;justify-content:center}
|
||
.ps-user-dot{position:absolute;bottom:32%;left:38%;width:14px;height:14px;border-radius:50%;background:#00C853;border:2px solid #fff;box-shadow:0 0 0 4px rgba(0,200,83,.2)}
|
||
@keyframes pingPulse{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:1}50%{transform:translate(-50%,-50%) scale(1.3);opacity:.7}}
|
||
.ps-card{position:absolute;bottom:0;left:0;right:0;background:#fff;border-radius:20px 20px 0 0;padding:16px;box-shadow:0 -4px 24px rgba(0,0,0,.3)}
|
||
.ps-card-title{font-size:.7rem;font-weight:800;color:#1a1a1a;margin-bottom:2px}
|
||
.ps-card-addr{font-size:.6rem;color:#555;margin-bottom:8px}
|
||
.ps-card-row{display:flex;justify-content:space-between;align-items:center}
|
||
.ps-card-reward{font-size:.85rem;font-weight:900;color:#0066FF}
|
||
.ps-card-btn{background:#0066FF;color:var(--text-dark);border:none;border-radius:12px;padding:6px 12px;font-size:.6rem;font-weight:700}
|
||
.ps-card-meta{font-size:.58rem;color:#666;margin-top:4px}
|
||
.phone-glow{position:absolute;width:300px;height:300px;border-radius:50%;background:radial-gradient(circle,rgba(0,102,255,.15) 0%,transparent 70%);top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}
|
||
.hero-stats-pill{display:flex;gap:24px;margin-top:32px;flex-wrap:wrap}
|
||
.hstat{text-align:left}
|
||
.hstat-num{font-size:1.5rem;font-weight:900;color:var(--text-dark);letter-spacing:-.04em;line-height:1}
|
||
.hstat-lbl{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}
|
||
@media(max-width:960px){.hero-layout{grid-template-columns:1fr;gap:40px}.hero-visual{order:-1}.phone-frame{width:200px;height:400px}.hero-inner{max-width:100%}}
|
||
@media(max-width:600px){.hero-visual{display:none}}
|
||
.hero-badge{display:inline-flex;align-items:center;gap:8px;background:var(--blue-pale);border:1px solid rgba(0,102,255,.15);border-radius:var(--radius-full);padding:8px 18px;font-size:var(--text-sm);font-weight:600;color:var(--blue);margin-bottom:36px}
|
||
.hero-h1{color:var(--text-dark);margin-bottom:28px}
|
||
.hero-h1 em{font-style:normal;color:var(--blue)}
|
||
.hero-sub{font-size:clamp(1.0625rem,2vw,1.25rem);color:var(--text-body);max-width:640px;line-height:1.6;margin-bottom:44px}
|
||
.wl-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}
|
||
.wl-input{flex:1;min-width:280px;background:#fff;color:var(--text-dark);border:2.5px solid #fff;border-radius:var(--radius-lg);padding:18px 28px;font-size:var(--text-base);font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}
|
||
.wl-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,102,255,.18)}
|
||
.wl-submit{background:var(--blue);color:var(--text-dark);border:none;border-radius:var(--radius-lg);padding:18px 36px;font-size:1rem;font-weight:800;font-family:inherit;cursor:pointer;transition:background .15s;white-space:nowrap;flex-shrink:0}
|
||
.wl-submit:hover{background:var(--blue-dark)}
|
||
.wl-submit:disabled{opacity:.7;cursor:not-allowed}
|
||
.wl-trust{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:20px}
|
||
.wl-ok{display:flex;align-items:center;gap:12px;padding:18px 28px;background:rgba(0,200,83,.12);border:1.5px solid rgba(0,200,83,.4);border-radius:var(--radius-lg);color:var(--green);font-weight:700;font-size:1rem;margin-bottom:20px}
|
||
.wl-err{color:#FF4444;font-size:.9rem;font-weight:600;margin-bottom:12px}
|
||
.wl-counter{font-size:var(--text-base);color:var(--text-muted);margin-top:16px}
|
||
.wl-counter strong{color:var(--text-dark);font-weight:700}
|
||
.audience-split{display:grid;grid-template-columns:1fr 1fr;gap:12px;max-width:560px;margin:28px 0 20px}
|
||
.audience-card{display:flex;align-items:center;gap:14px;padding:18px 20px;border-radius:var(--radius-md);cursor:pointer;transition:transform .2s,background .2s}
|
||
.audience-zoomer{background:rgba(0,102,255,.15);border:1.5px solid rgba(0,102,255,.4)}
|
||
.audience-zoomer:hover{background:rgba(0,102,255,.25);transform:translateY(-2px)}
|
||
.audience-org{background:var(--bg-off);border:1.5px solid rgba(0,0,0,.1)}
|
||
.audience-org:hover{background:rgba(0,0,0,.05);transform:translateY(-2px)}
|
||
.audience-icon{flex-shrink:0;width:34px;height:34px;color:var(--text-dark)}
|
||
.audience-icon svg{width:100%;height:100%}
|
||
.audience-label{font-size:var(--text-sm);font-weight:700;color:var(--text-dark);display:block}
|
||
.audience-desc{font-size:.75rem;color:var(--text-muted);line-height:1.4;display:block;margin-top:2px}
|
||
.audience-arrow{color:var(--text-muted);font-size:1rem;flex-shrink:0;margin-left:auto}
|
||
@media(max-width:600px){.wl-row{flex-direction:column;align-items:stretch}.wl-input{min-width:0}.audience-split{grid-template-columns:1fr}}
|
||
|
||
/* STATS */
|
||
#stats{background:var(--blue);padding:56px 0}
|
||
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0}
|
||
.stat-item{text-align:center;padding:20px 16px;position:relative}
|
||
.stat-item:not(:last-child)::after{content:'';position:absolute;right:0;top:20%;height:60%;width:1px;background:rgba(10,10,10,.4)}
|
||
.stat-value{font-size:clamp(2rem,4vw,3rem);font-weight:900;color:var(--text-dark);letter-spacing:-.04em;line-height:1;display:block;margin-bottom:8px}
|
||
.stat-label{font-size:.9rem;color:rgba(10,10,10,.9);font-weight:500}
|
||
@media(max-width:600px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:1px;background:rgba(10,10,10,.3)}.stat-item{background:var(--blue)}.stat-item::after{display:none}}
|
||
|
||
/* CLICKABLE CARDS — shared */
|
||
.drill-card{cursor:pointer;position:relative;transition:transform var(--transition),box-shadow var(--transition)}
|
||
.drill-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover)}
|
||
.drill-cta{display:inline-flex;align-items:center;gap:6px;margin-top:auto;padding-top:16px;font-size:var(--text-sm);font-weight:700;color:var(--blue)}
|
||
.drill-arrow{transition:transform .2s}
|
||
.drill-card:hover .drill-arrow{transform:translateX(4px)}
|
||
|
||
/* HOW IT WORKS */
|
||
#how{background:var(--bg-white)}
|
||
.steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
|
||
.step-card{background:var(--bg-off);border-radius:var(--radius-card);padding:40px 36px}
|
||
.step-number{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;background:var(--blue);color:var(--text-dark);border-radius:50%;font-size:var(--text-xl);font-weight:900;margin-bottom:24px}
|
||
.step-card h3{color:var(--text-dark);margin-bottom:12px;font-size:var(--text-xl)}
|
||
.step-card p{color:var(--text-muted);font-size:.9625rem;line-height:1.6}
|
||
@media(max-width:768px){.steps-grid{grid-template-columns:1fr;gap:20px}.step-card{padding:32px 28px}}
|
||
|
||
/* PERSONAS */
|
||
#personas{background:var(--bg-off)}
|
||
.personas-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
|
||
.persona-card{background:var(--bg-white);border-radius:var(--radius-card);padding:28px 24px;border:1px solid #E8E8E8;display:flex;flex-direction:column;gap:12px;min-height:200px}
|
||
.persona-avatar{width:48px;height:48px;border-radius:50%;background:var(--blue);color:var(--text-dark);font-size:var(--text-sm);font-weight:700;display:flex;align-items:center;justify-content:center}
|
||
.persona-name{font-size:1rem;font-weight:700;color:var(--text-dark)}
|
||
.persona-text{font-size:var(--text-base);color:var(--text-body);line-height:1.65}
|
||
@media(max-width:768px){.personas-grid{grid-template-columns:1fr}}
|
||
|
||
/* MISSION TYPES */
|
||
#missions{background:var(--bg-off)}
|
||
.missions-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
|
||
.mission-card{background:var(--bg-white);border:1.5px solid #E8E8E8;border-radius:var(--radius-card);padding:32px 28px}
|
||
.mission-card:hover{border-color:rgba(0,102,255,.25)}
|
||
.mission-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--bg-off);border-radius:var(--radius-md);margin-bottom:20px;color:var(--blue)}
|
||
.mission-icon svg{width:28px;height:28px}
|
||
.mission-card h3{color:var(--text-dark);margin-bottom:10px;font-size:var(--text-lg)}
|
||
.mission-card p{color:var(--text-muted);font-size:.9rem;line-height:1.55;margin-bottom:18px}
|
||
.mission-chip{display:inline-block;background:var(--blue-pale);color:var(--blue);border-radius:var(--radius-full);padding:5px 14px;font-size:var(--text-sm);font-weight:700}
|
||
@media(max-width:900px){.missions-grid{grid-template-columns:repeat(2,1fr)}}
|
||
@media(max-width:560px){.missions-grid{grid-template-columns:1fr}}
|
||
|
||
/* EARNINGS */
|
||
#earnings{background:var(--bg-white)}
|
||
.earnings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:48px}
|
||
.tier-card{background:var(--bg-off);border:2px solid #E8E8E8;border-radius:var(--radius-card);padding:36px 28px;text-align:center}
|
||
.tier-card.featured{background:var(--bg-off);border-color:var(--blue);transform:scale(1.03)}
|
||
.tier-card.featured:hover{transform:scale(1.03) translateY(-4px) !important}
|
||
.tier-card h3{font-size:1.5rem;font-weight:900;margin-bottom:4px;color:var(--text-dark)}
|
||
.tier-card.featured h3{color:var(--text-dark)}
|
||
.tier-missions{font-size:.9rem;color:var(--text-muted);margin-bottom:20px;font-weight:500}
|
||
.tier-card.featured .tier-missions{color:var(--text-muted)}
|
||
.tier-features{text-align:left}
|
||
.tier-features li{display:flex;align-items:flex-start;gap:10px;font-size:var(--text-base);color:var(--text-body);padding:6px 0}
|
||
.tier-card.featured .tier-features li{color:var(--text-body)}
|
||
.tier-features li::before{content:'';display:block;width:18px;height:18px;min-width:18px;background:var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='8' viewBox='0 0 10 8'%3E%3Cpath d='M1 4l2.5 2.5L9 1' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E") no-repeat center;border-radius:50%;margin-top:2px}
|
||
.payment-accordion{border:1.5px solid #E8E8E8;border-radius:var(--radius-card);overflow:hidden}
|
||
.payment-accordion summary{display:flex;align-items:center;justify-content:space-between;padding:22px 28px;font-size:1rem;font-weight:700;color:var(--text-dark);cursor:pointer;list-style:none;transition:background .15s}
|
||
.payment-accordion summary::-webkit-details-marker{display:none}
|
||
.payment-accordion summary:hover{background:var(--bg-off)}
|
||
.payment-accordion summary::after{content:'';display:block;width:20px;height:20px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B6B6B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") contain no-repeat;transition:transform .15s;flex-shrink:0}
|
||
.payment-accordion[open] summary::after{transform:rotate(180deg)}
|
||
.payment-accordion-body{padding:0 28px 24px;background:var(--bg-off)}
|
||
.payment-accordion-body li{display:flex;align-items:flex-start;gap:12px;padding:10px 0;font-size:.9625rem;color:var(--text-body);border-bottom:1px solid #E8E8E8}
|
||
.payment-accordion-body li:last-child{border-bottom:none}
|
||
.payment-accordion-body .dot{display:block;width:8px;height:8px;min-width:8px;background:var(--blue);border-radius:50%;margin-top:7px}
|
||
@media(max-width:768px){.earnings-grid{grid-template-columns:1fr;gap:20px}.tier-card.featured{transform:none}}
|
||
|
||
/* FAQ */
|
||
#faq{background:var(--bg-white)}
|
||
.faq-list{max-width:760px;margin:0 auto}
|
||
.faq-item{border:1.5px solid #E8E8E8;border-radius:var(--radius-md);margin-bottom:12px;overflow:hidden;cursor:pointer;transition:border-color .15s}
|
||
.faq-item:hover{border-color:rgba(0,102,255,.3)}
|
||
.faq-item summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:22px 28px;font-size:1rem;font-weight:700;color:var(--text-dark);cursor:pointer;list-style:none;gap:16px;transition:background .15s}
|
||
.faq-item summary::-webkit-details-marker{display:none}
|
||
.faq-item summary:hover{background:var(--bg-off)}
|
||
.faq-item summary::after{content:'';display:block;width:22px;height:22px;min-width:22px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230066FF' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") contain no-repeat;transition:transform .15s;flex-shrink:0}
|
||
.faq-item[open] summary::after{transform:rotate(180deg)}
|
||
.faq-item[open] summary{background:var(--bg-off);border-bottom:1px solid #E8E8E8}
|
||
.faq-answer{padding:20px 28px 24px;font-size:.9625rem;color:var(--text-body);line-height:1.7}
|
||
.faq-drill-hint{font-size:var(--text-sm);color:var(--blue);font-weight:600;margin-top:10px;display:flex;align-items:center;gap:4px;cursor:pointer}
|
||
|
||
/* BUSINESSES */
|
||
#businesses{background:#001836}
|
||
.businesses-header{text-align:center;margin-bottom:64px}
|
||
.businesses-header h2{color:var(--text-dark);margin-bottom:16px}
|
||
.businesses-header p{font-size:var(--text-lg);color:var(--text-muted);max-width:600px;margin:0 auto}
|
||
.biz-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:56px}
|
||
.biz-card{background:var(--bg-white);border:1px solid rgba(0,0,0,.1);border-radius:var(--radius-card);padding:36px 28px;transition:background .15s,border-color .15s}
|
||
.biz-card:hover{background:var(--bg-off);border-color:rgba(0,0,0,.15)}
|
||
.biz-drill{display:block;font-size:.8rem;font-weight:700;color:var(--blue);margin-top:16px}
|
||
.biz-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:rgba(0,102,255,.18);border-radius:var(--radius-md);margin-bottom:20px;color:var(--blue)}
|
||
.biz-icon svg{width:26px;height:26px}
|
||
.biz-card h3{color:var(--text-dark);margin-bottom:12px;font-size:var(--text-lg)}
|
||
.biz-card p{color:var(--text-body);font-size:.9625rem;line-height:1.6}
|
||
.biz-cta{text-align:center}
|
||
.btn-ghost{display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text-dark);border:2px solid rgba(0,0,0,.3);border-radius:var(--radius-lg);padding:16px 46px;font-size:1rem;font-weight:700;cursor:pointer;transition:border-color .15s,background .15s}
|
||
.btn-ghost:hover{border-color:rgba(0,0,0,.6);background:rgba(0,0,0,.05)}
|
||
@media(max-width:768px){.biz-grid{grid-template-columns:1fr;gap:16px}}
|
||
.community-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:48px}
|
||
.community-card{background:var(--bg-off);border-radius:var(--radius-card);padding:32px 28px}
|
||
.community-card h3{font-size:1.125rem;font-weight:800;color:var(--text-dark);margin-bottom:8px}
|
||
.community-card p{font-size:var(--text-sm);color:var(--text-body);line-height:1.6}
|
||
.community-tag{display:inline-block;font-size:.75rem;font-weight:700;color:var(--blue);background:rgba(0,102,255,.08);border-radius:4px;padding:3px 8px;margin-bottom:14px}
|
||
.field-report-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
|
||
.field-report-list li{display:flex;gap:10px;align-items:flex-start;font-size:var(--text-sm);color:var(--text-body);line-height:1.5}
|
||
.field-report-list li::before{content:'›';color:var(--blue);font-weight:700;flex-shrink:0}
|
||
.community-pipeline{background:var(--bg-off);border-radius:var(--radius-card);padding:36px 40px;display:flex;gap:48px;align-items:center;margin-top:48px}
|
||
.community-pipeline-text{flex:1}
|
||
.community-pipeline-text h3{color:var(--text-dark);font-size:1.25rem;font-weight:800;margin-bottom:8px}
|
||
.community-pipeline-text p{color:var(--text-muted);font-size:var(--text-sm);line-height:1.65}
|
||
.community-pipeline-badge{flex-shrink:0;background:var(--blue);color:var(--text-dark);font-size:.8125rem;font-weight:700;padding:10px 20px;border-radius:40px;white-space:nowrap}
|
||
@media(max-width:960px){.community-grid{grid-template-columns:1fr;gap:16px}.community-pipeline{flex-direction:column;gap:24px;padding:28px 24px}}
|
||
|
||
/* CTA BOTTOM */
|
||
#cta-bottom{background:var(--bg-off)}
|
||
#cta-bottom .section-header h2{color:var(--text-dark)}
|
||
#cta-bottom .section-header p{color:var(--text-muted)}
|
||
|
||
/* FOOTER */
|
||
footer{background:var(--bg-white);border-top:1px solid rgba(0,0,0,.08);padding:64px 0 40px}
|
||
.footer-inner{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;margin-bottom:56px}
|
||
.footer-brand .nav-logo{display:block;margin-bottom:14px;font-size:1.5rem}
|
||
.footer-tagline{color:var(--text-muted);font-size:.9rem;line-height:1.55;margin-bottom:20px}
|
||
.footer-col h4{color:var(--text-dark);font-size:var(--text-sm);font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:18px}
|
||
.footer-col ul li{margin-bottom:10px}
|
||
.footer-col ul li a{color:var(--text-muted);font-size:.9rem;transition:color .15s}
|
||
.footer-col ul li a:hover{color:var(--text-dark)}
|
||
.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding-top:32px;border-top:1px solid rgba(0,0,0,.08)}
|
||
.footer-copyright{color:rgba(10,10,10,.6);font-size:var(--text-sm)}
|
||
.footer-copyright a{color:rgba(10,10,10,.75);text-decoration:underline;text-decoration-color:rgba(10,10,10,.5)}.footer-social{display:flex;align-items:center;gap:12px}.footer-social-link{color:rgba(10,10,10,.75);transition:color .15s;display:flex;align-items:center}.footer-social-link:hover{color:var(--text-dark)}
|
||
.lang-switcher{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
|
||
.lang-switcher span{color:rgba(10,10,10,.75);font-size:var(--text-sm);margin-right:4px}
|
||
.lang-link{color:rgba(10,10,10,.75);font-size:var(--text-sm);font-weight:600;padding:4px 8px;border-radius:var(--radius-sm);transition:color .15s,background .15s}
|
||
.lang-link:hover{color:var(--text-dark);background:rgba(10,10,10,.07)}
|
||
.lang-link.active{color:var(--text-dark);background:rgba(0,102,255,.25)}
|
||
@media(max-width:900px){.footer-inner{grid-template-columns:1fr 1fr;gap:36px}.footer-brand{grid-column:1/-1}}
|
||
@media(max-width:560px){.footer-inner{grid-template-columns:1fr}.footer-brand{grid-column:auto}.footer-bottom{flex-direction:column;align-items:flex-start}}
|
||
|
||
/* ═══════════════════════════════════
|
||
DEEP DRILL OVERLAY — 7 LAYERS
|
||
═══════════════════════════════════ */
|
||
.overlay-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:400;opacity:0;pointer-events:none;transition:opacity .25s;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
|
||
.overlay-backdrop.open{opacity:1;pointer-events:all}
|
||
.overlay-panel{position:fixed;top:0;right:0;bottom:0;width:min(760px,100vw);background:#fff;z-index:500;transform:translateX(100%);transition:transform .3s cubic-bezier(.32,.72,0,1);overflow:hidden;display:flex;flex-direction:column}
|
||
.overlay-panel.open{transform:translateX(0)}
|
||
.overlay-header{padding:20px 24px 0;border-bottom:1px solid #EBEBEB;flex-shrink:0;background:#fff;position:relative;z-index:2}
|
||
.overlay-close{position:absolute;top:18px;right:20px;width:32px;height:32px;border-radius:50%;background:#F2F2F7;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:#6C6C70;transition:background .15s;font-family:inherit}
|
||
.overlay-close:hover{background:#E5E5EA}
|
||
.overlay-breadcrumb{font-size:var(--text-sm);color:#555;margin-bottom:6px;display:flex;align-items:center;gap:6px}
|
||
.overlay-breadcrumb span{color:var(--blue);font-weight:600}
|
||
.overlay-type{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--blue);margin-bottom:6px}
|
||
.overlay-title{font-size:1.625rem;font-weight:800;letter-spacing:-.04em;color:#1a1a1a;margin-bottom:18px;padding-right:40px}
|
||
.layer-nav-wrap{position:relative;margin:0 -24px;overflow-x:auto;overflow-y:hidden;border-top:1px solid #EBEBEB;scrollbar-width:none}.layer-nav-wrap::after{content:"";position:absolute;right:0;top:0;bottom:0;width:48px;background:linear-gradient(to right,transparent,#fff);pointer-events:none;z-index:1}.layer-nav{display:flex;gap:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding:0 24px;-webkit-overflow-scrolling:touch}
|
||
.layer-nav::-webkit-scrollbar{display:none}
|
||
.layer-tab{flex-shrink:0;padding:12px 16px 11px;font-size:var(--text-sm);font-weight:600;color:#8E8E93;cursor:pointer;border:none;background:transparent;font-family:inherit;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;white-space:nowrap;user-select:none}.layer-nav-wrap::after{content:"";position:absolute;top:0;right:0;bottom:0;width:48px;background:linear-gradient(to right,transparent,#fff 80%);pointer-events:none;z-index:2}
|
||
.layer-tab.active{color:var(--blue);border-bottom-color:var(--blue)}
|
||
.layer-tab:hover:not(.active){color:var(--text-dark)}
|
||
@media(max-width:600px){
|
||
.layer-nav-wrap{overflow-x:visible;margin:0}
|
||
.layer-nav-wrap::after{display:none}
|
||
.layer-nav{
|
||
display:flex;
|
||
flex-direction:column;
|
||
gap:0;
|
||
overflow-x:visible;
|
||
padding:0;
|
||
}
|
||
.layer-tab{
|
||
white-space:normal;
|
||
text-align:left;
|
||
padding:12px 16px;
|
||
border-bottom:1px solid #F0F0F0;
|
||
border-left:3px solid transparent;
|
||
font-size:.875rem;
|
||
}
|
||
.layer-tab.active{
|
||
border-bottom-color:#F0F0F0;
|
||
border-left-color:var(--blue);
|
||
background:#F8F8FF;
|
||
color:var(--blue);
|
||
}
|
||
.layer-body{padding:20px 0}
|
||
}
|
||
.overlay-body{flex:1;overflow-y:auto;padding:0}
|
||
.layer-panel{display:none;padding:32px 24px 48px;animation:layerIn .2s ease}
|
||
.layer-panel.active{display:block}
|
||
@keyframes layerIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
|
||
|
||
/* Layer content */
|
||
.layer-lead{font-size:var(--text-lg);color:var(--text-dark);line-height:1.7;margin-bottom:28px}
|
||
.layer-h3{font-size:1rem;font-weight:700;color:var(--text-dark);margin:24px 0 8px;letter-spacing:-.02em}
|
||
.layer-p{font-size:var(--text-base);color:var(--text-muted);line-height:1.7;margin-bottom:12px}
|
||
.layer-ul{margin:0 0 16px;padding:0}
|
||
.layer-ul li{list-style:none;padding:8px 0 8px 24px;position:relative;font-size:var(--text-base);color:var(--text-body);line-height:1.6;border-bottom:.5px solid #F5F5F5}
|
||
.layer-ul li:last-child{border-bottom:none}
|
||
.layer-ul li::before{content:'›';position:absolute;left:8px;color:var(--blue);font-weight:700}
|
||
.layer-block{background:#F7F7F5;border-radius:var(--radius-md);padding:20px 20px 4px;margin-bottom:20px}
|
||
.layer-block-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#555;margin-bottom:12px}
|
||
.layer-kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
|
||
.layer-kpi{background:#fff;border:1px solid #EBEBEB;border-radius:var(--radius-sm);padding:16px 12px;text-align:center}
|
||
.layer-kpi-val{font-size:1.375rem;font-weight:800;letter-spacing:-.04em;color:#1a1a1a;line-height:1}
|
||
.layer-kpi-lbl{font-size:.75rem;color:#555;margin-top:4px}
|
||
.layer-badge-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
|
||
.layer-badge{display:inline-block;padding:5px 12px;border-radius:20px;font-size:var(--text-sm);font-weight:600;background:var(--blue-pale);color:var(--blue);border:1px solid rgba(0,102,255,.12)}
|
||
.layer-step-list{counter-reset:lstep}
|
||
.layer-step{counter-increment:lstep;display:flex;gap:14px;padding:14px 0;border-bottom:.5px solid #F5F5F5;align-items:flex-start}
|
||
.layer-step:last-child{border-bottom:none}
|
||
.layer-step-num{flex-shrink:0;width:26px;height:26px;border-radius:50%;background:var(--blue);color:var(--text-dark);font-size:.75rem;font-weight:800;display:flex;align-items:center;justify-content:center}
|
||
.layer-step-title{font-size:var(--text-base);font-weight:700;color:var(--text-dark);margin-bottom:3px}
|
||
.layer-step-desc{font-size:var(--text-sm);color:var(--text-muted);line-height:1.55}
|
||
|
||
@media(max-width:480px){
|
||
.layer-stats{grid-template-columns:1fr 1fr;gap:8px}
|
||
.layer-stat{padding:12px}
|
||
.layer-kpi-row{grid-template-columns:1fr 1fr}
|
||
}
|
||
.layer-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-bottom:16px}
|
||
.layer-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
|
||
.layer-table th{text-align:left;padding:10px 12px;background:#F7F7F5;font-weight:700;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#6C6C70}
|
||
.layer-table td{padding:12px;border-bottom:.5px solid #F5F5F5;color:var(--text-body);vertical-align:top}
|
||
.layer-table tr:last-child td{border-bottom:none}
|
||
.layer-quote{border-left:3px solid var(--blue);padding:12px 16px;background:var(--blue-pale);border-radius:0 8px 8px 0;margin-bottom:20px}
|
||
.layer-quote p{font-size:var(--text-base);color:var(--text-dark);font-style:italic;line-height:1.65}
|
||
.layer-cta-box{background:var(--bg-off);border-radius:var(--radius-md);padding:28px 24px;text-align:center;margin-top:8px}
|
||
.layer-cta-title{font-size:var(--text-lg);font-weight:800;color:var(--text-dark);margin-bottom:8px;letter-spacing:-.03em}
|
||
.layer-cta-sub{font-size:.9rem;color:rgba(10,10,10,.75);margin-bottom:20px;line-height:1.55}
|
||
.layer-cta-btn{display:inline-block;background:var(--blue);color:var(--text-dark);padding:14px 36px;border-radius:var(--radius-lg);font-size:var(--text-base);font-weight:800;cursor:pointer;transition:background .15s}
|
||
.layer-cta-btn:hover{background:var(--blue-dark)}
|
||
|
||
/* ── Glossary term triggers ────────────────────────────────────────── */
|
||
.gterm {
|
||
border-bottom: 1.5px dotted #0066FF;
|
||
cursor: pointer;
|
||
color: inherit;
|
||
text-decoration: none;
|
||
display: inline;
|
||
transition: color .15s, border-color .15s;
|
||
}
|
||
.gterm:hover { color: #0066FF; border-color: #0066FF; }
|
||
.gtooltip {
|
||
position: fixed;
|
||
z-index: 9999;
|
||
background: #1d1d1f;
|
||
color: #f5f5f7;
|
||
border-radius: 10px;
|
||
padding: 12px 16px;
|
||
max-width: 280px;
|
||
font-size: .8125rem;
|
||
line-height: 1.5;
|
||
pointer-events: none;
|
||
opacity: 0;
|
||
transform: translateY(4px);
|
||
transition: opacity .15s, transform .15s;
|
||
box-shadow: 0 8px 32px rgba(0,0,0,.25);
|
||
}
|
||
.gtooltip.visible { opacity: 1; transform: translateY(0); }
|
||
.gtooltip-term { font-weight: 700; color: var(--text-dark); display: block; margin-bottom: 4px; }
|
||
.gtooltip-def { color: rgba(10,10,10,.75); }
|
||
.gtooltip-more { display: block; margin-top: 6px; font-size: .75rem; color: #0066FF; }
|
||
|
||
|
||
|
||
/* ── Social proof ─────────────────────────────────────────────── */
|
||
#social-proof{background:#fff;padding:64px 0;border-bottom:1px solid #1a1a1a}
|
||
.proof-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:48px}
|
||
.proof-card{background:var(--bg-off);border-radius:var(--radius-md);padding:28px 24px;position:relative}
|
||
.proof-card::before{content:'"';font-size:3rem;line-height:1;color:var(--blue);opacity:.15;position:absolute;top:12px;left:20px;font-family:Georgia,serif}
|
||
.proof-quote{font-size:var(--text-base);color:var(--text-body);line-height:1.65;margin-bottom:16px;padding-top:16px}
|
||
.proof-author{display:flex;align-items:center;gap:10px}
|
||
.proof-avatar{width:36px;height:36px;border-radius:50%;background:var(--blue);color:var(--text-dark);font-weight:700;font-size:var(--text-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}
|
||
.proof-name{font-size:var(--text-sm);font-weight:700;color:var(--text-body)}
|
||
.proof-meta{font-size:var(--text-xs);color:var(--text-muted)}
|
||
.proof-stars{color:#F5A623;font-size:.875rem;margin-bottom:8px;letter-spacing:1px}
|
||
.proof-logos{display:flex;align-items:center;justify-content:center;gap:40px;flex-wrap:wrap;padding-top:32px;border-top:1px solid #eee}
|
||
.proof-logo-label{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:#777;text-align:center}
|
||
.proof-logo-name{font-size:var(--text-sm);font-weight:800;color:#555;letter-spacing:-.02em}
|
||
@media(max-width:768px){.proof-grid{grid-template-columns:1fr;gap:16px}.proof-logos{gap:24px}}
|
||
|
||
/* ── Scroll fade-in ───────────────────────────────────────────── */
|
||
.fade-in{opacity:0;transform:translateY(20px);transition:opacity .5s ease,transform .5s ease}
|
||
.fade-in.visible{opacity:1;transform:translateY(0)}
|
||
.fade-in-delay-1{transition-delay:.1s}
|
||
.fade-in-delay-2{transition-delay:.2s}
|
||
.fade-in-delay-3{transition-delay:.3s}
|
||
|
||
/* ═══════════════ NAV DROPDOWN ═══════════════ */
|
||
.nav-links > li { position:relative; list-style:none; }
|
||
.nav-links > li > a, .nav-drop-toggle {
|
||
display:flex; align-items:center; gap:4px;
|
||
font-size:.875rem; font-weight:500; color:var(--text-dark);
|
||
text-decoration:none; padding:8px 0; white-space:nowrap;
|
||
background:none; border:none; cursor:pointer; font-family:inherit;
|
||
transition:color .15s;
|
||
}
|
||
.nav-links > li > a:hover, .nav-drop-toggle:hover { color:var(--qx-blue); }
|
||
.nav-drop-toggle svg { width:12px; height:12px; transition:transform .2s; flex-shrink:0; }
|
||
.nav-links > li.open > .nav-drop-toggle svg { transform:rotate(180deg); }
|
||
|
||
.nav-dropdown {
|
||
display:none; position:absolute; top:calc(100% + 8px); left:50%;
|
||
transform:translateX(-50%); min-width:220px;
|
||
background:#fff; border:1px solid #E8E8ED; border-radius:12px;
|
||
box-shadow:0 8px 32px rgba(0,0,0,.12); padding:8px; z-index:300;
|
||
}
|
||
.nav-links > li.open .nav-dropdown { display:block; }
|
||
.nav-dropdown a {
|
||
display:flex; align-items:center; gap:10px; padding:9px 12px;
|
||
border-radius:8px; font-size:.875rem; color:var(--text-dark);
|
||
text-decoration:none; transition:background .12s;
|
||
}
|
||
.nav-dropdown a:hover { background:#F5F5F7; }
|
||
.nav-dropdown a .nd-icon { font-size:1.1rem; width:24px; text-align:center; flex-shrink:0; }
|
||
.nav-dropdown a .nd-text { display:flex; flex-direction:column; }
|
||
.nav-dropdown a .nd-title { font-weight:600; font-size:.85rem; line-height:1.3; }
|
||
.nav-dropdown a .nd-sub { font-size:.75rem; color:#555; margin-top:1px; }
|
||
.nd-divider { height:1px; background:#F2F2F7; margin:4px 0; }
|
||
|
||
/* ═══════════════ MEGA FOOTER ═══════════════ */
|
||
footer {
|
||
background:var(--bg-off); color:var(--text-dark); margin-top:80px;
|
||
padding:0; border-top:none;
|
||
}
|
||
.footer-top {
|
||
padding:56px 0 48px;
|
||
border-bottom:1px solid rgba(10,10,10,.1);
|
||
}
|
||
.footer-grid {
|
||
display:grid;
|
||
grid-template-columns:200px repeat(5, 1fr);
|
||
gap:32px;
|
||
max-width:1200px; margin:0 auto; padding:0 32px;
|
||
}
|
||
.footer-brand-col .footer-logo {
|
||
font-size:1.3rem; font-weight:800; letter-spacing:-.04em;
|
||
color:var(--text-dark); text-decoration:none; display:block; margin-bottom:12px;
|
||
}
|
||
.footer-brand-col .footer-logo .x { color:var(--qx-blue, #0066FF); }
|
||
.footer-brand-col .footer-desc {
|
||
font-size:.8rem; color:rgba(10,10,10,.75); line-height:1.6;
|
||
margin-bottom:20px;
|
||
}
|
||
.footer-social-row { display:flex; gap:10px; }
|
||
.footer-soc-btn {
|
||
width:36px; height:36px; border-radius:8px;
|
||
background:rgba(10,10,10,.08); border:1px solid rgba(10,10,10,.12);
|
||
display:flex; align-items:center; justify-content:center;
|
||
color:rgba(10,10,10,.7); text-decoration:none; font-size:.85rem;
|
||
transition:background .15s, color .15s;
|
||
}
|
||
.footer-soc-btn:hover { background:rgba(10,10,10,.16); color:var(--text-dark); }
|
||
.footer-col-title {
|
||
font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.1em;
|
||
color:rgba(10,10,10,.75); margin-bottom:16px;
|
||
}
|
||
.footer-col-links { list-style:none; padding:0; margin:0; }
|
||
.footer-col-links li { margin-bottom:10px; }
|
||
.footer-col-links a {
|
||
font-size:.875rem; color:rgba(10,10,10,.65); text-decoration:none;
|
||
transition:color .15s;
|
||
}
|
||
.footer-col-links a:hover { color:var(--text-dark); }
|
||
.footer-col-links .badge-new {
|
||
font-size:.65rem; font-weight:700; background:var(--qx-blue,#0066FF);
|
||
color:var(--text-dark); padding:1px 5px; border-radius:4px; margin-left:5px;
|
||
vertical-align:middle;
|
||
}
|
||
.footer-col-links .badge-soon {
|
||
font-size:.65rem; font-weight:700; background:rgba(10,10,10,.12);
|
||
color:rgba(10,10,10,.5); padding:1px 5px; border-radius:4px; margin-left:5px;
|
||
vertical-align:middle;
|
||
}
|
||
|
||
/* Trust badges */
|
||
.footer-trust {
|
||
display:flex; align-items:center; gap:16px; margin-top:20px; flex-wrap:wrap;
|
||
}
|
||
.trust-badge {
|
||
background:rgba(10,10,10,.06); border:1px solid rgba(10,10,10,.1);
|
||
border-radius:8px; padding:8px 12px; font-size:.72rem; font-weight:700;
|
||
color:rgba(10,10,10,.7); display:flex; align-items:center; gap:6px;
|
||
letter-spacing:.02em;
|
||
}
|
||
.trust-badge .tb-icon { font-size:1rem; }
|
||
|
||
/* Footer bottom */
|
||
.footer-bottom {
|
||
max-width:1200px; margin:0 auto; padding:20px 32px;
|
||
display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px;
|
||
}
|
||
.footer-copy { font-size:.8rem; color:rgba(10,10,10,.75); }
|
||
.footer-legal-links { display:flex; gap:20px; flex-wrap:wrap;gap:8px 16px;}
|
||
.footer-legal-links a { font-size:.8rem; color:rgba(10,10,10,.75); text-decoration:none; }
|
||
.footer-legal-links a:hover { color:rgba(10,10,10,.8); }
|
||
.footer-lang-row { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
|
||
.footer-lang-row .fl-lbl { font-size:.72rem; color:rgba(10,10,10,.75); }
|
||
.flang { font-size:.78rem; color:rgba(10,10,10,.75); text-decoration:none; padding:3px 6px; border-radius:4px; }
|
||
.flang:hover, .flang.active { background:rgba(10,10,10,.1); color:var(--text-dark); }
|
||
|
||
/* Responsive */
|
||
@media(max-width:1024px){
|
||
.footer-grid { grid-template-columns:1fr 1fr 1fr; }
|
||
.footer-brand-col { grid-column:1/-1; }
|
||
}
|
||
@media(max-width:600px){
|
||
.footer-grid { grid-template-columns:1fr 1fr; padding:0 16px; }
|
||
.footer-bottom { flex-direction:column; align-items:flex-start; gap:10px; }
|
||
}
|
||
@media(max-width:480px){
|
||
.footer-grid { grid-template-columns:1fr; padding:0 12px; }
|
||
}
|
||
|
||
/* ── Global mobile fix ───────────────────────────────────────────── */
|
||
@media(max-width:480px){
|
||
img, svg { max-width:100%; }
|
||
table { overflow-x:auto; display:block; }
|
||
.container { padding:0 16px !important; box-sizing:border-box; }
|
||
}
|
||
|
||
|
||
/* AUDIT FIX m-001 safety net */
|
||
html,body{overflow-x:clip}
|
||
|
||
/* Market Selector */
|
||
.market-selector{position:relative;display:inline-flex;align-items:center}
|
||
.market-selector-btn{background:rgba(10,10,10,.08);border:1px solid rgba(10,10,10,.12);border-radius:var(--radius-full,100px);padding:6px 14px;font-size:.75rem;font-weight:700;color:rgba(10,10,10,.8);cursor:pointer;display:flex;align-items:center;gap:6px;transition:.15s;letter-spacing:.04em}
|
||
.market-selector-btn:hover{background:rgba(10,10,10,.14)}
|
||
.market-selector-current{font-variant:all-small-caps}
|
||
.market-dropdown{position:absolute;top:calc(100% + 6px);right:0;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:12px;padding:8px;min-width:160px;z-index:400;display:none;flex-direction:column;gap:2px;box-shadow:0 16px 40px rgba(0,0,0,.15)}
|
||
.market-selector.open .market-dropdown{display:flex}
|
||
.market-dropdown button{background:none;border:none;color:rgba(10,10,10,.75);font-size:.8125rem;font-weight:500;padding:8px 12px;border-radius:8px;text-align:left;cursor:pointer;transition:.12s}
|
||
.market-dropdown button:hover{background:rgba(10,10,10,.08);color:var(--text-dark)}
|
||
|
||
|
||
/* Earnings Calculator */
|
||
.qx-calc{background:var(--bg-off,#f7f7f5);border-radius:20px;padding:32px;margin-top:40px;max-width:560px;margin-left:auto;margin-right:auto}
|
||
.qx-calc h3{font-size:1.125rem;font-weight:800;color:var(--text-dark,#1a1a1a);margin-bottom:4px}
|
||
.qx-calc-sub{font-size:.875rem;color:var(--text-muted,#6b6b6b);margin-bottom:24px}
|
||
.qx-calc-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
|
||
.qx-calc-label{font-size:.875rem;font-weight:600;color:var(--text-dark,#1a1a1a);min-width:120px}
|
||
.qx-calc input[type=range]{flex:1;accent-color:#0066FF;height:4px;cursor:pointer}
|
||
.qx-calc-val{font-size:.875rem;font-weight:700;color:#0066FF;min-width:60px;text-align:right}
|
||
.qx-calc-result{background:var(--bg-off);border-radius:12px;padding:20px 24px;display:flex;justify-content:space-between;align-items:center;margin-top:8px}
|
||
.qx-calc-result-label{font-size:.875rem;color:rgba(10,10,10,.6)}
|
||
.qx-calc-result-amount{font-size:1.75rem;font-weight:900;color:var(--text-dark);letter-spacing:-.04em}
|
||
.qx-calc-result-period{font-size:.75rem;color:rgba(10,10,10,.75);margin-top:2px}
|
||
|
||
/* GeoIP banner */
|
||
#qx-geo-banner{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:100px;padding:10px 20px 10px 16px;display:flex;align-items:center;gap:12px;font-size:.8125rem;color:rgba(0,0,0,.85);z-index:800;box-shadow:0 8px 32px rgba(0,0,0,.15);white-space:nowrap;animation:slideUp .3s ease}
|
||
@keyframes slideUp{from{opacity:0;transform:translateX(-50%) translateY(8px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
|
||
#qx-geo-banner button.geo-switch{background:#0066FF;color:var(--text-dark);border:none;border-radius:100px;padding:5px 14px;font-size:.75rem;font-weight:700;cursor:pointer}
|
||
#qx-geo-banner button.geo-dismiss{background:none;border:none;color:rgba(10,10,10,.75);font-size:1rem;cursor:pointer;padding:0 0 0 4px;line-height:1}
|
||
@media(max-width:480px){#qx-geo-banner{bottom:16px;left:16px;right:16px;transform:none;border-radius:16px;white-space:normal;flex-wrap:wrap}}
|
||
|
||
/* Tier illustrations */
|
||
.tier-ill{display:flex;justify-content:center;margin-bottom:16px}
|
||
.tier-ill svg{opacity:.85}
|
||
|
||
/* QX-ILL-08 Global map */
|
||
.qx-global-map{margin:40px auto 0;max-width:100%;background:linear-gradient(135deg,#0d1a2e 0%,#0a1628 60%,#0d1f3c 100%);border-radius:16px;padding:24px 20px 16px;border:1px solid rgba(10,10,10,.06)}
|
||
.qx-global-map-title{font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(10,10,10,.75);text-align:center;margin-bottom:14px}
|
||
.qx-global-map svg{display:block;margin:0 auto;max-width:100%}
|
||
.qx-global-map-legend{display:flex;justify-content:center;gap:20px;margin-top:12px}
|
||
.qx-map-legend-item{display:flex;align-items:center;gap:6px;font-size:.6875rem;color:rgba(10,10,10,.75)}
|
||
.qx-map-legend-dot{width:8px;height:8px;border-radius:50%}
|
||
@media(max-width:480px){.tier-earnings{font-size:1.125rem!important;white-space:normal;overflow-wrap:anywhere}.tier-card{padding:20px 16px}}
|
||
|
||
@media(max-width:400px){.hero-stats-pill{flex-wrap:wrap;gap:16px 24px}}
|
||
@media(max-width:520px){.qx-calc-row{flex-wrap:wrap}.qx-calc input[type=range]{min-width:0;width:100%}.qx-calc-result{flex-direction:column;gap:8px;text-align:center}.qx-calc-result-amount{font-size:1.375rem}}
|
||
@media(max-width:360px){.market-selector{display:none}}
|
||
</style>
|
||
<script src="/locale-data.js"></script>
|
||
<style>
|
||
@media (max-width: 640px) {
|
||
.hero h1 { font-size: 2rem !important; }
|
||
.hero p { font-size: 1rem !important; }
|
||
.card { padding: 1.5rem !important; }
|
||
.grid { grid-template-columns: 1fr !important; }
|
||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
|
||
<a href="#main-content" style="position:absolute;top:-100px;left:16px;background:var(--blue);color:var(--text-dark);padding:10px 20px;border-radius:0 0 8px 8px;font-weight:700;font-size:.9rem;z-index:9999;transition:top .2s" onfocus="this.style.top='0'" onblur="this.style.top='-100px'">Skip to main content</a>
|
||
|
||
<nav>
|
||
<div class="container">
|
||
<div class="nav-inner">
|
||
<a href="/" class="nav-logo">qui<span class="x">X</span>zoom</a>
|
||
<ul class="nav-links">
|
||
|
||
<!-- Platform dropdown -->
|
||
<li>
|
||
<button class="nav-drop-toggle" onclick="toggleDrop(this)">
|
||
Platform <svg viewBox="0 0 10 6" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M1 1l4 4 4-4"/></svg>
|
||
</button>
|
||
<div class="nav-dropdown">
|
||
<a href="#how"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"/><line x1="8" y1="2" x2="8" y2="18"/><line x1="16" y1="6" x2="16" y2="22"/></svg></span><span class="nd-text"><span class="nd-title">How it works</span><span class="nd-sub">Mission flow end-to-end</span></span></a>
|
||
<a href="#missions"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"/><circle cx="12" cy="13" r="4"/></svg></span><span class="nd-text"><span class="nd-title">Mission types</span><span class="nd-sub">Infrastructure, real estate, environment</span></span></a>
|
||
<a href="#earnings"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="12" y1="1" x2="12" y2="23"/><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"/></svg></span><span class="nd-text"><span class="nd-title">Zoomer earnings</span><span class="nd-sub">Compensation & tiers</span></span></a>
|
||
<a href="/markets/se/"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20M12 2a15 15 0 0 1 0 20M12 2a15 15 0 0 0 0 20"/></svg></span><span class="nd-text"><span class="nd-title">Sverige</span><span class="nd-sub">Launching August 2026</span></span></a>
|
||
</div>
|
||
</li>
|
||
|
||
<!-- Solutions dropdown -->
|
||
<li>
|
||
<button class="nav-drop-toggle" onclick="toggleDrop(this)">
|
||
Solutions <svg viewBox="0 0 10 6" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M1 1l4 4 4-4"/></svg>
|
||
</button>
|
||
<div class="nav-dropdown">
|
||
<a href="/for-organisations/"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18M9 21V9M15 21V9"/></svg></span><span class="nd-text"><span class="nd-title">For Organisations</span><span class="nd-sub">Municipalities, infrastructure, insurance</span></span></a>
|
||
<a href="/for-organisations/#use-cases"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg></span><span class="nd-text"><span class="nd-title">Use cases</span><span class="nd-sub">Facade, road, coastal, property</span></span></a>
|
||
<a href="/for-organisations/#enterprise"><span class="nd-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg></span><span class="nd-text"><span class="nd-title">Enterprise</span><span class="nd-sub">Custom contracts & SLA</span></span></a>
|
||
</div>
|
||
</li>
|
||
|
||
<li><a href="/pricing">Pricing</a></li>
|
||
<li><a href="/about">About</a></li>
|
||
</ul>
|
||
<div style="display:flex;align-items:center;gap:10px;flex-shrink:0">
|
||
<a href="/support" style="font-size:.875rem;color:var(--text-dark);text-decoration:none;font-weight:500">Support</a>
|
||
<button class="btn-nav" onclick="document.getElementById('wl-email').focus();document.getElementById('wl-email').scrollIntoView({behavior:'smooth'})">Register as a Zoomer →</button>
|
||
</div>
|
||
<div class="market-selector" id="market-selector">
|
||
<button class="market-selector-btn" onclick="document.getElementById('market-selector').classList.toggle('open')" aria-label="Select market" aria-haspopup="listbox">
|
||
<span class="market-selector-current">SE</span>
|
||
<svg width="10" height="6" viewBox="0 0 10 6" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M1 1l4 4 4-4"/></svg>
|
||
</button>
|
||
<div class="market-dropdown" role="listbox">
|
||
<button onclick="QX_setMarket('SE')" role="option">🇸🇪 Sweden — Launching Aug 2026</button>
|
||
<button onclick="QX_setMarket('NL')" role="option">🇳🇱 Netherlands — Launching Q1 2027</button>
|
||
<button onclick="QX_setMarket('TH')" role="option">🇹🇭 Thailand — Launching Q3 2026</button>
|
||
<button onclick="QX_setMarket('NG')" role="option">🇳🇬 Nigeria — Coming 2026</button>
|
||
<button onclick="QX_setMarket('KE')" role="option">🇰🇪 Kenya — Coming 2026</button>
|
||
</div>
|
||
</div>
|
||
<button class="hamburger" id="hamburger" aria-label="Menu" onclick="toggleMenu()">
|
||
<span></span><span></span><span></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
<div class="mobile-menu" id="mobile-menu">
|
||
<a href="#how" onclick="closeMenu()">How it works</a>
|
||
<a href="#missions" onclick="closeMenu()">Missions</a>
|
||
<a href="#earnings" onclick="closeMenu()">Earnings</a>
|
||
<a href="#recognition" onclick="closeMenu()">Recognition</a>
|
||
<a href="/for-organisations/" onclick="closeMenu()">For Organisations</a>
|
||
<a href="/support" onclick="closeMenu()">Support</a>
|
||
<a class="btn-mobile" onclick="closeMenu();document.getElementById('wl-email').focus();document.getElementById('wl-email').scrollIntoView({behavior:'smooth'})">Register as a Zoomer →</a>
|
||
</div>
|
||
|
||
<main id="main-content">
|
||
|
||
<!-- HERO -->
|
||
<section id="hero">
|
||
<div class="container">
|
||
<div class="hero-layout">
|
||
<div class="hero-inner">
|
||
<div class="hero-badge">Global rollout · August 2026</div>
|
||
<div style="font-size:1rem;font-weight:700;letter-spacing:.08em;color:var(--blue);text-transform:uppercase;margin-bottom:12px;font-family:-apple-system,BlinkMacSystemFont,sans-serif">quiXzoom</div>
|
||
<h1 class="hero-h1">Capture the<br>world.<br><em>Earn per mission.</em></h1>
|
||
|
||
<p class="hero-sub">Take photo missions near you. Get paid every Monday. No platform fee. Launching August 1, 2026.</p>
|
||
<form id="waitlist-form-top" onsubmit="submitWaitlist(event,'top')" novalidate>
|
||
<div class="wl-row">
|
||
<input type="tel" id="wl-phone" name="phone" class="wl-input" placeholder="Your phone number" required autocomplete="tel">
|
||
<button type="submit" id="wl-btn" class="wl-submit">Register as a Zoomer →</button>
|
||
</div>
|
||
<div id="wl-ok" class="wl-ok" hidden>✓ You're on the list! We'll be in touch before launch.</div>
|
||
<p id="wl-err" class="wl-err" hidden>Something went wrong. Please try again.</p>
|
||
</form>
|
||
<div class="audience-split">
|
||
<a href="#waitlist-form-top" class="audience-card audience-zoomer">
|
||
<div class="audience-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2"/><circle cx="12" cy="10" r="3"/><path d="M3 21c0-3.3 4-6 9-6s9 2.7 9 6"/></svg></div>
|
||
<div><span class="audience-label">I want to earn</span><span class="audience-desc">Take photo missions near me.</span></div>
|
||
<span class="audience-arrow">→</span>
|
||
</a>
|
||
<a href="/for-organisations/" class="audience-card audience-org">
|
||
<div class="audience-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg></div>
|
||
<div><span class="audience-label">We need field data</span><span class="audience-desc">Commission documentation at scale.</span></div>
|
||
<span class="audience-arrow">→</span>
|
||
</a>
|
||
</div>
|
||
<p class="wl-trust">No signup fee · No platform fee · Paid every Monday · Identity verification required once</p>
|
||
<div class="trust-badges" style="display:flex;flex-wrap:wrap;gap:8px;margin-top:14px">
|
||
<span class="badge" style="background:rgba(10,10,10,.07);border:1px solid rgba(10,10,10,.13);border-radius:20px;padding:5px 12px;font-size:.72rem;font-weight:600;color:rgba(10,10,10,.7)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg> GDPR Compliant</span>
|
||
<span class="badge" style="background:rgba(10,10,10,.07);border:1px solid rgba(10,10,10,.13);border-radius:20px;padding:5px 12px;font-size:.72rem;font-weight:600;color:rgba(10,10,10,.7)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><rect x="1" y="4" width="22" height="16" rx="2"/><line x1="1" y1="10" x2="23" y2="10"/></svg> Stripe Connect Verified</span>
|
||
<span class="badge" style="background:rgba(10,10,10,.07);border:1px solid rgba(10,10,10,.13);border-radius:20px;padding:5px 12px;font-size:.72rem;font-weight:600;color:rgba(10,10,10,.7)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><polyline points="9 12 12 15 16 10"/></svg> Identity Verified</span>
|
||
<span class="badge" style="background:rgba(10,10,10,.07);border:1px solid rgba(10,10,10,.13);border-radius:20px;padding:5px 12px;font-size:.72rem;font-weight:600;color:rgba(10,10,10,.7)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg> DAC7 Reporting</span>
|
||
</div>
|
||
<div style="display:flex;align-items:center;gap:12px;margin-top:20px;flex-wrap:wrap">
|
||
<a href="https://app.quixzoom.com/join" style="display:flex;align-items:center;gap:8px;background:rgba(10,10,10,.08);border:1px solid rgba(10,10,10,.15);border-radius:10px;padding:10px 16px;text-decoration:none">
|
||
<svg width="20" height="20" viewBox="0 0 24 24" fill="rgba(10,10,10,.7)"><path d="M17 3H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm5-4H7V5h10v10z"/></svg>
|
||
<div><div style="font-size:.7rem;color:rgba(10,10,10,.75);line-height:1">Pre-register · Join Waitlist</div><div style="font-size:.875rem;font-weight:700;color:var(--text-dark);line-height:1.2">Get notified at launch</div></div>
|
||
</a>
|
||
</div>
|
||
<div id="hero-signup-badge" style="display:flex;align-items:center;gap:8px;margin-top:16px">
|
||
<div style="display:flex">
|
||
<div style="width:28px;height:28px;border-radius:50%;background:#0066FF;border:2px solid #1a1a1a;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--text-dark);font-weight:700;margin-left:-6px">Z</div>
|
||
<div style="width:28px;height:28px;border-radius:50%;background:#0052CC;border:2px solid #1a1a1a;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--text-dark);font-weight:700;margin-left:-6px">Z</div>
|
||
<div style="width:28px;height:28px;border-radius:50%;background:#003D99;border:2px solid #1a1a1a;display:flex;align-items:center;justify-content:center;font-size:.7rem;color:var(--text-dark);font-weight:700;margin-left:-6px">+</div>
|
||
</div>
|
||
<span style="font-size:.875rem;color:rgba(10,10,10,.7)"><strong id="hero-signup-count" style="color:var(--text-dark)">2,400+</strong> Zoomers pre-registered</span>
|
||
</div>
|
||
<p class="wl-counter" id="wl-counter-wrap" style="display:block"><strong><span id="wl-count">2,400+</span></strong> <a class="gterm" data-gterm="Zoomer" href="/glossary#zoomer">Zoomers</a> already signed up</p>
|
||
<p class="wl-trust" style="color:rgba(10,10,10,.75);margin-top:12px">Launching August 1, 2026.</p>
|
||
<div class="hero-stats-pill">
|
||
<div class="hstat"><div class="hstat-num">30–120</div><div class="hstat-lbl">credits per mission<br><span style="font-size:.7rem;color:rgba(10,10,10,.55);font-weight:400">1 Credit = €1 · min. payout 250 Credits</span></div></div>
|
||
<div class="hstat"><div class="hstat-num">Sverige</div><div class="hstat-lbl">Lanserar 1 aug 2026</div></div>
|
||
<div class="hstat"><div class="hstat-num">0%</div><div class="hstat-lbl">platform fee</div></div>
|
||
</div>
|
||
</div><!-- /hero-inner -->
|
||
<div class="hero-visual">
|
||
<div class="phone-glow"></div>
|
||
<div class="phone-frame">
|
||
<div class="phone-notch"></div>
|
||
<div class="phone-screen">
|
||
<!-- Status bar -->
|
||
<div class="ps-statusbar">
|
||
<span class="ps-time">09:41</span>
|
||
<div class="ps-icons">
|
||
<svg width="14" height="10" viewBox="0 0 14 10" fill="rgba(10,10,10,.8)"><rect x="0" y="3" width="2" height="7" rx="1"/><rect x="3" y="2" width="2" height="8" rx="1"/><rect x="6" y="1" width="2" height="9" rx="1"/><rect x="9" y="0" width="2" height="10" rx="1"/></svg>
|
||
<svg width="12" height="10" viewBox="0 0 12 10" fill="rgba(10,10,10,.8)"><path d="M6 2C3.5 2 1.3 3.1 0 4.8L1.5 6.3C2.4 5 4.1 4 6 4s3.6 1 4.5 2.3L12 4.8C10.7 3.1 8.5 2 6 2z"/><path d="M6 5.5C4.8 5.5 3.7 6 3 6.9L4.5 8.4C5 7.9 5.5 7.5 6 7.5s1 .4 1.5.9L9 6.9C8.3 6 7.2 5.5 6 5.5z"/><circle cx="6" cy="9.5" r="1"/></svg>
|
||
<svg width="20" height="10" viewBox="0 0 20 10" fill="none"><rect x="0" y="1" width="17" height="8" rx="2" stroke="rgba(10,10,10,.7)" stroke-width="1.2"/><rect x="1" y="2" width="12" height="6" rx="1" fill="rgba(10,10,10,.8)"/><path d="M18 3.5v3c.8-.4 1.3-1 1.3-1.5S18.8 3.9 18 3.5z" fill="rgba(10,10,10,.7)"/></svg>
|
||
</div>
|
||
</div>
|
||
<!-- Map area -->
|
||
<div class="ps-map">
|
||
<!-- Roads -->
|
||
<div class="ps-road" style="width:100%;height:8px;top:45%;left:0;transform:rotate(-5deg)"></div>
|
||
<div class="ps-road" style="width:8px;height:100%;top:0;left:40%"></div>
|
||
<div class="ps-road" style="width:8px;height:60%;top:0;left:65%;opacity:.5"></div>
|
||
<div class="ps-road" style="width:70%;height:6px;top:25%;left:30%;transform:rotate(8deg);opacity:.4"></div>
|
||
<!-- City blocks -->
|
||
<div style="position:absolute;top:15%;left:15%;width:18%;height:12%;background:rgba(10,10,10,.04);border-radius:3px"></div>
|
||
<div style="position:absolute;top:15%;left:48%;width:14%;height:10%;background:rgba(10,10,10,.04);border-radius:3px"></div>
|
||
<div style="position:absolute;top:60%;left:20%;width:16%;height:14%;background:rgba(10,10,10,.04);border-radius:3px"></div>
|
||
<div style="position:absolute;top:60%;left:50%;width:20%;height:12%;background:rgba(10,10,10,.04);border-radius:3px"></div>
|
||
<!-- Mission pin -->
|
||
<div class="ps-mission-pin">
|
||
<div class="ps-pin-outer">
|
||
<div class="ps-pin-inner">
|
||
<svg width="12" height="12" viewBox="0 0 24 24" fill="white"><path d="M23 19a2 2 0 01-2 2H3a2 2 0 01-2-2V8a2 2 0 012-2h4l2-3h6l2 3h4a2 2 0 012 2z"/><circle cx="12" cy="13" r="4"/></svg>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- User location -->
|
||
<div class="ps-user-dot"></div>
|
||
<!-- Distance badge -->
|
||
<div style="position:absolute;top:18%;right:8%;background:rgba(0,0,0,.6);border-radius:8px;padding:4px 8px;backdrop-filter:blur(4px)">
|
||
<div style="font-size:.55rem;color:rgba(10,10,10,.75)">Distance</div>
|
||
<div style="font-size:.7rem;font-weight:700;color:var(--text-dark)">1.4 km</div>
|
||
</div>
|
||
<!-- Mission card -->
|
||
<div class="ps-card">
|
||
<div class="ps-card-title">Fasadinventering</div>
|
||
<div class="ps-card-addr">Storgatan 14, Stockholm</div>
|
||
<div class="ps-card-row">
|
||
<div>
|
||
<div class="ps-card-reward">285 kr</div>
|
||
<div class="ps-card-meta">3 foton · ~12 min</div>
|
||
</div>
|
||
<button class="ps-card-btn">Claim →</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><!-- /hero-visual -->
|
||
</div><!-- /hero-layout -->
|
||
</div>
|
||
</section>
|
||
|
||
<!-- STATS -->
|
||
<section id="stats">
|
||
<div class="container">
|
||
<div class="stats-grid">
|
||
<div class="stat-item fade-in" style="cursor:pointer" onclick="document.getElementById('how').scrollIntoView({behavior:'smooth'})"><span class="stat-value">~30 min</span><span class="stat-label">Average mission time</span></div>
|
||
<div class="stat-item fade-in" style="cursor:pointer" onclick="document.getElementById('how').scrollIntoView({behavior:'smooth'})"><span class="stat-value">Aug 2026</span><span class="stat-label">Launching in Sweden</span></div>
|
||
<div class="stat-item fade-in" style="cursor:pointer" onclick="document.getElementById('how').scrollIntoView({behavior:'smooth'})"><span class="stat-value">August 2026</span><span class="stat-label">Launching in Sweden</span></div>
|
||
<div class="stat-item fade-in" style="cursor:pointer" onclick="document.getElementById('how').scrollIntoView({behavior:'smooth'})"><span class="stat-value">100%</span><span class="stat-label">Paid on approval</span></div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- SOCIAL PROOF -->
|
||
<section id="social-proof">
|
||
<div class="container">
|
||
<div class="section-header" style="margin-bottom:40px">
|
||
<h2 style="font-size:var(--text-2xl)">Why Zoomers choose quiXzoom</h2>
|
||
<p>What makes the platform work for independent field contributors.</p>
|
||
</div>
|
||
<div class="proof-grid">
|
||
<div class="proof-card fade-in">
|
||
<div style="font-size:2rem;margin-bottom:12px">📱</div>
|
||
<h3 style="font-size:var(--text-lg);margin-bottom:8px">Point, shoot, submit</h3>
|
||
<p style="color:var(--text-muted);font-size:var(--text-sm)">The app guides you through each mission. No guesswork, no complex instructions.</p>
|
||
</div>
|
||
<div class="proof-card fade-in">
|
||
<div style="font-size:2rem;margin-bottom:12px">⚡</div>
|
||
<h3 style="font-size:var(--text-lg);margin-bottom:8px">Fast approval</h3>
|
||
<p style="color:var(--text-muted);font-size:var(--text-sm)">AI reviews your submission instantly. Most missions are approved within minutes, not days.</p>
|
||
</div>
|
||
<div class="proof-card fade-in">
|
||
<div style="font-size:2rem;margin-bottom:12px">💰</div>
|
||
<h3 style="font-size:var(--text-lg);margin-bottom:8px">Weekly payouts</h3>
|
||
<p style="color:var(--text-muted);font-size:var(--text-sm)">Reach 250 Credits (€250) and get paid automatically every Monday via Stripe Connect.</p>
|
||
</div>
|
||
</div>
|
||
<div class="proof-logos">
|
||
<div style="text-align:center">
|
||
<div class="proof-logo-label">trusted by</div>
|
||
<div class="proof-logo-name">Municipalities</div>
|
||
</div>
|
||
<div style="color:#ddd;font-size:1.5rem">·</div>
|
||
<div style="text-align:center">
|
||
<div class="proof-logo-label">trusted by</div>
|
||
<div class="proof-logo-name">Property Groups</div>
|
||
</div>
|
||
<div style="color:#ddd;font-size:1.5rem">·</div>
|
||
<div style="text-align:center">
|
||
<div class="proof-logo-label">trusted by</div>
|
||
<div class="proof-logo-name">Insurance Companies</div>
|
||
</div>
|
||
<div style="color:#ddd;font-size:1.5rem">·</div>
|
||
<div style="text-align:center">
|
||
<div class="proof-logo-label">trusted by</div>
|
||
<div class="proof-logo-name">Infrastructure Operators</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- HOW IT WORKS -->
|
||
<section id="how" class="section-pad">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>How it works</h2>
|
||
<p>Three steps. Click any step to go deeper.</p>
|
||
</div>
|
||
<div class="qx-how-ill" aria-hidden="true" style="margin-bottom:32px;overflow-x:auto">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 160" role="img" aria-label="How quiXzoom works: Browse missions, claim a mission, photograph, get paid weekly">
|
||
|
||
<!-- Connector lines -->
|
||
<line x1="126" y1="80" x2="234" y2="80" stroke="#0066FF" stroke-opacity="0.3" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||
<line x1="326" y1="80" x2="434" y2="80" stroke="#0066FF" stroke-opacity="0.3" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||
<line x1="526" y1="80" x2="634" y2="80" stroke="#0066FF" stroke-opacity="0.3" stroke-width="1.5" stroke-dasharray="4 3"/>
|
||
|
||
<!-- Step 1: Browse -->
|
||
<circle cx="80" cy="80" r="36" fill="#0066FF" fill-opacity="0.1" stroke="#0066FF" stroke-opacity="0.3" stroke-width="1.5"/>
|
||
<!-- Map pin icon -->
|
||
<g transform="translate(80,80)">
|
||
<!-- Pin body (teardrop) -->
|
||
<path d="M0,-16 C-9,-16 -16,-9 -16,0 C-16,9 0,20 0,20 C0,20 16,9 16,0 C16,-9 9,-16 0,-16 Z"
|
||
fill="#0066FF" fill-opacity="0.7" stroke="none"/>
|
||
<!-- Pin inner circle -->
|
||
<circle cx="0" cy="0" r="5.5" fill="white" fill-opacity="0.9"/>
|
||
</g>
|
||
<text x="80" y="133" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#3a3a3a" font-weight="600">Browse</text>
|
||
<text x="80" y="148" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="11" fill="#6B6B6B">missions</text>
|
||
|
||
<!-- Step 2: Claim -->
|
||
<circle cx="280" cy="80" r="36" fill="#0066FF" fill-opacity="0.1" stroke="#0066FF" stroke-opacity="0.3" stroke-width="1.5"/>
|
||
<!-- Handshake / check icon: two hands clasping -->
|
||
<g transform="translate(280,80)" fill="none" stroke="#0066FF" stroke-opacity="0.85" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<!-- Left hand -->
|
||
<path d="M-14,4 C-14,4 -10,-2 -6,-2 L0,2 L6,-2 C10,-2 14,4 14,4"/>
|
||
<!-- Right clasped fingers -->
|
||
<path d="M-10,4 C-10,8 -6,12 0,12 C6,12 10,8 10,4"/>
|
||
<!-- Check mark overlay -->
|
||
<polyline points="-7,-10 -2,-4 8,-14" stroke="#0066FF" stroke-opacity="0.85" stroke-width="2.5"/>
|
||
</g>
|
||
<text x="280" y="133" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#3a3a3a" font-weight="600">Claim</text>
|
||
<text x="280" y="148" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="11" fill="#6B6B6B">a mission</text>
|
||
|
||
<!-- Step 3: Photograph -->
|
||
<circle cx="480" cy="80" r="36" fill="#0066FF" fill-opacity="0.1" stroke="#0066FF" stroke-opacity="0.3" stroke-width="1.5"/>
|
||
<!-- Camera icon -->
|
||
<g transform="translate(480,80)" fill="none" stroke="#0066FF" stroke-opacity="0.85" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||
<!-- Camera body -->
|
||
<rect x="-16" y="-8" width="32" height="22" rx="3" ry="3" fill="#0066FF" fill-opacity="0.15" stroke="#0066FF" stroke-opacity="0.75"/>
|
||
<!-- Lens -->
|
||
<circle cx="0" cy="4" r="7" fill="none" stroke="#0066FF" stroke-opacity="0.85"/>
|
||
<circle cx="0" cy="4" r="3.5" fill="#0066FF" fill-opacity="0.4" stroke="none"/>
|
||
<!-- Viewfinder bump -->
|
||
<path d="M-6,-8 L-6,-13 L6,-13 L6,-8"/>
|
||
<!-- Flash -->
|
||
<rect x="8" y="-7" width="4" height="3" rx="1" fill="#0066FF" fill-opacity="0.5" stroke="none"/>
|
||
</g>
|
||
<text x="480" y="133" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#3a3a3a" font-weight="600">Photograph</text>
|
||
|
||
<!-- Step 4: Get Paid -->
|
||
<circle cx="680" cy="80" r="36" fill="#00C853" fill-opacity="0.12" stroke="#00C853" stroke-opacity="0.4" stroke-width="1.5"/>
|
||
<!-- Coin + check icon -->
|
||
<g transform="translate(680,80)">
|
||
<!-- Coin circle -->
|
||
<circle cx="-4" cy="1" r="13" fill="#00C853" fill-opacity="0.25" stroke="#00C853" stroke-opacity="0.7" stroke-width="1.8"/>
|
||
<!-- Dollar sign on coin -->
|
||
<text x="-4" y="6" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#00C853" fill-opacity="0.9" font-weight="700">$</text>
|
||
<!-- Check badge -->
|
||
<circle cx="10" cy="-8" r="8" fill="#00C853" fill-opacity="0.85" stroke="white" stroke-width="1.5"/>
|
||
<polyline points="6,-8 9,-4 15,-12" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||
</g>
|
||
<text x="680" y="133" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="13" fill="#3a3a3a" font-weight="600">Get paid</text>
|
||
<text x="680" y="148" text-anchor="middle" font-family="system-ui,-apple-system,sans-serif" font-size="11" fill="#6B6B6B">weekly</text>
|
||
|
||
</svg>
|
||
</div>
|
||
<div class="steps-grid">
|
||
<article class="step-card drill-card" onclick="openDrill('how',1)" role="button" tabindex="0">
|
||
<div class="step-number">1</div>
|
||
<h3>Register</h3>
|
||
<p>Submit your phone number. You will be notified before the platform opens in your region.</p>
|
||
<p class="drill-cta">What happens next <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="step-card drill-card" onclick="openDrill('how',2)" role="button" tabindex="0">
|
||
<div class="step-number">2</div>
|
||
<h3>Select a mission</h3>
|
||
<p>Browse active missions on the map. Each specifies location, required shots, and Credit reward.</p>
|
||
<p class="drill-cta">How missions work <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="step-card drill-card" onclick="openDrill('how',3)" role="button" tabindex="0">
|
||
<div class="step-number">3</div>
|
||
<h3>Receive payment</h3>
|
||
<p>Submit documentation. Upon approval, QX Credits are added to your balance. Once you reach the minimum threshold, your Credits are paid out weekly at the published conversion rate via <a class="gterm" data-gterm="Stripe Connect" href="/glossary#stripe-connect">Stripe Connect</a> to your bank account.</p>
|
||
<p class="drill-cta">Payment details <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- PERSONAS -->
|
||
<section id="personas" class="section-pad">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Who becomes a <a class="gterm" data-gterm="Zoomer" href="/glossary#zoomer">Zoomer</a>?</h2>
|
||
<p>Anyone with a smartphone and time in their area. Click to see full profiles.</p>
|
||
</div>
|
||
<div class="personas-grid">
|
||
<article class="persona-card drill-card" onclick="openDrill('persona','student')" role="button" tabindex="0">
|
||
<div class="persona-avatar">ML</div>
|
||
<p class="persona-name">Student, 22</p>
|
||
<p class="persona-text">Three to four missions per week, between lectures. No fixed schedule. Supplementary income without affecting studies.</p>
|
||
<p class="drill-cta">Full profile <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="persona-card drill-card" onclick="openDrill('persona','driver')" role="button" tabindex="0">
|
||
<div class="persona-avatar">DP</div>
|
||
<p class="persona-name">Delivery driver, 34</p>
|
||
<p class="persona-text">Adds missions along existing routes. No extra travel. The missions are already on the way.</p>
|
||
<p class="drill-cta">Full profile <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="persona-card drill-card" onclick="openDrill('persona','retired')" role="button" tabindex="0">
|
||
<div class="persona-avatar">EH</div>
|
||
<p class="persona-name">Retired, 61</p>
|
||
<p class="persona-text">Daily walks through the neighbourhood. The same route, now with a purpose and a payment at the end of it.</p>
|
||
<p class="drill-cta">Full profile <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- MISSION TYPES -->
|
||
<section id="missions" class="section-pad" style="background:var(--bg-off)">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Mission categories</h2>
|
||
<p>Each mission specifies scope, required documentation and payment. Click any category to go deep.</p>
|
||
</div>
|
||
<div class="missions-grid">
|
||
<article class="mission-card drill-card" onclick="openDrill('mission','infrastructure')" role="button" tabindex="0">
|
||
<div class="mission-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21h18"/><path d="M3 18l4-7 4 3 4-5 4 9"/><path d="M7 11V7"/><path d="M17 9v-2"/></svg></div>
|
||
<h3>Infrastructure</h3>
|
||
<p>Bridges, roads, utility lines, foundations. Systematic documentation for public and private operators.</p>
|
||
<span class="mission-chip">Municipalities & government</span>
|
||
<p class="drill-cta">Deep dive <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="mission-card drill-card" onclick="openDrill('mission','realestate')" role="button" tabindex="0">
|
||
<div class="mission-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21V9l9-7 9 7v12"/><path d="M9 21v-6h6v6"/></svg></div>
|
||
<h3>Real estate</h3>
|
||
<p>Facades, roofs, entrances, parking lots. Visual inspection for property portfolios.</p>
|
||
<span class="mission-chip">Property & insurance</span>
|
||
<p class="drill-cta">Deep dive <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="mission-card drill-card" onclick="openDrill('mission','coastline')" role="button" tabindex="0">
|
||
<div class="mission-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 17c2-1 4-2 6 0s4 1 6 0 4-1 6 0"/><path d="M3 13c2-1 4-2 6 0s4 1 6 0 4-1 6 0"/><path d="M12 3v6"/><path d="M9 6l3-3 3 3"/></svg></div>
|
||
<h3>Coastlines & nature</h3>
|
||
<p>Coasts, beaches, waterways, natural environments. Monitoring and change detection at scale.</p>
|
||
<span class="mission-chip">Maritime & environmental</span>
|
||
<p class="drill-cta">Deep dive <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="mission-card drill-card" onclick="openDrill('mission','incident')" role="button" tabindex="0">
|
||
<div class="mission-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg></div>
|
||
<h3>Incident & damage</h3>
|
||
<p>Storm damage, flooding, vandalism. Fast-turnaround documentation for time-sensitive insurance claims.</p>
|
||
<span class="mission-chip">Insurance — fastest pay</span>
|
||
<p class="drill-cta">Deep dive <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="mission-card drill-card" onclick="openDrill('mission','verification')" role="button" tabindex="0">
|
||
<div class="mission-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 12l2 2 4-4"/><path d="M21 12c0 4.97-4.03 9-9 9s-9-4.03-9-9 4.03-9 9-9"/></svg></div>
|
||
<h3>Verification</h3>
|
||
<p>Confirm assets exist and look as expected. Addresses, storefronts, delivery locations and registered entities.</p>
|
||
<span class="mission-chip">E-commerce, banks & agencies</span>
|
||
<p class="drill-cta">Deep dive <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
<article class="mission-card drill-card" onclick="openDrill('mission','urban')" role="button" tabindex="0">
|
||
<div class="mission-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="7" height="14" rx="1"/><rect x="9" y="3" width="7" height="18" rx="1"/><rect x="16" y="9" width="7" height="12" rx="1"/><path d="M2 21h20"/></svg></div>
|
||
<h3>Urban & streets</h3>
|
||
<p>Street conditions, signage, accessibility, retail presence. Intelligence for city planners and retail chains.</p>
|
||
<span class="mission-chip">Municipalities & retail</span>
|
||
<p class="drill-cta">Deep dive <span class="drill-arrow">→</span></p>
|
||
<div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div><div class="drill-dot on"></div></div>
|
||
</article>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- EARNINGS -->
|
||
<section id="earnings" class="section-pad">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Compensation structure</h2>
|
||
<p>QX Credits per approved mission. No hourly rate. No schedule. No minimum commitment. Click any <a class="gterm" data-gterm="tier" href="/glossary#tier">tier</a> to learn more.</p>
|
||
</div>
|
||
<div class="earnings-grid">
|
||
<article class="tier-card drill-card" onclick="openDrill('tier','supplementary')" role="button" tabindex="0">
|
||
<div class="tier-ill"><svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="10" r="5" stroke="#0066FF" stroke-width="2"/><path d="M17 22c0-3.866 3.134-7 7-7s7 3.134 7 7" stroke="#0066FF" stroke-width="2" stroke-linecap="round"/><path d="M20 30l-3 8M28 30l3 8" stroke="#0066FF" stroke-width="2" stroke-linecap="round"/><path d="M17 38l4-8 3 4 3-4 4 8" stroke="#0066FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
|
||
<h3>Supplementary</h3>
|
||
<p class="tier-missions">2–4 missions per week</p>
|
||
<p class="tier-earnings" style="font-size:1.375rem;font-weight:900;color:var(--blue);letter-spacing:-.03em;margin-bottom:16px">60–480 Credits<span style="font-size:.875rem;font-weight:500;color:var(--text-muted)"> / week</span></p>
|
||
<ul class="tier-features"><li>Supplementary income alongside existing commitments</li><li>No minimum hours or availability required</li><li>Access to all standard mission categories</li></ul>
|
||
<p class="drill-cta" style="justify-content:center">See full details <span class="drill-arrow">→</span></p>
|
||
</article>
|
||
<article class="tier-card featured drill-card" onclick="openDrill('tier','active')" role="button" tabindex="0">
|
||
<div class="tier-ill"><svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="20" cy="10" r="5" stroke="#fff" stroke-width="2"/><path d="M13 22c0-3.866 3.134-7 7-7s7 3.134 7 7" stroke="#fff" stroke-width="2" stroke-linecap="round"/><path d="M16 30l-3 8M24 30l3 8" stroke="#fff" stroke-width="2" stroke-linecap="round"/><circle cx="36" cy="14" r="8" fill="#0066FF"/><path d="M32 14l2.5 2.5L39 11" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></div>
|
||
<h3>Active</h3>
|
||
<p class="tier-missions">8–12 missions per week</p>
|
||
<p class="tier-earnings" style="font-size:1.375rem;font-weight:900;color:var(--blue);letter-spacing:-.03em;margin-bottom:16px">240–1,440 Credits<span style="font-size:.875rem;font-weight:500;color:rgba(10,10,10,.75)"> / week</span></p>
|
||
<ul class="tier-features"><li>Consistent volume with predictable payment cadence</li><li>Builds platform rating, unlocking higher-value assignments</li><li>Priority access to restricted mission types</li></ul>
|
||
<p class="drill-cta" style="justify-content:center;color:rgba(10,10,10,.7)">See full details <span class="drill-arrow">→</span></p>
|
||
</article>
|
||
<article class="tier-card drill-card" onclick="openDrill('tier','professional')" role="button" tabindex="0">
|
||
<div class="tier-ill"><svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="24" cy="9" r="5" stroke="#0066FF" stroke-width="2"/><path d="M17 21c0-3.866 3.134-7 7-7s7 3.134 7 7" stroke="#0066FF" stroke-width="2" stroke-linecap="round"/><path d="M20 29l-3 9M28 29l3 9" stroke="#0066FF" stroke-width="2" stroke-linecap="round"/><path d="M24 24l1.5 3 3.5.5-2.5 2.5.5 3.5L24 32l-3 1.5.5-3.5L19 27.5l3.5-.5z" fill="#0066FF" opacity="0.6"/></svg></div>
|
||
<h3>Professional</h3>
|
||
<p class="tier-missions">15+ missions per week</p>
|
||
<p class="tier-earnings" style="font-size:1.375rem;font-weight:900;color:var(--blue);letter-spacing:-.03em;margin-bottom:16px">450–2,400+ Credits<span style="font-size:.875rem;font-weight:500;color:var(--text-muted)"> / week</span></p>
|
||
<ul class="tier-features"><li>Maximum assignment volume and compensation</li><li>First access to premium and restricted assignments</li><li>Performance-based compensation adjustments</li></ul>
|
||
<p class="drill-cta" style="justify-content:center">See full details <span class="drill-arrow">→</span></p>
|
||
</article>
|
||
<div class="qx-calc" id="qx-calc">
|
||
<h3>Estimate your earnings</h3>
|
||
<p class="qx-calc-sub">Adjust missions per week and average reward</p>
|
||
<div class="qx-calc-row">
|
||
<span class="qx-calc-label">Missions / week</span>
|
||
<input type="range" min="1" max="25" value="5" id="calc-missions" oninput="qxCalcUpdate()"><!-- max extended to 25 -->
|
||
<span class="qx-calc-val" id="calc-missions-val">5</span>
|
||
</div>
|
||
<div class="qx-calc-row">
|
||
<span class="qx-calc-label">Avg. reward</span>
|
||
<input type="range" min="4" max="30" value="9" id="calc-reward" oninput="qxCalcUpdate()">
|
||
<span class="qx-calc-val" id="calc-reward-val">9</span>
|
||
</div>
|
||
<div class="qx-calc-result">
|
||
<div>
|
||
<div class="qx-calc-result-label">Estimated monthly earnings</div>
|
||
<div class="qx-calc-result-period">Based on 4.3 weeks/month · before tax</div>
|
||
</div>
|
||
<div>
|
||
<div class="qx-calc-result-amount" id="calc-output">195</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
function qxCalcUpdate(){
|
||
var m=parseInt(document.getElementById('calc-missions').value);
|
||
var r=parseInt(document.getElementById('calc-reward').value);
|
||
var loc=window.QX_CURRENT_LOCALE||{symbol:'€',currency:'EUR'};
|
||
var monthly=Math.round(m*r*4.3);
|
||
document.getElementById('calc-missions-val').textContent=m;
|
||
document.getElementById('calc-reward-val').textContent=loc.symbol+r;
|
||
document.getElementById('calc-output').textContent=loc.symbol+monthly;
|
||
}
|
||
document.addEventListener('qx:market',function(){qxCalcUpdate();});
|
||
</script>
|
||
</div>
|
||
<details class="payment-accordion">
|
||
<summary>Payment and taxation</summary>
|
||
<div class="payment-accordion-body">
|
||
<ul>
|
||
<li><span class="dot"></span>QX Credits are added to your balance on mission approval. Balances above the minimum payout threshold are transferred weekly via <a class="gterm" data-gterm="Stripe Connect" href="/glossary#stripe-connect">Stripe Connect</a> to your registered bank account.</li>
|
||
<li><span class="dot"></span>quiXzoom charges no commission or platform fee to <a class="gterm" data-gterm="Zoomer" href="/glossary#zoomer">Zoomers</a>. You receive 100% of your earned Credits. Credits never expire.</li>
|
||
<li><span class="dot"></span>QX Credits converted to cash upon payout. Tax treatment varies by country and jurisdiction. You are solely responsible for complying with applicable tax and reporting obligations in your place of residence. quiXzoom does not provide tax advice.</li>
|
||
</ul>
|
||
</div>
|
||
</details>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- FOR BUSINESSES -->
|
||
<section id="businesses" class="section-pad">
|
||
<div class="container">
|
||
<div class="businesses-header">
|
||
<h2>For organisations</h2>
|
||
<p>On-demand access to a verified network of field data collectors. Scope is defined by you. Execution is distributed.</p>
|
||
</div>
|
||
<div class="biz-grid">
|
||
<a class="biz-card" href="/for-organisations/" style="display:block;text-decoration:none;color:inherit;cursor:pointer"><div class="biz-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/></svg></div><h3>Geographic reach</h3><p>Launching in Sweden August 2026, with Netherlands, Thailand, Nigeria and Kenya to follow. No local staffing or coordination infrastructure required.</p><span class="biz-drill">Learn more →</span></a>
|
||
<a class="biz-card" href="/for-organisations/#quality" style="display:block;text-decoration:none;color:inherit;cursor:pointer"><div class="biz-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M9 12l2 2 4-4"/></svg></div><h3>Quality assurance</h3><p>Every submission undergoes automated AI review for completeness, technical quality and specification compliance.</p><span class="biz-drill">Learn more →</span></a>
|
||
<a class="biz-card" href="/for-organisations/#deployment" style="display:block;text-decoration:none;color:inherit;cursor:pointer"><div class="biz-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg></div><h3>Rapid deployment</h3><p>Mission campaigns configured and deployed within hours. Define scope, requirements and compensation — network activates automatically.</p><span class="biz-drill">Learn more →</span></a>
|
||
</div>
|
||
<div class="biz-cta"><a href="/for-organisations/" class="btn-ghost">Explore for organisations →</a></div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- COMMUNITY -->
|
||
<section id="community" class="section-pad" style="background:var(--bg-off)">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>The World's Observation Network</h2>
|
||
<p>quiXzoom Community launches alongside the platform. Zoomers will share field observations, local knowledge and discovery reports — building a continuously updated layer of real-world intelligence. <em style="color:var(--text-muted)">Opening 2026.</em></p>
|
||
</div>
|
||
<div class="community-grid">
|
||
<div class="community-card" style="cursor:pointer" onclick="document.getElementById('wl-email').focus()">
|
||
<div class="community-tag">Field Reports</div>
|
||
<h3>What's changing out there</h3>
|
||
<p>Real observations from the field. Zoomers report what they see — infrastructure, urban change, damage, new construction.</p>
|
||
<ul class="field-report-list">
|
||
<li><em style="color:var(--text-muted)">(Sample)</em> Road construction project emerging in Milan</li>
|
||
<li><em style="color:var(--text-muted)">(Sample)</em> New commercial district in Bangkok</li>
|
||
<li><em style="color:var(--text-muted)">(Sample)</em> Abandoned industrial site in Hamburg</li>
|
||
<li><em style="color:var(--text-muted)">(Sample)</em> Bridge inspection underway in Stockholm</li>
|
||
</ul>
|
||
</div>
|
||
<div class="community-card" style="cursor:pointer" onclick="document.getElementById('wl-email').focus()">
|
||
<div class="community-tag">Zoomer Academy</div>
|
||
<h3>Sharpen your fieldwork</h3>
|
||
<p>Guides, techniques and standards for producing high-quality, high-approval submissions.</p>
|
||
<ul class="field-report-list">
|
||
<li>Photo technique for difficult lighting</li>
|
||
<li>GPS accuracy and metadata</li>
|
||
<li>Verification best practices</li>
|
||
<li>Field safety and access rights</li>
|
||
</ul>
|
||
</div>
|
||
<div class="community-card" style="cursor:pointer" onclick="document.getElementById('wl-email').focus()">
|
||
<div class="community-tag">Regional Communities</div>
|
||
<h3>Local knowledge, global reach</h3>
|
||
<p>Every region has its own community. Posts are automatically translated — a Zoomer in Italy and a Zoomer in Sweden read the same thread in their own language.</p>
|
||
<ul class="field-report-list">
|
||
<li>Sweden</li>
|
||
<li>Germany</li>
|
||
<li>Italy</li>
|
||
<li>Thailand</li>
|
||
<li>United States</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="community-pipeline">
|
||
<div class="community-pipeline-text">
|
||
<h3>Community generates missions</h3>
|
||
<p>When Zoomers discuss an area or report changes, the system detects patterns and automatically generates new missions. Community activity becomes field intelligence — and field intelligence becomes work.</p>
|
||
</div>
|
||
<div class="community-pipeline-badge">Field observation → Mission → Verified data</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- RECOGNITION -->
|
||
<section id="recognition" class="section-pad">
|
||
<div class="container">
|
||
<div class="section-header">
|
||
<h2>Recognition that means something</h2>
|
||
<p>Every milestone is acknowledged — not with a badge, but with a message that answers: why does my contribution matter? <a href="/earn/" style="color:var(--blue);font-weight:600">See the full progression →</a></p>
|
||
</div>
|
||
<div class="community-pipeline">
|
||
<div class="community-pipeline-text">
|
||
<h3>10 milestones. No points. No levels.</h3>
|
||
<p>From First Steps at 10 missions to World Builder at 10,000 — each milestone is a genuine acknowledgement of real-world contribution. Your Credits never expire. Your recognition never disappears.</p>
|
||
</div>
|
||
<div class="community-pipeline-badge">10 → 25 → 50 → 100 → 250 → 500 → 1K → 2.5K → 5K → 10K</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- FAQ -->
|
||
<section id="faq" class="section-pad">
|
||
<div class="container">
|
||
<div class="section-header"><h2>Frequently asked questions</h2><p>Click any question for a detailed answer. Use "More detail" for the full 7-layer breakdown.</p></div>
|
||
<div class="faq-list">
|
||
<details class="faq-item"><summary>Do I need a professional camera?</summary><div class="faq-answer">No. iPhone 12 or later, or any Android with 12MP or better, is all you need. Most Zoomers use the phone they already own.<br><span class="faq-drill-hint" onclick="event.stopPropagation();openDrill('faq','camera')">Full equipment guide → <span>→</span></span></div></details>
|
||
<details class="faq-item"><summary>How and when do I get paid?</summary><div class="faq-answer">QX Credits are added to your balance when each mission is approved. Once you reach the payout threshold, funds transfer weekly via Stripe Connect. One-time identity verification required.<br><span class="faq-drill-hint" onclick="event.stopPropagation();openDrill('faq','payment')">Full payment breakdown → <span>→</span></span></div></details>
|
||
<details class="faq-item"><summary>What missions are available in my area?</summary><div class="faq-answer">Sign up to be notified. Live missions browsable on the map from August 1, 2026. Mission density grows over time with Zoomer network.<br><span class="faq-drill-hint" onclick="event.stopPropagation();openDrill('faq','availability')">Coverage map and launch timeline → <span>→</span></span></div></details>
|
||
<details class="faq-item"><summary>Is this taxable income?</summary><div class="faq-answer">The conversion of QX Credits into fiat currency may have tax consequences depending on your country and individual circumstances. You are solely responsible for understanding and complying with applicable laws. quiXzoom does not provide tax advice and does not withhold taxes on your behalf. Consult a qualified tax advisor if you are uncertain.<br><span class="faq-drill-hint" onclick="event.stopPropagation();openDrill('faq','tax')">Tax guidance by country → <span>→</span></span></div></details>
|
||
<details class="faq-item"><summary>How quickly is my photo approved?</summary><div class="faq-answer">Most submissions reviewed within a few hours by AI. If not approved, you see the specific reason and can supplement or appeal within 48h.<br><span class="faq-drill-hint" onclick="event.stopPropagation();openDrill('faq','approval')">Full review process breakdown → <span>→</span></span></div></details>
|
||
<details class="faq-item"><summary>Can I work part-time?</summary><div class="faq-answer">Absolutely. No minimum hours, no fixed schedule, no commitment. Work when you want. Many Zoomers do one or two missions on their lunch break.<br><span class="faq-drill-hint" onclick="event.stopPropagation();openDrill('faq','parttime')">Earnings scenarios and scheduling → <span>→</span></span></div></details>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- CTA BOTTOM -->
|
||
<section id="cta-bottom" class="section-pad">
|
||
<div class="container">
|
||
<div class="section-header"><h2>Ready to start?</h2><p>Registration is open. No platform fee. Credits never expire.</p></div>
|
||
<div style="max-width:680px;margin:0 auto">
|
||
<form id="waitlist-form-bottom" onsubmit="submitWaitlist(event,'bottom')" novalidate>
|
||
<div class="wl-row">
|
||
<input type="tel" id="wl-phone-bottom" name="phone" class="wl-input" placeholder="Your phone number" required autocomplete="tel">
|
||
<button type="submit" id="wl-btn-bottom" class="wl-submit">Register as a Zoomer →</button>
|
||
</div>
|
||
<div id="wl-ok-bottom" class="wl-ok" hidden>✓ You're on the list! We'll be in touch before launch.</div>
|
||
<p id="wl-err-bottom" class="wl-err" hidden>Something went wrong. Please try again.</p>
|
||
</form>
|
||
<p class="wl-trust">No signup fee · No platform fee · Credits never expire · Launching Sweden Aug 2026</p>
|
||
<div class="referral-hint" style="margin-top:18px;padding:14px 20px;background:rgba(10,10,10,.06);border:1px solid rgba(10,10,10,.12);border-radius:12px;font-size:.9rem;color:rgba(10,10,10,.8)">
|
||
<p><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 12 20 22 4 22 4 12"/><rect x="2" y="7" width="20" height="5"/><line x1="12" y1="22" x2="12" y2="7"/><path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z"/><path d="M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"/></svg> Refer a friend — both of you get 50 bonus Credits at launch</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
</main>
|
||
|
||
<footer>
|
||
<div class="footer-top">
|
||
<div class="footer-grid">
|
||
|
||
<!-- Brand col -->
|
||
<div class="footer-brand-col">
|
||
<a href="/" class="footer-logo">qui<span class="x">X</span>zoom</a>
|
||
<p class="footer-desc">Crowdsourced field data collection. Zoomers photograph infrastructure, real estate and urban environments on demand.</p>
|
||
<div class="footer-social-row">
|
||
<a href="https://www.linkedin.com/company/quixzoom" class="footer-soc-btn" aria-label="LinkedIn" target="_blank" rel="noopener">
|
||
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
|
||
</a>
|
||
<a href="https://twitter.com/quixzoom" class="footer-soc-btn" aria-label="X / Twitter" target="_blank" rel="noopener">
|
||
<svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.744l7.73-8.835L1.254 2.25H8.08l4.253 5.622zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>
|
||
</a>
|
||
<a href="https://www.instagram.com/quixzoom" class="footer-soc-btn" aria-label="Instagram" target="_blank" rel="noopener">
|
||
<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"/></svg>
|
||
</a>
|
||
</div>
|
||
<div class="footer-trust">
|
||
<div class="trust-badge"><span class="tb-icon"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg></span>GDPR compliant</div>
|
||
<div class="trust-badge"><span class="tb-icon"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10z"/></svg></span>EU data residency</div>
|
||
<div class="trust-badge"><span class="tb-icon"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg></span>Stripe payouts</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Platform -->
|
||
<div>
|
||
<div class="footer-col-title">Platform</div>
|
||
<ul class="footer-col-links">
|
||
<li><a href="#how">How it works</a></li>
|
||
<li><a href="#missions">Mission types</a></li>
|
||
<li><a href="#earnings">Zoomer earnings</a></li>
|
||
<li><a href="/markets/se/">Sverige launch <span class="badge-new">Aug 2026</span></a></li>
|
||
<li><a href="/markets/">All markets</a></li>
|
||
<li><a href="https://app.quixzoom.com/join">Join as Zoomer</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Solutions -->
|
||
<div>
|
||
<div class="footer-col-title">Solutions</div>
|
||
<ul class="footer-col-links">
|
||
<li><a href="/for-organisations/">For organisations</a></li>
|
||
<li><a href="/for-organisations/#use-cases">Use cases</a></li>
|
||
<li><a href="/for-organisations/#enterprise">Enterprise</a></li>
|
||
<li><a href="/pricing">Pricing</a></li>
|
||
<li><a href="/for-organisations/#contact">Request a demo</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Developers -->
|
||
<div>
|
||
<div class="footer-col-title">Developers</div>
|
||
<ul class="footer-col-links">
|
||
<li><a href="/developer/openapi.json">OpenAPI spec</a></li>
|
||
<li><a href="/changelog">Changelog</a></li>
|
||
<li><a href="/status">System status</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Resources -->
|
||
<div>
|
||
<div class="footer-col-title">Resources</div>
|
||
<ul class="footer-col-links">
|
||
<li><a href="/academy/">Zoomer Academy</a></li>
|
||
<li><a href="/resources/">Resources</a></li>
|
||
<li><a href="/glossary">Glossary</a></li>
|
||
<li><a href="/security">Security & trust</a></li>
|
||
<li><a href="/careers/">Careers</a></li>
|
||
<li><a href="/about">About quiXzoom</a></li>
|
||
<li><a href="/support">Support centre</a></li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Legal -->
|
||
<div>
|
||
<div class="footer-col-title">Legal</div>
|
||
<ul class="footer-col-links">
|
||
<li><a href="/privacy/">Privacy policy</a></li>
|
||
<li><a href="/terms/">Terms of service</a></li>
|
||
<li><a href="/terms#dac7">DAC7 reporting</a></li>
|
||
<li><a href="/privacy#gdpr">GDPR rights</a></li>
|
||
<li><a href="/security#responsible">Responsible disclosure</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
</div>
|
||
</div><!-- /footer-top -->
|
||
|
||
<div style="border-bottom:1px solid rgba(10,10,10,.07)">
|
||
<div class="footer-bottom" style="padding-top:16px;padding-bottom:16px">
|
||
<div class="footer-lang-row">
|
||
<span class="fl-lbl"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10z"/></svg></span>
|
||
<a href="https://www.quixzoom.com/" class="flang active">EN</a>
|
||
<a href="/markets/se/" class="flang">🇸🇪 Sverige</a>
|
||
<a href="/markets/nl/" class="flang">🇳🇱 NL</a>
|
||
<a href="/markets/th/" class="flang">🇹🇭 TH</a>
|
||
<a href="/markets/ng/" class="flang">🇳🇬 NG</a>
|
||
<a href="/markets/ke/" class="flang">🇰🇪 KE</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div style="border-top:1px solid rgba(10,10,10,.07);padding:20px 32px;max-width:1200px;margin:0 auto">
|
||
<p style="font-size:.8rem;color:rgba(10,10,10,.55);line-height:1.6">Data delivered to <a href="https://www.landvex.com" style="color:rgba(10,10,10,.7);text-decoration:underline">Landvex</a> — powering decision intelligence for governments and enterprise. · Credits are redeemable as cash — 1 Credit = €1 · Minimum payout 250 Credits (€250).</p>
|
||
</div>
|
||
<div class="footer-bottom">
|
||
<p class="footer-copy">© 2026 quiXzoom · Operated by Landvex AB</p>
|
||
<div class="footer-legal-links">
|
||
<a href="/privacy/">Privacy</a>
|
||
<a href="/terms/">Terms</a>
|
||
<a href="/security">Security</a>
|
||
<a href="/support">Support</a>
|
||
</div>
|
||
</div>
|
||
|
||
</footer>
|
||
|
||
<!-- OVERLAY -->
|
||
<div class="overlay-backdrop" id="overlay-backdrop" onclick="closeOverlay()"></div>
|
||
<div class="overlay-panel" id="overlay-panel" role="dialog" aria-modal="true" aria-labelledby="overlay-title">
|
||
<div class="overlay-header">
|
||
<button class="overlay-close" onclick="closeOverlay()" aria-label="Close">✕</button>
|
||
<p class="overlay-breadcrumb">quiXzoom / <span id="overlay-breadcrumb-sector"></span></p>
|
||
<p class="overlay-type" id="overlay-type-label"></p>
|
||
<h2 class="overlay-title" id="overlay-title"></h2>
|
||
<div class="layer-nav-wrap"><nav class="layer-nav" id="layer-nav"></nav></div>
|
||
</div>
|
||
<div class="overlay-body" id="overlay-body"></div>
|
||
</div>
|
||
|
||
<script>
|
||
'use strict';
|
||
|
||
/* ─────────────────────────────────────────────
|
||
DRILL DATA — 7 LAYERS PER TOPIC
|
||
───────────────────────────────────────────── */
|
||
const DATA = {
|
||
|
||
how: {
|
||
1: {
|
||
type: 'Step 1', title: 'Register & get started',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Signing up takes under 60 seconds. You submit your email, choose your region, and join the waitlist. We notify you when missions go live in your area.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">60s</div><div class="layer-kpi-lbl">Signup time</div></div><div class="layer-kpi"><div class="layer-kpi-val">Free</div><div class="layer-kpi-lbl">No cost ever</div></div><div class="layer-kpi"><div class="layer-kpi-val">Aug 2026</div><div class="layer-kpi-lbl">First missions live</div></div></div>` },
|
||
{ tab: '2 · Identity verification', html: `<p class="layer-lead">Before your first payout, you complete a one-time identity verification. This is a legal requirement for payment platforms and takes 3–5 minutes.</p><ul class="layer-ul"><li>Government-issued photo ID (passport, national ID or driving licence)</li><li>Selfie for liveness check</li><li>Processed by our KYC provider — not stored by quiXzoom</li><li>Verification typically approved within 1 hour</li><li>Required once — never again unless your details change</li></ul><p class="layer-h3">Why it's required</p><p class="layer-p">Anti-money-laundering regulation requires payment platforms to verify the identity of anyone receiving funds. This is the same process used by Stripe, PayPal and all regulated payment services.</p>` },
|
||
{ tab: '3 · App setup', html: `<p class="layer-lead">Once verified, you set up your Zoomer profile and link your bank account for payouts.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Download the app</p><p class="layer-step-desc">Available on iOS (App Store) and Android (Google Play) at launch.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Set your zone</p><p class="layer-step-desc">Define the geographic radius you are willing to travel. Missions within this zone appear on your map.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">Link your bank account</p><p class="layer-step-desc">Via Stripe Connect. Takes 2 minutes. Your bank details are held by Stripe — not quiXzoom.</p></div></div><div class="layer-step"><div class="layer-step-num">4</div><div class="layer-step-body"><p class="layer-step-title">You're live</p><p class="layer-step-desc">Missions in your zone are immediately visible. Claim one and start.</p></div></div></div>` },
|
||
{ tab: '4 · Equipment', html: `<p class="layer-lead">No specialist equipment is needed. Your smartphone camera is sufficient for all standard mission types.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Device</th><th>Requirement</th><th>Status</th></tr><tr><td>iPhone</td><td>iPhone 12 or later</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> All standard missions</td></tr><tr><td>Android</td><td>12MP rear camera or better</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> All standard missions</td></tr><tr><td>Dedicated camera</td><td>12MP+, GPS-capable or manual location</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> With GPS workaround</td></tr><tr><td>Drone</td><td>Supported for aerial missions (future)</td><td>Coming 2026 Q4</td></tr></table></div><p class="layer-h3">Recommended settings</p><ul class="layer-ul"><li>Location services: always on while using the app</li><li>Camera: maximum resolution, no digital zoom</li><li>Storage: 2GB free minimum</li></ul>` },
|
||
{ tab: '5 · Your profile', html: `<p class="layer-lead">Your Zoomer profile determines which missions you can access and your compensation tier.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Profile element</th><th>Impact</th></tr><tr><td>Identity verified</td><td>Required for any payout</td></tr><tr><td>Approval rate</td><td>Higher approval rate = access to premium missions</td></tr><tr><td>Mission count</td><td>Unlocks tier upgrades (Active, Professional)</td></tr><tr><td>Rating</td><td>High-rated Zoomers get priority assignment on high-value missions</td></tr><tr><td>Specialisations</td><td>Complete training modules to unlock mission types (e.g. maritime, bridge inspection)</td></tr></table></div>` },
|
||
{ tab: '6 · Privacy', html: `<p class="layer-lead">Your personal data is protected under GDPR and applicable local data protection law.</p><ul class="layer-ul"><li>Your name and contact details are never shared with mission orderers</li><li>Submissions are delivered to orderers without Zoomer identification</li><li>GPS data is used for mission verification only and not retained after approval</li><li>Anonymised mission observations are licensed by quiXzoom to Landvex for intelligence products under a separate data processing agreement; your identity is never disclosed</li><li>Identity verification data held by KYC provider, not quiXzoom</li><li>Right to erasure: you can delete your account and all associated data at any time</li></ul><p class="layer-h3">Data residency</p><p class="layer-p">All quiXzoom data is stored in EU (Stockholm, eu-north-1). Your data never leaves the European Economic Area.</p>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Join the waitlist now</p><p class="layer-cta-sub">Registration is free. We notify you when missions go live in your area. No commitment required.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Register as a Zoomer →</a></div>` }
|
||
]
|
||
},
|
||
2: {
|
||
type: 'Step 2', title: 'Selecting and claiming a mission',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Missions are displayed on a map as markers. Each marker shows the mission type, distance from you, estimated time, and compensation. You claim the missions you want — no assignment from quiXzoom.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">~30 min</div><div class="layer-kpi-lbl">Average mission</div></div><div class="layer-kpi"><div class="layer-kpi-val">€3–30</div><div class="layer-kpi-lbl">Typical range per mission</div></div><div class="layer-kpi"><div class="layer-kpi-val">Your choice</div><div class="layer-kpi-lbl">No forced assignments</div></div></div>` },
|
||
{ tab: '2 · The mission brief', html: `<p class="layer-lead">Every mission has a brief that tells you exactly what is required before you claim it. There are no surprises.</p><p class="layer-h3">What the brief contains</p><ul class="layer-ul"><li>Location — exact address or area, shown on map with navigation link</li><li>Documentation type — which angles, elements and coverage are required</li><li>Example images — visual reference for each required shot</li><li>Time window — how long you have to complete and submit</li><li>Compensation — the exact amount you receive on approval</li><li>Difficulty rating — estimated skill level and time required</li><li>Access notes — any known access restrictions or safety guidance</li></ul>` },
|
||
{ tab: '3 · Claiming', html: `<p class="layer-lead">Claiming reserves the mission for you within a defined time window. Unclaimed missions are visible to all Zoomers in range simultaneously.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Browse the map</p><p class="layer-step-desc">Missions in your zone appear as markers. Filter by type, compensation or distance.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Read the brief</p><p class="layer-step-desc">Review requirements, example images and compensation before claiming. No obligation.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">Claim</p><p class="layer-step-desc">Claiming starts your time window. The mission is reserved for you. Other Zoomers cannot claim it during your window.</p></div></div><div class="layer-step"><div class="layer-step-num">4</div><div class="layer-step-body"><p class="layer-step-title">Navigate and document</p><p class="layer-step-desc">App guides you to location and shows required shots as you capture them.</p></div></div><div class="layer-step"><div class="layer-step-num">5</div><div class="layer-step-body"><p class="layer-step-title">Submit</p><p class="layer-step-desc">Submit within your time window. AI review begins immediately.</p></div></div></div>` },
|
||
{ tab: '4 · Competition', html: `<p class="layer-lead">Some missions allow multiple Zoomer submissions — the fastest and highest-quality earns most. Understanding competition dynamics helps you maximise earnings.</p><p class="layer-h3">Mission types by competition model</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Type</th><th>Competition model</th><th>Best strategy</th></tr><tr><td>Standard</td><td>First valid submission wins full fee</td><td>Speed matters — claim and go immediately</td></tr><tr><td>Multi-submission</td><td>Multiple submissions accepted, declining fee</td><td>Quality matters — take your time</td></tr><tr><td>Surge</td><td>Large event, many locations, flat fee</td><td>Volume strategy — complete as many as possible</td></tr><tr><td>Premium</td><td>Single submission, higher fee, quality threshold</td><td>Specialisation required — only for rated Zoomers</td></tr></table></div>` },
|
||
{ tab: '5 · Cancellation', html: `<p class="layer-lead">You can release a claimed mission if you cannot complete it. Do this before the time window expires to avoid a negative rating impact.</p><ul class="layer-ul"><li>Release within 15 minutes of claiming: no penalty</li><li>Release after 15 minutes: small rating penalty</li><li>Time window expires without submission: moderate rating penalty</li><li>Three consecutive expired claims: temporary claim restriction (24h)</li></ul><p class="layer-h3">Why this matters</p><p class="layer-p">When you claim a mission, other Zoomers cannot claim it. If you don't complete it, the orderer's timeline is affected. The penalty system protects mission reliability for everyone.</p>` },
|
||
{ tab: '6 · Tips', html: `<p class="layer-lead">Patterns observed from highest-earning Zoomers in beta testing.</p><ul class="layer-ul"><li>Plan routes around clusters of missions — cover 3–5 in a single trip</li><li>Claim infrastructure and real estate missions first — they pay most per minute of work</li><li>Monitor surge events — emergency insurance missions pay 2–5× standard rate</li><li>Complete your profile specialisations — access to premium missions is rating-gated</li><li>Consistent quality pays more than raw volume — approval rate affects tier and mission access</li><li>Morning and evening windows see highest mission turnover in urban areas</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Missions go live August 2026</p><p class="layer-cta-sub">Join the waitlist now. You'll be first to see missions when they activate in your area.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
3: {
|
||
type: 'Step 3', title: 'Payment and approval',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Payment is automatic. Once your submission is approved, Stripe Connect transfers the mission amount directly to your linked bank account. No invoice. No waiting for a payment run.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">Automatic</div><div class="layer-kpi-lbl">No manual claim needed</div></div><div class="layer-kpi"><div class="layer-kpi-val">0%</div><div class="layer-kpi-lbl">Platform fee to Zoomers</div></div><div class="layer-kpi"><div class="layer-kpi-val">1–3 days</div><div class="layer-kpi-lbl">Bank transfer time (Stripe)</div></div></div>` },
|
||
{ tab: '2 · Review process', html: `<p class="layer-lead">Submissions are reviewed automatically by the quiXzoom AI engine within minutes of upload. No human reviewer required for standard missions.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Upload</p><p class="layer-step-desc">Images and metadata uploaded via the app. Integrity hash generated at capture.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">AI review (~30 seconds)</p><p class="layer-step-desc">Geo-compliance, image quality, specification coverage and anomaly detection. All automated.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">Decision</p><p class="layer-step-desc">Approved: payment triggered. Rejected: reason shown, 48h to supplement or appeal. Borderline: human review queue.</p></div></div><div class="layer-step"><div class="layer-step-num">4</div><div class="layer-step-body"><p class="layer-step-title">Payment</p><p class="layer-step-desc">Stripe Connect transfer initiated immediately on approval. Paid out weekly via Stripe Connect to your registered bank account.</p></div></div></div>` },
|
||
{ tab: '3 · If rejected', html: `<p class="layer-lead">Rejection is not the end. You always see the specific reason and have 48 hours to respond.</p><p class="layer-h3">Common rejection reasons</p><ul class="layer-ul"><li>Required angle missing — re-shoot the specific angle and supplement</li><li>Image quality below threshold — retake in better lighting or stability</li><li>Geo-compliance failure — capture was outside the mission perimeter</li><li>Specification element not visible — obscured subject, re-shoot</li></ul><p class="layer-h3">Appeal process</p><p class="layer-p">If you believe the AI review was incorrect, you can flag it for human review. Human reviewers assess all flagged rejections within 24 hours. Successful appeals result in approval and payment, and improve the AI model.</p>` },
|
||
{ tab: '4 · Payout methods', html: `<p class="layer-lead">quiXzoom uses Stripe Connect for all Zoomer payouts. Stripe supports bank accounts in 30+ countries.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Country</th><th>Payout method</th><th>Transfer time</th></tr><tr><td>Sweden, EU</td><td>SEPA bank transfer</td><td>1–2 business days</td></tr><tr><td>UK</td><td>Faster Payments / BACS</td><td>Next business day</td></tr><tr><td>US</td><td>ACH bank transfer</td><td>2–3 business days</td></tr><tr><td>Other</td><td>SWIFT / local rails</td><td>2–5 business days</td></tr></table></div><p class="layer-h3">Payout currencies</p><p class="layer-p">Payouts are issued in your local currency. Exchange rate conversion handled by Stripe at mid-market rate where applicable.</p>` },
|
||
{ tab: '5 · Earnings tracking', html: `<p class="layer-lead">Your earnings dashboard shows all completed missions, pending approvals, and payment history.</p><ul class="layer-ul"><li>Real-time mission status — pending review, approved, rejected</li><li>Earnings summary — daily, weekly, monthly totals</li><li>Payment history — each transfer with Stripe reference</li><li>Tax export — annual earnings statement downloadable as PDF or CSV for tax reporting</li><li>Tier progress — where you are on the Supplementary → Active → Professional path</li></ul>` },
|
||
{ tab: '6 · Tax & payouts', html: `<p class="layer-lead">QX Credits are converted to fiat currency when you request a payout. Tax treatment of that conversion varies by country and individual circumstances.</p><div style="background:#f7f7f5;border-radius:10px;padding:16px;margin:16px 0"><p style="font-weight:700;margin-bottom:8px">How payouts work</p><ol style="padding-left:20px;display:flex;flex-direction:column;gap:6px"><li>Complete missions → Credits added to balance</li><li>Reach minimum threshold (250 Credits)</li><li>Request payout → Credits converted at published rate</li><li>Funds transferred via Stripe Connect to your account</li></ol></div><p class="layer-h3">Your responsibilities</p><ul class="layer-ul"><li>You are solely responsible for determining and complying with any tax, reporting or regulatory obligations in your place of residence or tax domicile</li><li>The conversion of Credits to fiat currency may constitute taxable income in your jurisdiction</li><li>quiXzoom does not withhold taxes, provide tax advice, or determine your residency status</li><li>quiXzoom provides annual earnings statements (PDF + CSV) to assist with your own reporting</li></ul><p class="layer-h3">quiXzoom provides</p><ul class="layer-ul"><li>Annual earnings summary from January 15 each year</li><li>Transaction-level records for every approved mission</li><li>Stripe Connect payment records</li></ul><p class="layer-p"><em>Please consult a qualified tax advisor if you are uncertain about your obligations in your jurisdiction.</em></p>` }
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Start earning in August 2026</p><p class="layer-cta-sub">Register interest now. Platform fee to Zoomers: zero. You keep everything the mission pays.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
}
|
||
},
|
||
|
||
persona: {
|
||
student: {
|
||
type: 'Zoomer profile', title: 'Student · Part-time Zoomer',
|
||
layers: [
|
||
{ tab: '1 · Profile', html: `<p class="layer-lead">Students are the most active Zoomer demographic in beta testing. Flexible schedules, local knowledge, and smartphone-native — they fit the platform naturally.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">3–4</div><div class="layer-kpi-lbl">Missions per week</div></div><div class="layer-kpi"><div class="layer-kpi-val">€60–120</div><div class="layer-kpi-lbl">Monthly earnings (est.)</div></div><div class="layer-kpi"><div class="layer-kpi-val">~2h</div><div class="layer-kpi-lbl">Time invested per week</div></div></div>` },
|
||
{ tab: '2 · Typical week', html: `<p class="layer-lead">A typical student Zoomer fits missions into their existing daily movement — to lectures, to the library, back home.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">Mon</div><div class="layer-step-body"><p class="layer-step-title">Morning: 1 mission on the way to campus</p><p class="layer-step-desc">Infrastructure mission near the route. 20 minutes, €8. Submitted between lectures.</p></div></div><div class="layer-step"><div class="layer-step-num">Wed</div><div class="layer-step-body"><p class="layer-step-title">Lunchtime: 2 missions in town</p><p class="layer-step-desc">Two real estate missions in a nearby block. 40 minutes combined, €14 total.</p></div></div><div class="layer-step"><div class="layer-step-num">Fri</div><div class="layer-step-body"><p class="layer-step-title">Afternoon: 1 surge mission</p><p class="layer-step-desc">Insurance surge event posted — storm damage documentation nearby. Highest pay this week: €22.</p></div></div></div><p class="layer-h3">Total: ~€44 this week, ~2 hours invested</p>` },
|
||
{ tab: '3 · Equipment used', html: `<p class="layer-lead">iPhone 14 (standard lens). No accessories. No extra apps. Standard camera, standard settings.</p><ul class="layer-ul"><li>Photos shot at maximum native resolution</li><li>Location services always on while using quiXzoom</li><li>2GB free storage maintained</li><li>No tripod, no gimbal — all handheld</li></ul>` },
|
||
{ tab: '4 · Earnings breakdown', html: `<p class="layer-lead">Earnings vary significantly by mission type selected and regional availability.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Mission type</th><th>Avg. compensation</th><th>Avg. time</th><th>€/hour equivalent</th></tr><tr><td>Infrastructure (road)</td><td>€5</td><td>15 min</td><td>€20/h</td></tr><tr><td>Real estate (façade)</td><td>€8</td><td>20 min</td><td>€24/h</td></tr><tr><td>Insurance (surge)</td><td>€18</td><td>25 min</td><td>€43/h</td></tr><tr><td>Verification</td><td>€4</td><td>10 min</td><td>€24/h</td></tr></table></div>` },
|
||
{ tab: '5 · Tax guide', html: `<p class="layer-lead">Tax rules depend on your country of residence. quiXzoom provides annual earnings statements in all required formats.</p><p id="qx-tax-note" style="margin:12px 0;padding:12px 16px;background:#f7f7f5;border-radius:8px;font-size:.875rem;">Select your market above to see local tax guidance.</p><p class="layer-p"><em>General information only — consult a qualified local tax advisor for your situation.</em></p>` },
|
||
{ tab: '6 · Rating building', html: `<p class="layer-lead">A high approval rate unlocks better missions. For students starting out, consistency matters more than volume.</p><ul class="layer-ul"><li>Read every brief carefully before claiming</li><li>Never claim if you can't complete within the time window</li><li>When in doubt about quality — retake, don't submit</li><li>Review rejection reasons immediately — patterns emerge quickly</li><li>3 months of consistent quality → Active tier → access to premium missions</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Join thousands of students on the waitlist</p><p class="layer-cta-sub">Register now. Missions go live August 2026. No commitment, no cost.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Register as a Zoomer →</a></div>` }
|
||
]
|
||
},
|
||
driver: {
|
||
type: 'Zoomer profile', title: 'Delivery driver · Route-integrated Zoomer',
|
||
layers: [
|
||
{ tab: '1 · Profile', html: `<p class="layer-lead">Delivery drivers and couriers are among the highest-earning Zoomer profiles. They pass through multiple mission zones every working day — and the marginal cost of completing a mission on route is nearly zero.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">5–8</div><div class="layer-kpi-lbl">Missions per week (on-route)</div></div><div class="layer-kpi"><div class="layer-kpi-val">€120–280</div><div class="layer-kpi-lbl">Monthly earnings (est.)</div></div><div class="layer-kpi"><div class="layer-kpi-val">~3 min</div><div class="layer-kpi-lbl">Added time per on-route mission</div></div></div>` },
|
||
{ tab: '2 · Route integration', html: `<p class="layer-lead">The key insight: missions that are already on your route take near-zero additional time. The mission is there; you're passing it anyway.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Open quiXzoom before your shift</p><p class="layer-step-desc">Browse missions on the map overlaid on your planned route. Identify 3–5 that are directly on path.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Claim as you approach</p><p class="layer-step-desc">Claim each mission when you're 5–10 minutes away. Keeps time window comfortable.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">Stop, shoot, go</p><p class="layer-step-desc">A simple façade mission: pull up, 4 photos, submit. 3–5 minutes. You're moving again.</p></div></div></div>` },
|
||
{ tab: '3 · Best mission types', html: `<p class="layer-lead">Not all missions fit the driver workflow equally well. These work best.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Mission type</th><th>Fit for drivers</th><th>Why</th></tr><tr><td>Verification (address check)</td><td>⭐⭐⭐⭐⭐</td><td>Already stopping at addresses</td></tr><tr><td>Real estate (exterior)</td><td>⭐⭐⭐⭐</td><td>Drive-by documentation, no entry needed</td></tr><tr><td>Urban & streets</td><td>⭐⭐⭐⭐</td><td>Pass through these zones anyway</td></tr><tr><td>Infrastructure</td><td>⭐⭐⭐</td><td>Often near delivery zones</td></tr><tr><td>Incident (surge)</td><td>⭐⭐⭐⭐⭐</td><td>Already in the area when events happen</td></tr></table></div>` },
|
||
{ tab: '4 · Earnings model', html: `<p class="layer-lead">Route-integrated missions have an exceptional earnings-to-time ratio because the travel cost is zero.</p><div class="layer-block"><p class="layer-block-title">Example shift: 8-hour delivery day</p><ul class="layer-ul"><li>5 verification missions on delivery routes: 5 × €4 = €20</li><li>2 exterior documentation missions: 2 × €7 = €14</li><li>1 urban survey cluster (3 adjacent buildings): €18</li><li>Total added: €52 for ~25 minutes of additional activity</li></ul></div>` },
|
||
{ tab: '5 · Platform rules for drivers', html: `<p class="layer-lead">Using quiXzoom while on a delivery shift: rules to follow.</p><ul class="layer-ul"><li>Never compromise your delivery SLAs for a quiXzoom mission — deliveries first</li><li>Do not stop in prohibited areas to complete a mission</li><li>Never use a handheld device while driving — only stop at safe, legal locations</li><li>Check your employment contract: most delivery platform contracts do not restrict secondary income activities during breaks</li></ul>` },
|
||
{ tab: '6 · Tier progression', html: `<p class="layer-lead">Regular route-based Zoomers typically reach Active tier within 6–8 weeks, unlocking premium missions.</p><ul class="layer-ul"><li>Supplementary → Active: ~50 approved missions with >85% approval rate</li><li>Active → Professional: ~200 approved missions with >92% approval rate</li><li>Professional tier: access to premium infrastructure missions, priority claim windows, compensation boosts</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Your route is already worth money</p><p class="layer-cta-sub">Register now. The missions will be live on your delivery routes from August 2026.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Register as a Zoomer →</a></div>` }
|
||
]
|
||
},
|
||
retired: {
|
||
type: 'Zoomer profile', title: 'Retired · Neighbourhood Zoomer',
|
||
layers: [
|
||
{ tab: '1 · Profile', html: `<p class="layer-lead">Retired Zoomers are among the most consistent performers on the platform. Deep local knowledge, predictable daily routines, and patient attention to detail produce high approval rates.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">2–5</div><div class="layer-kpi-lbl">Missions per week</div></div><div class="layer-kpi"><div class="layer-kpi-val">€40–160</div><div class="layer-kpi-lbl">Monthly earnings (est.)</div></div><div class="layer-kpi"><div class="layer-kpi-val">92%+</div><div class="layer-kpi-lbl">Typical approval rate</div></div></div>` },
|
||
{ tab: '2 · A typical day', html: `<p class="layer-lead">The quiXzoom approach fits naturally into a walk-based daily routine without changing it materially.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">9:00</div><div class="layer-step-body"><p class="layer-step-title">Morning check</p><p class="layer-step-desc">Open app over coffee. See 2–3 missions within a 1km walk from home. Claim one.</p></div></div><div class="layer-step"><div class="layer-step-num">10:30</div><div class="layer-step-body"><p class="layer-step-title">Morning walk</p><p class="layer-step-desc">Route passes the mission location. Stop, photograph according to brief, submit. Walk continues.</p></div></div><div class="layer-step"><div class="layer-step-num">11:00</div><div class="layer-step-body"><p class="layer-step-title">Review notification</p><p class="layer-step-desc">Submission approved. €7 credited. Payment arrives in bank account tomorrow.</p></div></div></div>` },
|
||
{ tab: '3 · Why approval rates are high', html: `<p class="layer-lead">Retired Zoomers consistently achieve the highest approval rates on the platform. The reasons are structural.</p><ul class="layer-ul"><li>No time pressure — time window is comfortable, no rushing</li><li>Attention to detail — brief is read carefully, all angles completed</li><li>Local knowledge — know exactly where things are, less navigation uncertainty</li><li>Calm capture conditions — not multitasking, images are sharp and well-framed</li><li>Consistency — same routes, same conditions, predictable quality</li></ul>` },
|
||
{ tab: '4 · Suitable mission types', html: `<p class="layer-lead">Infrastructure and urban missions within walking distance are the natural fit.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Mission type</th><th>Suitability</th><th>Note</th></tr><tr><td>Infrastructure (road, pavement)</td><td>⭐⭐⭐⭐⭐</td><td>Walking speed ideal for pavement-level documentation</td></tr><tr><td>Urban & streets</td><td>⭐⭐⭐⭐⭐</td><td>Local knowledge advantage</td></tr><tr><td>Real estate (exterior)</td><td>⭐⭐⭐⭐</td><td>No access needed, exterior only</td></tr><tr><td>Verification</td><td>⭐⭐⭐⭐</td><td>Local area knowledge invaluable</td></tr></table></div>` },
|
||
{ tab: '5 · Social aspect', html: `<p class="layer-lead">Several retired beta Zoomers noted an unexpected benefit: purpose and local contribution.</p><div class="layer-quote"><p>"I walk past the same bridge every morning anyway. Now I'm documenting it for the municipality. It feels like I'm contributing something, not just walking."</p></div><div class="layer-quote"><p>"I know this neighbourhood better than anyone. It turns out that local knowledge is worth money. Who knew."</p></div>` },
|
||
{ tab: '6 · Getting help', html: `<p class="layer-lead">For Zoomers who are less familiar with smartphone technology, we provide setup support.</p><ul class="layer-ul"><li>In-app tutorial: step-by-step setup guide optimised for older users</li><li>Video guides: short YouTube-format videos for each mission type</li><li>Email support: response within 1 business day</li><li>Phone support: available for Premium Zoomers (Active tier and above)</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Your daily walk is worth more than you think</p><p class="layer-cta-sub">Register interest now. We'll notify you when missions open in your area in August 2026.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Register as a Zoomer →</a></div>` }
|
||
]
|
||
}
|
||
},
|
||
|
||
mission: {
|
||
infrastructure: {
|
||
type: 'Mission category', title: 'Infrastructure',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Infrastructure missions are the backbone of the quiXzoom platform. They are recurring, predictable, and distributed across every populated area. Clients include municipalities, national road agencies, utility operators and bridge authorities.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€5–25</div><div class="layer-kpi-lbl">Typical compensation</div></div><div class="layer-kpi"><div class="layer-kpi-val">20–45 min</div><div class="layer-kpi-lbl">Average mission time</div></div><div class="layer-kpi"><div class="layer-kpi-val">Recurring</div><div class="layer-kpi-lbl">Same assets, annual cycles</div></div></div><div class="layer-badge-row"><span class="layer-badge">Roads & pavements</span><span class="layer-badge">Bridges</span><span class="layer-badge">Drainage</span><span class="layer-badge">Street lighting</span><span class="layer-badge">Utility cabinets</span><span class="layer-badge">Flood infrastructure</span></div>` },
|
||
{ tab: '2 · What you document', html: `<p class="layer-lead">Infrastructure missions specify exactly which elements need to be captured. No guessing required.</p><p class="layer-h3">Example: Road surface mission</p><ul class="layer-ul"><li>Full-length view down the road segment (both directions)</li><li>Close-up of any visible surface damage (cracks, potholes, deformation)</li><li>Drainage gully condition (cover present, obstruction)</li><li>Kerb condition at both sides</li></ul><p class="layer-h3">Example: Bridge inspection mission</p><ul class="layer-ul"><li>Full span view from each abutment</li><li>Underside if accessible from public area</li><li>Bearing condition (visible from bank)</li><li>Any visible corrosion, cracking or vegetation growth</li></ul>` },
|
||
{ tab: '3 · Equipment needed', html: `<p class="layer-lead">Standard smartphone. No specialist equipment for most infrastructure missions.</p><ul class="layer-ul"><li>12MP camera or better — standard on all recent phones</li><li>Location services enabled — required for all missions</li><li>Good lighting — cloudy daylight is ideal; avoid harsh direct sun or night</li><li>Steady hands or flat surface for close-up shots</li></ul><p class="layer-h3">Advanced infrastructure missions</p><p class="layer-p">Some higher-compensation missions specify minimum equipment (e.g. bridge inspection requiring access to a specific vantage point). These are clearly marked in the brief and are only available to rated Zoomers.</p>` },
|
||
{ tab: '4 · Compensation', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Infrastructure type</th><th>Typical compensation</th><th>Why</th></tr><tr><td>Road surface (50m segment)</td><td>€4–7</td><td>Standard volume mission</td></tr><tr><td>Bridge (full exterior)</td><td>€12–20</td><td>More complex, higher orderer value</td></tr><tr><td>Utility cabinet</td><td>€3–5</td><td>Quick, high volume</td></tr><tr><td>Flood infrastructure</td><td>€8–15</td><td>Seasonal priority, higher demand</td></tr><tr><td>Premium bridge inspection</td><td>€25–50</td><td>Specialisation required, high orderer SLA</td></tr></table></div>` },
|
||
{ tab: '5 · Recurring missions', html: `<p class="layer-lead">Infrastructure missions repeat on annual or semi-annual cycles. This means reliable, predictable income for Zoomers who know their local assets.</p><ul class="layer-ul"><li>Same bridges, same roads, same utility cabinets — every year</li><li>Zoomers who documented an asset before have priority access to re-documentation missions (coming Q4 2026)</li><li>Build a specialist route: know every asset in your area, check them annually</li></ul>` },
|
||
{ tab: '6 · AI review criteria', html: `<p class="layer-lead">Infrastructure AI review is based on specification compliance. Know the criteria before you shoot.</p><ul class="layer-ul"><li>All specified angles present and clearly legible</li><li>Asset occupies ≥40% of frame in required shots</li><li>No obstruction blocking the primary subject</li><li>Capture location within mission perimeter (verified by GPS)</li><li>Image sharpness above threshold (motion blur from handheld is the most common rejection reason)</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Infrastructure missions go live August 2026</p><p class="layer-cta-sub">Register now. Your neighbourhood has more infrastructure missions than you think.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
realestate: {
|
||
type: 'Mission category', title: 'Real estate',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Real estate documentation missions cover facades, roofs (from street level), entrances, parking structures and commercial exteriors. Clients include property management companies, insurance firms and lenders.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€6–18</div><div class="layer-kpi-lbl">Typical compensation</div></div><div class="layer-kpi"><div class="layer-kpi-val">15–30 min</div><div class="layer-kpi-lbl">Average mission time</div></div><div class="layer-kpi"><div class="layer-kpi-val">Urban</div><div class="layer-kpi-lbl">Highest density in cities</div></div></div>` },
|
||
{ tab: '2 · What you document', html: `<p class="layer-lead">Real estate missions are exterior-only. You never need to enter a building.</p><ul class="layer-ul"><li>All street-facing facades (usually 1–3 elevations visible from public land)</li><li>Main entrance — door condition, signage, accessibility</li><li>Roof edge if visible from street</li><li>Parking area (if specified)</li><li>Any visible damage, staining, structural concerns</li></ul><p class="layer-h3">What you do NOT need to do</p><ul class="layer-ul"><li>Enter the building</li><li>Speak to residents or tenants</li><li>Access the roof</li><li>Document interiors</li></ul>` },
|
||
{ tab: '3 · Urban clusters', html: `<p class="layer-lead">Real estate missions cluster in dense urban areas. A single city block can contain 5–10 missions. Plan routes to cover clusters for maximum earnings efficiency.</p><ul class="layer-ul"><li>Filter map by "Real estate" and zoom into your area</li><li>Identify clusters of 3+ adjacent missions</li><li>Claim all before walking — claim window is 2 hours</li><li>Document in sequence along the block</li></ul><p class="layer-h3">Typical cluster earnings</p><p class="layer-p">5 adjacent façade missions at €8 each = €40 for approximately 50 minutes of work in one block.</p>` },
|
||
{ tab: '4 · Compensation', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Property type</th><th>Typical compensation</th><th>Complexity</th></tr><tr><td>Residential terrace</td><td>€5–8</td><td>Low — 1–2 elevations</td></tr><tr><td>Apartment block</td><td>€10–16</td><td>Medium — full exterior circuit</td></tr><tr><td>Commercial premises</td><td>€8–14</td><td>Medium — signage, accessibility</td></tr><tr><td>Car park structure</td><td>€12–20</td><td>Higher — multiple levels visible</td></tr><tr><td>Industrial/warehouse</td><td>€8–18</td><td>Variable — large exterior areas</td></tr></table></div>` },
|
||
{ tab: '5 · Tips for high approval', html: `<ul class="layer-ul"><li>Shoot in flat, overcast daylight — avoids harsh shadows on facades</li><li>Stand far enough back to fit the full building in frame — the most common rejection reason is partial coverage</li><li>Shoot all elevations — even ones that look fine. The brief requires them</li><li>Include street context in at least one shot — confirms location</li><li>If access is blocked (parked vehicles, scaffolding) — note it in submission notes before submitting</li></ul>` },
|
||
{ tab: '6 · Insurance surge missions', html: `<p class="layer-lead">After weather events (storms, hail, flooding), insurance companies activate surge documentation missions for residential and commercial properties in the affected area. These pay 2–4× standard rates.</p><ul class="layer-ul"><li>Push notification sent immediately when surge missions activate in your area</li><li>Fastest submissions earn the highest compensation</li><li>No booking required — first valid submission accepted</li><li>Surge missions are time-sensitive — typically expire within 24–48 hours</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Real estate missions in every city</p><p class="layer-cta-sub">Register now. Your neighbourhood's property portfolio is already a waiting mission list.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
coastline: {
|
||
type: 'Mission category', title: 'Coastlines & nature',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Coastal and environmental missions document shorelines, beaches, waterways, and natural habitats. Clients include environmental agencies, maritime authorities, conservation organisations and research institutions.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€8–30</div><div class="layer-kpi-lbl">Typical compensation</div></div><div class="layer-kpi"><div class="layer-kpi-val">30–60 min</div><div class="layer-kpi-lbl">Average mission time</div></div><div class="layer-kpi"><div class="layer-kpi-val">Seasonal</div><div class="layer-kpi-lbl">Higher volume spring/summer</div></div></div>` },
|
||
{ tab: '2 · What you document', html: `<p class="layer-lead">Coastal missions focus on change detection and condition monitoring over time.</p><ul class="layer-ul"><li>Shoreline condition — erosion, accretion, new features</li><li>Beach profile — width, material, debris</li><li>Coastal structures — sea walls, groynes, breakwaters</li><li>Vegetation line — position and density</li><li>Water clarity (where specified)</li><li>Invasive species markers (flagged in specific missions)</li></ul>` },
|
||
{ tab: '3 · Who commissions these', html: `<div class="layer-badge-row"><span class="layer-badge">Environmental agencies</span><span class="layer-badge">Maritime authorities</span><span class="layer-badge">Conservation NGOs</span><span class="layer-badge">Research institutions</span><span class="layer-badge">Local councils</span><span class="layer-badge">Insurance (flood risk)</span></div><p class="layer-h3">Use cases</p><ul class="layer-ul"><li>Annual coastal monitoring programmes (same transects, year after year)</li><li>Post-storm damage assessment</li><li>Invasive species early detection surveys</li><li>Flood risk verification for insurance underwriting</li><li>Academic research support</li></ul>` },
|
||
{ tab: '4 · Compensation', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Mission type</th><th>Compensation</th></tr><tr><td>Coastal transect (100m)</td><td>€10–18</td></tr><tr><td>Beach condition survey</td><td>€12–20</td></tr><tr><td>River/waterway segment</td><td>€8–15</td></tr><tr><td>Post-storm coastal assessment</td><td>€20–40</td></tr><tr><td>Habitat survey (specialist)</td><td>€25–50</td></tr></table></div>` },
|
||
{ tab: '5 · Seasonal patterns', html: `<p class="layer-lead">Coastal missions peak in spring (post-winter assessment) and summer (active monitoring season). Plan your Zoomer activity around these peaks for maximum earnings.</p><ul class="layer-ul"><li>March–April: post-winter storm assessment missions — high compensation, surge pricing</li><li>May–August: regular monitoring cycles — consistent volume</li><li>October–November: pre-winter baseline documentation — another surge period</li><li>December–February: lower volume, but ice and frost condition missions available in northern regions</li></ul>` },
|
||
{ tab: '6 · Safety', html: `<p class="layer-lead">Coastal environments have specific safety considerations. quiXzoom missions require documentation from safe, accessible public areas only.</p><ul class="layer-ul"><li>Never enter the water to complete a mission</li><li>Never approach unstable cliff edges or eroded banks</li><li>All missions specify safe capture positions — stay within these</li><li>Weather check required before coastal missions — wind speed and sea state indicated in brief</li><li>If conditions are unsafe: release the mission without penalty</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">The coastline nearest you is already a mission</p><p class="layer-cta-sub">Register interest. Coastal missions live from August 2026, starting in Sweden.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
incident: {
|
||
type: 'Mission category', title: 'Incident & damage',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Incident missions are activated immediately after weather events, fires, floods or other damage-causing events. They are the highest-paying mission type and are time-critical — the fastest Zoomers earn the most.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€15–60</div><div class="layer-kpi-lbl">Typical compensation</div></div><div class="layer-kpi"><div class="layer-kpi-val">Speed</div><div class="layer-kpi-lbl">Fastest submission earns most</div></div><div class="layer-kpi"><div class="layer-kpi-val">Push alert</div><div class="layer-kpi-lbl">Instant notification to local Zoomers</div></div></div>` },
|
||
{ tab: '2 · How surge works', html: `<p class="layer-lead">When an insurance company detects a weather event or receives a cluster of claims in an area, they trigger a documentation surge campaign. Zoomers in the area receive a push notification immediately.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Event detected</p><p class="layer-step-desc">Storm, flood or fire event triggers campaign creation by insurance client. Happens within minutes of event.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Push notification to local Zoomers</p><p class="layer-step-desc">All Zoomers within the affected area receive alert: "Surge mission active near you — €[amount] per approved submission."</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">First submission wins maximum</p><p class="layer-step-desc">Each address-level mission: first approved submission earns the maximum rate. Speed is directly rewarded.</p></div></div></div>` },
|
||
{ tab: '3 · What you document', html: `<p class="layer-lead">Incident missions focus on visible external damage from public areas. No entry to buildings.</p><ul class="layer-ul"><li>Overall building condition from street</li><li>Visible damage: roof, facade, windows, structural elements</li><li>Water ingress evidence: staining, debris lines</li><li>Access road condition</li><li>Adjacent properties if specified</li></ul><p class="layer-h3">What the AI checks specifically</p><ul class="layer-ul"><li>Damage visible in frame</li><li>Capture timestamp within 48h of event</li><li>Location confirmed at the specified address</li><li>Full required angle coverage</li></ul>` },
|
||
{ tab: '4 · Compensation model', html: `<p class="layer-lead">Incident missions use a decay compensation model. First submission earns maximum; subsequent submissions earn less.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Submission order</th><th>Compensation (example €30 mission)</th></tr><tr><td>1st approved</td><td>€30 (full rate)</td></tr><tr><td>2nd approved</td><td>€18 (60%)</td></tr><tr><td>3rd approved</td><td>€9 (30%)</td></tr><tr><td>4th+</td><td>€4.50 (15%)</td></tr></table></div><p class="layer-p">The decay model incentivises speed. For insurance purposes, the first documentation before damage is cleared is most valuable.</p>` },
|
||
{ tab: '5 · Safety rules', html: `<p class="layer-lead">After serious events (floods, fires, structural damage), safety is paramount. quiXzoom incident missions have mandatory safety rules.</p><ul class="layer-ul"><li>Never enter a flood-affected or fire-damaged building</li><li>Maintain safe distance from structurally compromised buildings</li><li>Do not enter areas cordoned by emergency services</li><li>Incident missions activate only in areas where general public access has been confirmed safe</li><li>If unsafe conditions: use "report unsafe" in the app — no penalty, mission is reassigned</li></ul>` },
|
||
{ tab: '6 · Enabling push alerts', html: `<p class="layer-lead">To receive surge notifications instantly when events happen near you, push alerts must be enabled.</p><ul class="layer-ul"><li>Enable push notifications for quiXzoom in your phone settings</li><li>Set your notification zone radius — larger radius = more surge events</li><li>Keep app installed and location services always-on</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Highest pay. Near you. Right now.</p><p class="layer-cta-sub">Register to get push alerts when surge missions activate in your area from August 2026.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
verification: {
|
||
type: 'Mission category', title: 'Verification',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Verification missions confirm that a specific address, premises or entity exists and matches available records. Clients include e-commerce platforms, banks, recruitment agencies and public sector bodies.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€3–8</div><div class="layer-kpi-lbl">Typical compensation</div></div><div class="layer-kpi"><div class="layer-kpi-val">~10 min</div><div class="layer-kpi-lbl">Average mission time</div></div><div class="layer-kpi"><div class="layer-kpi-val">Highest volume</div><div class="layer-kpi-lbl">Most missions available</div></div></div>` },
|
||
{ tab: '2 · What you verify', html: `<ul class="layer-ul"><li>Premises exists at the stated address</li><li>Correct trading name/signage visible</li><li>Business appears to be operating (lights on, activity visible)</li><li>Access point and entry condition</li><li>Any specified reference elements (brand colours, specific signage)</li></ul><p class="layer-h3">What you do NOT do</p><ul class="layer-ul"><li>Enter premises</li><li>Speak to anyone inside</li><li>Verify any financial or identity information</li></ul>` },
|
||
{ tab: '3 · Route integration', html: `<p class="layer-lead">Verification missions are ideal for route integration — especially for delivery workers already stopping at addresses.</p><p class="layer-p">If you're making a delivery to a street, there may be 2–5 verification missions for neighbouring premises on the same block. Check before leaving — claim them while you're there.</p>` },
|
||
{ tab: '4 · Compensation', html: `<p class="layer-lead">Lower per-mission but highest volume. Verification missions are optimised for quantity.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Verification type</th><th>Compensation</th></tr><tr><td>Address confirmation</td><td>€3–4</td></tr><tr><td>Business premises check</td><td>€4–6</td></tr><tr><td>Storefront documentation</td><td>€5–8</td></tr><tr><td>Multi-element verification</td><td>€6–10</td></tr></table></div>` },
|
||
{ tab: '5 · Privacy rules', html: `<p class="layer-lead">Verification missions have strict privacy rules. You document premises, not people.</p><ul class="layer-ul"><li>Never photograph identifiable individuals — if people are in shot, do not submit (blur or retake)</li><li>Never document interior spaces through windows</li><li>Only photograph from public land</li><li>Do not attempt to verify the identity of anyone at the premises</li></ul>` },
|
||
{ tab: '6 · AI review', html: `<p class="layer-lead">Verification AI review is the fastest on the platform — typically under 15 seconds.</p><ul class="layer-ul"><li>Address number or name visible in frame</li><li>Premises legible and identifiable</li><li>GPS confirms capture at the specified address</li><li>No people identifiable in frame</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">The most missions. The fastest approval.</p><p class="layer-cta-sub">Verification missions launch in Sweden August 1, 2026. More markets follow.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
urban: {
|
||
type: 'Mission category', title: 'Urban & streets',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Urban missions document street-level conditions: pavement quality, signage, accessibility, retail presence, and general urban environment. Clients include city planners, retail chains and transport authorities.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€5–15</div><div class="layer-kpi-lbl">Typical compensation</div></div><div class="layer-kpi"><div class="layer-kpi-val">15–40 min</div><div class="layer-kpi-lbl">Average mission time</div></div><div class="layer-kpi"><div class="layer-kpi-val">City-dense</div><div class="layer-kpi-lbl">Highest density in urban centres</div></div></div>` },
|
||
{ tab: '2 · What you document', html: `<ul class="layer-ul"><li>Pavement condition — surface quality, trip hazards, accessibility</li><li>Street signage — road signs, wayfinding, condition</li><li>Retail frontage — occupancy status, condition, branding</li><li>Accessibility features — dropped kerbs, tactile paving, ramps</li><li>Street furniture — benches, bins, cycle stands</li><li>Lighting — streetlight present and functional</li></ul>` },
|
||
{ tab: '3 · Walk-based workflow', html: `<p class="layer-lead">Urban missions are designed for walkers. A single high street can contain 10–20 missions completed in one pass.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Plan a walk route through mission clusters</p><p class="layer-step-desc">Filter map by Urban. Find a street with 5+ adjacent missions.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Claim as you walk</p><p class="layer-step-desc">Claim each mission 2–3 minutes before you arrive. Submit as you pass.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">One street, €40–80</p><p class="layer-step-desc">A 1km high street walk with 10 missions at €5–8 each = €50–80 in under 1 hour.</p></div></div></div>` },
|
||
{ tab: '4 · Compensation', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Urban mission type</th><th>Compensation</th></tr><tr><td>Pavement condition survey</td><td>€4–7</td></tr><tr><td>Retail frontage check</td><td>€5–8</td></tr><tr><td>Accessibility audit (20m segment)</td><td>€8–12</td></tr><tr><td>High street condition survey</td><td>€12–20</td></tr></table></div>` },
|
||
{ tab: '5 · Privacy in urban environments', html: `<p class="layer-lead">Urban environments contain people. quiXzoom's AI review includes pedestrian detection — missions with identifiable individuals in primary focus are flagged.</p><ul class="layer-ul"><li>Capture when pedestrian traffic is low where possible</li><li>Use wide shots that keep people as background elements, not subjects</li><li>If someone is prominently in frame: wait 30 seconds and retake</li><li>You never need to photograph people — the mission is always about the built environment</li></ul>` },
|
||
{ tab: '6 · City planning missions', html: `<p class="layer-lead">Some urban missions are part of larger city planning studies commissioned by municipalities. These are higher-value and require a structured survey approach.</p><ul class="layer-ul"><li>Accessibility audit missions: document every accessibility feature along a defined route</li><li>Retail vacancy surveys: document occupancy status of every unit on a shopping street</li><li>Before/after infrastructure works: document condition before and after roadworks</li></ul><p class="layer-p">City planning missions are rated-only — available from Active tier upward.</p>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Every street you walk is potential earnings</p><p class="layer-cta-sub">Register interest. Urban missions launch August 2026 in Sweden, with more cities and markets to follow.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
}
|
||
},
|
||
|
||
tier: {
|
||
supplementary: {
|
||
type: 'Earnings tier', title: 'Supplementary — 2–4 missions/week',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">The Supplementary tier is the entry point. No minimum commitment, no schedule, no performance requirements beyond the standard approval rate.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€20–80</div><div class="layer-kpi-lbl">Typical monthly earnings</div></div><div class="layer-kpi"><div class="layer-kpi-val">2–4</div><div class="layer-kpi-lbl">Missions per week</div></div><div class="layer-kpi"><div class="layer-kpi-val">~2h</div><div class="layer-kpi-lbl">Time per week</div></div></div>` },
|
||
{ tab: '2 · What you can access', html: `<ul class="layer-ul"><li>All standard mission categories (infrastructure, real estate, verification, urban, coastline)</li><li>Incident/surge missions when activated in your area</li><li>Standard compensation rates for all mission types</li></ul><p class="layer-h3">Not yet available (unlocks at Active tier)</p><ul class="layer-ul"><li>Premium missions (higher compensation, stricter specification)</li><li>Priority claim window on high-demand missions</li><li>Specialisation modules</li></ul>` },
|
||
{ tab: '3 · Path to Active', html: `<p class="layer-lead">Moving from Supplementary to Active tier unlocks significantly higher earnings potential.</p><p class="layer-h3">Requirements for Active tier</p><ul class="layer-ul"><li>50 approved missions (cumulative)</li><li>Approval rate above 85%</li><li>No active claim violations</li></ul><p class="layer-h3">How long does it take?</p><p class="layer-p">At 3 missions per week: approximately 4 months. At 5 missions per week: approximately 10 weeks.</p>` },
|
||
{ tab: '4 · Realistic earnings', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Missions/week</th><th>Avg. per mission</th><th>Monthly estimate</th></tr><tr><td>2</td><td>€7</td><td>~€56</td></tr><tr><td>3</td><td>€7</td><td>~€84</td></tr><tr><td>4</td><td>€8</td><td>~€128</td></tr></table></div><p class="layer-p">Including surge missions (1–2/month): add €20–60 to monthly estimates.</p>` },
|
||
{ tab: '5 · Tax threshold guidance', html: `<p class="layer-lead">At Supplementary level, many Zoomers will earn below their country's minimum threshold for mandatory tax registration.</p><ul class="layer-ul"><li>Sweden: Grundavdrag ~17,500 SEK/year (~€1,500/month). Supplementary earnings typically well below this.</li><li>Germany: Kleinunternehmer threshold €22,000/year. Not reached at this tier.</li><li>UK: Personal allowance £12,570/year. Supplementary Zoomer earnings far below this.</li></ul><p class="layer-p"><em>General information only — consult a local tax advisor for your situation.</em></p>` },
|
||
{ tab: '6 · Getting the most from this tier', html: `<ul class="layer-ul"><li>Focus on approval rate over volume — every rejection at this tier costs relatively more</li><li>Stick to mission types you understand well until your rate is consistently above 85%</li><li>Enable push notifications — surge missions add disproportionate value at this tier</li><li>Plan: 50 approved missions is your target — set it as a goal and track progress</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Start here. No commitment.</p><p class="layer-cta-sub">Register interest. The Supplementary tier is open to everyone from day one — no qualification required.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
active: {
|
||
type: 'Earnings tier', title: 'Active — 8–12 missions/week',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Active is the most popular Zoomer tier. It represents a meaningful secondary income stream — €200–400/month — without requiring a full-time commitment.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€200–400</div><div class="layer-kpi-lbl">Typical monthly earnings</div></div><div class="layer-kpi"><div class="layer-kpi-val">8–12</div><div class="layer-kpi-lbl">Missions per week</div></div><div class="layer-kpi"><div class="layer-kpi-val">5–8h</div><div class="layer-kpi-lbl">Time per week</div></div></div>` },
|
||
{ tab: '2 · Unlocked at Active', html: `<ul class="layer-ul"><li>Priority claim window: 5-minute advance access to new high-demand missions before general availability</li><li>Premium missions: higher compensation, stricter specification, more interesting subjects</li><li>Specialisation module access: complete training to unlock bridge inspection, coastal survey, and other high-value categories</li><li>Performance-based compensation boost: approval rate above 92% earns a 5% rate uplift across all missions</li></ul>` },
|
||
{ tab: '3 · Weekly rhythm', html: `<p class="layer-lead">Active Zoomers typically build a consistent weekly rhythm around mission clusters in their area.</p><div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">Mon–Fri</div><div class="layer-step-body"><p class="layer-step-title">2 missions per day (mornings or lunch)</p><p class="layer-step-desc">10 missions at €8 average = €80/week baseline.</p></div></div><div class="layer-step"><div class="layer-step-num">Weekend</div><div class="layer-step-body"><p class="layer-step-title">Surge monitoring + premium missions</p><p class="layer-step-desc">Higher-value targets. Weather events often trigger surge during weekends.</p></div></div></div>` },
|
||
{ tab: '4 · Realistic earnings', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Scenario</th><th>Missions/week</th><th>Avg. rate</th><th>Monthly</th></tr><tr><td>Conservative Active</td><td>8</td><td>€8</td><td>~€256</td></tr><tr><td>Standard Active</td><td>10</td><td>€9</td><td>~€360</td></tr><tr><td>Active + surge (2/month)</td><td>10 + surge</td><td>€9 + €30</td><td>~€420</td></tr><tr><td>Active + premium</td><td>10 standard + 2 premium</td><td>€9/€20</td><td>~€440</td></tr></table></div>` },
|
||
{ tab: '5 · How to maintain Active tier', html: `<p class="layer-lead">Active tier is maintained by consistent activity and quality. Falling below the threshold triggers a grace period.</p><ul class="layer-ul"><li>Minimum: 6 approved missions per month to maintain Active status</li><li>Approval rate must stay above 80% (rolling 30-day)</li><li>Inactivity for 60 days: tier paused (reactivates on next approved mission)</li><li>Grace period if dropping below: 14 days to complete 5 approved missions to retain tier</li></ul>` },
|
||
{ tab: '6 · Specialisations', html: `<p class="layer-lead">Specialisations unlock premium mission categories with higher compensation rates. Available at Active tier.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Specialisation</th><th>Missions unlocked</th><th>Extra compensation</th></tr><tr><td>Bridge & structures</td><td>Bridge inspection premium missions</td><td>+40–80% vs standard</td></tr><tr><td>Coastal survey</td><td>Environmental monitoring missions</td><td>+30–60% vs standard</td></tr><tr><td>Accessibility audit</td><td>Municipal accessibility surveys</td><td>+25–45% vs standard</td></tr><tr><td>Insurance documentation</td><td>Priority surge access</td><td>First-claim advantage</td></tr></table></div>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Active tier: the target for serious Zoomers</p><p class="layer-cta-sub">Register now. Start Supplementary in August 2026. Reach Active within 10–16 weeks.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
professional: {
|
||
type: 'Earnings tier', title: 'Professional — 15+ missions/week',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Professional Zoomers treat quiXzoom as a primary or near-primary income source. Reaching this tier requires consistent quality and volume over several months — and delivers proportional earnings.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">€600–1,500+</div><div class="layer-kpi-lbl">Typical monthly earnings</div></div><div class="layer-kpi"><div class="layer-kpi-val">15–25</div><div class="layer-kpi-lbl">Missions per week</div></div><div class="layer-kpi"><div class="layer-kpi-val">~20h</div><div class="layer-kpi-lbl">Time per week</div></div></div>` },
|
||
{ tab: '2 · Unlocked at Professional', html: `<ul class="layer-ul"><li>First access to all new premium mission categories as they launch</li><li>Dedicated account manager (for Zoomers earning above €500/month)</li><li>10-minute priority claim window before Active tier Zoomers</li><li>Performance compensation: approval rate above 95% earns 10% uplift across all missions</li><li>Reserved high-value campaign slots: selected Zoomers invited to commissioned campaigns at fixed daily rates</li></ul>` },
|
||
{ tab: '3 · Campaign work', html: `<p class="layer-lead">At Professional tier, quiXzoom can invite you to dedicated campaign work — typically a fixed-rate day rate for systematic documentation of a specific asset set.</p><p class="layer-h3">Example campaign</p><div class="layer-block"><p class="layer-block-title">Municipal bridge survey — Stockholm</p><ul class="layer-ul"><li>Duration: 5 days</li><li>Scope: 120 bridges in the city</li><li>Rate: €200/day (fixed, not per submission)</li><li>Total: €1,000 for the campaign</li></ul></div><p class="layer-p">Campaign invitations are issued to Professional Zoomers with relevant specialisations in the geographic area. Not guaranteed — depends on campaign availability and matching.</p>` },
|
||
{ tab: '4 · Tax at Professional level', html: `<p class="layer-lead">At Professional earnings levels, formal tax registration is typically required in all jurisdictions.</p><ul class="layer-ul"><li>Sweden: Register as enskild firma or aktiebolag. F-skatt certification recommended.</li><li>Germany: Gewerbe registration required. Umsatzsteuer (VAT) may apply above €22,000.</li><li>UK: Self-assessment required. National Insurance Class 4 on profits above £12,570.</li><li>EU generally: VAT registration typically required above national thresholds.</li></ul><p class="layer-p"><em>Consult a qualified tax advisor. quiXzoom provides annual earnings statements in all required formats.</em></p>` },
|
||
{ tab: '5 · Equipment at this level', html: `<p class="layer-lead">Professional Zoomers working on premium infrastructure and environmental missions often invest in modest equipment upgrades.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Equipment</th><th>Benefit</th><th>Cost (approx.)</th></tr><tr><td>Stabiliser/gimbal</td><td>Sharper images, higher approval rate</td><td>€60–120</td></tr><tr><td>Wide-angle lens attachment</td><td>Better façade coverage in tight spaces</td><td>€30–80</td></tr><tr><td>Portable power bank</td><td>Full-day operation without recharge</td><td>€20–40</td></tr><tr><td>Weatherproof phone case</td><td>Coastal and incident missions in all weather</td><td>€20–50</td></tr></table></div>` },
|
||
{ tab: '6 · Building to Professional', html: `<p class="layer-lead">Professional tier requires: 200+ approved missions with 90%+ approval rate. Timeline depends on weekly mission volume.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Weekly missions</th><th>Estimated time to Professional</th></tr><tr><td>8–10 (Active pace)</td><td>6–8 months</td></tr><tr><td>12–15</td><td>4–5 months</td></tr><tr><td>15+</td><td>3–4 months</td></tr></table></div>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Professional tier starts with one mission</p><p class="layer-cta-sub">Register now. August 2026 launch. Every mission from day one counts toward Professional.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
}
|
||
},
|
||
|
||
faq: {
|
||
camera: {
|
||
type: 'Equipment guide', title: 'Camera and equipment requirements',
|
||
layers: [
|
||
{ tab: '1 · Minimum spec', html: `<p class="layer-lead">The only requirement is a smartphone with a 12MP or better rear camera. No specialist equipment needed for standard missions.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Device</th><th>Minimum model</th><th>Passes standard missions</th></tr><tr><td>iPhone</td><td>iPhone 12</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> Yes</td></tr><tr><td>Samsung Galaxy</td><td>S21 / A53 and newer</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> Yes</td></tr><tr><td>Google Pixel</td><td>Pixel 5 and newer</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> Yes</td></tr><tr><td>Other Android</td><td>12MP rear camera, Android 10+</td><td><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:middle;margin-right:4px"><polyline points="20 6 9 17 4 12"/></svg> Yes</td></tr></table></div>` },
|
||
{ tab: '2 · Settings', html: `<ul class="layer-ul"><li>Resolution: maximum native resolution (no digital zoom)</li><li>Location: always on while using the app</li><li>HDR: off (produces inconsistent results for AI review)</li><li>Portrait mode: off (can add artificial blur)</li><li>Video: not accepted for missions (photos only, unless specified)</li></ul>` },
|
||
{ tab: '3 · Optional equipment', html: `<p class="layer-lead">Optional — none required for standard missions. Useful for higher-volume or premium missions.</p><ul class="layer-ul"><li>Gimbal stabiliser: reduces rejection from motion blur. ~€60–120. Useful for Active tier upward.</li><li>Wide-angle clip-on lens: better building coverage in tight streets. ~€30–80.</li><li>Power bank: for full-day shifts. 10,000mAh, ~€20.</li><li>Weatherproof case: coastal and incident missions. ~€20–50.</li></ul>` },
|
||
{ tab: '4 · Common photo errors', html: `<p class="layer-h3">Most common AI rejection reasons</p><ul class="layer-ul"><li>Motion blur — move slower, hold breath before shot, or use a surface to stabilise</li><li>Subject too small — step back until asset fills at least 40% of frame</li><li>Obstruction — parked vehicle, scaffolding, tree in front of subject</li><li>Overexposure in direct sunlight — shoot in shade or turn back to the sun</li><li>Wrong angle — re-read the brief and match example images exactly</li></ul>` },
|
||
{ tab: '5 · Drones', html: `<p class="layer-lead">Drone support is planned for Q4 2026 for specific mission types (coastal, large-scale infrastructure).</p><ul class="layer-ul"><li>Drone missions will require verified drone licence (A1/A3 certification in EU)</li><li>Higher compensation: drone missions pay 3–8× standard ground-level missions</li><li>Register drone capability in your profile to be notified when drone missions launch</li></ul>` },
|
||
{ tab: '6 · Professional kit', html: `<p class="layer-lead">Full equipment guide for Professional tier Zoomers operating in all mission categories.</p><ul class="layer-ul"><li>Primary phone: iPhone 15 Pro or Samsung S24 Ultra — best camera systems available</li><li>Stabiliser: DJI OM6 or Insta360 Flow — ~€100</li><li>Lenses: Moment wide (18mm) for buildings, tele for detail — ~€80 each</li><li>Power: Anker 20,000mAh with fast charge — ~€35</li><li>Weatherproofing: UAG or Catalyst case — ~€40</li><li>Total investment: ~€300. Payback at Active tier: approximately 5 weeks.</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Your current phone is enough to start</p><p class="layer-cta-sub">Register now. No equipment purchase needed to begin earning in August 2026.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
payment: {
|
||
type: 'Payment guide', title: 'How and when you get paid',
|
||
layers: [
|
||
{ tab: '1 · The basics', html: `<p class="layer-lead">Payment is automatic. When your submission is approved, Stripe Connect initiates a transfer to your linked bank account. You don't do anything.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">Automatic</div><div class="layer-kpi-lbl">No action needed</div></div><div class="layer-kpi"><div class="layer-kpi-val">0%</div><div class="layer-kpi-lbl">Platform fee to Zoomers</div></div><div class="layer-kpi"><div class="layer-kpi-val">1–3 days</div><div class="layer-kpi-lbl">Bank transfer time</div></div></div>` },
|
||
{ tab: '2 · Setting up payouts', html: `<div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Identity verification</p><p class="layer-step-desc">Required once. Takes 3–5 minutes. Government ID + selfie. Processed by Stripe's KYC provider.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Link bank account</p><p class="layer-step-desc">IBAN + bank name. Processed via Stripe Connect. quiXzoom never sees your bank details.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">Done</p><p class="layer-step-desc">All future payments route automatically to this account. Change at any time in settings.</p></div></div></div>` },
|
||
{ tab: '3 · Transfer times by country', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Region</th><th>Method</th><th>Time</th></tr><tr><td>Sweden / EU</td><td>SEPA Credit Transfer</td><td>1–2 business days</td></tr><tr><td>UK</td><td>Faster Payments</td><td>Next business day</td></tr><tr><td>US</td><td>ACH</td><td>2–3 business days</td></tr><tr><td>Other</td><td>SWIFT</td><td>2–5 business days</td></tr></table></div>` },
|
||
{ tab: '4 · Currency', html: `<p class="layer-lead">You receive payment in your local currency. Conversion at mid-market rate (Stripe) where applicable.</p><ul class="layer-ul"><li>Swedish Zoomers: receive SEK</li><li>EU Zoomers: receive EUR</li><li>UK Zoomers: receive GBP</li><li>Missions are priced in EUR — local currency conversion applied at payout</li></ul>` },
|
||
{ tab: '5 · Minimum payout', html: `<p class="layer-lead">Payouts require a minimum Credit balance. Credits accumulate until the threshold is reached, then transfer automatically on the weekly payout cycle.</p><ul class="layer-ul"><li>Minimum payout: 250 QX Credits (or local equivalent)</li><li>Credits below the threshold accumulate in your balance — they never expire</li><li>Automatic weekly transfer when balance meets or exceeds the minimum</li><li>Current balance, threshold status and estimated payout visible in your earnings dashboard</li></ul>` },
|
||
{ tab: '6 · Annual statement', html: `<p class="layer-lead">At the end of each calendar year, quiXzoom provides an earnings statement for tax purposes.</p><ul class="layer-ul"><li>Total earnings for the year</li><li>Mission-by-mission transaction log</li><li>Downloadable as PDF (formatted) and CSV (for accounting software)</li><li>Available in your dashboard from January 15 each year</li><li>Covers all approved missions in the calendar year</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Zero fees. Automatic payment. Start in August.</p><p class="layer-cta-sub">Register your interest now. Payment setup takes 5 minutes and is only needed once.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
availability: {
|
||
type: 'Coverage guide', title: 'Mission availability in your area',
|
||
layers: [
|
||
{ tab: '1 · Launch coverage', html: `<p class="layer-lead">quiXzoom launches in Sweden on August 1, 2026. Additional markets follow through 2026 and 2027.</p><div class="layer-badge-row"><span class="layer-badge">🇸🇪 Sweden — Aug 2026</span><span class="layer-badge">🇳🇱 Netherlands — Q1 2027</span><span class="layer-badge">🇹🇭 Thailand — Q3 2026</span><span class="layer-badge">🇳🇬 Nigeria — 2026</span><span class="layer-badge">🇰🇪 Kenya — 2026</span></div>` },
|
||
{ tab: '2 · Urban vs rural', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Area type</th><th>Mission density</th><th>Expected availability</th></tr><tr><td>Major city (pop. >500k)</td><td>High</td><td>50–200+ missions/week within 5km</td></tr><tr><td>Medium city (pop. >100k)</td><td>Medium</td><td>20–80 missions/week within 5km</td></tr><tr><td>Small town (pop. >10k)</td><td>Low–medium</td><td>5–30 missions/week within 5km</td></tr><tr><td>Rural</td><td>Low</td><td>Variable — compensation higher to attract coverage</td></tr></table></div>` },
|
||
{ tab: '3 · How missions are created', html: `<p class="layer-lead">Missions are created by organisations (orderers) via the quiXzoom API. Your area's mission density depends on which organisations have commissioned documentation there.</p><ul class="layer-ul"><li>Municipal clients create recurring missions for their infrastructure assets — predictable volume</li><li>Insurance surge events create sudden high-density missions after weather events</li><li>Property company campaigns cover portfolio assets — city-wide batches</li><li>Verification missions are created continuously by e-commerce and banking clients</li></ul>` },
|
||
{ tab: '4 · Notification setup', html: `<p class="layer-lead">Register now to be notified when missions activate in your area.</p><ul class="layer-ul"><li>Email notification before August 2026 launch in your region</li><li>Push notification when first missions appear near you</li><li>Surge alert when high-value event missions activate in your zone</li><li>Weekly mission availability summary (optional, opt-in)</li></ul>` },
|
||
{ tab: '5 · Coverage map', html: `<p class="layer-lead">A live coverage map showing Zoomer density and mission activity by region will be available in the app from August 2026.</p><p class="layer-p">During the waitlist period, you can check estimated coverage for your city on our website. Coverage estimates are updated as organisations commit campaigns pre-launch.</p>` },
|
||
{ tab: '6 · Expanding coverage', html: `<p class="layer-lead">Mission density grows as more organisations onboard. If you want more missions in your area, you can help.</p><ul class="layer-ul"><li>Share the platform with local government bodies, property companies or insurance contacts</li><li>Zoomer referral programme (launching Q4 2026): earn a bonus when Zoomers you refer complete their first 10 missions</li><li>Organisation referral: if you refer an organisation that signs up, you earn a campaign bonus on their first campaign</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">Register to be first in your area</p><p class="layer-cta-sub">We notify registered Zoomers before launch. First movers have first access to missions when they activate.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
tax: {
|
||
type: 'Tax guide', title: 'Tax — what you need to know',
|
||
layers: [
|
||
{ tab: '1 · The basics', html: `<p class="layer-lead">quiXzoom earnings are income. You are responsible for declaring and paying any applicable taxes. quiXzoom does not withhold taxes on your behalf.</p><p class="layer-h3">What quiXzoom provides</p><ul class="layer-ul"><li>Annual earnings statement (PDF + CSV) from January 15 each year</li><li>Transaction-level records for every approved mission</li><li>Stripe Connect payment records (accessible via your Stripe dashboard)</li></ul>` },
|
||
{ tab: '2 · Sweden', html: `<p class="layer-lead">Sweden has straightforward rules for occasional income and self-employment.</p><ul class="layer-ul"><li>Declare quiXzoom earnings as inkomst av tjänst (occasional) or inkomst av näringsverksamhet (if regular)</li><li>Grundavdrag (basic deduction): ~17,500 SEK — if total income below this, no income tax</li><li>For regular Zoomer activity: register as enskild firma with Skatteverket (simple, low-cost)</li><li>F-skatt: recommended if earning above ~5,000 SEK/month from quiXzoom</li></ul><p class="layer-p"><em>General information. Consult Skatteverket or a Swedish tax advisor for your situation.</em></p>` },
|
||
{ tab: '3 · Germany', html: `<ul class="layer-ul"><li>Under €256/year: tax-free (Freigrenze für Einkünfte aus sonstigen Leistungen in some interpretations — verify with a Steuerberater)</li><li>Kleinunternehmer: if annual turnover below €22,000, simplified VAT rules apply</li><li>Above €22,000: Umsatzsteuer (VAT) registration likely required</li><li>Gewerbesteuer: may apply depending on activity classification</li></ul><p class="layer-p"><em>Germany's tax rules for gig income are complex. A Steuerberater consultation is recommended.</em></p>` },
|
||
{ tab: '4 · UK', html: `<ul class="layer-ul"><li>Self-assessment required if quiXzoom income plus other untaxed income exceeds £1,000/year</li><li>Personal allowance: £12,570 — income below this threshold: no income tax</li><li>National Insurance: Class 2 and 4 apply above threshold on self-employed profits</li><li>Sole trader registration with HMRC recommended for active Zoomers</li></ul><p class="layer-p"><em>Consult HMRC's self-employment guidance or an accountant for your situation.</em></p>` },
|
||
{ tab: '5 · Other EU countries', html: `<p class="layer-lead">EU countries generally follow similar principles: declare freelance income, register as self-employed if earnings are regular, pay applicable income tax and social contributions.</p><p class="layer-p">quiXzoom will publish country-specific guidance pages for all launch markets by August 2026. These will cover registration requirements, thresholds, and documentation needed for common tax scenarios.</p>` },
|
||
{ tab: '6 · Record keeping', html: `<p class="layer-lead">Good records make tax filing simple. Keep these:</p><ul class="layer-ul"><li>quiXzoom annual earnings statement (download from your dashboard)</li><li>Stripe Connect payout records (download from your Stripe dashboard)</li><li>Equipment purchase receipts (deductible in many jurisdictions)</li><li>Travel expenses related to missions (deductible in some jurisdictions)</li></ul>` },
|
||
{ tab: '7 · Disclaimer', html: `<div class="layer-block"><p class="layer-block-title">Important</p><p class="layer-p">The information on this page is general guidance only and does not constitute tax advice. Tax rules change. Your situation may differ. Always consult a qualified tax professional or your national tax authority for advice specific to your circumstances.</p></div><div class="layer-cta-box"><p class="layer-cta-title">Questions?</p><p class="layer-cta-sub">Our support team is here to help. Find answers in our documentation or contact us directly.</p><a href="https://www.quixzoom.com/support" class="layer-cta-btn">Visit Support →</a></div>` }
|
||
]
|
||
},
|
||
approval: {
|
||
type: 'Review guide', title: 'How the approval process works',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">Every submission goes through an automated AI review before reaching your dashboard. Most decisions happen within 30 seconds of upload.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">~30s</div><div class="layer-kpi-lbl">Average review time</div></div><div class="layer-kpi"><div class="layer-kpi-val">94%</div><div class="layer-kpi-lbl">AI accuracy (vs. expert review)</div></div><div class="layer-kpi"><div class="layer-kpi-val">48h</div><div class="layer-kpi-lbl">Appeal window</div></div></div>` },
|
||
{ tab: '2 · Review stages', html: `<div class="layer-step-list"><div class="layer-step"><div class="layer-step-num">1</div><div class="layer-step-body"><p class="layer-step-title">Intake validation</p><p class="layer-step-desc">File format, size, EXIF integrity, upload completeness. Instant.</p></div></div><div class="layer-step"><div class="layer-step-num">2</div><div class="layer-step-body"><p class="layer-step-title">Geo-compliance check</p><p class="layer-step-desc">Capture location verified against mission geofence. Timestamp verified against mission window.</p></div></div><div class="layer-step"><div class="layer-step-num">3</div><div class="layer-step-body"><p class="layer-step-title">Image quality assessment</p><p class="layer-step-desc">Sharpness, exposure, resolution, obstruction detection.</p></div></div><div class="layer-step"><div class="layer-step-num">4</div><div class="layer-step-body"><p class="layer-step-title">Specification coverage</p><p class="layer-step-desc">Are all required angles and elements present?</p></div></div><div class="layer-step"><div class="layer-step-num">5</div><div class="layer-step-body"><p class="layer-step-title">Decision</p><p class="layer-step-desc">Approved → payment triggered. Rejected → reason shown. Borderline → human review queue (24h).</p></div></div></div>` },
|
||
{ tab: '3 · Common rejections', html: `<div class="layer-table-wrap"><table class="layer-table"><tr><th>Rejection reason</th><th>Fix</th></tr><tr><td>Missing angle</td><td>Re-shoot the specific angle and supplement</td></tr><tr><td>Image blurred</td><td>Stabilise phone, retake</td></tr><tr><td>Outside geofence</td><td>Move to correct location, retake</td></tr><tr><td>Element obscured</td><td>Wait for obstruction to clear, retake</td></tr><tr><td>Resolution too low</td><td>Check phone camera settings — maximum resolution required</td></tr></table></div>` },
|
||
{ tab: '4 · Supplementing a submission', html: `<p class="layer-lead">If your submission is rejected, you have 48 hours to supplement it with additional images addressing the rejection reason.</p><ul class="layer-ul"><li>Return to the location and capture the missing or incorrect elements</li><li>Upload as a supplement to the original submission (not a new submission)</li><li>Supplement is re-reviewed by AI within 30 seconds</li><li>If approved: full mission payment issued immediately</li><li>If the location is inaccessible: contact support for a manual review</li></ul>` },
|
||
{ tab: '5 · Appealing', html: `<p class="layer-lead">If you believe the AI review made an error, flag it for human review within 48 hours of the rejection.</p><ul class="layer-ul"><li>Human reviewers assess all flagged cases within 24 hours</li><li>If appeal upheld: submission approved, payment issued</li><li>If appeal rejected: decision is final; reason explained in detail</li><li>Successful appeals improve the AI model — they genuinely help the platform</li></ul>` },
|
||
{ tab: '6 · Protecting your approval rate', html: `<p class="layer-lead">Your approval rate affects your tier and mission access. Protect it.</p><ul class="layer-ul"><li>Read briefs carefully — most rejections come from misunderstood requirements</li><li>When in doubt, retake rather than submit a borderline image</li><li>Don't submit in poor lighting conditions — rejection is near-certain</li><li>If access is blocked: release the mission (no penalty) rather than submitting incomplete documentation</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">94% accuracy. 30-second decisions.</p><p class="layer-cta-sub">Register now. Fast, fair, automated review from day one.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
},
|
||
parttime: {
|
||
type: 'Earnings scenarios', title: 'Working part-time — real scenarios',
|
||
layers: [
|
||
{ tab: '1 · Overview', html: `<p class="layer-lead">quiXzoom is designed for part-time work. No schedule, no minimum hours, no commitment. You work when you want — which is exactly how most Zoomers use it.</p><div class="layer-kpi-row"><div class="layer-kpi"><div class="layer-kpi-val">0</div><div class="layer-kpi-lbl">Minimum missions required</div></div><div class="layer-kpi"><div class="layer-kpi-val">Yours</div><div class="layer-kpi-lbl">You set your own schedule</div></div><div class="layer-kpi"><div class="layer-kpi-val">Unlimited</div><div class="layer-kpi-lbl">No earning cap</div></div></div>` },
|
||
{ tab: '2 · Lunch break scenario', html: `<p class="layer-lead">One of the most common Zoomer patterns: 1–2 missions during a lunch break.</p><div class="layer-block"><p class="layer-block-title">Typical lunch break (45 min)</p><ul class="layer-ul"><li>Walk to nearest mission cluster: 5 minutes</li><li>Mission 1 (infrastructure, €5): 15 minutes</li><li>Mission 2 (verification, €4): 10 minutes</li><li>Walk back: 5 minutes</li><li>Total: 35 minutes. Earnings: €9. Still had 10 minutes to eat.</li></ul></div><p class="layer-h3">5 days/week = €45/week = ~€180/month</p>` },
|
||
{ tab: '3 · Weekend scenario', html: `<p class="layer-lead">Weekend walks with missions integrated into existing activity.</p><div class="layer-block"><p class="layer-block-title">Saturday morning walk (2 hours)</p><ul class="layer-ul"><li>Route planned around 6 adjacent missions in local area</li><li>Mix: 3 infrastructure + 2 real estate + 1 urban survey</li><li>Average €7 per mission: €42</li><li>Same walk you'd have done anyway</li></ul></div><p class="layer-h3">Two weekend sessions/week = ~€320/month</p>` },
|
||
{ tab: '4 · Evening scenario', html: `<p class="layer-lead">Short evening sessions after work — 30–45 minutes, 2–3 missions.</p><div class="layer-block"><p class="layer-block-title">Weekday evening (30 min, 3×/week)</p><ul class="layer-ul"><li>3 evenings × 2 missions × €6.50 average = €39/week</li><li>Monthly: ~€156</li><li>Time invested: 1.5 hours/week</li></ul></div>` },
|
||
{ tab: '5 · Combining with existing work', html: `<p class="layer-lead">quiXzoom income compounds with other part-time and flexible work. Scenarios from beta testers.</p><div class="layer-table-wrap"><table class="layer-table"><tr><th>Profile</th><th>Existing work</th><th>quiXzoom addition</th></tr><tr><td>Delivery worker</td><td>On-route missions</td><td>+€150–300/month, ~15 min/day extra</td></tr><tr><td>Dog walker</td><td>Morning walks</td><td>+€60–120/month, same route</td></tr><tr><td>Part-time retail</td><td>Fixed days off</td><td>+€80–200/month on free days</td></tr><tr><td>Student</td><td>Campus movement</td><td>+€60–150/month, between lectures</td></tr></table></div>` },
|
||
{ tab: '6 · When to work more', html: `<p class="layer-lead">Some weeks offer higher earnings opportunities than others. Knowing when to increase your activity maximises returns.</p><ul class="layer-ul"><li>After significant weather events: insurance surge missions activate — highest pay of the year</li><li>Spring (March–April): annual municipal inspection season begins — high volume</li><li>Late autumn (October): pre-winter surveys — another surge period</li><li>Urban centre missions refresh regularly — check Monday mornings for new weekly batches</li></ul>` },
|
||
{ tab: '7 · Get started', html: `<div class="layer-cta-box"><p class="layer-cta-title">One mission a day. Real income.</p><p class="layer-cta-sub">Register now. No commitment to how much or how often. Start when you want, stop when you want.</p><a href="#waitlist-form-top" class="layer-cta-btn" onclick="closeOverlay()">Join waitlist →</a></div>` }
|
||
]
|
||
}
|
||
}
|
||
};
|
||
|
||
/* ─────────────────────────────────────────────
|
||
OVERLAY ENGINE
|
||
───────────────────────────────────────────── */
|
||
function openDrill(section, key) {
|
||
let d;
|
||
if (section === 'how') d = DATA.how[key];
|
||
else if (section === 'persona') d = DATA.persona[key];
|
||
else if (section === 'mission') d = DATA.mission[key];
|
||
else if (section === 'tier') d = DATA.tier[key];
|
||
else if (section === 'faq') d = DATA.faq[key];
|
||
if (!d) return;
|
||
openOverlay(d);
|
||
}
|
||
|
||
function openOverlay(d) {
|
||
document.getElementById('overlay-breadcrumb-sector').textContent = d.type;
|
||
document.getElementById('overlay-type-label').textContent = d.type;
|
||
document.getElementById('overlay-title').textContent = d.title;
|
||
document.getElementById('layer-nav').innerHTML = d.layers.map((l,i) =>
|
||
`<button class="layer-tab${i===0?' active':''}" onclick="switchLayer(${i})">${l.tab}</button>`
|
||
).join('');
|
||
document.getElementById('overlay-body').innerHTML = d.layers.map((l,i) =>
|
||
`<div class="layer-panel${i===0?' active':''}" id="lp-${i}">${l.html}</div>`
|
||
).join('');
|
||
document.getElementById('overlay-backdrop').classList.add('open');
|
||
document.getElementById('overlay-panel').classList.add('open');
|
||
document.body.style.overflow = 'hidden';
|
||
}
|
||
|
||
function switchLayer(i) {
|
||
document.querySelectorAll('.layer-tab').forEach((t,idx) => t.classList.toggle('active', idx===i));
|
||
document.querySelectorAll('.layer-panel').forEach((p,idx) => p.classList.toggle('active', idx===i));
|
||
document.getElementById('overlay-body').scrollTop = 0;
|
||
}
|
||
|
||
function closeOverlay() {
|
||
document.getElementById('overlay-backdrop').classList.remove('open');
|
||
document.getElementById('overlay-panel').classList.remove('open');
|
||
document.body.style.overflow = '';
|
||
}
|
||
|
||
document.addEventListener('keydown', e => { if(e.key==='Escape') closeOverlay(); });
|
||
document.querySelectorAll('[role="button"]').forEach(el =>
|
||
el.addEventListener('keydown', e => { if(e.key==='Enter'||e.key===' '){e.preventDefault();el.click();}})
|
||
);
|
||
|
||
async function submitWaitlist(e, variant) {
|
||
e.preventDefault();
|
||
const sfx = variant==='bottom' ? '-bottom' : '';
|
||
const btn = document.getElementById('wl-btn'+sfx);
|
||
const inp = document.getElementById('wl-email'+sfx);
|
||
const ok = document.getElementById('wl-ok'+sfx);
|
||
const err = document.getElementById('wl-err'+sfx);
|
||
if (!inp.value.trim() || !inp.value.includes('@')) { inp.focus(); return; }
|
||
btn.disabled = true; btn.textContent = '…';
|
||
err.hidden = true;
|
||
try {
|
||
const r = await fetch('https://api.quixzoom.com/api/qz/waitlist', {
|
||
method:'POST', headers:{'Content-Type':'application/json'},
|
||
body: JSON.stringify({ email: inp.value.trim(), country: (navigator.language||'en').split('-')[1]||'', lang: (navigator.language||'en').split('-')[0], source: location.hostname })
|
||
});
|
||
if (!r.ok) throw new Error();
|
||
inp.closest('.wl-row').style.display = 'none';
|
||
ok.hidden = false;
|
||
updateCounter();
|
||
} catch {
|
||
btn.disabled = false; btn.textContent = 'Register interest →';
|
||
err.hidden = false;
|
||
}
|
||
}
|
||
|
||
function updateCounter() {
|
||
fetch('https://api.quixzoom.com/api/qz/waitlist/count')
|
||
.then(r=>r.json()).then(d=>{
|
||
const el = document.getElementById('wl-count');
|
||
if(el && d && typeof d.count!=='undefined'){ const n = Number(d.count);
|
||
el.parentElement.style.display = n > 0 ? '' : 'none';
|
||
// Hero badge
|
||
const badge = document.getElementById('hero-signup-badge');
|
||
const heroCount = document.getElementById('hero-signup-count');
|
||
if(badge && heroCount && n > 0){ badge.style.display='flex'; heroCount.textContent=n.toLocaleString(); }
|
||
if(n>0) el.textContent = n.toLocaleString(); }
|
||
}).catch(()=>{});
|
||
}
|
||
document.addEventListener('DOMContentLoaded', updateCounter);
|
||
</script>
|
||
|
||
<script>
|
||
// ── Glossary tooltip engine ───────────────────────────────────────────
|
||
const GLOSSARY = {
|
||
'Zoomer': { short: 'A verified field data collector on the quiXzoom platform.', slug: 'zoomer' },
|
||
'mission': { short: 'A paid photography assignment with defined location, scope and compensation.', slug: 'mission' },
|
||
'submission': { short: 'A completed set of photos submitted for AI review after a mission is executed.', slug: 'submission' },
|
||
'claim': { short: 'Reserving a mission — locks it exclusively for you within a defined time window.', slug: 'claim' },
|
||
'time window': { short: 'The duration a Zoomer has to complete and submit a claimed mission.', slug: 'time-window' },
|
||
'approval rate': { short: 'Percentage of submissions that pass AI quality review. Affects tier and mission access.', slug: 'approval-rate' },
|
||
'Stripe Connect': { short: 'The payment infrastructure that converts your QX Credit balance to cash and transfers it to your bank account via weekly payouts.', slug: 'stripe-connect' },
|
||
'KYC': { short: 'Know Your Customer — the one-time identity verification required before your first payout.', slug: 'kyc' },
|
||
'tier': { short: 'Your Zoomer level (Supplementary / Active / Professional) based on volume and approval rate.', slug: 'tier' },
|
||
'surge': { short: 'High-urgency missions deployed after events like storms or floods. Pay 2–5× standard rate.', slug: 'surge-mission' },
|
||
'AI review': { short: 'Automated quality and specification check run on every submission before payment.', slug: 'ai-review' },
|
||
'geo-tagged': { short: 'Images embedded with GPS coordinates — verified against mission location parameters.', slug: 'geo-tagged' },
|
||
'GDPR': { short: 'EU data protection regulation governing how quiXzoom handles your personal data.', slug: 'gdpr' },
|
||
'SLA': { short: 'Service Level Agreement — the delivery timeline and quality commitments made to orderers.', slug: 'sla' },
|
||
'API': { short: 'Application Programming Interface — how orderers programmatically access mission data.', slug: 'api' },
|
||
'webhook': { short: 'Automatic HTTP notification sent to orderers when a submission is approved.', slug: 'webhook' },
|
||
'IBAN': { short: 'International Bank Account Number — required for Stripe Connect payout setup.', slug: 'iban' },
|
||
'SEPA': { short: 'Single Euro Payments Area — the European bank transfer network used for EUR payouts.', slug: 'sepa' },
|
||
'VAT': { short: 'Value Added Tax — Zoomers are responsible for their own VAT obligations where applicable.', slug: 'vat' },
|
||
'payout': { short: 'Weekly transfer of QX Credits converted to cash, to your linked bank account. Requires reaching the minimum Credit threshold.', slug: 'payout' },
|
||
'rating': { short: 'Your accumulated quality score on the platform, affecting tier and mission access.', slug: 'rating' },
|
||
'specialisation': { short: 'A certified competency unlocking access to specific premium mission types.', slug: 'specialisation' },
|
||
'liveness check': { short: 'Selfie-based verification confirming a real person is behind the identity document.', slug: 'liveness-check' },
|
||
'AML': { short: 'Anti-Money Laundering regulation — the legal basis for KYC requirements on payment platforms.', slug: 'aml' },
|
||
};
|
||
|
||
const tip = document.createElement('div');
|
||
tip.className = 'gtooltip';
|
||
tip.innerHTML = '<span class="gtooltip-term"></span><span class="gtooltip-def"></span><a class="gtooltip-more">Full definition →</a>';
|
||
document.body.appendChild(tip);
|
||
|
||
document.addEventListener('mouseover', e => {
|
||
const el = e.target.closest('.gterm');
|
||
if (!el) return;
|
||
const key = el.dataset.gterm;
|
||
const g = GLOSSARY[key];
|
||
if (!g) return;
|
||
tip.querySelector('.gtooltip-term').textContent = key;
|
||
tip.querySelector('.gtooltip-def').textContent = g.short;
|
||
tip.querySelector('.gtooltip-more').href = '/glossary#' + g.slug;
|
||
tip.classList.add('visible');
|
||
});
|
||
|
||
document.addEventListener('mousemove', e => {
|
||
if (!tip.classList.contains('visible')) return;
|
||
const x = e.clientX + 12;
|
||
const y = e.clientY - 60;
|
||
tip.style.left = Math.min(x, window.innerWidth - 300) + 'px';
|
||
tip.style.top = Math.max(8, y) + 'px';
|
||
});
|
||
|
||
document.addEventListener('mouseout', e => {
|
||
if (!e.target.closest('.gterm')) return;
|
||
tip.classList.remove('visible');
|
||
});
|
||
</script>
|
||
|
||
|
||
<script>
|
||
|
||
// ── Scroll fade-in observer ───────────────────────────────────
|
||
(function(){
|
||
const obs = new IntersectionObserver((entries) => {
|
||
entries.forEach(e => {
|
||
if(e.isIntersecting){ e.target.classList.add('visible'); obs.unobserve(e.target); }
|
||
});
|
||
}, { threshold: 0.12 });
|
||
document.querySelectorAll('.fade-in').forEach(el => obs.observe(el));
|
||
// Staggered delay för card-groups
|
||
document.querySelectorAll('.steps-grid,.personas-grid,.stats-grid,.missions-grid,.earnings-grid').forEach(grid => {
|
||
grid.querySelectorAll('.fade-in').forEach((el,i) => {
|
||
el.style.transitionDelay = (i * 0.08) + 's';
|
||
});
|
||
});
|
||
})();
|
||
</script>
|
||
<script>
|
||
function toggleMenu(){
|
||
const h=document.getElementById('hamburger');
|
||
const m=document.getElementById('mobile-menu');
|
||
h.classList.toggle('open');
|
||
m.classList.toggle('open');
|
||
document.body.style.overflow=m.classList.contains('open')?'hidden':'';
|
||
}
|
||
function closeMenu(){
|
||
document.getElementById('hamburger').classList.remove('open');
|
||
document.getElementById('mobile-menu').classList.remove('open');
|
||
document.body.style.overflow='';
|
||
}
|
||
// Close menu on resize to desktop
|
||
window.addEventListener('resize',()=>{if(window.innerWidth>768)closeMenu();});
|
||
|
||
function toggleDrop(btn) {
|
||
const li = btn.closest('li');
|
||
const wasOpen = li.classList.contains('open');
|
||
// Stäng alla
|
||
document.querySelectorAll('.nav-links > li.open').forEach(el => el.classList.remove('open'));
|
||
if (!wasOpen) li.classList.add('open');
|
||
}
|
||
// Stäng dropdown vid klick utanför
|
||
document.addEventListener('click', e => {
|
||
if (!e.target.closest('.nav-links')) {
|
||
document.querySelectorAll('.nav-links > li.open').forEach(el => el.classList.remove('open'));
|
||
}
|
||
});
|
||
</script>
|
||
|
||
<!-- Brand disambiguation — structured for Google -->
|
||
<section style="position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap" aria-hidden="true">
|
||
<h2>What is quiXzoom?</h2>
|
||
<p>quiXzoom is a crowdsourced field data collection platform. Contributors called Zoomers photograph infrastructure, buildings and urban environments on demand and earn QX Credits per approved submission. quiXzoom is not related to Zoom video conferencing.</p>
|
||
<h2>How is quiXzoom spelled?</h2>
|
||
<p>The brand is spelled quiXzoom with a capital X in the middle. Common misspellings include quixzoom, QuiXzoom, quick zoom, quix zoom and qui xzoom — all refer to the same platform. quiXzoom has no connection to Zoom video conferencing or camera zoom functions. Launching August 2026.</p>
|
||
<h2>quiXzoom quick zoom</h2>
|
||
<p>quiXzoom is not "quick zoom". quiXzoom is a crowdsourced field data collection platform — not a video conferencing tool.</p>
|
||
<h2>What does a Zoomer do on quiXzoom?</h2>
|
||
<p>A Zoomer photographs locations and objects near their position based on active missions in the quiXzoom app. Each approved submission adds QX Credits to the Zoomer's balance, paid out weekly via Stripe Connect.</p>
|
||
</section>
|
||
|
||
<script>
|
||
document.addEventListener('click', function(e){
|
||
var ms = document.getElementById('market-selector');
|
||
if(ms && !ms.contains(e.target)) ms.classList.remove('open');
|
||
});
|
||
|
||
/* Sprint 3: dynamic tax note */
|
||
document.addEventListener('qx:market', function(e){
|
||
var d = window.QX_LOCALES[e.detail.market];
|
||
if(!d) return;
|
||
var el = document.getElementById('qx-tax-note');
|
||
if(el) el.textContent = d.taxNote;
|
||
});
|
||
</script>
|
||
|
||
<script id="qx-geo-script">
|
||
(function(){
|
||
if(document.cookie.indexOf('qx_market=')>=0)return;
|
||
if(sessionStorage.getItem('qx_geo_dismissed'))return;
|
||
var hints={'SE':'SE','NL':'NL','TH':'TH','NG':'NG','KE':'KE'};
|
||
var tz=Intl.DateTimeFormat().resolvedOptions().timeZone||'';
|
||
var map={'Europe/Stockholm':'SE','Europe/Amsterdam':'NL','Asia/Bangkok':'TH','Africa/Lagos':'NG','Africa/Nairobi':'KE'};
|
||
var names={'SE':'Sweden','NL':'Netherlands','TH':'Thailand','NG':'Nigeria','KE':'Kenya'};
|
||
var detected=map[tz];
|
||
if(!detected||detected==='SE')return;
|
||
var b=document.createElement('div');
|
||
b.id='qx-geo-banner';
|
||
b.innerHTML='<span>Looks like you're in '+names[detected]+'</span><button class="geo-switch" onclick="QX_setMarket(''+detected+'');this.closest('#qx-geo-banner').remove()">Switch to '+names[detected]+'</button><button class="geo-dismiss" onclick="sessionStorage.setItem('qx_geo_dismissed',1);this.closest('#qx-geo-banner').remove()" aria-label="Dismiss">×</button>';
|
||
document.addEventListener('DOMContentLoaded',function(){document.body.appendChild(b);});
|
||
}());
|
||
</script>
|
||
</body>
|
||
</html>
|