Files
boc/landvex-all/verticals/property/index.html
T
Bernt 6989a98d75 feat: Passwordless cross-device authentication
- Arkitektur: docs/auth/passwordless-architecture.md
- Backend: iom/quixzoom-auth-service/ (FastAPI + Redis)
- Webb: quixzoom-market-pages/se/login/ (QR-kod + polling)
- App: iom/quixzoom-app/src/features/auth/ (push + deep links)

Flöde: QR-kod → app-godkännande → webb-inloggad
2026-07-07 07:11:50 +00:00

636 lines
30 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://landvex.com/verticals/property/">
<meta property="og:type" content="website">
<meta property="og:url" content="https://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://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">
<link rel="stylesheet" href="/assets/css/landvex-complete.css">
<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.92);
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: 16px;
padding: 24px;
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: 24px; 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: 24px 80px;
position: relative; overflow: hidden;
}
/* Dekorativ bakgrund borttagen */
.hero-eyebrow { display: inline-flex; align-items: center; gap: 16px; color: #0066ff; font-size: 12px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; padding: 8px 0; }
.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: 16px; flex-wrap: wrap; justify-content: center; }
section { padding: 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: 24px;
}
.section-title {
font-size: clamp(28px, 4vw, 44px);
font-weight: 800; letter-spacing: -1.2px; line-height: 1.1;
color: #1d1d1f; margin-bottom: 24px;
}
.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: 16px;
margin-top: 48px;
}
.use-case-card {
background: var(--surface-2); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 24px;
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: 24px; 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: 24px;
display: flex; align-items: center; gap: 16px;
}
.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: 24px; 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: 16px; }
.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: 16px; }
.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: 16px; margin-top: 40px; }
.score-card {
background: var(--surface-2); border: 1px solid var(--border);
border-radius: var(--radius-lg); padding: 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: 24px;
display: flex; align-items: center; gap: 16px; 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: 16px; margin-bottom: 24px; }
.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: 24px;
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: 24px; 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: 16px;
}
.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: 16px; 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; padding: 24px; }
.contact-form { padding: 24px; }
nav { padding: 0 16px; }
.hero h1 { letter-spacing: -1px; }
}
.lv-disclaimer{font-size:.75rem;color:rgba(0,0,0,.75);margin-top:24px;padding: 24px;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://landvex.com/">
<link rel="alternate" hreflang="en" href="https://landvex.com/"> <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 aria-label="Main navigation">
<a class="nav-logo" href="https://landvex.com/">&larr; Back to Landvex</a>
<a class="lv-btn lv-btn--outline" href="#contact">Get in touch &rarr;</a>
</nav>
<!-- HERO -->
<section class="lv-hero">
<div class="lv-hero-eyebrow">Landvex &mdash; Property & Real Estate</div>
<h1>Should we invest 500 million in this area?</h1>
<p class="lv-hero-subtitle">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="lv-btn lv-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">
<div class="lv-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" 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">Learn more →</div></div>
<div class="use-case-card" 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">Learn more →</div></div>
<div class="use-case-card" 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">Learn more →</div></div>
<div class="use-case-card" 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">Learn more →</div></div>
</div>
</div>
</section>
<!-- KEY DECISIONS -->
<section class="decisions-bg" id="key-decisions">
<div class="lv-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" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Acquisition</span>
</div>
<div class="decision-chip" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Disposal</span>
</div>
<div class="decision-chip" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Renovation</span>
</div>
<div class="decision-chip" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Development</span>
</div>
<div class="decision-chip" onclick="location.href='#contact'" role="button" tabindex="0">
<span class="chip-dot"></span>
<span>Portfolio optimisation</span>
</div>
<div class="decision-chip" 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="lv-container">
<div>
<div class="section-label">Contradiction Engine</div>
<h2 class="section-title">Most systems tell you what the data says.<br>Landvex tells you what doesn&rsquo;t add up.</h2>
<p class="section-sub">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" 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" 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" 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">
<div class="lv-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">
<div class="score-card" 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"></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">Request access →</div></div>
<div class="score-card" 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"></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">Request access →</div></div>
<div class="score-card" 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"></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">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>what decision are you trying to make?</em></p>
</div>
<a class="lv-btn lv-btn--lg" href="#contact">Request a briefing &rarr;</a>
</div>
</div>
</section>
<section id="contact">
<div class="lv-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="lv-btn lv-btn--lg">
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 class="lv-footer" role="contentinfo">
<div class="footer-inner">
<div>
<div class="footer-logo">LandveX</div>
<div class="footer-copy">© 2026 Landvex AB · Org.nr 559141-7042 · Tyresö, Sweden</div>
<div class="footer-tagline">Decision intelligence for the physical world.</div>
</div>
<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" >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>