1a12fb870b
- New /developers/ page with API docs, SDKs, pricing, use cases - OpenAPI 3.0 spec for Orders, Missions, Photos, Analytics - Case study: Glasskiosken i Flatenbadet — complete ROI analysis - Updated /order/ with recurring missions and frequency dropdown
1455 lines
64 KiB
HTML
1455 lines
64 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Landvex — Decision Intelligence for the Physical World</title>
|
||
<meta name="description" content="Landvex delivers decision intelligence for infrastructure owners, enterprises and governments. Decision intelligence for the physical world.">
|
||
<link rel="canonical" href="https://landvex.com/">
|
||
<link rel="alternate" hreflang="x-default" href="https://landvex.com/">
|
||
<link rel="alternate" hreflang="en" href="https://landvex.com/">
|
||
<link rel="alternate" hreflang="sv" href="https://landvex.se/">
|
||
<link rel="alternate" hreflang="de" href="https://landvex.de/">
|
||
<link rel="alternate" hreflang="fr" href="https://landvex.fr/">
|
||
<link rel="alternate" hreflang="en-GB" href="https://landvex.co.uk/">
|
||
<link rel="alternate" hreflang="it" href="https://landvex.it/">
|
||
|
||
<!-- Open Graph -->
|
||
<meta property="og:type" content="website">
|
||
<meta property="og:url" content="https://landvex.com/">
|
||
<meta property="og:title" content="Landvex — Decision Intelligence for the Physical World">
|
||
<meta property="og:description" content="Landvex is a Swedish-headquartered decision intelligence company with global operations. We deliver control intelligence for infrastructure owners, enterprises and governments globally.">
|
||
<meta property="og:image:width" content="1200">
|
||
<meta property="og:image:height" content="630">
|
||
<meta property="og:image" content="https://landvex.com/og-image.jpg">
|
||
<meta name="twitter:card" content="summary_large_image">
|
||
<meta name="twitter:title" content="Landvex — Decision Intelligence for the Physical World">
|
||
<meta name="twitter:description" content="Landvex is a decision intelligence platform that transforms field observations into infrastructure intelligence, urban intelligence and commercial intelligence.">
|
||
<meta name="twitter:image" content="https://landvex.com/og-image.jpg">
|
||
|
||
<!-- Favicons -->
|
||
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||
<link rel="manifest" href="/site.webmanifest">
|
||
|
||
<style>
|
||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||
|
||
:root {
|
||
--bg-dark: #f5f5f7;
|
||
--blue: #0066FF;
|
||
--blue-dark: #0052CC;
|
||
--blue-glow: rgba(0, 102, 255, 0.10);
|
||
--text-dark: #1d1d1f;
|
||
--text-body: #3a3a3a;
|
||
--text-muted: #6e6e73;
|
||
--text-light: #1d1d1f;
|
||
--text-dim: #515154;
|
||
--surface: #ffffff;
|
||
--surface-2: #f5f5f7;
|
||
--border: rgba(0,0,0,0.09);
|
||
--radius-sm: 8px;
|
||
--radius-md: 14px;
|
||
--radius-lg: 24px;
|
||
--radius-xl: 100px;
|
||
--radius-full: 9999px;
|
||
}
|
||
|
||
html { scroll-behavior: smooth; }
|
||
|
||
body {
|
||
background: #f5f5f7;
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||
color: #1d1d1f;
|
||
line-height: 1.6;
|
||
-webkit-font-smoothing: antialiased;
|
||
}
|
||
|
||
a { color: inherit; text-decoration: none; }
|
||
|
||
/* NAV */
|
||
nav {
|
||
position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
|
||
display: flex; align-items: center; justify-content: space-between;
|
||
padding: 0 40px;
|
||
height: 64px;
|
||
background: rgba(255,255,255,0.95);
|
||
backdrop-filter: blur(16px);
|
||
-webkit-backdrop-filter: blur(16px);
|
||
border-bottom: 1px solid rgba(0,0,0,0.08);
|
||
}
|
||
|
||
.nav-logo {
|
||
font-size: 18px;
|
||
font-weight: 700;
|
||
letter-spacing: -0.3px;
|
||
color: #1d1d1f;
|
||
}
|
||
|
||
.nav-links {
|
||
display: flex; gap: 32px; list-style: none;
|
||
}
|
||
|
||
.nav-links a {
|
||
font-size: 14px;
|
||
color: #4A4A4A;
|
||
transition: color 0.2s;
|
||
}
|
||
.nav-links a:hover { color: #1d1d1f; }
|
||
|
||
/* Dropdown */
|
||
.nav-dropdown { position: relative; }
|
||
.nav-dropdown > a {
|
||
display: flex; align-items: center; gap: 4px; cursor: pointer;
|
||
}
|
||
.nav-dropdown > a::after {
|
||
content: '';
|
||
display: inline-block;
|
||
width: 0; height: 0;
|
||
border-left: 4px solid transparent;
|
||
border-right: 4px solid transparent;
|
||
border-top: 4px solid currentColor;
|
||
opacity: 0.55;
|
||
margin-top: 1px;
|
||
transition: transform 0.2s;
|
||
}
|
||
.nav-dropdown:hover > a::after,
|
||
.nav-dropdown:focus-within > a::after { transform: rotate(180deg); }
|
||
.nav-dropdown-menu {
|
||
display: none;
|
||
position: absolute; top: 100%; left: 50%;
|
||
transform: translateX(-50%);
|
||
background: rgba(255,255,255,0.98);
|
||
border: 1px solid var(--border);
|
||
border-radius: var(--radius-md);
|
||
padding: 8px 0;
|
||
min-width: 220px;
|
||
max-height: calc(100vh - 80px);
|
||
overflow-y: auto;
|
||
box-shadow: 0 16px 40px rgba(0,0,0,0.12);
|
||
z-index: 9999;
|
||
backdrop-filter: blur(12px);
|
||
}
|
||
.nav-dropdown-menu::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: -12px; left: 0; right: 0;
|
||
height: 12px;
|
||
}
|
||
.nav-dropdown:hover .nav-dropdown-menu,
|
||
.nav-dropdown:focus-within .nav-dropdown-menu { display: block; }
|
||
.nav-dropdown-menu a {
|
||
display: flex; align-items: center; gap: 10px;
|
||
padding: 10px 18px;
|
||
font-size: 14px; color: #4A4A4A;
|
||
transition: color 0.15s, background 0.15s;
|
||
white-space: nowrap;
|
||
}
|
||
.nav-dropdown-menu a:hover { color: #1d1d1f; background: rgba(0,0,0,0.03); }
|
||
.nav-dropdown-menu .dd-label {
|
||
font-size: 10px; font-weight: 700; letter-spacing: 0.1em;
|
||
text-transform: uppercase; color: rgba(0,0,0,0.75);
|
||
padding: 8px 18px 4px; cursor: default;
|
||
}
|
||
.nav-dropdown-menu hr { border: none; border-top: 1px solid var(--border); margin: 6px 0; }
|
||
|
||
.btn {
|
||
display: inline-flex; align-items: center; gap: 6px;
|
||
padding: 10px 22px;
|
||
background: var(--blue);
|
||
color: #fff;
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
border-radius: var(--radius-md);
|
||
border: none;
|
||
cursor: pointer;
|
||
transition: background 0.2s, transform 0.15s;
|
||
}
|
||
.btn:hover { background: var(--blue-dark); transform: translateY(-1px); }
|
||
.btn-outline {
|
||
background: transparent;
|
||
border: 1.5px solid rgba(0,0,0,0.18);
|
||
color: #1d1d1f;
|
||
}
|
||
.btn-outline:hover { background: rgba(0,0,0,0.04); transform: translateY(-1px); }
|
||
.btn-lg { padding: 14px 30px; font-size: 16px; border-radius: var(--radius-md); }
|
||
|
||
/* HERO */
|
||
.hero {
|
||
min-height: 100vh;
|
||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||
text-align: center;
|
||
padding: 120px 24px 80px;
|
||
position: relative;
|
||
overflow: hidden;
|
||
background: #ffffff;
|
||
}
|
||
|
||
.hero::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: -200px; left: 50%; transform: translateX(-50%);
|
||
width: 900px; height: 600px;
|
||
background: radial-gradient(ellipse at center, rgba(0,102,255,0.12) 0%, transparent 70%);
|
||
pointer-events: none;
|
||
}
|
||
|
||
.hero-eyebrow {
|
||
display: inline-flex; align-items: center; gap: 8px;
|
||
background: rgba(0,102,255,0.1);
|
||
border: 1px solid rgba(0,102,255,0.25);
|
||
color: #0052CC;
|
||
font-size: 12px;
|
||
font-weight: 600;
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
padding: 6px 16px;
|
||
border-radius: 100px;
|
||
margin-bottom: 28px;
|
||
}
|
||
|
||
.hero h1 {
|
||
font-size: clamp(44px, 7vw, 80px);
|
||
font-weight: 800;
|
||
letter-spacing: -2px;
|
||
line-height: 1.05;
|
||
color: #1d1d1f;
|
||
max-width: 820px;
|
||
margin-bottom: 24px;
|
||
}
|
||
|
||
.hero-sub {
|
||
font-size: clamp(16px, 2vw, 20px);
|
||
color: #515154;
|
||
max-width: 640px;
|
||
line-height: 1.65;
|
||
margin-bottom: 40px;
|
||
}
|
||
|
||
.hero-ctas {
|
||
display: flex; gap: 14px; flex-wrap: wrap; justify-content: center;
|
||
}
|
||
|
||
.cta-secondary {
|
||
display: inline-flex; align-items: center; gap: 6px;
|
||
padding: 14px 22px;
|
||
background: transparent;
|
||
border: 1.5px solid rgba(0,0,0,0.18);
|
||
color: #1d1d1f;
|
||
font-size: 15px;
|
||
font-weight: 600;
|
||
border-radius: var(--radius-md);
|
||
transition: background 0.2s, border-color 0.2s, transform 0.15s;
|
||
text-decoration: none;
|
||
}
|
||
.cta-secondary:hover { background: rgba(0,0,0,0.04); border-color: rgba(0,102,255,0.35); color: #0066FF; transform: translateY(-1px); }
|
||
|
||
/* SECTION COMMON */
|
||
section { padding: 96px 24px; }
|
||
.container { max-width: 1140px; margin: 0 auto; }
|
||
|
||
.section-label {
|
||
font-size: 12px; font-weight: 700; letter-spacing: 0.1em;
|
||
text-transform: uppercase; color: var(--blue);
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.section-title {
|
||
font-size: clamp(28px, 4vw, 44px);
|
||
font-weight: 800;
|
||
letter-spacing: -1.2px;
|
||
line-height: 1.1;
|
||
color: #1d1d1f;
|
||
margin-bottom: 16px;
|
||
}
|
||
|
||
.section-sub {
|
||
font-size: 17px;
|
||
color: #515154;
|
||
max-width: 560px;
|
||
line-height: 1.7;
|
||
}
|
||
|
||
/* GRID CARDS */
|
||
.card-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 20px;
|
||
}
|
||
@media(max-width:768px){ .card-grid { grid-template-columns: 1fr 1fr; } }
|
||
@media(max-width:480px){ .card-grid { grid-template-columns: 1fr; } }
|
||
|
||
.card {
|
||
background: #fff;
|
||
border: 1px solid rgba(0,0,0,0.08);
|
||
border-radius: var(--radius-lg);
|
||
padding: 32px 28px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 12px;
|
||
text-decoration: none;
|
||
color: inherit;
|
||
transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.2s ease;
|
||
cursor: pointer;
|
||
}
|
||
.card:hover {
|
||
transform: translateY(-2px);
|
||
box-shadow: 0 8px 24px rgba(0,0,0,0.12);
|
||
border-color: rgba(0,102,255,0.3);
|
||
}
|
||
|
||
.card-icon {
|
||
width: 44px; height: 44px;
|
||
background: rgba(0,102,255,0.08);
|
||
border: 1px solid rgba(0,102,255,0.18);
|
||
border-radius: var(--radius-md);
|
||
display: flex; align-items: center; justify-content: center;
|
||
font-size: 20px;
|
||
margin-bottom: 8px;
|
||
}
|
||
|
||
.card h3 {
|
||
font-size: 16px;
|
||
font-weight: 700;
|
||
color: #1d1d1f;
|
||
margin: 0;
|
||
letter-spacing: -0.3px;
|
||
}
|
||
|
||
.card p {
|
||
font-size: 14px;
|
||
color: #515154;
|
||
line-height: 1.5;
|
||
margin: 0;
|
||
}
|
||
|
||
.card-link {
|
||
font-size: 13px;
|
||
font-weight: 700;
|
||
color: #0066FF;
|
||
margin-top: auto;
|
||
padding-top: 8px;
|
||
}
|
||
|
||
/* PROCESS STEPS */
|
||
.process-steps {
|
||
display: grid;
|
||
grid-template-columns: repeat(4, 1fr);
|
||
gap: 24px;
|
||
position: relative;
|
||
max-width: 1000px;
|
||
margin: 0 auto;
|
||
}
|
||
.process-steps::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 28px; left: 12.5%; right: 12.5%;
|
||
height: 1px;
|
||
background: linear-gradient(90deg, transparent, var(--blue) 20%, var(--blue) 80%, transparent);
|
||
opacity: 0.3;
|
||
}
|
||
@media(max-width:900px){ .process-steps { grid-template-columns: 1fr 1fr; } .process-steps::before { display: none; } }
|
||
@media(max-width:640px){ .process-steps { grid-template-columns: 1fr; gap: 16px; } }
|
||
|
||
.step {
|
||
text-align: center;
|
||
padding: 32px 24px;
|
||
position: relative;
|
||
background: #ffffff;
|
||
border: 1px solid rgba(0,0,0,0.08);
|
||
border-radius: var(--radius-lg);
|
||
transition: transform .15s, border-color .15s;
|
||
}
|
||
.step:hover { transform: translateY(-3px); border-color: rgba(0,102,255,0.4); }
|
||
|
||
.step-num {
|
||
width: 48px; height: 48px;
|
||
border-radius: var(--radius-full);
|
||
background: rgba(0,102,255,0.08);
|
||
border: 2px solid #0066FF;
|
||
display: flex; align-items: center; justify-content: center;
|
||
font-size: 16px; font-weight: 800;
|
||
color: #0066FF;
|
||
margin: 0 auto 20px;
|
||
position: relative; z-index: 1;
|
||
}
|
||
|
||
.step h3 { font-size: 16px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||
.step p { font-size: 14px; color: #515154; line-height: 1.6; }
|
||
|
||
/* PIPELINE */
|
||
.pipeline {
|
||
display: flex; align-items: center; justify-content: center;
|
||
gap: 0; margin: 32px 0 40px;
|
||
overflow-x: auto; padding: 0 8px;
|
||
}
|
||
.pipeline-step {
|
||
display: flex; flex-direction: column; align-items: center;
|
||
gap: 8px; min-width: 88px;
|
||
}
|
||
.pipeline-icon {
|
||
width: 52px; height: 52px;
|
||
border-radius: var(--radius-lg);
|
||
background: rgba(0,102,255,0.08);
|
||
border: 1px solid rgba(0,102,255,0.18);
|
||
display: flex; align-items: center; justify-content: center;
|
||
flex-shrink: 0;
|
||
}
|
||
.pipeline-label {
|
||
font-size: 11px; font-weight: 700;
|
||
color: #515154; text-align: center;
|
||
letter-spacing: 0.02em; line-height: 1.3;
|
||
}
|
||
.pipeline-connector {
|
||
width: 32px; height: 2px;
|
||
background: linear-gradient(90deg, rgba(0,102,255,0.3), rgba(0,102,255,0.1));
|
||
flex-shrink: 0; margin-top: -22px;
|
||
align-self: flex-start; margin-left: 0;
|
||
position: relative; top: -26px;
|
||
}
|
||
@media(max-width:600px){ .pipeline { justify-content: flex-start; } .pipeline-connector { width: 20px; } }
|
||
@media(max-width:480px){ .pipeline-step { min-width: 56px; } .pipeline-label { font-size: 9px; } .pipeline-icon { width: 38px; height: 38px; } .pipeline-connector { width: 10px; } }
|
||
|
||
/* INTEL CARDS */
|
||
.intel-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(2, 1fr);
|
||
gap: 20px;
|
||
margin-top: 40px;
|
||
}
|
||
@media(max-width:768px){ .intel-grid { grid-template-columns: 1fr; } }
|
||
|
||
.intel-card {
|
||
background: #ffffff;
|
||
border: 1px solid rgba(0,0,0,0.08);
|
||
border-radius: var(--radius-lg);
|
||
padding: 32px;
|
||
text-decoration: none;
|
||
color: inherit;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 24px;
|
||
transition: border-color 0.2s, transform 0.2s;
|
||
cursor: pointer;
|
||
}
|
||
.intel-card:hover {
|
||
border-color: rgba(0,102,255,0.35);
|
||
transform: translateY(-2px);
|
||
box-shadow: 0 8px 24px rgba(0,0,0,0.12);
|
||
}
|
||
|
||
.intel-header {
|
||
display: flex; align-items: flex-start; justify-content: space-between;
|
||
}
|
||
.intel-module {
|
||
font-size: 11px; font-weight: 700;
|
||
letter-spacing: 0.1em; text-transform: uppercase;
|
||
color: #0066FF; margin-bottom: 6px;
|
||
}
|
||
.intel-card h3 {
|
||
font-size: 17px; font-weight: 800;
|
||
color: #1d1d1f; margin: 0;
|
||
}
|
||
.intel-geo {
|
||
font-size: 12px; color: #515154; margin-top: 2px;
|
||
}
|
||
.intel-tag {
|
||
font-size: 10px; font-weight: 700;
|
||
letter-spacing: 0.06em; text-transform: uppercase;
|
||
padding: 3px 9px; border-radius: 100px; white-space: nowrap;
|
||
}
|
||
.intel-tag-live { background: rgba(0,200,83,0.12); color: #00C853; border: 1px solid rgba(0,200,83,0.2); }
|
||
.intel-tag-risk { background: rgba(255,59,48,0.1); color: #FF3B30; border: 1px solid rgba(255,59,48,0.2); }
|
||
.intel-tag-pred { background: rgba(0,102,255,0.12); color: #0066FF; border: 1px solid rgba(0,102,255,0.2); }
|
||
|
||
.intel-kpis {
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 12px;
|
||
}
|
||
.intel-kpi {
|
||
background: rgba(0,0,0,0.03);
|
||
border-radius: var(--radius-md);
|
||
padding: 10px 12px;
|
||
}
|
||
.intel-kpi-val {
|
||
font-size: 19px; font-weight: 900;
|
||
color: #1d1d1f; letter-spacing: -0.03em; line-height: 1;
|
||
}
|
||
.intel-kpi-delta {
|
||
font-size: 11px; font-weight: 700; margin-top: 3px;
|
||
}
|
||
.intel-kpi-delta.up { color: #00C853; }
|
||
.intel-kpi-delta.down { color: #FF3B30; }
|
||
.intel-kpi-lbl {
|
||
font-size: 10px; color: #6e6e73;
|
||
margin-top: 2px; line-height: 1.3;
|
||
}
|
||
|
||
.intel-bars {
|
||
display: flex; flex-direction: column; gap: 7px;
|
||
}
|
||
.intel-bar-row {
|
||
display: flex; align-items: center; gap: 10px;
|
||
}
|
||
.intel-bar-name {
|
||
font-size: 12px; color: #515154;
|
||
min-width: 110px; white-space: nowrap;
|
||
overflow: hidden; text-overflow: ellipsis;
|
||
}
|
||
.intel-bar-track {
|
||
flex: 1; height: 5px;
|
||
background: rgba(0,0,0,0.06);
|
||
border-radius: var(--radius-sm);
|
||
overflow: hidden;
|
||
}
|
||
.intel-bar-fill {
|
||
height: 100%; border-radius: var(--radius-sm);
|
||
background: #0066FF;
|
||
}
|
||
.intel-bar-fill.risk { background: #FF3B30; }
|
||
.intel-bar-fill.opp { background: #00C853; }
|
||
.intel-bar-score {
|
||
font-size: 11px; font-weight: 700;
|
||
color: #515154; min-width: 28px; text-align: right;
|
||
}
|
||
|
||
.intel-footer {
|
||
display: flex; align-items: center;
|
||
justify-content: space-between;
|
||
padding-top: 16px;
|
||
border-top: 1px solid rgba(0,0,0,0.06);
|
||
margin-top: auto;
|
||
}
|
||
.intel-obs {
|
||
font-size: 11px; color: #6e6e73;
|
||
}
|
||
.intel-cta {
|
||
font-size: 12px; font-weight: 700;
|
||
color: #0066FF; display: flex;
|
||
align-items: center; gap: 4px;
|
||
}
|
||
|
||
/* MAP */
|
||
.map-frame {
|
||
border-radius: var(--radius-lg);
|
||
overflow: hidden;
|
||
border: 1px solid rgba(0,0,0,0.1);
|
||
box-shadow: 0 8px 32px rgba(0,0,0,0.10);
|
||
}
|
||
.map-iframe {
|
||
width: 100%;
|
||
height: min(68vh, 560px);
|
||
min-height: 320px;
|
||
border: none;
|
||
display: block;
|
||
}
|
||
.map-bar {
|
||
background: rgba(0,0,0,0.97);
|
||
padding: 14px 20px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
gap: 16px;
|
||
flex-wrap: wrap;
|
||
border-top: 1px solid rgba(255,255,255,0.07);
|
||
}
|
||
.map-bar-left {
|
||
display: flex; align-items: center; gap: 10px; flex: 1; min-width: 0;
|
||
}
|
||
.map-dot {
|
||
width: 6px; height: 6px;
|
||
border-radius: var(--radius-full);
|
||
background: #22c55e; flex-shrink: 0;
|
||
}
|
||
.map-bar-text {
|
||
font-size: 13px; color: #4A4A4A;
|
||
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
||
}
|
||
|
||
/* TAGS */
|
||
.tag-row {
|
||
display: flex; flex-wrap: wrap;
|
||
gap: 8px; justify-content: center;
|
||
margin-top: 20px;
|
||
}
|
||
.tag {
|
||
font-size: 12px; font-weight: 600;
|
||
background: rgba(0,0,0,0.05);
|
||
color: rgba(0,0,0,0.4);
|
||
border-radius: var(--radius-xl);
|
||
padding: 5px 13px;
|
||
border: 1px solid rgba(0,0,0,0.07);
|
||
}
|
||
|
||
/* SCORE TABLE */
|
||
.score-table-wrap { margin-top: 48px; overflow-x: auto; }
|
||
.score-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
||
.score-table th {
|
||
text-align: center; padding: 10px 8px;
|
||
font-weight: 700; color: rgba(0,0,0,0.75);
|
||
font-size: 11px; text-transform: uppercase;
|
||
letter-spacing: 0.06em;
|
||
}
|
||
.score-table th:first-child { text-align: left; padding-left: 0; }
|
||
.score-table td {
|
||
padding: 12px 8px;
|
||
border-bottom: 1px solid rgba(0,0,0,0.07);
|
||
text-align: center;
|
||
}
|
||
.score-table td:first-child {
|
||
text-align: left; font-weight: 700;
|
||
color: #1d1d1f; padding-left: 0;
|
||
font-size: 14px;
|
||
}
|
||
.score-table tr:last-child td { border-bottom: none; }
|
||
|
||
.score-pill {
|
||
font-weight: 800; padding: 4px 10px;
|
||
border-radius: 20px; font-size: 13px;
|
||
}
|
||
.score-green { background: #dcfce7; color: #166534; }
|
||
.score-yellow { background: #fef9c3; color: #854d0e; }
|
||
.score-red { background: #fee2e2; color: #991b1b; }
|
||
|
||
/* CONTRADICTION */
|
||
.contradiction-box {
|
||
background: #ffffff;
|
||
border: 1px solid rgba(0,0,0,0.08);
|
||
border-radius: var(--radius-lg);
|
||
padding: 36px 40px;
|
||
}
|
||
.contradiction-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 16px;
|
||
}
|
||
@media(max-width:640px){ .contradiction-grid { grid-template-columns: 1fr; } }
|
||
|
||
.contra-col {
|
||
border-radius: var(--radius-md);
|
||
padding: 16px;
|
||
}
|
||
.contra-col.green {
|
||
background: rgba(34,197,94,0.15);
|
||
border: 1px solid rgba(34,197,94,0.3);
|
||
}
|
||
.contra-col.red {
|
||
background: rgba(239,68,68,0.15);
|
||
border: 1px solid rgba(239,68,68,0.3);
|
||
}
|
||
.contra-col h4 {
|
||
font-size: 12px; font-weight: 700;
|
||
text-transform: uppercase; letter-spacing: 0.08em;
|
||
margin-bottom: 10px;
|
||
}
|
||
.contra-col.green h4 { color: #0d5c1d; }
|
||
.contra-col.red h4 { color: #7f1d1d; }
|
||
.contra-col ul {
|
||
list-style: none; padding: 0; margin: 0;
|
||
display: flex; flex-direction: column; gap: 6px;
|
||
}
|
||
.contra-col li {
|
||
color: #1d1d1f; font-size: 14px;
|
||
display: flex; align-items: center; gap: 6px;
|
||
}
|
||
|
||
/* BANNER */
|
||
.banner {
|
||
background: #0066FF;
|
||
border-radius: var(--radius-lg);
|
||
padding: 40px 48px;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 48px;
|
||
flex-wrap: wrap;
|
||
}
|
||
.banner-text { flex: 1; min-width: 260px; }
|
||
.banner-text h3 {
|
||
color: #ffffff;
|
||
font-size: 20px; font-weight: 800;
|
||
margin-bottom: 8px;
|
||
}
|
||
.banner-text p {
|
||
color: rgba(255,255,255,0.85);
|
||
line-height: 1.65; font-size: 15px;
|
||
}
|
||
.banner-btn {
|
||
background: #fff !important;
|
||
color: #0066FF !important;
|
||
white-space: nowrap;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
/* CONTACT */
|
||
.contact-wrapper {
|
||
max-width: 680px;
|
||
margin: 0 auto;
|
||
text-align: center;
|
||
}
|
||
|
||
.contact-form {
|
||
background: #ffffff;
|
||
border: 1px solid var(--border);
|
||
border-radius: var(--radius-lg);
|
||
padding: 40px;
|
||
text-align: left;
|
||
margin-top: 32px;
|
||
}
|
||
|
||
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
|
||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||
.form-group label { font-size: 13px; font-weight: 600; color: #4A4A4A; }
|
||
.form-group input, .form-group textarea {
|
||
background: #f5f5f7;
|
||
border: 1.5px solid var(--border);
|
||
border-radius: var(--radius-md);
|
||
color: #1d1d1f;
|
||
font-size: 15px;
|
||
font-family: inherit;
|
||
padding: 12px 16px;
|
||
outline: none;
|
||
transition: border-color 0.2s;
|
||
width: 100%;
|
||
}
|
||
.form-group input:focus, .form-group textarea:focus { border-color: var(--blue); }
|
||
.form-group input::placeholder, .form-group textarea::placeholder { color: #6E6E73; }
|
||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||
.form-note { font-size: 12px; color: #6E6E73; margin-top: 12px; text-align: center; }
|
||
|
||
#form-message {
|
||
display: none;
|
||
padding: 14px 20px;
|
||
border-radius: var(--radius-md);
|
||
font-size: 14px;
|
||
font-weight: 600;
|
||
text-align: center;
|
||
margin-top: 16px;
|
||
}
|
||
#form-message.success { background: rgba(0,200,80,0.1); border: 1px solid rgba(0,200,80,0.25); color: #4ade80; }
|
||
#form-message.error { background: rgba(255,60,60,0.1); border: 1px solid rgba(255,60,60,0.25); color: #f87171; }
|
||
|
||
/* FOOTER */
|
||
footer {
|
||
border-top: 1px solid var(--border);
|
||
padding: 40px 40px;
|
||
background: #ffffff;
|
||
}
|
||
.footer-inner {
|
||
max-width: 1140px; margin: 0 auto;
|
||
display: flex; align-items: center; justify-content: space-between;
|
||
flex-wrap: wrap; gap: 20px;
|
||
}
|
||
.footer-logo { font-size: 17px; font-weight: 700; color: #1d1d1f; }
|
||
.footer-copy { font-size: 13px; color: #6E6E73; }
|
||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||
.footer-links a { font-size: 14px; color: #6E6E73; transition: color 0.2s; }
|
||
.footer-links a:hover { color: #1d1d1f; }
|
||
.footer-social {
|
||
width: 32px; height: 32px;
|
||
border: 1px solid var(--border);
|
||
border-radius: var(--radius-md);
|
||
display: flex; align-items: center; justify-content: center;
|
||
transition: border-color 0.2s, background 0.2s;
|
||
}
|
||
.footer-social:hover { border-color: rgba(0,0,0,0.25); background: rgba(0,0,0,0.04); }
|
||
.footer-tagline { font-size: 12px; color: #6E6E73; margin-top: 4px; }
|
||
.footer-ecosystem {
|
||
font-size: 12px; color: #6e6e73; margin-top: 12px; line-height: 1.5;
|
||
}
|
||
.footer-ecosystem a { color: #0066FF; text-decoration: none; }
|
||
.footer-ecosystem a:hover { text-decoration: underline; }
|
||
|
||
/* RESPONSIVE */
|
||
@media (max-width: 900px) {
|
||
nav { padding: 0 16px; }
|
||
.nav-links { display: none; }
|
||
.card-grid { grid-template-columns: 1fr 1fr; }
|
||
.process-steps { grid-template-columns: 1fr 1fr; }
|
||
.process-steps::before { display: none; }
|
||
}
|
||
|
||
@media (max-width: 640px) {
|
||
.hero h1 { font-size: clamp(28px, 8vw, 48px); }
|
||
.hero-sub { font-size: 16px; }
|
||
.hero-ctas { flex-direction: column; gap: 12px; }
|
||
.hero-ctas a { width: 100%; text-align: center; }
|
||
.section-title { font-size: clamp(22px, 6vw, 36px); }
|
||
.card-grid { grid-template-columns: 1fr; }
|
||
.process-steps { grid-template-columns: 1fr; }
|
||
.form-row { grid-template-columns: 1fr; }
|
||
.contact-form { padding: 24px 20px; }
|
||
.footer-inner { flex-direction: column; text-align: center; }
|
||
.banner { padding: 24px; }
|
||
.contradiction-box { padding: 24px; }
|
||
}
|
||
|
||
@media (max-width: 480px) {
|
||
section { padding: 56px 16px; }
|
||
.hero { padding: 80px 16px 60px; }
|
||
.container { padding: 0 !important; }
|
||
}
|
||
|
||
/* Utility */
|
||
.text-center { text-align: center; }
|
||
.mx-auto { margin-left: auto; margin-right: auto; }
|
||
.mb-4 { margin-bottom: 16px; }
|
||
.mb-6 { margin-bottom: 24px; }
|
||
.mb-8 { margin-bottom: 32px; }
|
||
.mb-14 { margin-bottom: 56px; }
|
||
.mt-8 { margin-top: 32px; }
|
||
.max-w-lg { max-width: 560px; }
|
||
.max-w-xl { max-width: 640px; }
|
||
.max-w-2xl { max-width: 900px; }
|
||
|
||
.bg-white { background: #ffffff; }
|
||
.bg-surface { background: #f5f5f7; }
|
||
|
||
.warning-box {
|
||
background: rgba(255,193,7,0.08);
|
||
border: 1px solid rgba(255,193,7,0.3);
|
||
border-radius: var(--radius-md);
|
||
padding: 14px 18px;
|
||
margin-bottom: 16px;
|
||
font-size: 13px;
|
||
color: rgba(0,0,0,0.85);
|
||
line-height: 1.6;
|
||
}
|
||
|
||
.disclaimer {
|
||
text-align: center;
|
||
color: var(--text-muted);
|
||
font-size: 14px;
|
||
margin: 32px 0 24px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
gap: 8px;
|
||
}
|
||
|
||
</style>
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": ["Organization","Corporation"],
|
||
"@id": "https://landvex.com/#organization",
|
||
"name": "Landvex",
|
||
"alternateName": ["Landvex AB","Landvex Inc"],
|
||
"url": "https://landvex.com",
|
||
"logo": {"@type":"ImageObject","url":"https://landvex.com/apple-touch-icon.png","width":180,"height":180},
|
||
"foundingDate": "2024",
|
||
"foundingLocation": {"@type":"Place","addressLocality":"Stockholm","addressRegion":"Stockholm","addressCountry":"SE"},
|
||
"legalName": "Landvex Inc",
|
||
"address": {"@type":"PostalAddress","addressLocality":"Houston","addressRegion":"TX","addressCountry":"US"},
|
||
"location": [
|
||
{"@type":"Place","name":"Houston, Texas, USA (US HQ)","address":{"@type":"PostalAddress","addressLocality":"Houston","addressRegion":"TX","addressCountry":"US"}},
|
||
{"@type":"Place","name":"Stockholm, Sweden (EU HQ)","address":{"@type":"PostalAddress","addressLocality":"Stockholm","addressRegion":"Stockholm","addressCountry":"SE"}}
|
||
],
|
||
"taxID": "pending-EIN",
|
||
"description": "Landvex is a decision intelligence company that identifies contradictions between official narratives and observed physical reality.",
|
||
"sameAs": ["https://landvex.com","https://www.linkedin.com/company/landvex","https://x.com/landvex"],
|
||
"contactPoint": {"@type":"ContactPoint","email":"contact@landvex.com","contactType":"sales"},
|
||
"slogan": "Where reported reality conflicts with observed reality."
|
||
}
|
||
</script>
|
||
</head>
|
||
<body>
|
||
|
||
<!-- NAV -->
|
||
<nav>
|
||
<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">Verticals</div>
|
||
<a href="/verticals/property/">Property & Real Estate</a>
|
||
<a href="/verticals/municipalities/">Municipalities</a>
|
||
<a href="/verticals/infrastructure/">Infrastructure</a>
|
||
<a href="/verticals/retail/">Retail & F&B</a>
|
||
<a href="/verticals/insurance/">Insurance</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>
|
||
</div>
|
||
</li>
|
||
<li><a href="#cities">Cities</a></li>
|
||
<li><a href="/insights/">Insights</a></li>
|
||
<li><a href="/enterprise/">Enterprise</a></li>
|
||
<li><a href="#contact">Contact</a></li>
|
||
</ul>
|
||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||
</nav>
|
||
|
||
<!-- ===== 1. HERO ===== -->
|
||
<section class="hero">
|
||
<div class="hero-eyebrow">Reality Intelligence Operating System</div>
|
||
<h1>Helping organizations see what others miss.</h1>
|
||
<p class="hero-sub">Landvex combines field observations from the quiXzoom network with AI analysis to identify risks, contradictions, and opportunities in the physical world. We don't claim to know everything — but we can help you spot what matters.</p>
|
||
<div class="hero-ctas">
|
||
<a class="btn btn-lg" href="/verticals/insurance/">Insurance intelligence →</a>
|
||
<a class="btn btn-outline btn-lg" href="/enterprise/">Request a pilot →</a>
|
||
<a href="/methodology/" class="cta-secondary">See how it works →</a>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 2. HOW IT WORKS (merged: methodology + process + what we deliver) ===== -->
|
||
<section class="bg-white" id="how-it-works">
|
||
<div class="container">
|
||
<div class="text-center mb-14">
|
||
<div class="section-label">How it works</div>
|
||
<h2 class="section-title">From your question to your decision.</h2>
|
||
<p class="section-sub mx-auto">Most intelligence platforms sell you a dataset. Landvex works backwards — from the decision you need to make to the intelligence required to make it confidently.</p>
|
||
</div>
|
||
|
||
<!-- Pipeline -->
|
||
<div class="pipeline" aria-label="Landvex intelligence pipeline">
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="1.8"><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>
|
||
<span class="pipeline-label">Mission<br>Brief</span>
|
||
</div>
|
||
<div class="pipeline-connector"></div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="1.8"><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>
|
||
<span class="pipeline-label">Field<br>Collection</span>
|
||
</div>
|
||
<div class="pipeline-connector"></div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="1.8"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg></div>
|
||
<span class="pipeline-label">AI<br>Analysis</span>
|
||
</div>
|
||
<div class="pipeline-connector"></div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="1.8"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg></div>
|
||
<span class="pipeline-label">Scoring<br>0-100</span>
|
||
</div>
|
||
<div class="pipeline-connector"></div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-icon"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="1.8"><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"/></svg></div>
|
||
<span class="pipeline-label">Intelligence<br>Report</span>
|
||
</div>
|
||
<div class="pipeline-connector"></div>
|
||
<div class="pipeline-step">
|
||
<div class="pipeline-icon" style="background:rgba(0,200,83,.08);border-color:rgba(0,200,83,.2)"><svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="#00C853" stroke-width="1.8"><polyline points="9 11 12 14 22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg></div>
|
||
<span class="pipeline-label" style="color:rgba(0,200,83,.7)">Decision<br>Made</span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 4 Steps -->
|
||
<div class="process-steps">
|
||
<div class="step">
|
||
<div class="step-num">1</div>
|
||
<h3>Define the decision</h3>
|
||
<p>You tell us what you need to decide — invest, insure, maintain, or move. The question drives everything.</p>
|
||
</div>
|
||
<div class="step">
|
||
<div class="step-num">2</div>
|
||
<h3>Collect the evidence</h3>
|
||
<p>Verified field contributors gather observations at the exact locations your decision depends on. Every frame preserved with GPS, IMU, compass, timestamp.</p>
|
||
</div>
|
||
<div class="step">
|
||
<div class="step-num">3</div>
|
||
<h3>AI + Human Intelligence</h3>
|
||
<p>AI orchestration analyses every observation. RALE asks targeted micro-questions only when valuable. Human attention maximises future AI performance.</p>
|
||
</div>
|
||
<div class="step">
|
||
<div class="step-num">4</div>
|
||
<h3>Deliver the answer</h3>
|
||
<p>You receive structured intelligence — scores, rankings, flags, and a continuously improving Knowledge Graph of your assets.</p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Key metrics -->
|
||
<div class="card-grid mt-8">
|
||
<div class="card">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2"><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 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></div>
|
||
<div style="font-size:32px;font-weight:800;color:#0066FF;letter-spacing:-1px;margin-bottom:4px">20+</div>
|
||
<h3>Countries</h3>
|
||
<p>Launching across 20+ countries. No local staffing or coordination infrastructure required.</p>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg></div>
|
||
<div style="font-size:32px;font-weight:800;color:#0066FF;letter-spacing:-1px;margin-bottom:4px">24–72h</div>
|
||
<h3>Speed</h3>
|
||
<p>From mission creation to structured data delivery. No lengthy procurement cycles.</p>
|
||
</div>
|
||
<div class="card">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg></div>
|
||
<div style="font-size:32px;font-weight:800;color:#0066FF;letter-spacing:-1px;margin-bottom:4px">AI</div>
|
||
<h3>Quality</h3>
|
||
<p>Every submission reviewed for geo-compliance, technical quality and specification adherence.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 3. INTELLIGENCE MAP ===== -->
|
||
<section class="bg-surface">
|
||
<div class="container" style="max-width:1100px">
|
||
<div class="text-center mb-8">
|
||
<div style="display:inline-flex;align-items:center;gap:8px;background:rgba(0,102,255,.08);border:1px solid rgba(0,102,255,.18);border-radius:100px;padding:5px 14px;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#0052CC;margin-bottom:16px">
|
||
<span style="width:7px;height:7px;border-radius:50%;background:#0052CC;display:inline-block"></span>
|
||
Live demonstration
|
||
</div>
|
||
<h2 class="section-title">Intelligence Map — 100+ Cities</h2>
|
||
<p class="section-sub mx-auto">Click any city. Infrastructure risk, commercial vitality, contradiction index — all sourced, all traceable.</p>
|
||
</div>
|
||
|
||
<div class="map-frame">
|
||
<iframe src="/intelligence-map.html" class="map-iframe" title="Landvex Intelligence Map" loading="lazy" allow="geolocation"></iframe>
|
||
<div class="map-bar">
|
||
<div class="map-bar-left">
|
||
<div class="map-dot"></div>
|
||
<span class="map-bar-text">Source First</span>
|
||
</div>
|
||
<a href="/intelligence-map" class="btn" style="font-size:13px;padding:9px 18px">Open full map →</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tag-row">
|
||
<span class="tag">100+ cities</span>
|
||
<span class="tag">Contradiction Index</span>
|
||
<span class="tag">Infrastructure Risk</span>
|
||
<span class="tag">Commercial Vitality</span>
|
||
<span class="tag">City Health</span>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 4. DEMO CARDS (Change / Opportunity / Risk / Predictive) ===== -->
|
||
<section class="bg-white">
|
||
<div class="container">
|
||
<div class="text-center mb-14">
|
||
<div class="section-label">Decision intelligence</div>
|
||
<h2 class="section-title">Ten decisions. One platform.</h2>
|
||
<p class="section-sub mx-auto">Property owners, municipalities, retailers, infrastructure operators, investors. Different industries — identical need: to make better decisions about the physical world.</p>
|
||
</div>
|
||
|
||
<p class="disclaimer">
|
||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none"><path d="M10 3L17 17H3L10 3Z" stroke="#f59e0b" stroke-width="2"/><path d="M10 8V12M10 14V14.5" stroke="#f59e0b" stroke-width="2" stroke-linecap="round"/></svg>
|
||
All intelligence examples below are illustrative sample data for demonstration purposes.
|
||
</p>
|
||
|
||
<div class="intel-grid">
|
||
<!-- Change Intelligence -->
|
||
<a class="intel-card" href="#contact">
|
||
<div class="intel-header">
|
||
<div>
|
||
<div class="intel-module">Change Intelligence</div>
|
||
<h3>What is changing?</h3>
|
||
<div class="intel-geo">Houston Metro · Last 12 months</div>
|
||
</div>
|
||
<span class="intel-tag intel-tag-live">Live</span>
|
||
</div>
|
||
<div class="intel-kpis">
|
||
<div class="intel-kpi"><div class="intel-kpi-val">92%</div><div class="intel-kpi-delta up">↑ 4.1%</div><div class="intel-kpi-lbl">Commercial occupancy</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">+1,742</div><div class="intel-kpi-delta up">↑ 12%</div><div class="intel-kpi-lbl">Business openings</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">+7.8%</div><div class="intel-kpi-delta up">↑</div><div class="intel-kpi-lbl">Traffic volume</div></div>
|
||
</div>
|
||
<div style="font-size:11px;font-weight:700;color:#515154;text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px">Top Growing Districts</div>
|
||
<div class="intel-bars">
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Energy Corridor</span><div class="intel-bar-track"><div class="intel-bar-fill" style="width:88%"></div></div><span class="intel-bar-score">88</span></div>
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Katy</span><div class="intel-bar-track"><div class="intel-bar-fill" style="width:81%"></div></div><span class="intel-bar-score">81</span></div>
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Cypress</span><div class="intel-bar-track"><div class="intel-bar-fill" style="width:74%"></div></div><span class="intel-bar-score">74</span></div>
|
||
</div>
|
||
<div class="intel-footer">
|
||
<span class="intel-obs">Based on 6,840 field observations</span>
|
||
<span class="intel-cta">Full analysis →</span>
|
||
</div>
|
||
</a>
|
||
|
||
<!-- Opportunity Intelligence -->
|
||
<a class="intel-card" href="#contact">
|
||
<div class="intel-header">
|
||
<div>
|
||
<div class="intel-module">Opportunity Intelligence</div>
|
||
<h3>Where is the opportunity?</h3>
|
||
<div class="intel-geo">Houston Metro · Ranked by score</div>
|
||
</div>
|
||
<span class="intel-tag intel-tag-live">High signal</span>
|
||
</div>
|
||
<div class="intel-kpis">
|
||
<div class="intel-kpi"><div class="intel-kpi-val">92</div><div class="intel-kpi-delta up">Top score</div><div class="intel-kpi-lbl">Katy TX</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">2.1%</div><div class="intel-kpi-delta up">Low vacancy</div><div class="intel-kpi-lbl">Retail vacancy</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">+11%</div><div class="intel-kpi-delta up">↑</div><div class="intel-kpi-lbl">Population growth</div></div>
|
||
</div>
|
||
<div style="font-size:11px;font-weight:700;color:#515154;text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px">Highest Opportunity Score</div>
|
||
<div class="intel-bars">
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Katy TX</span><div class="intel-bar-track"><div class="intel-bar-fill opp" style="width:92%"></div></div><span class="intel-bar-score">92</span></div>
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Spring</span><div class="intel-bar-track"><div class="intel-bar-fill opp" style="width:85%"></div></div><span class="intel-bar-score">85</span></div>
|
||
<div class="intel-bar-row"><span class="intel-bar-name">The Woodlands</span><div class="intel-bar-track"><div class="intel-bar-fill opp" style="width:79%"></div></div><span class="intel-bar-score">79</span></div>
|
||
</div>
|
||
<div class="intel-footer">
|
||
<span class="intel-obs">Income growth +8% · Competition density: low</span>
|
||
<span class="intel-cta">Full analysis →</span>
|
||
</div>
|
||
</a>
|
||
|
||
<!-- Risk Intelligence -->
|
||
<a class="intel-card" href="#contact">
|
||
<div class="intel-header">
|
||
<div>
|
||
<div class="intel-module">Risk Intelligence</div>
|
||
<h3>Where is the risk?</h3>
|
||
<div class="intel-geo">Houston Metro · Risk-scored districts</div>
|
||
</div>
|
||
<span class="intel-tag intel-tag-risk">3 alerts</span>
|
||
</div>
|
||
<div class="intel-kpis">
|
||
<div class="intel-kpi"><div class="intel-kpi-val">83</div><div class="intel-kpi-delta down">High risk</div><div class="intel-kpi-lbl">SW Houston score</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">+17%</div><div class="intel-kpi-delta down">↓ trend</div><div class="intel-kpi-lbl">Vacancy rate</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">+21%</div><div class="intel-kpi-delta down">↓</div><div class="intel-kpi-lbl">Store closures</div></div>
|
||
</div>
|
||
<div style="font-size:11px;font-weight:700;color:#515154;text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px">Highest Risk Areas</div>
|
||
<div class="intel-bars">
|
||
<div class="intel-bar-row"><span class="intel-bar-name">SW Houston</span><div class="intel-bar-track"><div class="intel-bar-fill risk" style="width:83%"></div></div><span class="intel-bar-score">83</span></div>
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Greenspoint</span><div class="intel-bar-track"><div class="intel-bar-fill risk" style="width:76%"></div></div><span class="intel-bar-score">76</span></div>
|
||
<div class="intel-bar-row"><span class="intel-bar-name">Gulfgate</span><div class="intel-bar-track"><div class="intel-bar-fill risk" style="width:68%"></div></div><span class="intel-bar-score">68</span></div>
|
||
</div>
|
||
<div class="intel-footer">
|
||
<span class="intel-obs">Property condition: declining · 4,120 observations</span>
|
||
<span class="intel-cta">Full risk report →</span>
|
||
</div>
|
||
</a>
|
||
|
||
<!-- Predictive Intelligence -->
|
||
<a class="intel-card" href="#contact">
|
||
<div class="intel-header">
|
||
<div>
|
||
<div class="intel-module">Predictive Intelligence</div>
|
||
<h3>What will happen next?</h3>
|
||
<div class="intel-geo">Houston Metro · Next 24 months</div>
|
||
</div>
|
||
<span class="intel-tag intel-tag-pred">Forecast</span>
|
||
</div>
|
||
<div style="background:linear-gradient(135deg,#0d1f3c 0%,#0a1628 50%,#0d2235 100%);border-radius:var(--radius-md);height:80px;position:relative;overflow:hidden;margin-bottom:0">
|
||
<div style="position:absolute;width:8px;height:8px;border-radius:50%;background:#00C853;box-shadow:0 0 0 3px rgba(0,200,83,.2);top:22%;left:28%"></div>
|
||
<div style="position:absolute;width:8px;height:8px;border-radius:50%;background:#00C853;box-shadow:0 0 0 3px rgba(0,200,83,.2);top:38%;left:52%"></div>
|
||
<div style="position:absolute;width:8px;height:8px;border-radius:50%;background:#00C853;box-shadow:0 0 0 3px rgba(0,200,83,.2);top:55%;left:38%"></div>
|
||
<div style="position:absolute;width:8px;height:8px;border-radius:50%;background:#FF3B30;box-shadow:0 0 0 3px rgba(255,59,48,.2);top:65%;left:22%"></div>
|
||
<div style="position:absolute;width:8px;height:8px;border-radius:50%;background:#0066FF;box-shadow:0 0 0 3px rgba(0,102,255,.2);top:30%;left:70%"></div>
|
||
<div style="position:absolute;width:8px;height:8px;border-radius:50%;background:#0066FF;box-shadow:0 0 0 3px rgba(0,102,255,.2);top:48%;left:78%"></div>
|
||
<div style="position:absolute;bottom:8px;right:10px;font-size:10px;color:#515154;font-weight:600">Predicted growth hotspots</div>
|
||
</div>
|
||
<div class="intel-kpis">
|
||
<div class="intel-kpi"><div class="intel-kpi-val">87%</div><div class="intel-kpi-delta up">Confidence</div><div class="intel-kpi-lbl">Model accuracy</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">4,281</div><div class="intel-kpi-delta up">Observations</div><div class="intel-kpi-lbl">Training base</div></div>
|
||
<div class="intel-kpi"><div class="intel-kpi-val">3</div><div class="intel-kpi-delta up">Hotspots</div><div class="intel-kpi-lbl">Identified</div></div>
|
||
</div>
|
||
<div class="intel-footer">
|
||
<span class="intel-obs">Indicative signals — not investment advice</span>
|
||
<span class="intel-cta">View forecast →</span>
|
||
</div>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 5. VERTICALS ===== -->
|
||
<section class="bg-surface" id="verticals">
|
||
<div class="container">
|
||
<div class="text-center mb-14">
|
||
<div class="section-label">Verticals</div>
|
||
<h2 class="section-title">Who we help make better decisions.</h2>
|
||
<p class="section-sub mx-auto">If your decisions depend on the physical world, we can make them sharper.</p>
|
||
</div>
|
||
<div class="card-grid">
|
||
<a class="card" href="/verticals/municipalities/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><line x1="3" y1="22" x2="21" y2="22"/><line x1="6" y1="18" x2="6" y2="11"/><line x1="10" y1="18" x2="10" y2="11"/><line x1="14" y1="18" x2="14" y2="11"/><line x1="18" y1="18" x2="18" y2="11"/><polygon points="12 2 20 7 4 7"/></svg></div>
|
||
<h3>Municipalities & Government</h3>
|
||
<p style="font-size:13px;font-weight:700;color:#0066FF;margin-bottom:4px">Which areas will require the most investment over the next five years?</p>
|
||
<p>Urban asset management, planning compliance, public space documentation.</p>
|
||
<span class="card-link">Deep dive →</span>
|
||
</a>
|
||
<a class="card" href="/verticals/infrastructure/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><path d="M4 12 Q12 4 20 12"/><line x1="4" y1="12" x2="4" y2="18"/><line x1="20" y1="12" x2="20" y2="18"/><line x1="4" y1="18" x2="20" y2="18"/><line x1="10" y1="12" x2="10" y2="18"/><line x1="16" y1="12" x2="16" y2="18"/></svg></div>
|
||
<h3>Infrastructure Operators</h3>
|
||
<p style="font-size:13px;font-weight:700;color:#0066FF;margin-bottom:4px">Where will problems emerge before they become expensive?</p>
|
||
<p>Bridge inspections, road condition surveys, utility corridor mapping.</p>
|
||
<span class="card-link">Deep dive →</span>
|
||
</a>
|
||
<a class="card" href="/verticals/property/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><rect x="3" y="3" width="18" height="18" rx="2"/><path d="M3 9h18"/><path d="M9 21V9"/></svg></div>
|
||
<h3>Property & Real Estate</h3>
|
||
<p style="font-size:13px;font-weight:700;color:#0066FF;margin-bottom:4px">Is this area showing growth signals worth investigating?</p>
|
||
<p>Portfolio documentation, condition assessments, site verification at scale.</p>
|
||
<span class="card-link">Deep dive →</span>
|
||
</a>
|
||
<a class="card" href="/verticals/insurance/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div>
|
||
<h3>Insurance</h3>
|
||
<p style="font-size:13px;font-weight:700;color:#0066FF;margin-bottom:4px">Which areas carry elevated risk?</p>
|
||
<p>Claims validation, pre-loss surveys, risk assessment for physical assets.</p>
|
||
<span class="card-link">Deep dive →</span>
|
||
</a>
|
||
<a class="card" href="/verticals/utilities/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg></div>
|
||
<h3>Utilities & Energy</h3>
|
||
<p style="font-size:13px;font-weight:700;color:#0066FF;margin-bottom:4px">Where is grid capacity becoming a constraint?</p>
|
||
<p>Grid infrastructure surveys, solar/wind asset documentation, network inspections.</p>
|
||
<span class="card-link">Deep dive →</span>
|
||
</a>
|
||
<a class="card" href="/verticals/retail/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg></div>
|
||
<h3>Retail & Franchise</h3>
|
||
<p style="font-size:13px;font-weight:700;color:#0066FF;margin-bottom:4px">Where should the next location open?</p>
|
||
<p>Store compliance audits, signage verification, location intelligence at scale.</p>
|
||
<span class="card-link">Deep dive →</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 6. CONTRADICTION ENGINE (was "Advanced Intelligence") ===== -->
|
||
<section class="bg-white">
|
||
<div class="container">
|
||
<div class="text-center mb-14">
|
||
<div class="section-label">Advanced intelligence</div>
|
||
<h2 class="section-title">Most systems confirm what you already believe.<br>Landvex tells you when you're wrong.</h2>
|
||
<p class="section-sub mx-auto">The most valuable intelligence is not confirmation — it's contradiction. Landvex actively searches for conflicts between official narratives and observed reality, so you can correct course before it costs you.</p>
|
||
</div>
|
||
|
||
<div class="contradiction-box" style="max-width:900px;margin:0 auto">
|
||
<div style="display:flex;align-items:flex-start;gap:16px;margin-bottom:24px">
|
||
<span style="display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;background:rgba(220,38,38,.08);border-radius:8px">
|
||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#f87171" stroke-width="2"><path d="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"/><line x1="4" y1="22" x2="4" y2="15"/></svg>
|
||
</span>
|
||
<div>
|
||
<div style="background:#cc2222;color:#fff;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;padding:3px 8px;border-radius:4px;display:inline-block;margin-bottom:8px">Representative data — based on real observed patterns</div>
|
||
<div style="color:#cc2222;font-weight:800;font-size:15px;margin-bottom:4px">Narrative Conflict Detected — City B (sample)</div>
|
||
<div style="color:#515154;font-size:14px;line-height:1.6">Official growth indicators are positive. Observed commercial activity is declining. 7 contradicting signals vs 3 supporting signals.</div>
|
||
</div>
|
||
</div>
|
||
<div class="contradiction-grid">
|
||
<div class="contra-col green">
|
||
<h4>Official narrative</h4>
|
||
<ul>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M3 8L6.5 11.5L13 4.5" stroke="#22c55e" stroke-width="2" stroke-linecap="round"/></svg> GDP growth +3.2%</li>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M3 8L6.5 11.5L13 4.5" stroke="#22c55e" stroke-width="2" stroke-linecap="round"/></svg> Construction permits up</li>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M3 8L6.5 11.5L13 4.5" stroke="#22c55e" stroke-width="2" stroke-linecap="round"/></svg> Property prices rising</li>
|
||
</ul>
|
||
</div>
|
||
<div class="contra-col red">
|
||
<h4>Observed reality</h4>
|
||
<ul>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Vacancies +18% this quarter</li>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Foot traffic down 12%</li>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> 23 closures, 8 openings</li>
|
||
<li><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Maintenance deferred on 4 blocks</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div style="margin-top:20px;padding-top:20px;border-top:1px solid rgba(0,0,0,.1);display:flex;justify-content:space-between;align-items:center">
|
||
<span style="color:#515154;font-size:13px">Confidence in official narrative <em style="font-size:12px;opacity:.85;font-weight:600">sample</em></span>
|
||
<span style="color:#cc2222;font-weight:800;font-size:18px">34% <span style="font-size:12px;font-weight:600;opacity:.85">representative</span></span>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 3 pillars -->
|
||
<div class="card-grid mt-8">
|
||
<div class="card" style="cursor:default">
|
||
<div style="font-size:11px;font-weight:800;color:#0066FF;text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px">Intelligence</div>
|
||
<h3>Show me what I'm missing</h3>
|
||
<p>Blind spots not visible in official data or internal reports.</p>
|
||
</div>
|
||
<div class="card" style="cursor:default">
|
||
<div style="font-size:11px;font-weight:800;color:#0066FF;text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px">Validation</div>
|
||
<h3>AI Red Team</h3>
|
||
<p>Every conclusion is actively challenged by a second model before delivery.</p>
|
||
</div>
|
||
<div class="card" style="cursor:default">
|
||
<div style="font-size:11px;font-weight:800;color:#0066FF;text-transform:uppercase;letter-spacing:.12em;margin-bottom:8px">Contradiction</div>
|
||
<h3>Which assumptions are wrong?</h3>
|
||
<p>Identify where your thesis conflicts with observed reality.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 7. CITIES ===== -->
|
||
<section class="bg-surface" id="cities">
|
||
<div class="container">
|
||
<div class="text-center mb-14">
|
||
<div class="section-label">City intelligence</div>
|
||
<h2 class="section-title">Intelligence for major cities.</h2>
|
||
<p class="section-sub mx-auto">Explore Landvex intelligence profiles for key cities — scores, trends, and observed conditions.</p>
|
||
</div>
|
||
|
||
<!-- Active cities -->
|
||
<div style="margin-bottom:12px">
|
||
<div style="font-size:11px;font-weight:700;color:#0066FF;text-transform:uppercase;letter-spacing:.1em;margin-bottom:16px">Live now</div>
|
||
<div class="card-grid">
|
||
<a class="card" href="/cities/stockholm/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||
<h3>Stockholm</h3>
|
||
<p>City Health Index, Commercial Vitality, and Infrastructure Stability scores.</p>
|
||
<span class="card-link">Explore Stockholm →</span>
|
||
</a>
|
||
<a class="card" href="/cities/berlin/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||
<h3>Berlin</h3>
|
||
<p>Urban growth tracking, commercial opportunity mapping, infrastructure risk profiling.</p>
|
||
<span class="card-link">Explore Berlin →</span>
|
||
</a>
|
||
<a class="card" href="/cities/milan/">
|
||
<div class="card-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="1.5"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg></div>
|
||
<h3>Milan</h3>
|
||
<p>Investment attractiveness, commercial opportunity, and urban growth intelligence.</p>
|
||
<span class="card-link">Explore Milan →</span>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Coming soon -->
|
||
<div style="margin-top:32px">
|
||
<div style="font-size:11px;font-weight:700;color:#f59e0b;text-transform:uppercase;letter-spacing:.1em;margin-bottom:16px">Launching August 2026</div>
|
||
<div class="tag-row" style="justify-content:flex-start">
|
||
<span class="tag">Paris</span>
|
||
<span class="tag">London</span>
|
||
<span class="tag">Bangkok</span>
|
||
<span class="tag">Copenhagen</span>
|
||
<span class="tag">Oslo</span>
|
||
<span class="tag">Helsinki</span>
|
||
<span class="tag">Vienna</span>
|
||
<span class="tag">Zurich</span>
|
||
<span class="tag">Madrid</span>
|
||
<span class="tag">Brussels</span>
|
||
<span class="tag">Rotterdam</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- ===== 8. CONTACT ===== -->
|
||
<section class="bg-white" id="contact">
|
||
<div class="container">
|
||
<div class="contact-wrapper">
|
||
<div class="section-label">Get in touch</div>
|
||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||
<p class="section-sub mx-auto">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||
<p style="font-size:13px;color:#aaa;margin-top:8px">Enterprise pricing available. Pilot programs for qualifying organizations. Typical engagement: 3-month pilot → annual intelligence subscription.</p>
|
||
|
||
<form class="contact-form" id="contact-form">
|
||
<div class="form-row">
|
||
<div class="form-group">
|
||
<label for="name">Name</label>
|
||
<input type="text" id="name" name="name" placeholder="Your name" required>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="org">Organisation</label>
|
||
<input type="text" id="org" name="organisation" placeholder="Your organisation" required>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="email">Email</label>
|
||
<input type="email" id="email" name="email" placeholder="you@organisation.com" required>
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="message">Message</label>
|
||
<textarea id="message" name="message" placeholder="Describe the decision you need to make — what you need to know, where, and why it matters..."></textarea>
|
||
</div>
|
||
<button type="submit" class="btn btn-lg" style="width:100%; justify-content: center;">
|
||
Request briefing →
|
||
</button>
|
||
<p class="form-note">We don't spam. Your information stays private.</p>
|
||
<div id="form-message"></div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- FOOTER -->
|
||
<footer>
|
||
<div class="footer-inner">
|
||
<div>
|
||
<div class="footer-logo">Landvex</div>
|
||
<div class="footer-copy">© 2025 Landvex Inc / Landvex AB</div>
|
||
<div class="footer-ecosystem">Field data powered by <a href="https://www.quixzoom.com">quiXzoom</a></div>
|
||
<div style="font-size:11px;color:#aaa;margin-top:4px;line-height:1.6">Landvex Inc · Houston, Texas (US HQ) · Landvex AB · Org.nr 559141-7042 · Stockholm, Sweden (EU HQ) · <a href="mailto:contact@landvex.com" style="color:inherit">contact@landvex.com</a></div>
|
||
<div class="footer-tagline">Control intelligence for the physical world.</div>
|
||
</div>
|
||
<div class="footer-links">
|
||
<a href="/privacy/">Privacy</a>
|
||
<a href="/terms/">Terms</a>
|
||
<a href="/compliance/">Compliance</a>
|
||
<a href="/methodology/">Methodology</a>
|
||
<a href="/security/">Security</a>
|
||
<a href="/about/">About</a>
|
||
<a href="mailto:contact@landvex.com">contact@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"><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"/><rect x="2" y="9" width="4" height="12" stroke="#888" stroke-width="2"/><circle cx="4" cy="4" r="2" stroke="#888" stroke-width="2"/></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"><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>
|
||
</footer>
|
||
|
||
<script>
|
||
// Contact form
|
||
document.getElementById('contact-form').addEventListener('submit', async function(e) {
|
||
e.preventDefault();
|
||
const btn = this.querySelector('button[type="submit"]');
|
||
const msgEl = document.getElementById('form-message');
|
||
btn.disabled = true;
|
||
btn.textContent = 'Sending...';
|
||
|
||
const data = {
|
||
source: 'landvex',
|
||
name: this.name.value,
|
||
organisation: this.organisation.value,
|
||
email: this.email.value,
|
||
message: this.message.value
|
||
};
|
||
|
||
try {
|
||
const res = await fetch('https://api.quixzoom.com/api/qz/waitlist', {
|
||
method: 'POST',
|
||
headers: { 'Content-Type': 'application/json' },
|
||
body: JSON.stringify(data)
|
||
});
|
||
if (res.ok || res.status === 201) {
|
||
msgEl.className = 'success';
|
||
msgEl.textContent = '✓ Request received. We\'ll be in touch within one business day.';
|
||
msgEl.style.display = 'block';
|
||
this.reset();
|
||
} else {
|
||
throw new Error('Server error ' + res.status);
|
||
}
|
||
} catch (err) {
|
||
msgEl.className = 'error';
|
||
msgEl.textContent = 'Something went wrong. Please email us directly at contact@landvex.com.';
|
||
msgEl.style.display = 'block';
|
||
}
|
||
|
||
btn.disabled = false;
|
||
btn.textContent = 'Request briefing →';
|
||
});
|
||
|
||
// Smooth scroll
|
||
document.querySelectorAll('a[href^="#"]').forEach(a => {
|
||
a.addEventListener('click', e => {
|
||
const target = document.querySelector(a.getAttribute('href'));
|
||
if (target) {
|
||
e.preventDefault();
|
||
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
|
||
|
||
</body>
|
||
</html>
|