Files
boc/landvex-all/coverage/index.html
T
Bernt 6989a98d75 feat: Passwordless cross-device authentication
- 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
2026-07-07 07:11:50 +00:00

337 lines
18 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Coverage — Landvex</title>
<meta name="description" content="Landvex field observation coverage across 20+ countries. Launch markets August 2026: Sweden, Germany, France, Netherlands, Italy, UK, USA, Thailand.">
<meta property="og:title" content="Coverage — Landvex">
<meta property="og:description" content="Field observation coverage across 20+ countries at launch. Coverage density varies by geography and mission activity.">
<meta property="og:url" content="https://landvex.com/coverage/">
<link rel="canonical" href="https://landvex.com/coverage/">
<meta name="robots" content="index, follow">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="stylesheet" href="/assets/css/landvex-complete.css">
<style>
:root {
--bg: #0a0a0f;
--bg-dark: #06060a;
--surface: #111118;
--border: rgba(0,0,0,0.08);
--border-hover: rgba(0,102,255,0.4);
--blue: #0066ff;
--blue-dark: #0052cc;
--text: #f0f0f5;
--text-dim: rgba(240,240,245,0.7);
--text-muted: rgba(240,240,245,0.4);
--green: #34c759;
--radius-lg: 16px;
--radius-md: 10px;
--font: -apple-system, "SF Pro Text", "Helvetica Neue", Inter, sans-serif;
--font-display: -apple-system, "SF Pro Display", "Helvetica Neue", Inter, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; -webkit-font-smoothing: antialiased; }
html { scroll-behavior: smooth; }
body { font-family: var(--font); background: var(--bg); color: var(--text); line-height: 1.6; }
nav {
position: sticky; top: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 0 40px; height: 60px;
background: rgba(255,255,255,0.92); backdrop-filter: blur(12px);
border-bottom: 1px solid var(--border);
}
.nav-logo {
font-size: 18px;
font-weight: 700;
letter-spacing: -0.3px;
color: #1d1d1f; text-decoration: none; letter-spacing: -0.3px; }
.nav-links { display: flex; list-style: none; gap: 16px; align-items: center; }
.nav-links a { color: var(--text-dim); text-decoration: none; font-size: 14px; padding: 24px; border-radius: var(--radius-sm); transition: color 0.2s; }
.nav-links a:hover { color: #1d1d1f; }
.nav-dropdown { position: relative; }
.nav-dropdown > a::after { content: " "; display: inline-block; border: 4px solid transparent; border-top-color: currentColor; margin-left: 4px; vertical-align: 2px; transition: transform 0.2s; }
.nav-dropdown-menu { display: none; position: absolute; top: calc(100% + 8px); left: 0; min-width: 200px; background: #1a1a24; border: 1px solid var(--border); border-radius: var(--radius-md); padding: 8px 0; }
.nav-dropdown:hover .nav-dropdown-menu, .nav-dropdown:focus-within .nav-dropdown-menu { display: block; }
.nav-dropdown-menu a { display: block; padding: 24px; color: var(--text-dim); font-size: 14px; text-decoration: none; white-space: nowrap; }
.nav-dropdown-menu a:hover { color: #1d1d1f; background: rgba(0,0,0,0.03); }
.nav-dropdown-menu .dd-label { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); padding: 24px 4px; }
.nav-dropdown-menu hr { border: none; border-top: 1px solid var(--border); margin: 6px 0; }
.btn { display: inline-flex; align-items: center; gap: 16px; background: var(--blue); color: #1d1d1f; font-size: 14px; font-weight: 600; padding: 24px; border-radius: var(--radius-md); text-decoration: none; border: none; cursor: pointer; transition: background 0.2s, transform 0.15s; font-family: inherit; }
.btn:hover { background: var(--blue-dark); transform: translateY(-1px); }
.btn-outline { background: transparent; border: 1.5px solid rgba(0,0,0,0.2); }
.btn-outline:hover { background: rgba(0,0,0,0.04); }
.container { max-width: 1100px; margin: 0 auto; padding: 0 40px; }
.page-header { padding: 80px 0 56px; border-bottom: 1px solid var(--border); }
.page-header .eyebrow { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: var(--blue); margin-bottom: 24px; }
.page-header h1 { font-family: var(--font-display); font-size: clamp(2.2rem, 5vw, 3.5rem); font-weight: 700; letter-spacing: -0.03em; line-height: 1.1; color: #1d1d1f; }
.page-header .sub { font-size: 1.1rem; color: var(--text-dim); margin-top: 16px; max-width: 580px; }
section { padding: 64px 0; border-bottom: 1px solid var(--border); }
section:last-of-type { border-bottom: none; }
.section-label { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: var(--blue); margin-bottom: 24px; }
.section-title { font-family: var(--font-display); font-size: 1.6rem; font-weight: 700; letter-spacing: -0.02em; color: #1d1d1f; margin-bottom: 12px; }
.section-body { font-size: 16px; color: var(--text-dim); max-width: 640px; line-height: 1.7; }
/* Markets grid */
.markets-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 16px; margin-top: 32px; }
.market-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 24px; display: flex; align-items: center; gap: 16px; }
.market-flag { font-size: 24px; }
.market-name { font-size: 14px; font-weight: 600; color: var(--text); }
.market-status { font-size: 11px; color: var(--green); margin-top: 2px; }
/* Cities */
.cities-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; margin-top: 32px; }
.city-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-md); padding: 20px; text-decoration: none; display: flex; align-items: center; justify-content: space-between; transition: border-color 0.2s, transform 0.15s; }
.city-card:hover { border-color: var(--border-hover); transform: translateY(-2px); }
.city-name { font-size: 15px; font-weight: 600; color: var(--text); }
.city-country { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.city-arrow { color: var(--text-muted); font-size: 16px; }
/* Freshness table */
.freshness-table { width: 100%; border-collapse: collapse; margin-top: 28px; }
.freshness-table th { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); text-align: left; padding: 24px; border-bottom: 1px solid var(--border); }
.freshness-table td { padding: 24px; font-size: 14px; color: var(--text-dim); border-bottom: 1px solid var(--border); }
.freshness-table tr:last-child td { border-bottom: none; }
.freshness-table .tier { font-weight: 600; color: var(--text); }
.badge { display: inline-block; padding: 24px; border-radius: var(--radius-xl); font-size: 12px; font-weight: 600; }
.badge-standard { background: rgba(0,0,0,0.08); color: var(--text-dim); }
.badge-premium { background: rgba(0,102,255,0.12); color: #5fa8ff; }
.badge-realtime { background: rgba(52,199,89,0.12); color: var(--green); }
/* CTA */
.cta-block { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 40px; display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 32px; }
.cta-block p { font-size: 16px; color: var(--text-dim); max-width: 480px; line-height: 1.6; }
footer { border-top: 1px solid var(--border); padding: 40px 0 32px; }
.footer-inner { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.footer-logo { font-family: var(--font-display); font-size: 18px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
.footer-copy { font-size: 12px; color: var(--text-muted); }
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.footer-links { display: flex; flex-wrap: wrap; gap: 16px 16px; align-items: center; justify-content: flex-end; }
.footer-links a { font-size: 13px; color: var(--text-muted); text-decoration: none; transition: color 0.2s; }
.footer-links a:hover { color: var(--text); }
.footer-social { display: inline-flex; align-items: center; padding: 4px; }
@media (max-width: 640px) {
nav { padding: 0 20px; }
.container { padding: 0 20px; }
.page-header { padding: 56px 0 40px; }
.cta-block { flex-direction: column; gap: 16px; padding: 24px; }
.footer-inner { flex-direction: column; gap: 16px; }
.footer-links { justify-content: flex-start; }
}
@media (max-width: 600px) {
.container { padding: 0 16px !important; box-sizing: border-box; }
.freshness-table { overflow-x: auto; display: block; width: 100%; }
.markets-grid { grid-template-columns: repeat(auto-fill, minmax(min(160px,100%), 1fr)); }
.cities-grid { grid-template-columns: repeat(auto-fill, minmax(min(200px,100%), 1fr)); }
}
</style>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Landvex",
"item": "https://landvex.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Coverage",
"item": "https://landvex.com/coverage/"
}
]
}
</script>
<link rel="alternate" hreflang="x-default" href="https://landvex.com/">
<link rel="alternate" hreflang="en" href="https://landvex.com/"> <link rel="alternate" hreflang="it" href="https://landvex.it/">
</head>
<body>
<nav aria-label="breadcrumb" aria-label="Main navigation">
<a href="/" >Home</a> / <span>coverage</span>
</nav>
<nav aria-label="Main navigation">
<a class="nav-logo" href="/">LandveX</a>
<ul class="nav-links">
<li><a href="/#how-it-works">How it works</a></li>
<li><a href="/#verticals">Verticals</a></li>
<li class="nav-dropdown">
<a href="/methodology/">Intelligence</a>
<div class="nav-dropdown-menu">
<div class="dd-label">Learn</div>
<a href="/methodology/">Methodology</a>
<a href="/#intelligence">Intelligence scores</a>
<hr/>
<div class="dd-label">Products</div>
<a href="/enterprise/">Enterprise</a>
<a href="/reports/">Intelligence Reports</a>
<a href="/pilot/">Pilot Programme</a>
<hr/>
<a href="/security/">Security</a>
</div>
</li>
<li><a href="/contact/">Contact</a></li>
<li><a href="/contact/">Contact</a></li>
</ul>
<a class="lv-btn lv-btn--outline" href="/contact/">Get in touch</a>
</nav>
<div class="lv-container">
<div class="page-header">
<div class="eyebrow">Coverage</div>
<h1>Where we operate.</h1>
<p class="sub">Field observation coverage across 20+ countries at launch. Coverage density varies by geography and mission activity.</p>
</div>
<section>
<div class="section-label">Launch markets</div>
<div class="section-title">August 2026</div>
<div class="section-body">Landvex launches with active observation coverage in eight markets. Additional markets are onboarded continuously as the quiXzoom contributor network expands.</div>
<div class="markets-grid">
<div class="market-card">
<div class="market-flag">&#x1F1F8;&#x1F1EA;</div>
<div><div class="market-name">Sweden</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1E9;&#x1F1EA;</div>
<div><div class="market-name">Germany</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1EB;&#x1F1F7;</div>
<div><div class="market-name">France</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1F3;&#x1F1F1;</div>
<div><div class="market-name">Netherlands</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1EE;&#x1F1F9;</div>
<div><div class="market-name">Italy</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1EC;&#x1F1E7;</div>
<div><div class="market-name">United Kingdom</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1FA;&#x1F1F8;</div>
<div><div class="market-name">USA</div><div class="market-status">Launch market</div></div>
</div>
<div class="market-card">
<div class="market-flag">&#x1F1F9;&#x1F1ED;</div>
<div><div class="market-name">Thailand</div><div class="market-status">Launch market</div></div>
</div>
</div>
</section>
<section>
<div class="section-label">Active intelligence cities</div>
<div class="section-title">Cities with structured intelligence</div>
<div class="section-body">The following cities have dedicated intelligence pages with structured data, city health indices, and commercial opportunity scores.</div>
<div class="cities-grid">
<a class="city-card" href="/cities/stockholm/">
<div><div class="city-name">Stockholm</div><div class="city-country">Sweden</div></div>
<div class="city-arrow">&rarr;</div>
</a>
<a class="city-card" href="/cities/berlin/">
<div><div class="city-name">Berlin</div><div class="city-country">Germany</div></div>
<div class="city-arrow">&rarr;</div>
</a>
<a class="city-card" href="/cities/milan/">
<div><div class="city-name">Milan</div><div class="city-country">Italy</div></div>
<div class="city-arrow">&rarr;</div>
</a>
<a class="city-card" href="/cities/amsterdam/">
<div><div class="city-name">Amsterdam</div><div class="city-country">Netherlands</div></div>
<div class="city-arrow">&rarr;</div>
</a>
</div>
</section>
<section>
<div class="section-label">Data freshness</div>
<div class="section-title">Coverage commitment</div>
<div class="section-body">Landvex publishes coverage refresh rates per market. Data freshness is part of every enterprise SLA.</div>
<table class="freshness-table">
<thead>
<tr>
<th>Tier</th>
<th>Observation window</th>
<th>Availability</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tier"><span class="badge badge-standard">Standard</span></td>
<td>Observations within 90 days</td>
<td>All markets</td>
</tr>
<tr>
<td class="tier"><span class="badge badge-premium">Premium</span></td>
<td>Observations within 30 days</td>
<td>Launch markets</td>
</tr>
<tr>
<td class="tier"><span class="badge badge-realtime">Real-time</span></td>
<td>Available for high-priority missions</td>
<td>By arrangement</td>
</tr>
</tbody>
</table>
</section>
<section id="contact">
<div class="cta-block">
<p>Need coverage details for a specific geography or market not listed here? Request a coverage briefing and we will provide an up-to-date density report.</p>
<a class="btn" href="/contact/">Request coverage details &rarr;</a>
</div>
</section>
</div>
<footer class="lv-footer" role="contentinfo">
<div class="lv-container">
<div class="footer-inner">
<div>
<div class="footer-logo">Landvex</div>
<div class="footer-copy">© 2026 Landvex AB · Org.nr 559141-7042 · Tyresö, Sweden</div>
<div class="footer-tagline">Decision intelligence for the physical world.</div>
<div>Landvex AB &middot; Org.nr 559141-7042<br>Tyres&ouml;, Sweden &middot; <a href="mailto:contact@landvex.com" >contact@landvex.com</a></div>
</div>
<div class="footer-links">
<a href="/privacy/">Privacy</a>
<a href="/terms/">Terms</a>
<a href="/methodology/">Methodology</a>
<a href="/data-quality/">Data Quality</a>
<a href="/security/">Security</a>
<a href="/cities/stockholm/">Stockholm</a>
<a href="/cities/berlin/">Berlin</a>
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom &rarr;</a>
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
<a href="mailto:security@landvex.com" >security@landvex.com</a>
<a href="https://www.linkedin.com/company/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on LinkedIn">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<rect x="2" y="9" width="4" height="12" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<circle cx="4" cy="4" r="2" stroke="#888" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<a href="https://x.com/landvex" target="_blank" rel="noopener" class="footer-social" title="LandveX on X">
<svg width="15" height="15" viewBox="0 0 24 24" fill="#888" xmlns="http://www.w3.org/2000/svg">
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-4.714-6.231-5.401 6.231H2.746l7.73-8.835L1.254 2.25H8.08l4.253 5.622 5.912-5.622Zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
</svg>
</a>
</div>
</div>
</div>
</footer>
</body>
</html>