Files
boc/landvex-site/verticals/property/index.html
T
Bernt 6de2455917 v1.2.0: Add Global Markets footer, translated to 9 languages
- Added GLOBAL_MARKETS_TITLE to all translation files
- Updated footer with 12 markets (4 active + 8 upcoming)
- Translated market section to: zh-cn, zh-tw, ja, ko, th, vi, id, ms, hi
- Built and deployed to production
- CloudFront invalidation: I3RTMXVFDJXWLG3SYX208OP1CC
2026-07-08 19:56:03 +00:00

656 lines
32 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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(255,255,255,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: var(--radius-full);
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: var(--radius-lg); 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: var(--radius-md); 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: var(--radius-sm); height: 8px; margin-bottom: 10px; }
.score-bar { height: 8px; border-radius: var(--radius-sm); 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: var(--radius-lg); 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: var(--radius-md);
display: flex; align-items: center; justify-content: center;
transition: border-color 0.2s, background 0.2s;
}
.footer-social:hover { border-color: rgba(0,0,0,0.25); background: rgba(0,0,0,0.04); }
@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: var(--radius-md);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/">&larr; Back to Landvex</a>
<a class="btn btn-outline" href="#contact">Get in touch &rarr;</a>
</nav>
<!-- HERO -->
<section class="hero">
<div class="hero-eyebrow">Landvex &mdash; 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 &rarr;</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 2472 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"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M9 2L5 9H8L7 14L11 7H8L9 2Z" fill="#f59e0b"/></svg></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&rsquo;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&rsquo;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">&#x1F6A9;</span>
<div>
<div class="conflict-title">Narrative Conflict Detected &mdash; 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>&#100003 Property prices up 8.3% YoY</li><li>&#100003 Strong rental demand reported</li><li>&#100003 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>&#100007 <svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Vacancy rates up 22% vs prior year visit</li><li>&#100007 <svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Multiple businesses closed, limited new openings</li><li>&#100007 <svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Deferred maintenance visible on 40% of sampled buildings</li><li>&#100007 <svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M4 4L12 12M12 4L4 12" stroke="#ef4444" stroke-width="2" stroke-linecap="round"/></svg> Foot traffic down 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">&#x1F50D;</div>
<h4>Show me what I&rsquo;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">&#x2694;&#xFE0F;</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">&#x1F4D0;</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"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M8 2L10 8L14 9L8 14L6 8L2 7L8 2Z" fill="#666"/></svg></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 &rarr;</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 &rarr;
</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">&copy; 2026 Landvex Inc &middot; 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 &rarr;</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>