landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Verticals — Landvex</title>
|
||||
<meta name="description" content="Explore Landvex verticals: municipalities, infrastructure, property, insurance, utilities, retail, investors, and logistics.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/">
|
||||
<meta http-equiv="refresh" content="0; url=/">
|
||||
</head>
|
||||
<body>
|
||||
<nav aria-label="breadcrumb" style="padding: 10px 20px; color: rgba(235,235,245,0.6); font-size: 14px;">
|
||||
<a href="/" style="color: #007AFF; text-decoration: none;">Home</a> / <span>verticals</span>
|
||||
</nav>
|
||||
<p>Redirecting to <a href="/">homepage</a>...</p>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,641 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Infrastructure Operators Intelligence — Landvex</title>
|
||||
<meta name="description" content="Predictive intelligence for infrastructure operators. Identify where problems will emerge before they become expensive. Continuous observation across 20+ countries.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/infrastructure/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/infrastructure/">
|
||||
<meta property="og:title" content="Infrastructure Operators Intelligence — Landvex">
|
||||
<meta property="og:description" content="Predictive intelligence for infrastructure operators. Identify where problems will emerge before they become expensive. Continuous observation across 20+">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section overrides */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { font-size: 28px; margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag { font-size: 1.5rem; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon { font-size: 1.5rem; margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Infrastructure Operators</div>
|
||||
<h1>Where will problems emerge before they become expensive?</h1>
|
||||
<p class="hero-sub">Landvex gives infrastructure operators the visual field intelligence to shift from reactive repairs to predictive asset management — at scale, across any geography.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Infrastructure Operators</h2>
|
||||
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🔭</span>
|
||||
<h3>Bridge inspections</h3>
|
||||
<p>Rapid visual surveys of bridge structures, deck conditions, joints, and approaches — geo-tagged, AI-reviewed, and delivered within 72 hours.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></span>
|
||||
<h3>Road condition surveys</h3>
|
||||
<p>Systematic documentation of surface conditions, markings, signage, and drainage across entire road networks.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🗺️</span>
|
||||
<h3>Utility corridor mapping</h3>
|
||||
<p>Visual documentation of above-ground utility infrastructure, access points, vegetation encroachment, and condition indicators.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">⚡</span>
|
||||
<h3>Network monitoring</h3>
|
||||
<p>Continuous or periodic monitoring of distributed infrastructure assets to detect changes, incidents, and deterioration trends.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our infrastructure operators clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Maintenance prioritisation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>CapEx allocation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Risk mitigation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Contractor performance verification</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Regulatory reporting</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag">🚩</span>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — Rotterdam — Port District</div>
|
||||
<div class="conflict-desc">Planned maintenance schedule indicates assets are within acceptable parameters. Field observations contradict in 5 of 8 monitored segments.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Last inspection: 18 months ago — passed</li><li>✓ Maintenance schedule: on track</li><li>✓ No incidents logged Q1–Q2</li> </ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ ✗ Visible surface deterioration on 3 bridge spans</li><li>✗ ✗ Drainage failure on 2 critical junctions</li><li>✗ ✗ Vegetation encroachment at 6 utility access points</li><li>✗ ✗ Crack propagation exceeds tolerance on segment 4B</li> </ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">29%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">🔍</div>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">⚔️</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">📐</div>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence scores</div>
|
||||
<h2 class="section-title">Landvex scores relevant to Infrastructure Operators</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid" style="grid-template-columns:repeat(2,1fr)">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🔧</div>
|
||||
<div class="score-name">Infrastructure Risk Index</div>
|
||||
<div class="score-desc">Identifies areas where physical infrastructure is deteriorating faster than maintenance can address.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:74%"></div>
|
||||
</div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🚀</div>
|
||||
<div class="score-name">Growth Velocity Index</div>
|
||||
<div class="score-desc">How fast is an area changing? Identifies emerging zones before they appear in official statistics.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:68%"></div>
|
||||
</div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical',
|
||||
name: this.name.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 = "\u2713 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 →';
|
||||
});
|
||||
|
||||
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>
|
||||
@@ -0,0 +1,693 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Insurance Risk Intelligence — Landvex</title>
|
||||
<meta name="description" content="Risk intelligence for insurance companies. Identify elevated-risk areas, validate claims, and monitor physical conditions continuously.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/insurance/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/insurance/">
|
||||
<meta property="og:title" content="Insurance Risk Intelligence — Landvex">
|
||||
<meta property="og:description" content="Risk intelligence for insurance companies. Identify elevated-risk areas, validate claims, and monitor physical conditions continuously.">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section overrides */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { font-size: 28px; margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag { font-size: 1.5rem; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.8); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon { font-size: 1.5rem; margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
.roi-grid { grid-template-columns: 1fr !important; }
|
||||
.roi-grid > div { border-left: none !important; border-top: 1px solid rgba(0,0,0,.06) !important; }
|
||||
.roi-grid > div:first-child { border-top: none !important; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.7);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.8);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Insurance</div>
|
||||
<h1>Which areas carry elevated risk?</h1>
|
||||
<p class="hero-sub">Landvex gives insurers and risk managers field-verified intelligence to price risk accurately, validate claims, and monitor exposure — grounded in what's actually on the ground.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ROI SIGNAL -->
|
||||
<section style="background:#fff;padding:64px 24px">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div class="section-label" style="color:var(--blue)">Why it matters financially</div>
|
||||
<h2 class="section-title" style="color:#0a0a0a;margin-bottom:12px">1% better loss ratio.<br>That’s the target.</h2>
|
||||
<p style="font-size:1.0625rem;color:#444;max-width:620px;line-height:1.7;margin-bottom:48px">A mid-sized insurer with €500M gross written premium and a 68% loss ratio loses roughly €340M to claims annually. A 1 percentage point improvement in underwriting accuracy is worth €5M. Landvex sells field-verified ground truth — the input that makes that improvement possible.</p>
|
||||
<div class="roi-grid" style="display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:rgba(0,0,0,.06);border-radius:14px;overflow:hidden">
|
||||
<div style="background:#fff;padding:32px 28px">
|
||||
<div style="font-size:2rem;font-weight:800;color:#0a0a0a;letter-spacing:-.04em;line-height:1">24h</div>
|
||||
<div style="font-size:.8125rem;font-weight:600;color:#888;margin-top:6px;text-transform:uppercase;letter-spacing:.06em">Field data turnaround</div>
|
||||
<p style="font-size:.875rem;color:#555;line-height:1.6;margin-top:10px">From mission launch to structured intelligence delivery. No adjuster scheduling. No site visit coordination.</p>
|
||||
</div>
|
||||
<div style="background:#fff;padding:32px 28px;border-left:1px solid rgba(0,0,0,.06)">
|
||||
<div style="font-size:2rem;font-weight:800;color:#0a0a0a;letter-spacing:-.04em;line-height:1"><€15</div>
|
||||
<div style="font-size:.8125rem;font-weight:600;color:#888;margin-top:6px;text-transform:uppercase;letter-spacing:.06em">Per asset observation</div>
|
||||
<p style="font-size:.875rem;color:#555;line-height:1.6;margin-top:10px">Versus €150–600 for a traditional field adjuster visit. AI-reviewed, geo-tagged, timestamped.</p>
|
||||
</div>
|
||||
<div style="background:#fff;padding:32px 28px;border-left:1px solid rgba(0,0,0,.06)">
|
||||
<div style="font-size:2rem;font-weight:800;color:#0a0a0a;letter-spacing:-.04em;line-height:1">Aug 2026</div>
|
||||
<div style="font-size:.8125rem;font-weight:600;color:#888;margin-top:6px;text-transform:uppercase;letter-spacing:.06em">Pilot availability</div>
|
||||
<p style="font-size:.875rem;color:#555;line-height:1.6;margin-top:10px">Limited pilot slots for insurers in Sweden and the Netherlands. Defined scope, defined price, defined deliverable.</p>
|
||||
</div>
|
||||
</div>
|
||||
<p style="font-size:.75rem;color:#aaa;margin-top:16px;line-height:1.5">Loss ratio illustration based on publicly available industry benchmarks. Actual improvement depends on portfolio composition, geography and implementation. Not a performance guarantee.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Insurance</h2>
|
||||
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M10.065 12.493a6 6 0 0 1 3.432 3.432l5.618-5.618a2 2 0 0 0-2.828-2.828l-5.618 5.618z"/><path d="m16 6 4 4"/><path d="M2.5 21.5l3.5-3.5"/></svg></span>
|
||||
<h3>Claims validation</h3>
|
||||
<p>Rapid field verification of loss reports and claimed damage. Geo-tagged visual evidence delivered within 72 hours of instruction.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></span>
|
||||
<h3>Pre-loss surveys</h3>
|
||||
<p>Baseline documentation of insured assets before loss events — establishing ground truth for future claims resolution.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><polygon points="1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6"/><line x1="8" y1="2" x2="8" y2="18"/><line x1="16" y1="6" x2="16" y2="22"/></svg></span>
|
||||
<h3>Risk assessment</h3>
|
||||
<p>Field-observed physical condition data to supplement modelled risk — identifying exposures not visible in satellite or historical data.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg></span>
|
||||
<h3>Catastrophe monitoring</h3>
|
||||
<p>Post-event rapid deployment to document affected areas and validate exposure across large geographies.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our insurance clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Underwriting</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Pricing</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Reserve allocation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Exposure management</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Claims settlement</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.85);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag">🚩</span>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — Coastal City — South District</div>
|
||||
<div style="display:inline-block;background:#f59e0b;color:#000;font-size:.7rem;font-weight:700;padding:2px 8px;border-radius:3px;margin:4px 0 6px;letter-spacing:.05em;">⚠ ILLUSTRATIVE SAMPLE — not real intelligence</div>
|
||||
<div class="conflict-desc">Historical risk models indicate moderate coastal exposure. Recent field surveys reveal significant changes to physical risk profile.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Historical loss ratio: within band</li><li>✓ Flood model: 1-in-50 year exposure</li><li>✓ Construction standards: compliant</li> </ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ ✗ Drainage capacity significantly reduced</li><li>✗ ✗ 3 new developments in flood shadow zone</li><li>✗ ✗ Coastal erosion visible at 4 monitored sites</li><li>✗ ✗ Emergency access routes partially compromised</li> </ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">33%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">🔍</div>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">⚔️</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">📐</div>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence scores</div>
|
||||
<h2 class="section-title">Landvex scores relevant to Insurance</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid" style="grid-template-columns:repeat(2,1fr)">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div>
|
||||
<div class="score-name">Risk & Resilience Profile</div>
|
||||
<div class="score-desc">Physical exposure mapping for insurance, finance, and public sector resilience planning.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:74%"></div>
|
||||
</div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🔧</div>
|
||||
<div class="score-name">Infrastructure Risk Index</div>
|
||||
<div class="score-desc">Identifies areas where physical infrastructure is deteriorating faster than maintenance can address.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:68%"></div>
|
||||
</div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical',
|
||||
name: this.name.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 = "\u2713 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 →';
|
||||
});
|
||||
|
||||
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>
|
||||
|
||||
<section class="section-pad" style="background:#f7f7f5">
|
||||
<div class="container">
|
||||
<div style="display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;max-width:900px;margin:0 auto">
|
||||
<div>
|
||||
<div style="font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#0066FF;margin-bottom:12px">Why Landvex</div>
|
||||
<h2 style="font-size:1.625rem;font-weight:900;line-height:1.15;margin-bottom:16px;color:#0a0a0a">Intelligence, not just data.</h2>
|
||||
<p style="font-size:.9375rem;color:#333;line-height:1.65;margin-bottom:16px">Raw field observations are valuable. But decisions require analysis, confidence scoring, and contradiction detection. Landvex transforms quiXzoom field data into structured intelligence that underwriting and claims teams can act on.</p>
|
||||
<p style="font-size:.9375rem;color:#333;line-height:1.65">Clients don't receive photos. They receive decisions.</p>
|
||||
</div>
|
||||
<div style="display:flex;flex-direction:column;gap:12px">
|
||||
<div style="font-size:.6875rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#555;margin-bottom:4px">Claims inspection market landscape</div>
|
||||
<p style="font-size:.8125rem;color:#444;line-height:1.6;margin:0">The insurance claims inspection market is served by traditional field adjusters, TPAs, and outsourced claims handlers. These channels face the same cost and speed constraints that create demand for faster, field-verified alternatives.</p>
|
||||
<p style="font-size:.8125rem;color:#444;line-height:1.6;margin:0">Landvex is building toward this market as a data and intelligence supplier. We are not affiliated with, endorsed by, or in a commercial relationship with any named market participants.</p>
|
||||
<div style="background: #f5f5f7;border-radius:12px;padding:16px 20px;text-align:center;margin-top:4px">
|
||||
<span style="font-size:.8125rem;font-weight:700;color:rgba(0,0,0,.9)">Interested in a claims data pilot?</span>
|
||||
<a href="/contact/" style="display:block;margin-top:8px;color:#0066FF;font-size:.875rem;font-weight:700;text-decoration:none">Start a conversation →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@@ -0,0 +1,734 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Investor & Asset Manager Intelligence — Landvex</title>
|
||||
<meta name="description" content="Decision intelligence for investors and asset managers. Which cities are growing? Where is commercial activity accelerating? Landvex answers with field-verified data.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/investors/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/investors/">
|
||||
<meta property="og:title" content="Investor & Asset Manager Intelligence — Landvex">
|
||||
<meta property="og:description" content="Decision intelligence for investors and asset managers. Which cities are growing? Where is commercial activity accelerating? Landvex answers with">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* QUESTIONS */
|
||||
.questions-section { background: #fff; }
|
||||
.questions-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.question-card {
|
||||
background: #f5f7fb; border: 1px solid #e0e6f0;
|
||||
border-radius: var(--radius-lg); padding: 28px 28px;
|
||||
position: relative;
|
||||
}
|
||||
.question-card::before {
|
||||
content: '';
|
||||
position: absolute; top: 0; left: 0;
|
||||
width: 4px; height: 100%;
|
||||
background: var(--blue); border-radius: 4px 0 0 4px;
|
||||
}
|
||||
.question-card p {
|
||||
font-size: 16px; font-weight: 600; color: #0a0a0a; line-height: 1.5;
|
||||
font-style: italic;
|
||||
}
|
||||
.question-card .q-sub {
|
||||
font-size: 13px; color: var(--text-muted); font-style: normal;
|
||||
font-weight: 400; margin-top: 10px;
|
||||
}
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag-icon { flex-shrink: 0; margin-top: 2px; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.ce-icon-wrap { margin-bottom: 12px; display: flex; justify-content: center; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px;
|
||||
}
|
||||
|
||||
.score-icon-wrap { margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea, .form-group select {
|
||||
background: var(--bg-dark); 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, .form-group select:focus { border-color: var(--blue); }
|
||||
.form-group input::placeholder, .form-group textarea::placeholder { color: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-group select option { background: #f5f5f7; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
.questions-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.questions-grid { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Request a briefing →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Investors & Asset Managers</div>
|
||||
<h1>Which cities are growing — and which are declining?</h1>
|
||||
<p class="hero-sub">Landvex gives institutional investors, asset managers and PE funds continuous intelligence on physical-world conditions — before they show up in prices.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Investors</h2>
|
||||
<p class="section-sub">From market screening to portfolio monitoring — physical-world intelligence deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#0066ff" 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>
|
||||
</span>
|
||||
<h3>Capital allocation</h3>
|
||||
<p>Understand which markets deserve deployment now versus which require monitoring. Physical-world signals surface opportunities invisible in financial data.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3h18v18H3z"/><path d="M7 16l4-4 4 4"/><path d="M7 11l4-4 4 4"/></svg>
|
||||
</span>
|
||||
<h3>Market selection</h3>
|
||||
<p>Compare cities and regions on observed commercial momentum, infrastructure quality, and growth velocity — not lagged official indices.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
|
||||
</span>
|
||||
<h3>Asset acquisition & due diligence</h3>
|
||||
<p>Verify what is actually on the ground before committing capital. Field-verified conditions, neighbourhood trajectory, and demand signals.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
|
||||
</span>
|
||||
<h3>Portfolio monitoring & exit timing</h3>
|
||||
<p>Continuous physical-world monitoring of portfolio markets. Identify deterioration early and time exits before stress shows up in valuations.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our investor clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0"><span class="chip-dot"></span><span>Capital allocation</span></div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0"><span class="chip-dot"></span><span>Market selection</span></div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0"><span class="chip-dot"></span><span>Asset acquisition</span></div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0"><span class="chip-dot"></span><span>Portfolio monitoring</span></div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0"><span class="chip-dot"></span><span>Exit timing</span></div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0"><span class="chip-dot"></span><span>Risk assessment</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- DECISION QUESTIONS -->
|
||||
<section class="questions-section" id="questions">
|
||||
<div class="container">
|
||||
<div class="section-label" style="color:var(--blue)">The questions we answer</div>
|
||||
<h2 class="section-title" style="color:#0a0a0a">What are you trying to understand?</h2>
|
||||
<p class="section-sub" style="color:#444">The questions investors ask us most — and what Landvex is built to answer.</p>
|
||||
<div class="questions-grid">
|
||||
<div class="question-card">
|
||||
<p>"Which cities offer the best risk-adjusted opportunity?"</p>
|
||||
<div class="q-sub">Investment Attractiveness Index across markets — composite of growth, risk, commercial vitality, and infrastructure quality.</div>
|
||||
</div>
|
||||
<div class="question-card">
|
||||
<p>"Where is commercial activity accelerating?"</p>
|
||||
<div class="q-sub">Growth Velocity Index shows momentum before it reaches published statistics or broker research.</div>
|
||||
</div>
|
||||
<div class="question-card">
|
||||
<p>"Which markets are showing early signs of stress?"</p>
|
||||
<div class="q-sub">Risk & Resilience Profile tracks vacancy, deferred maintenance, and commercial deterioration — leading indicators of value decline.</div>
|
||||
</div>
|
||||
<div class="question-card">
|
||||
<p>"What are we missing in our current analysis?"</p>
|
||||
<div class="q-sub">The Contradiction Engine surfaces conflicts between your investment thesis and observed physical reality — before they become losses.</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- INTELLIGENCE PRODUCTS -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence products</div>
|
||||
<h2 class="section-title">Scores relevant to Investors</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon-wrap">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" 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 class="score-name">Investment Attractiveness Index</div>
|
||||
<div class="score-desc">Composite score combining opportunity, risk, velocity, and physical quality for investment decisions across markets.</div>
|
||||
<div class="score-bar-wrap"><div class="score-bar" style="width:74%"></div></div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon-wrap">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"/><polyline points="17 6 23 6 23 12"/></svg>
|
||||
</div>
|
||||
<div class="score-name">Growth Velocity Index</div>
|
||||
<div class="score-desc">How fast is an area changing? Identifies emerging markets and acceleration zones before they appear in official statistics.</div>
|
||||
<div class="score-bar-wrap"><div class="score-bar" style="width:81%"></div></div>
|
||||
<div class="score-value">81</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon-wrap">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
|
||||
<div class="score-name">Commercial Opportunity Index</div>
|
||||
<div class="score-desc">Measures commercial vacancy, foot traffic, and business activity for investment location intelligence.</div>
|
||||
<div class="score-bar-wrap"><div class="score-bar" style="width:68%"></div></div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon-wrap">
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#0066ff" 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 class="score-name">Risk & Resilience Profile</div>
|
||||
<div class="score-desc">Tracks physical deterioration, vacancy patterns, and resilience indicators — leading indicators of market stress and value decline.</div>
|
||||
<div class="score-bar-wrap"><div class="score-bar" style="width:62%"></div></div>
|
||||
<div class="score-value">62</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Internal investment thesis vs observed physical reality</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:620px">Landvex actively identifies where your models diverge from ground truth. The most valuable intelligence is not confirmation — it is contradiction.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag-icon">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#f87171" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/></svg>
|
||||
</span>
|
||||
<div>
|
||||
<div class="conflict-title">Thesis Conflict Detected — Warsaw — Mokotów District</div>
|
||||
<div class="conflict-desc">Fund thesis describes strong commercial recovery and rising office demand. Field observations show diverging signals in the target investment zone.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Investment thesis</div>
|
||||
<ul>
|
||||
<li>✓ Office vacancy declining per broker data</li>
|
||||
<li>✓ Rental rates up 6.2% YoY</li>
|
||||
<li>✓ Major tenant signings reported</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ Ground-floor retail vacancy up 31% vs prior year</li>
|
||||
<li>✗ Multiple business closures, limited new openings</li>
|
||||
<li>✗ Foot traffic down 25% vs comparable streets</li>
|
||||
<li>✗ Deferred maintenance visible on 35% of sampled buildings</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in investment thesis</span>
|
||||
<span class="conflict-confidence">29%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon-wrap">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="rgba(0,0,0,0.7)" 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>
|
||||
<h4>Surface blind spots</h4>
|
||||
<p>Find what your models miss — physical signals not visible in financial data or broker research</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon-wrap">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="rgba(0,0,0,0.7)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/></svg>
|
||||
</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon-wrap">
|
||||
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="rgba(0,0,0,0.7)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="20" x2="18" y2="10"/><line x1="12" y1="20" x2="12" y2="4"/><line x1="6" y1="20" x2="6" y2="14"/></svg>
|
||||
</div>
|
||||
<h4>Where assumptions fail</h4>
|
||||
<p>Identify which parts of your thesis conflict with observed physical conditions on the ground</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTACT -->
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We’ll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="email">Email</label>
|
||||
<input type="email" id="email" name="email" placeholder="you@organisation.com" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="org">Organisation</label>
|
||||
<input type="text" id="org" name="org" placeholder="Fund / asset manager / PE firm">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="message">What are you trying to decide?</label>
|
||||
<textarea id="message" name="message" placeholder="Describe the market, the decision, and what intelligence would be most valuable to you..."></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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</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" 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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical-investors',
|
||||
name: this.name.value,
|
||||
email: this.email.value,
|
||||
org: this.org ? this.org.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 = "\u2713 Request received. We\u2019ll 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 \u2192';
|
||||
});
|
||||
|
||||
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>
|
||||
@@ -0,0 +1,710 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Logistics Network Intelligence — Landvex</title>
|
||||
<meta name="description" content="Network intelligence for logistics operators. Identify where your network is underperforming and where to invest in last-mile capacity.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/logistics/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/logistics/">
|
||||
<meta property="og:title" content="Logistics Network Intelligence — Landvex">
|
||||
<meta property="og:description" content="Network intelligence for logistics operators. Identify where your network is underperforming and where to invest in last-mile capacity.">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon {
|
||||
width: 32px; height: 32px; margin-bottom: 16px;
|
||||
color: var(--blue);
|
||||
}
|
||||
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.conflict-flag-svg { flex-shrink: 0; margin-top: 2px; }
|
||||
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
|
||||
.ce-feature-icon {
|
||||
width: 28px; height: 28px; margin: 0 auto 10px;
|
||||
color: rgba(0,0,0,0.75);
|
||||
}
|
||||
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon {
|
||||
width: 28px; height: 28px; margin: 0 auto 12px;
|
||||
color: var(--blue);
|
||||
}
|
||||
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Logistics & Last-Mile</div>
|
||||
<h1>Where is your network underperforming?</h1>
|
||||
<p class="hero-sub">Landvex gives logistics and last-mile operators the ground-truth intelligence to design better networks, select optimal depot locations, and stay ahead of urban change — from the street, not the model.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Logistics</h2>
|
||||
<p class="section-sub">From single-asset verifications to network-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="1" y="3" width="15" height="13"/>
|
||||
<polygon points="16 8 20 8 23 11 23 16 16 16 16 8"/>
|
||||
<circle cx="5.5" cy="18.5" r="2.5"/>
|
||||
<circle cx="18.5" cy="18.5" r="2.5"/>
|
||||
</svg>
|
||||
<h3>Last-mile network design</h3>
|
||||
<p>Field-verified intelligence on access constraints, delivery density, and infrastructure conditions across your urban service zones. Design networks based on what’s actually on the ground.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<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>
|
||||
<h3>Depot location selection</h3>
|
||||
<p>Combine urban growth projections, infrastructure risk scores, and commercial activity data to identify optimal depot locations. Avoid sites that look good on paper but fail in practice.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<line x1="3" y1="12" x2="21" y2="12"/>
|
||||
<line x1="3" y1="6" x2="21" y2="6"/>
|
||||
<line x1="3" y1="18" x2="21" y2="18"/>
|
||||
</svg>
|
||||
<h3>Route efficiency intelligence</h3>
|
||||
<p>Identify real-world access constraints, road conditions, and urban density changes that affect route performance. Ground-truth data your routing models don’t have.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="uc-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<line x1="18" y1="20" x2="18" y2="10"/>
|
||||
<line x1="12" y1="20" x2="12" y2="4"/>
|
||||
<line x1="6" y1="20" x2="6" y2="14"/>
|
||||
</svg>
|
||||
<h3>Capacity planning</h3>
|
||||
<p>Urban growth indices and commercial opportunity scores mapped against your existing network. Identify where demand is ahead of your current capacity before pressure builds.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our logistics clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Last-mile network design</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Depot location selection</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Route efficiency</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Capacity planning</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Network expansion</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Urban zone prioritisation</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<svg class="conflict-flag-svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#f87171" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<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>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — Hamburg — Last-Mile Zone Assessment</div>
|
||||
<div class="conflict-desc">Urban growth model projects strong demand in northern zone. Field observations reveal a more complex infrastructure picture that challenges the expansion case.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Growth model: northern zone demand +23% YoY</li>
|
||||
<li>✓ Road network: rated adequate for expansion</li>
|
||||
<li>✓ Municipality: no known access restrictions</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ Road condition below model assumptions</li>
|
||||
<li>✗ Loading bay access restricted: 3 key locations</li>
|
||||
<li>✗ Active construction reducing access 6–18 months</li>
|
||||
<li>✗ Southern zone outperforming northern on density</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">39%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="ce-feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" 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>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="ce-feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>
|
||||
</svg>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="ce-feature-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" 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>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence products</div>
|
||||
<h2 class="section-title">Landvex scores for Logistics</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="score-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/>
|
||||
</svg>
|
||||
<div class="score-name">Urban Growth Index</div>
|
||||
<div class="score-desc">Measures pace and direction of urban change. Identifies emerging demand zones before official statistics catch up.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:78%"></div>
|
||||
</div>
|
||||
<div class="score-value">78</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="score-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/>
|
||||
<line x1="12" y1="8" x2="12" y2="12"/>
|
||||
<line x1="12" y1="16" x2="12.01" y2="16"/>
|
||||
</svg>
|
||||
<div class="score-name">Infrastructure Risk Index</div>
|
||||
<div class="score-desc">Identifies road quality issues, access constraints, and maintenance risks that affect delivery reliability and cost.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:62%"></div>
|
||||
</div>
|
||||
<div class="score-value">62</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<svg class="score-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round">
|
||||
<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 class="score-name">Commercial Opportunity Index</div>
|
||||
<div class="score-desc">Maps commercial activity density and growth trajectories to identify high-opportunity zones for last-mile optimisation.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:84%"></div>
|
||||
</div>
|
||||
<div class="score-value">84</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTACT -->
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We’ll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical-logistics',
|
||||
name: this.name.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 = "\u2713 Request received. We\u2019ll 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 \u2192';
|
||||
});
|
||||
|
||||
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>
|
||||
@@ -0,0 +1,652 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Municipalities & Government Intelligence — Landvex</title>
|
||||
<meta name="description" content="Decision intelligence for municipalities and government agencies. Landvex answers: which areas require most investment? Where is infrastructure deteriorating? Get field-verified answers.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/municipalities/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/municipalities/">
|
||||
<meta property="og:title" content="Municipalities & Government Intelligence — Landvex">
|
||||
<meta property="og:description" content="Decision intelligence for municipalities and government agencies. Landvex answers: which areas require most investment? Where is infrastructure deteriorating?">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section overrides */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { font-size: 28px; margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag { font-size: 1.5rem; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon { font-size: 1.5rem; margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Municipalities & Government</div>
|
||||
<h1>Which areas will require the most investment over the next five years?</h1>
|
||||
<p class="hero-sub">Landvex gives public sector organisations the field-verified intelligence to plan smarter — from infrastructure condition to urban development priorities, before the problems become crises.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Municipalities & Government</h2>
|
||||
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🔭</span>
|
||||
<h3>Urban asset management</h3>
|
||||
<p>Systematic documentation of streets, public spaces, and municipal assets across entire districts — at a fraction of traditional survey costs.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></span>
|
||||
<h3>Planning compliance monitoring</h3>
|
||||
<p>Verify that developments conform to planning permissions and standards. Detect unapproved works, encroachments, and non-compliant modifications.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🗺️</span>
|
||||
<h3>Infrastructure condition monitoring</h3>
|
||||
<p>Ongoing visual monitoring of roads, bridges, drainage, and public utilities — identifying deterioration before it becomes a liability.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">⚡</span>
|
||||
<h3>Public space documentation</h3>
|
||||
<p>Baseline documentation of parks, plazas, and community assets for maintenance planning, insurance, and performance reporting.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our municipalities & government clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Resource allocation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Maintenance prioritisation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Urban development planning</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Budget forecasting</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Risk mitigation</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag">🚩</span>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — Stockholm — Södermalm</div>
|
||||
<div class="conflict-desc">Official infrastructure reports show satisfactory condition ratings. Field observations reveal significant divergence across 3 districts.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Infrastructure rating: 7.2/10</li><li>✓ Maintenance spend on track</li><li>✓ No critical failures reported</li> </ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ ✗ Visible cracking in 34% of sampled roads</li><li>✗ ✗ Drainage blockages on 12 key junctions</li><li>✗ ✗ Deferred maintenance visible on 8 bridges</li> </ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">41%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">🔍</div>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">⚔️</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">📐</div>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence scores</div>
|
||||
<h2 class="section-title">Landvex scores relevant to Municipalities & Government</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid" style="grid-template-columns:repeat(3,1fr)">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🏙️</div>
|
||||
<div class="score-name">City Health Index</div>
|
||||
<div class="score-desc">Composite measure of urban infrastructure quality, service delivery, and development momentum.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:74%"></div>
|
||||
</div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🔧</div>
|
||||
<div class="score-name">Infrastructure Risk Index</div>
|
||||
<div class="score-desc">Identifies areas where physical infrastructure is deteriorating faster than maintenance can address.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:68%"></div>
|
||||
</div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">📈</div>
|
||||
<div class="score-name">Development Forecast</div>
|
||||
<div class="score-desc">Forward-looking signal combining permit activity, investment flows, and observed construction.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:81%"></div>
|
||||
</div>
|
||||
<div class="score-value">81</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical',
|
||||
name: this.name.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 = "\u2713 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 →';
|
||||
});
|
||||
|
||||
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>
|
||||
@@ -0,0 +1,656 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Property & Real Estate Intelligence — Landvex</title>
|
||||
<meta name="description" content="Intelligence for property owners and real estate developers. Should we invest 500 million in this area? Landvex answers with observed data, not assumptions.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/property/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/property/">
|
||||
<meta property="og:title" content="Property & Real Estate Intelligence — Landvex">
|
||||
<meta property="og:description" content="Intelligence for property owners and real estate developers. Should we invest 500 million in this area? Landvex answers with observed data, not assumptions.">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section overrides */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { font-size: 28px; margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag { font-size: 1.5rem; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon { font-size: 1.5rem; margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Property & Real Estate</div>
|
||||
<h1>Should we invest 500 million in this area?</h1>
|
||||
<p class="hero-sub">Landvex gives real estate professionals the ground-truth intelligence to make faster, better-informed decisions — on acquisitions, disposals, renovations, and development opportunities.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Property & Real Estate</h2>
|
||||
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🔭</span>
|
||||
<h3>Portfolio documentation</h3>
|
||||
<p>Systematic visual documentation of portfolio assets — condition, occupancy signals, neighbourhood quality, and change over time.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></span>
|
||||
<h3>Condition assessments</h3>
|
||||
<p>Pre-acquisition and pre-sale condition surveys delivered within 72 hours. Geo-tagged, AI-reviewed, and ready for due diligence.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🗺️</span>
|
||||
<h3>Site verification</h3>
|
||||
<p>Confirm what's actually on the ground before committing capital. Verify access, condition, and surrounding environment.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">⚡</span>
|
||||
<h3>Market intelligence</h3>
|
||||
<p>Track commercial activity, vacancy rates, and neighbourhood trajectory across target markets — before the data appears in published indices.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our property & real estate clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Acquisition</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Disposal</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Renovation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Development</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Portfolio optimisation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Due diligence</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag">🚩</span>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — Berlin — Prenzlauer Berg</div>
|
||||
<div class="conflict-desc">Market narrative describes strong residential demand and rising values. Field observations show diverging signals in the target acquisition zone.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Property prices up 8.3% YoY</li><li>✓ Strong rental demand reported</li><li>✓ Low vacancy in commercial ground floor</li> </ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ ✗ Vacancy rates up 22% vs prior year visit</li><li>✗ ✗ Multiple businesses closed, limited new openings</li><li>✗ ✗ Deferred maintenance visible on 40% of sampled buildings</li><li>✗ ✗ Foot traffic down vs comparable streets</li> </ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">36%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">🔍</div>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">⚔️</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">📐</div>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence scores</div>
|
||||
<h2 class="section-title">Landvex scores relevant to Property & Real Estate</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid" style="grid-template-columns:repeat(3,1fr)">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">💎</div>
|
||||
<div class="score-name">Investment Attractiveness Index</div>
|
||||
<div class="score-desc">Composite score combining opportunity, risk, velocity, and quality for investment decisions.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:74%"></div>
|
||||
</div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🏪</div>
|
||||
<div class="score-name">Commercial Opportunity Index</div>
|
||||
<div class="score-desc">Measures commercial vacancy, foot traffic, and business activity for location intelligence.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:68%"></div>
|
||||
</div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🚀</div>
|
||||
<div class="score-name">Growth Velocity Index</div>
|
||||
<div class="score-desc">How fast is an area changing? Identifies emerging zones before they appear in official statistics.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:81%"></div>
|
||||
</div>
|
||||
<div class="score-value">81</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical',
|
||||
name: this.name.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 = "\u2713 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 →';
|
||||
});
|
||||
|
||||
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>
|
||||
@@ -0,0 +1,652 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Retail & Franchise Location Intelligence — Landvex</title>
|
||||
<meta name="description" content="Location intelligence for retail and franchise operators. Where should the next location open? Continuous commercial vitality monitoring across markets.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/retail/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/retail/">
|
||||
<meta property="og:title" content="Retail & Franchise Location Intelligence — Landvex">
|
||||
<meta property="og:description" content="Location intelligence for retail and franchise operators. Where should the next location open? Continuous commercial vitality monitoring across markets.">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section overrides */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { font-size: 28px; margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag { font-size: 1.5rem; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon { font-size: 1.5rem; margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Retail & Franchise</div>
|
||||
<h1>Where should the next location open?</h1>
|
||||
<p class="hero-sub">Landvex gives retail and franchise operators the ground-truth intelligence to make better site decisions, verify network compliance, and track competitive dynamics — from the street, not the spreadsheet.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Retail & Franchise</h2>
|
||||
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🔭</span>
|
||||
<h3>Store compliance audits</h3>
|
||||
<p>Verify signage, frontage, merchandising standards, and physical condition across your entire network. Rapid, scalable, consistent.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></span>
|
||||
<h3>Signage verification</h3>
|
||||
<p>Confirm brand standards and regulatory compliance across distributed franchise or retail networks — without sending your own team.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🗺️</span>
|
||||
<h3>Competitor mapping</h3>
|
||||
<p>Document competitor presence, condition, and activity across target markets. Know what's actually on the ground before you commit.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">⚡</span>
|
||||
<h3>Location intelligence</h3>
|
||||
<p>Pre-site surveys combining foot traffic signals, surrounding commercial activity, accessibility, and neighbourhood quality assessment.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our retail & franchise clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Site selection</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Network expansion</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Portfolio optimisation</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Franchise compliance</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Market exit</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag">🚩</span>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — London — Westfield Stratford Catchment</div>
|
||||
<div class="conflict-desc">Internal sales data shows this catchment as a priority growth zone. Field observations reveal a more complex competitive picture.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Internal: catchment growth 12% YoY</li><li>✓ Competitor analysis: 2 main operators</li><li>✓ Foot traffic model: high potential</li> </ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ ✗ 4 additional competitors not in internal model</li><li>✗ ✗ Observed foot traffic lower than modelled peak</li><li>✗ ✗ 3 recent closures in primary retail zone</li><li>✗ ✗ Public transport disruption affecting access</li> </ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">44%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">🔍</div>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">⚔️</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">📐</div>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence scores</div>
|
||||
<h2 class="section-title">Landvex scores relevant to Retail & Franchise</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid" style="grid-template-columns:repeat(3,1fr)">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🏪</div>
|
||||
<div class="score-name">Commercial Opportunity Index</div>
|
||||
<div class="score-desc">Measures commercial vacancy, foot traffic, and business activity for location intelligence.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:74%"></div>
|
||||
</div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🏘️</div>
|
||||
<div class="score-name">Neighbourhood Quality Index</div>
|
||||
<div class="score-desc">How an area is experienced — condition, activity, upkeep, and change trajectory.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:68%"></div>
|
||||
</div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🚀</div>
|
||||
<div class="score-name">Growth Velocity Index</div>
|
||||
<div class="score-desc">How fast is an area changing? Identifies emerging zones before they appear in official statistics.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:81%"></div>
|
||||
</div>
|
||||
<div class="score-value">81</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical',
|
||||
name: this.name.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 = "\u2713 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 →';
|
||||
});
|
||||
|
||||
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>
|
||||
@@ -0,0 +1,641 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Utilities & Energy Intelligence — Landvex</title>
|
||||
<meta name="description" content="Field intelligence for utilities and energy operators. Monitor grid infrastructure, identify capacity constraints, and plan network investments.">
|
||||
<link rel="canonical" href="https://www.landvex.com/verticals/utilities/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://www.landvex.com/verticals/utilities/">
|
||||
<meta property="og:title" content="Utilities & Energy Intelligence — Landvex">
|
||||
<meta property="og:description" content="Field intelligence for utilities and energy operators. Monitor grid infrastructure, identify capacity constraints, and plan network investments.">
|
||||
<meta property="og:image" content="https://www.landvex.com/og-image.jpg">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<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">
|
||||
<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.15);
|
||||
--text-dark: #0a0a0a;
|
||||
--text-body: #3a3a3a;
|
||||
--text-muted: #6B6B6B;
|
||||
--text-light: #1d1d1f;
|
||||
--text-dim: #6B6B6B;
|
||||
--surface: #ffffff;
|
||||
--surface-2: #f5f5f7;
|
||||
--border: rgba(0,0,0,0.08);
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 14px;
|
||||
--radius-lg: 24px;
|
||||
}
|
||||
|
||||
html { scroll-behavior: smooth; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Helvetica Neue', sans-serif;
|
||||
background: var(--bg-dark);
|
||||
color: var(--text-light);
|
||||
line-height: 1.6;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
a { color: inherit; text-decoration: none; }
|
||||
|
||||
nav {
|
||||
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
|
||||
display: flex; align-items: center; justify-content: space-between;
|
||||
padding: 0 40px; height: 64px;
|
||||
background: rgba(10,10,10,0.88);
|
||||
backdrop-filter: blur(16px);
|
||||
-webkit-backdrop-filter: blur(16px);
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
|
||||
.nav-logo {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.3px;
|
||||
color: #1d1d1f; }
|
||||
|
||||
.btn {
|
||||
display: inline-flex; align-items: center; gap: 6px;
|
||||
padding: 10px 22px;
|
||||
background: var(--blue); color: #1d1d1f;
|
||||
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: var(--text-light);
|
||||
}
|
||||
.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 {
|
||||
min-height: 90vh;
|
||||
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
||||
text-align: center;
|
||||
padding: 120px 24px 80px;
|
||||
position: relative; overflow: hidden;
|
||||
}
|
||||
|
||||
.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: #5599ff;
|
||||
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(36px, 6vw, 68px);
|
||||
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, 19px);
|
||||
color: var(--text-dim); max-width: 620px; line-height: 1.65;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.hero-ctas { display: flex; gap: 14px; flex-wrap: wrap; justify-content: center; }
|
||||
|
||||
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: var(--text-dim);
|
||||
max-width: 600px; line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Light section overrides */
|
||||
.light-section { background: #fff; }
|
||||
.light-section .section-title { color: #0a0a0a; }
|
||||
.light-section .section-sub { color: #444; }
|
||||
.light-section .section-label { color: var(--blue); }
|
||||
|
||||
/* USE CASES */
|
||||
.use-case-grid {
|
||||
display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px;
|
||||
margin-top: 48px;
|
||||
}
|
||||
|
||||
.use-case-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 32px 28px;
|
||||
transition: border-color 0.25s, transform 0.2s;
|
||||
}
|
||||
.use-case-card:hover { border-color: rgba(0,102,255,0.35); transform: translateY(-3px); }
|
||||
|
||||
.uc-icon { font-size: 28px; margin-bottom: 16px; display: block; }
|
||||
.use-case-card h3 { font-size: 17px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
|
||||
.use-case-card p { font-size: 14px; color: var(--text-dim); line-height: 1.6; }
|
||||
|
||||
/* DECISIONS */
|
||||
.decisions-bg { background: var(--surface); }
|
||||
|
||||
.decisions-grid {
|
||||
display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
.decision-chip {
|
||||
background: var(--bg-dark); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md); padding: 20px 24px;
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
}
|
||||
.decision-chip .chip-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--blue); flex-shrink: 0;
|
||||
}
|
||||
.decision-chip span { font-size: 15px; font-weight: 600; color: var(--text-light); }
|
||||
|
||||
/* CONTRADICTION ENGINE */
|
||||
.contradiction-bg { background: #e8f0fe; }
|
||||
|
||||
.contradiction-box {
|
||||
background: rgba(0,0,0,.05);
|
||||
border: 1px solid rgba(0,0,0,.1);
|
||||
border-radius: 16px; padding: 36px 40px; margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.conflict-header {
|
||||
display: flex; align-items: flex-start; gap: 16px; margin-bottom: 24px;
|
||||
}
|
||||
.conflict-flag { font-size: 1.5rem; }
|
||||
.conflict-title { color: #f87171; font-weight: 800; font-size: .9375rem; margin-bottom: 4px; }
|
||||
.conflict-desc { color: rgba(0,0,0,.6); font-size: .875rem; line-height: 1.6; }
|
||||
|
||||
.conflict-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
|
||||
|
||||
.conflict-side { border-radius: 10px; padding: 16px; }
|
||||
.conflict-official { background: rgba(34,197,94,.1); border: 1px solid rgba(34,197,94,.2); }
|
||||
.conflict-observed { background: rgba(239,68,68,.1); border: 1px solid rgba(239,68,68,.2); }
|
||||
|
||||
.conflict-side-label {
|
||||
font-size: .75rem; font-weight: 700; text-transform: uppercase;
|
||||
letter-spacing: .08em; margin-bottom: 10px;
|
||||
}
|
||||
.conflict-official .conflict-side-label { color: #86efac; }
|
||||
.conflict-observed .conflict-side-label { color: #fca5a5; }
|
||||
|
||||
.conflict-side ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
|
||||
.conflict-side li { color: rgba(0,0,0,.7); font-size: .875rem; }
|
||||
|
||||
.conflict-footer {
|
||||
margin-top: 20px; padding-top: 20px;
|
||||
border-top: 1px solid rgba(0,0,0,.1);
|
||||
display: flex; justify-content: space-between; align-items: center;
|
||||
}
|
||||
.conflict-footer-label { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
.conflict-confidence { color: #f87171; font-weight: 800; font-size: 1.125rem; }
|
||||
|
||||
.ce-features { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
|
||||
.ce-feature { text-align: center; padding: 20px; }
|
||||
.ce-feature .ce-icon { font-size: 1.75rem; margin-bottom: 8px; }
|
||||
.ce-feature h4 { color: #1d1d1f; font-weight: 700; margin-bottom: 6px; }
|
||||
.ce-feature p { color: rgba(0,0,0,.75); font-size: .8125rem; }
|
||||
|
||||
/* SCORES */
|
||||
.scores-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 40px; }
|
||||
|
||||
.score-card {
|
||||
background: var(--surface-2); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 28px 24px; text-align: center;
|
||||
}
|
||||
|
||||
.score-icon { font-size: 1.5rem; margin-bottom: 12px; }
|
||||
.score-name { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 6px; }
|
||||
.score-desc { font-size: 13px; color: var(--text-dim); line-height: 1.5; margin-bottom: 20px; }
|
||||
.score-bar-wrap { background: rgba(0,0,0,.06); border-radius: 6px; height: 8px; margin-bottom: 10px; }
|
||||
.score-bar { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--blue), #5599ff); }
|
||||
.score-value { font-size: 28px; font-weight: 800; color: var(--blue); letter-spacing: -1px; }
|
||||
.score-label-sub { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
|
||||
|
||||
/* CTA BANNER */
|
||||
.cta-banner {
|
||||
background: #e8f0fe; border-radius: 16px; padding: 40px 48px;
|
||||
display: flex; align-items: center; gap: 48px; flex-wrap: wrap;
|
||||
margin-top: 48px;
|
||||
}
|
||||
.cta-banner h3 { color: #1d1d1f; font-size: 1.25rem; font-weight: 800; margin-bottom: 8px; }
|
||||
.cta-banner p { color: rgba(0,0,0,.7); line-height: 1.65; font-size: .9375rem; }
|
||||
.cta-banner-text { flex: 1; min-width: 260px; }
|
||||
|
||||
/* CONTACT FORM */
|
||||
.contact-wrapper { max-width: 680px; margin: 0 auto; text-align: center; }
|
||||
.contact-wrapper .section-title { margin-bottom: 10px; }
|
||||
.contact-wrapper .section-sub { margin: 0 auto 48px; }
|
||||
|
||||
.contact-form {
|
||||
background: var(--surface); border: 1px solid var(--border);
|
||||
border-radius: var(--radius-lg); padding: 40px; text-align: left;
|
||||
}
|
||||
|
||||
.form-group { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
|
||||
.form-group label { font-size: 13px; font-weight: 600; color: var(--text-dim); }
|
||||
.form-group input, .form-group textarea {
|
||||
background: var(--bg-dark); 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: var(--text-muted); }
|
||||
.form-group textarea { min-height: 120px; resize: vertical; }
|
||||
.form-note { font-size: 12px; color: var(--text-muted); 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; }
|
||||
.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: var(--text-muted); }
|
||||
.footer-tagline { font-size: 12px; color: var(--text-muted); margin-top: 4px; }
|
||||
.footer-links { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
|
||||
.footer-links a { font-size: 14px; color: var(--text-muted); transition: color 0.2s; }
|
||||
.footer-links a:hover { color: #1d1d1f; }
|
||||
.footer-social {
|
||||
width: 32px; height: 32px; border: 1px solid var(--border); border-radius: 8px;
|
||||
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); }
|
||||
|
||||
@media (max-width: 900px) {
|
||||
nav { padding: 0 20px; }
|
||||
.use-case-grid { grid-template-columns: 1fr; }
|
||||
.decisions-grid { grid-template-columns: 1fr 1fr; }
|
||||
.scores-grid { grid-template-columns: 1fr 1fr; }
|
||||
.conflict-grid { grid-template-columns: 1fr; }
|
||||
.ce-features { grid-template-columns: 1fr; }
|
||||
}
|
||||
@media (max-width: 600px) {
|
||||
section { padding: 48px 0 !important; }
|
||||
.container { padding: 0 16px !important; box-sizing: border-box; }
|
||||
.decisions-grid { grid-template-columns: 1fr !important; }
|
||||
.scores-grid { grid-template-columns: 1fr !important; }
|
||||
.use-case-grid { grid-template-columns: 1fr !important; }
|
||||
.conflict-grid { grid-template-columns: 1fr !important; }
|
||||
.ce-features { grid-template-columns: 1fr !important; }
|
||||
.cta-banner { flex-direction: column !important; gap: 16px !important; padding: 28px 24px; }
|
||||
.contact-form { padding: 24px 20px; }
|
||||
nav { padding: 0 16px; }
|
||||
.hero h1 { letter-spacing: -1px; }
|
||||
}
|
||||
|
||||
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding:12px 16px;background:rgba(0,0,0,.04);border-radius:8px;line-height:1.6;max-width:800px}
|
||||
.lv-disclaimer a{color:rgba(0,0,0,.65);text-decoration:underline}
|
||||
.lv-disclaimer--light{color:#888;background:#f5f5f5}
|
||||
.lv-disclaimer--light a{color:#555}
|
||||
</style>
|
||||
<meta name="robots" content="index, follow">
|
||||
<link rel="alternate" hreflang="x-default" href="https://www.landvex.com/">
|
||||
<link rel="alternate" hreflang="en" href="https://www.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/">
|
||||
<style>
|
||||
@media (max-width: 640px) {
|
||||
.hero h1 { font-size: 2rem !important; }
|
||||
.hero p { font-size: 1rem !important; }
|
||||
.card { padding: 1.5rem !important; }
|
||||
.grid { grid-template-columns: 1fr !important; }
|
||||
.btn { padding: 0.75rem 1.5rem !important; font-size: 1rem !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<a class="nav-logo" href="https://landvex.com/">← Back to Landvex</a>
|
||||
<a class="btn btn-outline" href="#contact">Get in touch →</a>
|
||||
</nav>
|
||||
|
||||
<!-- HERO -->
|
||||
<section class="hero">
|
||||
<div class="hero-eyebrow">Landvex — Utilities & Energy</div>
|
||||
<h1>Where is grid capacity becoming a constraint?</h1>
|
||||
<p class="hero-sub">Landvex helps utilities and energy operators understand the physical reality of their networks — identifying capacity constraints, asset condition, and growth demand before they become problems.</p>
|
||||
<div class="hero-ctas">
|
||||
<a class="btn btn-lg" href="#contact">Request a briefing →</a>
|
||||
<a class="btn btn-outline btn-lg" href="#use-cases">See use cases</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- USE CASES -->
|
||||
<section id="use-cases" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Use cases</div>
|
||||
<h2 class="section-title">What Landvex does for Utilities & Energy</h2>
|
||||
<p class="section-sub">From single-asset verifications to portfolio-wide intelligence missions — deployed in 24–72 hours.</p>
|
||||
<div class="use-case-grid">
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🔭</span>
|
||||
<h3>Grid infrastructure surveys</h3>
|
||||
<p>Visual documentation of substations, transmission lines, transformers, and distribution equipment across large network areas.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#0066FF" stroke-width="2"><path d="M18 20V10"/><path d="M12 20V4"/><path d="M6 20v-6"/></svg></span>
|
||||
<h3>Solar & wind asset documentation</h3>
|
||||
<p>Site surveys, asset condition documentation, and surrounding land-use monitoring for renewable energy installations.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">🗺️</span>
|
||||
<h3>Network inspections</h3>
|
||||
<p>Rapid visual inspection of above-ground network infrastructure — identifying vegetation encroachment, physical damage, and deterioration.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
<div class="use-case-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="uc-icon">⚡</span>
|
||||
<h3>Capacity planning intelligence</h3>
|
||||
<p>Ground-truth observation of urban growth, construction activity, and commercial development to support demand forecasting.</p>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Learn more →</div></div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- KEY DECISIONS -->
|
||||
<section class="decisions-bg" id="key-decisions">
|
||||
<div class="container">
|
||||
<div class="section-label">Decision support</div>
|
||||
<h2 class="section-title">The decisions Landvex informs</h2>
|
||||
<p class="section-sub">Every Landvex engagement is anchored to a specific decision. These are the ones our utilities & energy clients face most often.</p>
|
||||
<div class="decisions-grid">
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Network investment</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Maintenance scheduling</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Capacity expansion</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Asset life extension</span>
|
||||
</div>
|
||||
<div class="decision-chip" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<span class="chip-dot"></span>
|
||||
<span>Regulatory reporting</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- CONTRADICTION ENGINE -->
|
||||
<section class="contradiction-bg" id="contradiction">
|
||||
<div class="container" style="max-width:900px">
|
||||
<div style="text-align:center;margin-bottom:56px">
|
||||
<div class="section-label" style="color:rgba(0,0,0,.75)">Contradiction Engine</div>
|
||||
<h2 class="section-title" style="color: #1d1d1f">Most systems tell you what the data says.<br>Landvex tells you what doesn’t add up.</h2>
|
||||
<p class="section-sub" style="color:rgba(0,0,0,.75);margin:0 auto;max-width:600px">The most valuable intelligence is not confirmation. It’s contradiction. Landvex actively searches for conflicts between official narratives and observed reality.</p>
|
||||
</div>
|
||||
|
||||
<div class="contradiction-box">
|
||||
<div class="conflict-header">
|
||||
<span class="conflict-flag">🚩</span>
|
||||
<div>
|
||||
<div class="conflict-title">Narrative Conflict Detected — Amsterdam — Noord District</div>
|
||||
<div class="conflict-desc">Reported grid condition shows acceptable parameters. Field observations and development activity suggest emerging constraints within 18 months.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-grid">
|
||||
<div class="conflict-side conflict-official">
|
||||
<div class="conflict-side-label">Official narrative</div>
|
||||
<ul>
|
||||
<li>✓ Grid stability: 98.7% uptime</li><li>✓ Planned upgrade: 2028</li><li>✓ Demand forecast: within model range</li> </ul>
|
||||
</div>
|
||||
<div class="conflict-side conflict-observed">
|
||||
<div class="conflict-side-label">Observed reality</div>
|
||||
<ul>
|
||||
<li>✗ ✗ 14 new data centres in planning or construction</li><li>✗ ✗ Large residential development adding unmodelled load</li><li>✗ ✗ Substation compound showing deferred maintenance</li><li>✗ ✗ Vegetation encroachment on 6 transmission corridors</li> </ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="conflict-footer">
|
||||
<span class="conflict-footer-label">Confidence in official narrative</span>
|
||||
<span class="conflict-confidence">38%</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ce-features">
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">🔍</div>
|
||||
<h4>Show me what I’m missing</h4>
|
||||
<p>Blind spots not visible in official data or internal reports</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">⚔️</div>
|
||||
<h4>AI Red Team</h4>
|
||||
<p>Every conclusion is actively challenged by a second model before delivery</p>
|
||||
</div>
|
||||
<div class="ce-feature" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="ce-icon">📐</div>
|
||||
<h4>Which assumptions are wrong?</h4>
|
||||
<p>Identify where your thesis conflicts with observed reality</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- SCORES -->
|
||||
<section id="scores" style="background:var(--surface)">
|
||||
<div class="container">
|
||||
<div class="section-label">Intelligence scores</div>
|
||||
<h2 class="section-title">Landvex scores relevant to Utilities & Energy</h2>
|
||||
<p class="section-sub">Every score is derived from field-verified observations, cross-referenced against official data, and launching August 2026.</p>
|
||||
<div class="scores-grid" style="grid-template-columns:repeat(2,1fr)">
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🔧</div>
|
||||
<div class="score-name">Infrastructure Risk Index</div>
|
||||
<div class="score-desc">Identifies areas where physical infrastructure is deteriorating faster than maintenance can address.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:74%"></div>
|
||||
</div>
|
||||
<div class="score-value">74</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
<div class="score-card" style="cursor:pointer;" onclick="location.href='#contact'" role="button" tabindex="0">
|
||||
<div class="score-icon">🌆</div>
|
||||
<div class="score-name">Urban Growth Index</div>
|
||||
<div class="score-desc">Tracks urban expansion signals: new construction, population pressure, grid demand growth.</div>
|
||||
<div class="score-bar-wrap">
|
||||
<div class="score-bar" style="width:68%"></div>
|
||||
</div>
|
||||
<div class="score-value">68</div>
|
||||
<div class="score-label-sub">placeholder · live data from Aug 2026</div>
|
||||
|
||||
<div class="learn-more-hint" style="margin-top:12px;font-size:13px;font-weight:700;color:#0066ff">Request access →</div></div>
|
||||
</div>
|
||||
|
||||
<div class="cta-banner">
|
||||
<div class="cta-banner-text">
|
||||
<h3>Four layers. One answer.</h3>
|
||||
<p>quiXzoom observes. AMOS analyses. Landvex delivers the answer. Every engagement starts with one question: <em style="color: #1d1d1f;font-style:normal">what decision are you trying to make?</em></p>
|
||||
</div>
|
||||
<a class="btn btn-lg" href="#contact" style="white-space:nowrap;flex-shrink:0">Request a briefing →</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="contact">
|
||||
<div class="container">
|
||||
<div class="contact-wrapper">
|
||||
<div class="section-label">Request a briefing</div>
|
||||
<h2 class="section-title">What decision are you trying to make?</h2>
|
||||
<p class="section-sub">Tell us the question you need answered. We'll show you how Landvex can support it.</p>
|
||||
|
||||
<form class="contact-form" id="contact-form">
|
||||
<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="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>
|
||||
|
||||
<p class="lv-disclaimer">Intelligence outputs are indicative and advisory only. Based on field observations — not investment, financial or legal advice. Landvex AB accepts no liability for decisions made based on these outputs. <a href="/methodology/">Methodology →</a></p>
|
||||
</section>
|
||||
|
||||
<footer>
|
||||
<div class="footer-inner">
|
||||
<div>
|
||||
<div class="footer-logo">LandveX</div>
|
||||
<div class="footer-copy">© 2026 Landvex Inc · Landvex AB (org.nr 559141-7042)</div>
|
||||
<div class="footer-tagline">Decision intelligence for the physical world.</div>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<a href="https://landvex.com/">Home</a>
|
||||
<a href="/verticals/">Verticals</a>
|
||||
<a href="/methodology/">Methodology</a>
|
||||
<a href="/security/">Security</a>
|
||||
<a href="https://www.quixzoom.com/" target="_blank" rel="noopener">quiXzoom →</a>
|
||||
<a href="mailto:contact@landvex.com">contact@landvex.com</a>
|
||||
<a href="mailto:security@landvex.com" style="color:var(--text-muted,#888)">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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
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-vertical',
|
||||
name: this.name.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 = "\u2713 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 →';
|
||||
});
|
||||
|
||||
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>
|
||||
Reference in New Issue
Block a user