Files
boc/earn-index.html
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

1078 lines
56 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="color-scheme" content="dark light">
<title>Earn as a Zoomer — quiXzoom</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="canonical" href="https://www.quixzoom.com/earn/">
<meta name="description" content="Learn how Zoomers earn QX Credits per approved mission, weekly payouts, recognition milestones, and Stripe Connect payments on quiXzoom.">
<meta property="og:type" content="website">
<meta property="og:title" content="Earn as a Zoomer — quiXzoom">
<meta property="og:description" content="QX Credits per approved mission. Weekly payouts at 250 credit threshold. Credits never expire. How Zoomers earn on quiXzoom.">
<meta property="og:url" content="https://www.quixzoom.com/earn/">
<meta name="twitter:card" content="summary_large_image">
<meta name="theme-color" content="#060D1C">
<style>
:root {
--bg-dark: #060D1C;
--bg-darker: #0a0a0a;
--bg-white: #FFFFFF;
--bg-off: #F7F7F5;
--blue: #0066FF;
--blue-dark: #0052CC;
--blue-pale: rgba(0,102,255,.07);
--green: #00C853;
--text-dark: #0a0a0a;
--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 { -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.5rem, 6vw, 4.5rem); font-weight: 900; letter-spacing: -.05em; line-height: 1.05; }
h2 { font-size: clamp(1.75rem, 3.5vw, 2.75rem); 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-dark);
border-bottom: 1px solid rgba(255,255,255,.06);
}
.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: #fff; 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: rgba(255,255,255,.75); font-size: var(--text-base); font-weight: 500; transition: color .15s; }
.nav-links a:hover { color: #fff; }
.nav-links a.active { color: #fff; }
.btn-nav {
background: var(--blue); color: #fff; 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); }
.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: #fff; 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-dark); z-index: 299; padding: 24px;
flex-direction: column; gap: 0; border-top: 1px solid rgba(255,255,255,.08);
}
.mobile-menu.open { display: flex; }
.mobile-menu a {
color: rgba(255,255,255,.85); font-size: 1.1rem; font-weight: 500;
padding: 18px 0; border-bottom: 1px solid rgba(255,255,255,.07); display: block;
}
.mobile-menu .btn-mobile {
display: block; margin-top: 24px; background: var(--blue); color: #fff;
text-align: center; border-radius: var(--radius-lg); padding: 16px 24px;
font-size: 1rem; font-weight: 700;
}
@media(max-width: 768px) {
.nav-links { display: none; }
.btn-nav { display: none; }
.hamburger { display: flex; }
}
/* ── HERO ── */
#hero {
background: var(--bg-dark);
padding: 80px 0 96px;
}
.hero-inner { max-width: 700px; }
.hero-badge {
display: inline-flex; align-items: center; gap: 8px;
background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12);
border-radius: var(--radius-full); padding: 8px 18px;
font-size: var(--text-sm); font-weight: 600; color: rgba(255,255,255,.88);
margin-bottom: 36px;
}
.hero-badge svg { color: var(--blue); }
.hero-h1 { color: #fff; margin-bottom: 24px; }
.hero-h1 em { font-style: normal; color: var(--blue); }
.hero-sub {
font-size: clamp(1rem, 2vw, 1.2rem); color: rgba(255,255,255,.75);
max-width: 560px; line-height: 1.7; margin-bottom: 44px;
}
.hero-cta {
display: inline-flex; align-items: center; gap: 8px;
background: var(--blue); color: #fff; border: none;
border-radius: var(--radius-lg); padding: 16px 36px;
font-size: 1rem; font-weight: 800; font-family: inherit;
transition: background .15s; cursor: pointer;
}
.hero-cta:hover { background: var(--blue-dark); }
.hero-stats { display: flex; gap: 40px; margin-top: 56px; flex-wrap: wrap; }
.hstat-num { font-size: 1.75rem; font-weight: 900; color: #fff; letter-spacing: -.04em; line-height: 1; }
.hstat-lbl { font-size: var(--text-xs); color: rgba(255,255,255,.5); margin-top: 4px; }
/* ── QX CREDITS SECTION ── */
#credits { background: var(--bg-white); }
.credits-grid {
display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px;
margin-top: 48px;
}
.credit-card {
background: var(--bg-off); border-radius: var(--radius-card); padding: 36px 32px;
display: flex; flex-direction: column; gap: 12px;
}
.credit-icon {
width: 48px; height: 48px; border-radius: 12px;
background: var(--blue-pale); display: flex; align-items: center; justify-content: center;
margin-bottom: 8px;
}
.credit-icon svg { color: var(--blue); }
.credit-card h3 { color: var(--text-dark); }
.credit-card p { color: var(--text-muted); font-size: .9625rem; line-height: 1.65; }
.credit-highlight {
background: var(--bg-dark); border-radius: var(--radius-card);
padding: 40px; display: flex; align-items: center; gap: 32px;
grid-column: 1 / -1; margin-top: 8px;
}
.credit-highlight-icon {
flex-shrink: 0; width: 64px; height: 64px; border-radius: 50%;
background: rgba(0,102,255,.2); display: flex; align-items: center; justify-content: center;
}
.credit-highlight-icon svg { color: var(--blue); }
.credit-highlight h3 { color: #fff; margin-bottom: 8px; }
.credit-highlight p { color: rgba(255,255,255,.65); font-size: .9625rem; line-height: 1.65; }
@media(max-width: 768px) {
.credits-grid { grid-template-columns: 1fr; }
.credit-highlight { flex-direction: column; gap: 16px; }
}
/* ── TIERS ── */
#tiers { background: var(--bg-off); }
.tiers-grid {
display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;
}
.tier-card {
background: var(--bg-white); border-radius: var(--radius-card);
padding: 36px 28px; border: 2px solid transparent;
transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition);
position: relative; overflow: hidden;
}
.tier-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-hover); }
.tier-card.featured {
border-color: var(--blue);
box-shadow: 0 0 0 4px var(--blue-pale);
}
.tier-badge-popular {
position: absolute; top: 20px; right: 20px;
background: var(--blue); color: #fff; font-size: .65rem;
font-weight: 800; letter-spacing: .08em; text-transform: uppercase;
padding: 4px 10px; border-radius: var(--radius-full);
}
.tier-name {
font-size: var(--text-sm); font-weight: 700; text-transform: uppercase;
letter-spacing: .1em; color: var(--blue); margin-bottom: 12px;
}
.tier-credits {
font-size: 2.5rem; font-weight: 900; letter-spacing: -.04em;
color: var(--text-dark); line-height: 1; margin-bottom: 6px;
}
.tier-credits span { font-size: 1rem; font-weight: 600; color: var(--text-muted); letter-spacing: 0; }
.tier-desc { font-size: .9rem; color: var(--text-muted); margin-bottom: 24px; line-height: 1.55; }
.tier-features { display: flex; flex-direction: column; gap: 10px; }
.tier-feature {
display: flex; align-items: flex-start; gap: 10px;
font-size: var(--text-sm); color: var(--text-body); line-height: 1.5;
}
.tier-feature svg { flex-shrink: 0; color: var(--blue); margin-top: 2px; }
@media(max-width: 900px) { .tiers-grid { grid-template-columns: 1fr; gap: 16px; } }
/* ── MILESTONES ── */
#milestones { background: var(--bg-dark); }
#milestones .section-header h2 { color: #fff; }
#milestones .section-header p { color: rgba(255,255,255,.6); }
.milestones-list { display: flex; flex-direction: column; gap: 2px; }
.milestone-item {
background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07);
border-radius: var(--radius-md); padding: 28px 32px;
display: grid; grid-template-columns: 80px 1fr auto;
gap: 24px; align-items: center;
transition: background var(--transition), border-color var(--transition);
cursor: default;
}
.milestone-item:hover {
background: rgba(255,255,255,.07);
border-color: rgba(0,102,255,.3);
}
.milestone-count {
font-size: 1.5rem; font-weight: 900; color: var(--blue);
letter-spacing: -.04em; line-height: 1;
text-align: center;
}
.milestone-count small {
display: block; font-size: .65rem; font-weight: 700; text-transform: uppercase;
letter-spacing: .1em; color: rgba(255,255,255,.35); margin-top: 4px;
}
.milestone-content h3 {
font-size: 1rem; font-weight: 700; color: #fff; margin-bottom: 6px;
}
.milestone-content p {
font-size: .9rem; color: rgba(255,255,255,.55); line-height: 1.6; font-style: italic;
}
.milestone-badge {
flex-shrink: 0; width: 48px; height: 48px;
display: flex; align-items: center; justify-content: center;
border-radius: 50%; background: rgba(255,255,255,.06);
border: 1px solid rgba(255,255,255,.1);
}
.milestone-badge svg { color: rgba(255,255,255,.4); }
.milestone-item:hover .milestone-badge { background: rgba(0,102,255,.15); border-color: rgba(0,102,255,.3); }
.milestone-item:hover .milestone-badge svg { color: var(--blue); }
@media(max-width: 768px) {
.milestone-item { grid-template-columns: 64px 1fr; gap: 16px; }
.milestone-badge { display: none; }
}
/* ── PAYOUT MECHANICS ── */
#payout { background: var(--bg-white); }
.payout-steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; position: relative; }
.payout-steps::before {
content: ''; position: absolute; top: 28px; left: 10%; right: 10%; height: 2px;
background: linear-gradient(to right, var(--blue), rgba(0,102,255,.3));
z-index: 0;
}
.pstep { text-align: center; padding: 0 16px; position: relative; z-index: 1; }
.pstep-num {
width: 56px; height: 56px; border-radius: 50%; background: var(--blue); color: #fff;
font-size: 1.25rem; font-weight: 900; display: flex; align-items: center; justify-content: center;
margin: 0 auto 20px; border: 3px solid var(--bg-white);
}
.pstep h3 { color: var(--text-dark); font-size: 1rem; margin-bottom: 8px; }
.pstep p { color: var(--text-muted); font-size: .875rem; line-height: 1.6; }
.payout-methods {
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 64px;
}
.pmethod {
background: var(--bg-off); border-radius: var(--radius-md); padding: 24px 20px;
display: flex; flex-direction: column; gap: 8px;
}
.pmethod-icon { color: var(--blue); margin-bottom: 4px; }
.pmethod h4 { font-size: .9375rem; font-weight: 700; color: var(--text-dark); }
.pmethod p { font-size: .85rem; color: var(--text-muted); line-height: 1.55; }
@media(max-width: 900px) {
.payout-steps { grid-template-columns: repeat(2, 1fr); gap: 32px; }
.payout-steps::before { display: none; }
.payout-methods { grid-template-columns: 1fr 1fr; }
}
@media(max-width: 600px) {
.payout-steps { grid-template-columns: 1fr; }
.payout-methods { grid-template-columns: 1fr; }
}
/* ── TAX ── */
#tax { background: var(--bg-off); }
.tax-notice {
max-width: 720px; margin: 0 auto;
background: var(--bg-white); border-radius: var(--radius-card);
padding: 40px; border-left: 4px solid var(--blue);
box-shadow: 0 4px 24px rgba(0,0,0,.06);
}
.tax-notice-icon { color: var(--blue); margin-bottom: 16px; }
.tax-notice h3 { color: var(--text-dark); font-size: 1.25rem; margin-bottom: 12px; }
.tax-notice p { color: var(--text-muted); font-size: .9625rem; line-height: 1.7; margin-bottom: 12px; }
.tax-notice p:last-child { margin-bottom: 0; }
.tax-notice a { color: var(--blue); text-decoration: underline; }
/* ── FAQ ── */
#faq { background: var(--bg-white); }
.faq-list { max-width: 760px; margin: 0 auto; display: flex; flex-direction: column; gap: 2px; }
.faq-item {
border: 1px solid #E8E8E8; border-radius: var(--radius-md); overflow: hidden;
}
.faq-q {
width: 100%; text-align: left; padding: 22px 28px; background: var(--bg-white);
border: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px;
font-size: 1rem; font-weight: 700; color: var(--text-dark); font-family: inherit;
transition: background .15s;
}
.faq-q:hover { background: var(--bg-off); }
.faq-q[aria-expanded="true"] { background: var(--bg-off); color: var(--blue); }
.faq-chevron { flex-shrink: 0; transition: transform .25s; color: var(--text-muted); }
.faq-q[aria-expanded="true"] .faq-chevron { transform: rotate(180deg); color: var(--blue); }
.faq-a {
display: none; padding: 0 28px 24px; font-size: .9625rem; color: var(--text-muted); line-height: 1.7;
background: var(--bg-off);
}
.faq-a.open { display: block; }
/* ── FOOTER ── */
footer { background: var(--bg-darker); color: #fff; padding: 0; border-top: none; }
.footer-top { padding: 56px 0 48px; border-bottom: 1px solid rgba(255,255,255,.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: #fff; text-decoration: none; display: block; margin-bottom: 12px;
}
.footer-brand-col .footer-logo .x { color: var(--blue); }
.footer-brand-col .footer-desc {
font-size: .8rem; color: rgba(255,255,255,.45); 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(255,255,255,.08); border: 1px solid rgba(255,255,255,.12);
display: flex; align-items: center; justify-content: center;
color: rgba(255,255,255,.7); text-decoration: none; font-size: .85rem;
transition: background .15s, color .15s;
}
.footer-soc-btn:hover { background: rgba(255,255,255,.16); color: #fff; }
.footer-col-title {
font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .1em;
color: rgba(255,255,255,.4); 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(255,255,255,.65); text-decoration: none; transition: color .15s; }
.footer-col-links a:hover { color: #fff; }
.badge-new {
font-size: .65rem; font-weight: 700; background: var(--blue);
color: #fff; padding: 1px 5px; border-radius: 4px; margin-left: 5px; vertical-align: middle;
}
.footer-trust { display: flex; align-items: center; gap: 16px; margin-top: 20px; flex-wrap: wrap; }
.trust-badge {
background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1);
border-radius: 8px; padding: 8px 12px; font-size: .72rem; font-weight: 700;
color: rgba(255,255,255,.7); display: flex; align-items: center; gap: 6px; letter-spacing: .02em;
}
.trust-badge .tb-icon { font-size: 1rem; display: flex; }
.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(255,255,255,.35); }
.footer-legal-links { display: flex; gap: 20px; }
.footer-legal-links a { font-size: .8rem; color: rgba(255,255,255,.4); text-decoration: none; }
.footer-legal-links a:hover { color: rgba(255,255,255,.8); }
.footer-lang-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.footer-lang-row .fl-lbl { font-size: .72rem; color: rgba(255,255,255,.3); }
.flang { font-size: .78rem; color: rgba(255,255,255,.45); text-decoration: none; padding: 3px 6px; border-radius: 4px; }
.flang:hover, .flang.active { background: rgba(255,255,255,.1); color: #fff; }
@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; } }
/* ── 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; }
/* ── CTA STRIP ── */
.cta-strip {
background: var(--blue); padding: 56px 0; text-align: center;
}
.cta-strip h2 { color: #fff; margin-bottom: 12px; }
.cta-strip p { color: rgba(255,255,255,.8); font-size: var(--text-lg); margin-bottom: 32px; }
.btn-cta-white {
display: inline-flex; align-items: center; gap: 8px;
background: #fff; color: var(--blue); border: none;
border-radius: var(--radius-lg); padding: 16px 36px;
font-size: 1rem; font-weight: 800; font-family: inherit;
transition: background .15s, color .15s; cursor: pointer;
}
.btn-cta-white:hover { background: rgba(255,255,255,.9); }
</style>
</head>
<body>
<!-- H1 for SEO -->
<h1 style="position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;">Earn Money as a quiXzoom Zoomer — Missions, Credits & Payouts</h1>
<!-- SKIP NAV -->
<a href="#main-content" style="position:absolute;top:-100px;left:16px;background:var(--blue);color:#fff;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 -->
<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">
<li><a href="/#how">How it works</a></li>
<li><a href="/earn/" class="active">Earn</a></li>
<li><a href="/for-organisations/">For organisations</a></li>
<li><a href="/developer">Developers</a></li>
<li><a href="/about">About</a></li>
</ul>
<button class="btn-nav" onclick="location.href='https://app.quixzoom.com/join'">Join as Zoomer</button>
<button class="hamburger" onclick="toggleMobile(this)" aria-label="Menu">
<span></span><span></span><span></span>
</button>
</div>
</div>
<div class="mobile-menu" id="mobile-menu">
<a href="/#how">How it works</a>
<a href="/earn/">Earn</a>
<a href="/for-organisations/">For organisations</a>
<a href="/developer">Developers</a>
<a href="/about">About</a>
<a class="btn-mobile" href="https://app.quixzoom.com/join">Join as Zoomer</a>
</div>
</nav>
<main id="main-content">
<!-- HERO -->
<section id="hero">
<div class="container">
<div class="hero-inner">
<div class="hero-badge">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" 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>
Zoomer earnings — quiXzoom
</div>
<h1 class="hero-h1">How Zoomers <em>earn.</em></h1>
<p class="hero-sub">Every approved mission adds QX Credits to your balance. Credits convert to cash, paid out weekly. No platform fee. No commission. You keep everything you earn.</p>
<a href="https://app.quixzoom.com/join" class="hero-cta">
Start earning
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
<div class="hero-stats">
<div class="hstat">
<div class="hstat-num">1280</div>
<div class="hstat-lbl">Credits per mission</div>
</div>
<div class="hstat">
<div class="hstat-num">250</div>
<div class="hstat-lbl">Credit payout threshold</div>
</div>
<div class="hstat">
<div class="hstat-num">Weekly</div>
<div class="hstat-lbl">Payout cycle</div>
</div>
<div class="hstat">
<div class="hstat-num">Never</div>
<div class="hstat-lbl">Credits expire</div>
</div>
</div>
</div>
</div>
</section>
<!-- QX CREDITS EXPLAINED -->
<section id="credits" class="section-pad">
<div class="container">
<div class="section-header fade-in">
<h2>QX Credits explained</h2>
<p>Credits are the unit of value on quiXzoom. Simple, transparent, and yours to keep.</p>
</div>
<div class="credits-grid">
<div class="credit-card fade-in fade-in-delay-1">
<div class="credit-icon">
<svg width="24" height="24" 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>
</div>
<h3>Earn per approved mission</h3>
<p>Each mission you complete and get approved adds a fixed number of QX Credits to your balance. The credit value of each mission is shown upfront before you accept it — no surprises.</p>
</div>
<div class="credit-card fade-in fade-in-delay-2">
<div class="credit-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
</div>
<h3>Weekly payout at 250 credits</h3>
<p>When your credit balance reaches 250 or more, you are automatically included in the next weekly payout cycle. Payouts run every Monday. If your balance is below 250, your credits carry over to the following week.</p>
</div>
<div class="credit-card fade-in fade-in-delay-1">
<div class="credit-icon">
<svg width="24" height="24" 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"/><polyline points="12 6 12 12 16 14"/></svg>
</div>
<h3>Credits never expire</h3>
<p>Your QX Credits have no expiry date. Take a break, come back next month — every credit you earned is still there waiting. Your balance is yours permanently until you redeem it.</p>
</div>
<div class="credit-card fade-in fade-in-delay-2">
<div class="credit-icon">
<svg width="24" height="24" 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>
</div>
<h3>1 Credit = local payout rate</h3>
<p>Credits convert to your local currency at the published rate for your market. The conversion rate reflects local labour market conditions and is reviewed periodically. Your rate is always shown in the app before you start a mission.</p>
</div>
<div class="credit-highlight fade-in">
<div class="credit-highlight-icon">
<svg width="32" height="32" 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>
</div>
<div>
<h3>No platform fee. No commission.</h3>
<p>quiXzoom does not take a cut of your earnings. 100% of your earned QX Credits are yours. The credit system is designed to be simple, transparent, and fair — organisations pay quiXzoom directly for data access, so Zoomers are never charged.</p>
</div>
</div>
</div>
</div>
</section>
<!-- EARNINGS TIERS -->
<section id="tiers" class="section-pad">
<div class="container">
<div class="section-header fade-in">
<h2>Earnings tiers</h2>
<p>How much you earn depends on how often you participate. Here are three common Zoomer profiles.</p>
</div>
<div class="tiers-grid">
<div class="tier-card fade-in fade-in-delay-1">
<div class="tier-name">Supplementary</div>
<div class="tier-credits">200400 <span>credits / week</span></div>
<p class="tier-desc">A few missions here and there around your existing schedule. Ideal for anyone who walks or commutes regularly and wants to earn on the go.</p>
<div class="tier-features">
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>48 missions per week</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Flexible, no fixed schedule</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Payout most weeks at threshold</span>
</div>
</div>
</div>
<div class="tier-card featured fade-in fade-in-delay-2">
<div class="tier-badge-popular">Most common</div>
<div class="tier-name">Active</div>
<div class="tier-credits">4001,200 <span>credits / week</span></div>
<p class="tier-desc">Consistent weekly participation with planned routes. Suits students, delivery riders, and anyone building a reliable side income.</p>
<div class="tier-features">
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>820 missions per week</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Regular weekly payout</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Consistent route planning</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Progresses recognition milestones</span>
</div>
</div>
</div>
<div class="tier-card fade-in fade-in-delay-3">
<div class="tier-name">Professional</div>
<div class="tier-credits">1,200+ <span>credits / week</span></div>
<p class="tier-desc">High-volume participation as a primary or major income source. Dedicated Zoomers who operate in dense mission areas and build systematic coverage routes.</p>
<div class="tier-features">
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>20+ missions per week</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Multiple weekly payouts possible</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Elite recognition milestones</span>
</div>
<div class="tier-feature">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span>Priority mission access</span>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- RECOGNITION MILESTONES -->
<section id="milestones" class="section-pad">
<div class="container">
<div class="section-header fade-in">
<h2>Recognition milestones</h2>
<p>Every contribution matters. These milestones mark the moments when your impact becomes undeniable.</p>
</div>
<div class="milestones-list">
<div class="milestone-item fade-in">
<div class="milestone-count">10 <small>zooms</small></div>
<div class="milestone-content">
<h3>First Steps</h3>
<p>"You've completed your first ten zooms. Every major contribution starts with a first step. Thank you for helping create a more accurate view of the world around us."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" 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"/><polyline points="12 6 12 12 16 14"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">25 <small>zooms</small></div>
<div class="milestone-content">
<h3>Gaining Ground</h3>
<p>"Twenty-five zooms completed. You are beginning to build something real. Your contributions are being used, verified, and trusted by the people and organisations that depend on accurate field data."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">50 <small>zooms</small></div>
<div class="milestone-content">
<h3>Momentum Builder</h3>
<p>"Fifty completed zooms. Your contributions are becoming part of something bigger. The world becomes more accurate every time people like you choose to participate."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">100 <small>zooms</small></div>
<div class="milestone-content">
<h3>Trusted Contributor</h3>
<p>"One hundred completed zooms. You are now among the most active contributors in the quiXzoom community. Thank you for helping improve the quality of information used by others every day."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">250 <small>zooms</small></div>
<div class="milestone-content">
<h3>Field Specialist</h3>
<p>"Two hundred and fifty completed zooms. Your consistency and dedication have made a measurable impact. Very few people contribute at this level."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="2"/><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20z"/><path d="M12 8v4M12 16h.01"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">500 <small>zooms</small></div>
<div class="milestone-content">
<h3>Community Guardian</h3>
<p>"Five hundred completed zooms. You have become a trusted force within the quiXzoom network. Your work helps keep information current, accurate and reliable."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">1,000 <small>zooms</small></div>
<div class="milestone-content">
<h3>Elite Zoomer</h3>
<p>"One thousand completed zooms. This is a milestone reached by only a small fraction of contributors. You are helping build something that extends far beyond individual missions."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 4l3 12h14l3-12-6 7-4-7-4 7-6-7z"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">2,500 <small>zooms</small></div>
<div class="milestone-content">
<h3>Master Observer</h3>
<p>"Two thousand five hundred zooms. You have now contributed more observations than the vast majority of participants ever will. Your footprint on the quiXzoom network is extraordinary — a living record of the world as it actually is."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" 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>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">5,000 <small>zooms</small></div>
<div class="milestone-content">
<h3>Legend</h3>
<p>"Five thousand zooms. This number belongs to an extremely rare group of contributors — people who turned a simple app into a sustained commitment to accuracy, community, and collective intelligence. You are part of quiXzoom's foundation."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>
</div>
</div>
<div class="milestone-item fade-in">
<div class="milestone-count">10,000 <small>zooms</small></div>
<div class="milestone-content">
<h3>World Builder</h3>
<p>"Ten thousand completed zooms. You have now performed more missions than anyone in the history of the quiXzoom network. Thank you for helping build the world's most updated reality layer — one verified observation at a time."</p>
</div>
<div class="milestone-badge">
<svg width="20" height="20" 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>
</div>
</div>
</div>
</div>
</section>
<!-- PAYOUT MECHANICS -->
<section id="payout" class="section-pad">
<div class="container">
<div class="section-header fade-in">
<h2>Payout mechanics</h2>
<p>Getting paid is straightforward. Set up once, get paid weekly.</p>
</div>
<div class="payout-steps fade-in">
<div class="pstep">
<div class="pstep-num">1</div>
<h3>Verify identity once</h3>
<p>Complete a one-time identity verification via the app. This is required by Stripe for regulated financial payouts and takes a few minutes.</p>
</div>
<div class="pstep">
<div class="pstep-num">2</div>
<h3>Connect payout account</h3>
<p>Link your bank account or preferred local payout method via Stripe Connect. Your financial details are held securely by Stripe — quiXzoom never stores them.</p>
</div>
<div class="pstep">
<div class="pstep-num">3</div>
<h3>Reach 250 credits</h3>
<p>Keep completing missions. When your balance reaches 250 QX Credits, you are automatically queued for the next payout cycle.</p>
</div>
<div class="pstep">
<div class="pstep-num">4</div>
<h3>Paid every Monday</h3>
<p>Payouts are processed weekly on Mondays. Funds typically arrive in your account within 13 business days depending on your local bank and country.</p>
</div>
</div>
<div class="payout-methods fade-in">
<div class="pmethod">
<div class="pmethod-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="14" rx="2"/><polyline points="3 10 21 10"/></svg>
</div>
<h4>Bank transfer</h4>
<p>Direct deposit to your local bank account. Available in all supported markets via Stripe Connect standard bank transfers.</p>
</div>
<div class="pmethod">
<div class="pmethod-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="5" y="2" width="14" height="20" rx="2"/><line x1="12" y1="18" x2="12.01" y2="18"/></svg>
</div>
<h4>Local payment methods</h4>
<p>In select markets, additional local payout options are available including mobile wallets and instant transfer services. Check the app for what is available in your country.</p>
</div>
<div class="pmethod">
<div class="pmethod-icon">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
</div>
<h4>Stripe Connect — secure</h4>
<p>All payouts are processed through Stripe Connect, a regulated payment infrastructure used by millions of platforms globally. Your financial data is protected by Stripe's security standards.</p>
</div>
</div>
</div>
</section>
<!-- TAX INFORMATION -->
<section id="tax" class="section-pad">
<div class="container">
<div class="section-header fade-in">
<h2>Tax information</h2>
<p>A few important things to know about your earnings and tax obligations.</p>
</div>
<div class="tax-notice fade-in">
<div class="tax-notice-icon">
<svg width="28" height="28" 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="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
</div>
<h3>Your earnings are taxable income</h3>
<p>Earnings received as a Zoomer constitute income in most jurisdictions. As an independent contractor, you are responsible for declaring your earnings to your local tax authority and paying any applicable income tax, self-employment tax, or social contributions.</p>
<p>quiXzoom does not withhold taxes on your behalf. We do not act as your employer for tax purposes. What you receive is the full gross amount of your earned credits converted to your local currency.</p>
<p>In markets where platform income reporting is legally required — including under EU DAC7 regulations — quiXzoom may be required to report your earnings to the relevant tax authority. You can review the applicable reporting obligations in our <a href="/terms#dac7">DAC7 disclosure</a>.</p>
<p>We recommend consulting a local tax advisor if you are unsure of your obligations. The <a href="/glossary">quiXzoom glossary</a> also contains information about contractor status and platform income classification.</p>
</div>
</div>
</section>
<!-- FAQ -->
<section id="faq" class="section-pad">
<div class="container">
<div class="section-header fade-in">
<h2>Frequently asked questions</h2>
<p>Everything you need to know about how credits, payouts, and earnings work.</p>
</div>
<div class="faq-list fade-in">
<div class="faq-item">
<button class="faq-q" aria-expanded="false" onclick="toggleFaq(this)">
How are credits calculated?
<svg class="faq-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a">
Each mission in the quiXzoom app displays a fixed credit value before you accept it. The credit value of a mission is determined by factors including the complexity of the required documentation, the number of photos required, and the mission type. Standard infrastructure missions typically reward 1240 credits. Premium or detailed missions can reward up to 80 credits. Credits are added to your balance automatically when your submission is reviewed and approved.
</div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false" onclick="toggleFaq(this)">
When do I get paid?
<svg class="faq-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a">
Payouts are processed every Monday for all Zoomers whose credit balance has reached 250 or more at the time of the payout run. Once processed, funds typically arrive in your bank account within 13 business days depending on your local bank and country. You will receive a notification in the app when your payout has been initiated.
</div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false" onclick="toggleFaq(this)">
Do credits expire?
<svg class="faq-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a">
No. QX Credits never expire. Your balance is preserved indefinitely regardless of how long you go between active periods. Whether you complete missions every day or return after months away, every credit you have earned is still in your account.
</div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false" onclick="toggleFaq(this)">
What is the minimum payout?
<svg class="faq-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a">
The minimum payout threshold is 250 QX Credits. If your balance is below 250 at the time of the weekly payout run, your credits carry over automatically to the following week. There is no penalty for not reaching the threshold — your credits simply accumulate until you do.
</div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false" onclick="toggleFaq(this)">
Is there a fee for receiving payouts?
<svg class="faq-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a">
quiXzoom does not charge any platform fee or commission. The full value of your earned QX Credits is paid out to you. Standard Stripe Connect processing may apply depending on your bank and country, but quiXzoom does not add any additional fees on top of what you earned.
</div>
</div>
<div class="faq-item">
<button class="faq-q" aria-expanded="false" onclick="toggleFaq(this)">
What do recognition milestones unlock?
<svg class="faq-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"/></svg>
</button>
<div class="faq-a">
Recognition milestones are earned by completing a cumulative number of approved zooms over your lifetime on the platform. They are a measure of your contribution and dedication — not a paid tier or subscription. Each milestone comes with a unique title, a personal recognition message in the app, and is permanently recorded in your Zoomer profile. Future features may build on milestone status for priority mission access and community roles.
</div>
</div>
</div>
</div>
</section>
<!-- CTA STRIP -->
<section class="cta-strip">
<div class="container">
<h2>Ready to start earning?</h2>
<p>Join thousands of Zoomers and help build the world's most accurate field data network.</p>
<a href="https://app.quixzoom.com/join" class="btn-cta-white">
Join as a Zoomer
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
</div>
</section>
</main>
<!-- FOOTER -->
<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="/earn/">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">API overview</a></li>
<li><a href="/developer/#quickstart">Quick start</a></li>
<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="/glossary">Glossary</a></li>
<li><a href="/security">Security &amp; trust</a></li>
<li><a href="/about">About quiXzoom</a></li>
<li><a href="/support">Support centre</a></li>
<li><a href="/reviews">Reviews</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>
<div style="border-bottom:1px solid rgba(255,255,255,.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/earn/" class="flang active">EN</a>
<a href="/markets/se/" class="flang">SV</a>
<a href="/markets/nl/" class="flang">NL</a>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">DE</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">FR</span>
<span class="flang" style="opacity:.35;cursor:default" title="Coming soon">IT</span>
</div>
<div class="footer-legal-links">
<a href="/privacy">Privacy</a>
<a href="/terms">Terms</a>
<a href="/security">Security</a>
</div>
<div class="footer-copy">&copy; 2026 quiXzoom. All rights reserved.</div>
</div>
</div>
</footer>
<script>
function toggleMobile(btn) {
btn.classList.toggle('open');
document.getElementById('mobile-menu').classList.toggle('open');
}
function toggleFaq(btn) {
const expanded = btn.getAttribute('aria-expanded') === 'true';
// Close all
document.querySelectorAll('.faq-q').forEach(q => {
q.setAttribute('aria-expanded', 'false');
q.nextElementSibling.classList.remove('open');
});
if (!expanded) {
btn.setAttribute('aria-expanded', 'true');
btn.nextElementSibling.classList.add('open');
}
}
// Scroll fade-in
const observer = new IntersectionObserver((entries) => {
entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('visible'); } });
}, { threshold: 0.1, rootMargin: '0px 0px -40px 0px' });
document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));
</script>
</body>
</html>