2026-07-05 06:41:32 +00:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "UTF-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< title > Development Forecast Index — Landvex< / title >
< meta name = "description" content = "Tracks where investment is flowing, where development cycles are beginning, and where activity is slowing — before it shows in official statistics." >
< link rel = "canonical" href = "https://www.landvex.com/intelligence/development-forecast/" >
< meta name = "robots" content = "index, follow" >
< meta property = "og:type" content = "website" >
< meta property = "og:url" content = "https://www.landvex.com/intelligence/development-forecast/" >
< meta property = "og:title" content = "Development Forecast Index — Landvex" >
< meta property = "og:description" content = "Tracks where investment is flowing, where development cycles are beginning, and where activity is slowing — before it shows in official statistics." >
< meta property = "og:image" content = "https://www.landvex.com/og-image.jpg" >
< meta name = "twitter:card" content = "summary_large_image" >
< meta name = "twitter:title" content = "Development Forecast — Landvex" >
< meta name = "twitter:description" content = "Tracks where investment is flowing, where development cycles are beginning, and where activity is slowing — before it shows up in official statistics." >
< meta name = "twitter:image" content = "https://www.landvex.com/og-image.jpg" >
< link rel = "icon" type = "image/svg+xml" href = "/favicon.svg" >
< link rel = "icon" type = "image/x-icon" href = "/favicon.ico" >
< link rel = "apple-touch-icon" href = "/apple-touch-icon.png" >
< link rel = "manifest" href = "/site.webmanifest" >
< script type = "application/ld+json" > {
"@context" : "https://schema.org" ,
"@type" : "WebPage" ,
"name" : "Development Forecast — Landvex" ,
"description" : "Tracks where investment is flowing, where development cycles are beginning, and where activity is slowing — before it shows up in official statistics." ,
"url" : "https://www.landvex.com/intelligence/development-forecast/" ,
"isPartOf" : { "@type" : "WebSite" , "url" : "https://www.landvex.com" , "name" : "Landvex" } ,
"publisher" : { "@type" : "Organization" , "name" : "Landvex" , "url" : "https://www.landvex.com" }
} < / script >
< 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-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 : 8 px ;
--radius-md : 14 px ;
--radius-lg : 24 px ;
}
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 40 px ; height : 64 px ;
2026-07-08 19:56:03 +00:00
background : rgba ( 255 , 255 , 255 , 0.88 ) ;
2026-07-05 06:41:32 +00:00
backdrop-filter : blur ( 16 px ) ;
-webkit- backdrop-filter : blur ( 16 px ) ;
border-bottom : 1 px solid var ( - - border ) ;
}
. nav-logo {
font-size : 18 px ;
font-weight : 700 ;
letter-spacing : -0.3 px ;
color : #1d1d1f ; }
. nav-links { display : flex ; gap : 32 px ; list-style : none ; }
. nav-links a { font-size : 14 px ; color : var ( - - text - dim ) ; transition : color 0.2 s ; }
. nav-links a : hover { color : #1d1d1f ; }
. btn {
display : inline-flex ; align-items : center ; gap : 6 px ;
padding : 10 px 22 px ;
background : var ( - - blue ) ; color : #1d1d1f ;
font-size : 14 px ; font-weight : 600 ;
border-radius : var ( - - radius - md ) ; border : none ; cursor : pointer ;
transition : background 0.2 s , transform 0.15 s ;
}
. btn : hover { background : var ( - - blue - dark ) ; transform : translateY ( -1 px ) ; }
. btn-outline {
background : transparent ;
border : 1.5 px solid rgba ( 0 , 0 , 0 , 0.18 ) ;
color : var ( - - text - light ) ;
}
. btn-outline : hover { background : rgba ( 0 , 0 , 0 , 0.04 ) ; transform : translateY ( -1 px ) ; }
. btn-lg { padding : 14 px 30 px ; font-size : 16 px ; }
. hero {
min-height : 80 vh ;
display : flex ; flex-direction : column ; align-items : center ; justify-content : center ;
text-align : center ; padding : 120 px 24 px 80 px ;
position : relative ; overflow : hidden ;
}
. hero :: before {
content : '' ;
position : absolute ; top : -200 px ; left : 50 % ; transform : translateX ( -50 % ) ;
width : 900 px ; height : 600 px ;
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 : 8 px ;
background : rgba ( 0 , 102 , 255 , 0.1 ) ; border : 1 px solid rgba ( 0 , 102 , 255 , 0.25 ) ;
color : #5599ff ; font-size : 12 px ; font-weight : 600 ;
letter-spacing : 0.08 em ; text-transform : uppercase ;
padding : 6 px 16 px ; border-radius : 100 px ; margin-bottom : 28 px ;
}
. hero h1 {
font-size : clamp ( 36 px , 6 vw , 68 px ) ; font-weight : 800 ;
letter-spacing : -2 px ; line-height : 1.05 ; color : #1d1d1f ;
max-width : 820 px ; margin-bottom : 24 px ;
}
. hero-sub {
font-size : clamp ( 16 px , 2 vw , 19 px ) ; color : var ( - - text - dim ) ;
max-width : 640 px ; line-height : 1.65 ; margin-bottom : 40 px ;
}
. hero-ctas { display : flex ; gap : 14 px ; flex-wrap : wrap ; justify-content : center ; }
. container { max-width : 1140 px ; margin : 0 auto ; }
section { padding : 80 px 24 px ; }
. section-label {
font-size : 12 px ; font-weight : 700 ; letter-spacing : 0.1 em ;
text-transform : uppercase ; color : var ( - - blue ) ; margin-bottom : 16 px ;
}
. section-title {
font-size : clamp ( 26 px , 3.5 vw , 40 px ) ; font-weight : 800 ;
letter-spacing : -1 px ; line-height : 1.1 ; color : #1d1d1f ; margin-bottom : 16 px ;
}
. section-title-light { color : #0a0a0a ; }
. section-sub { font-size : 17 px ; color : var ( - - text - dim ) ; max-width : 560 px ; line-height : 1.7 ; }
. contact-form {
background : var ( - - surface ) ; border : 1 px solid var ( - - border ) ;
border-radius : var ( - - radius - lg ) ; padding : 40 px ; text-align : left ;
}
. form-row { display : grid ; grid-template-columns : 1 fr 1 fr ; gap : 16 px ; margin-bottom : 16 px ; }
. form-group { display : flex ; flex-direction : column ; gap : 8 px ; margin-bottom : 16 px ; }
. form-group label { font-size : 13 px ; font-weight : 600 ; color : var ( - - text - dim ) ; }
. form-group input , . form-group textarea {
background : var ( - - bg - dark ) ; border : 1.5 px solid var ( - - border ) ;
border-radius : var ( - - radius - md ) ; color : #1d1d1f ; font-size : 15 px ;
font-family : inherit ; padding : 12 px 16 px ; outline : none ;
transition : border-color 0.2 s ; 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 : 120 px ; resize : vertical ; }
. form-note { font-size : 12 px ; color : var ( - - text - muted ) ; margin-top : 12 px ; text-align : center ; }
# form-message {
display : none ; padding : 14 px 20 px ; border-radius : var ( - - radius - md ) ;
font-size : 14 px ; font-weight : 600 ; text-align : center ; margin-top : 16 px ;
}
# form-message . success { background : rgba ( 0 , 200 , 80 , 0.1 ) ; border : 1 px solid rgba ( 0 , 200 , 80 , 0.25 ) ; color : #4ade80 ; }
# form-message . error { background : rgba ( 255 , 60 , 60 , 0.1 ) ; border : 1 px solid rgba ( 255 , 60 , 60 , 0.25 ) ; color : #f87171 ; }
footer { border-top : 1 px solid var ( - - border ) ; padding : 40 px ; }
. footer-inner {
max-width : 1140 px ; margin : 0 auto ;
display : flex ; align-items : center ; justify-content : space-between ;
flex-wrap : wrap ; gap : 20 px ;
}
. footer-logo { font-size : 17 px ; font-weight : 700 ; color : #1d1d1f ; }
. footer-copy { font-size : 13 px ; color : var ( - - text - muted ) ; }
. footer-tagline { font-size : 12 px ; color : var ( - - text - muted ) ; margin-top : 4 px ; }
. footer-links { display : flex ; gap : 24 px ; align-items : center ; flex-wrap : wrap ; }
. footer-links a { font-size : 14 px ; color : var ( - - text - muted ) ; transition : color 0.2 s ; }
. footer-links a : hover { color : #1d1d1f ; }
. footer-social {
2026-07-07 07:11:50 +00:00
width : 32 px ; height : 32 px ; border : 1 px solid var ( - - border ) ; border-radius : var ( - - radius - md ) ;
2026-07-05 06:41:32 +00:00
display : flex ; align-items : center ; justify-content : center ;
transition : border-color 0.2 s , background 0.2 s ;
}
. 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 20 px ; }
. nav-links { display : none ; }
}
@ media ( max-width : 600px ) {
section { padding : 48 px 0 !important ; }
. container { padding : 0 16 px !important ; box-sizing : border-box ; }
. form-row { grid-template-columns : 1 fr !important ; }
. contact-form { padding : 24 px 20 px ; }
. footer-inner { flex-direction : column ; text-align : center ; }
[ style * = "grid-template-columns:1fr 1fr" ] { grid-template-columns : 1 fr !important ; }
[ style * = "grid-template-columns:repeat(auto-fit,minmax(300px" ] { grid-template-columns : 1 fr !important ; }
[ style * = "grid-template-columns:repeat(auto-fit,minmax(260px" ] { grid-template-columns : 1 fr !important ; }
}
2026-07-07 07:11:50 +00:00
. lv-disclaimer { font-size : .75 rem ; color : rgba ( 0 , 0 , 0 , .75 ) ; margin-top : 24 px ; padding : 12 px 16 px ; background : rgba ( 0 , 0 , 0 , .04 ) ; border-radius : var ( - - radius - md ) ; line-height : 1.6 ; max-width : 800 px }
2026-07-05 06:41:32 +00:00
. 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 >
< script type = "application/ld+json" >
{
"@context" : "https://schema.org" ,
"@type" : "BreadcrumbList" ,
"itemListElement" : [
{
"@type" : "ListItem" ,
"position" : 1 ,
"name" : "Landvex" ,
"item" : "https://www.landvex.com/"
} ,
{
"@type" : "ListItem" ,
"position" : 2 ,
"name" : "Intelligence" ,
"item" : "https://www.landvex.com/intelligence/"
} ,
{
"@type" : "ListItem" ,
"position" : 3 ,
"name" : "Development Forecast" ,
"item" : "https://www.landvex.com/intelligence/development-forecast/"
}
]
}
< / script >
< 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/" >
< / head >
< body >
<!-- NAV -->
< nav >
< a class = "nav-logo" href = "/" > LandveX< / a >
< ul class = "nav-links" >
< li > < a href = "/#how-it-works" > How it works< / a > < / li >
< li > < a href = "/#verticals" > Verticals< / a > < / li >
< li > < a href = "/methodology/" > Methodology< / a > < / li >
< li > < a href = "/security/" > Security< / a > < / li >
< li > < a href = "#contact" > Contact< / a > < / li >
< / ul >
< a class = "btn btn-outline" href = "#contact" > Request a briefing →< / a >
< / nav >
<!-- HERO (dark) -->
< section class = "hero" >
< div class = "hero-eyebrow" > Intelligence Index · Landvex< / div >
< h1 > Which areas are gaining investment — and which are stagnating?< / h1 >
< p class = "hero-sub" > Tracks where investment is flowing, where development cycles are beginning, and where activity is slowing — before it shows up in official statistics.< / p >
< div class = "hero-ctas" >
< a class = "btn btn-lg" href = "#contact" > Request a briefing →< / a >
< a class = "btn btn-outline btn-lg" href = "#dimensions" > See dimensions< / a >
< / div >
< / section >
<!-- DIMENSIONS (white/light section) -->
< section id = "dimensions" style = "background:#fff;padding:80px 24px" >
< div class = "container" >
< div style = "text-align:center;margin-bottom:52px" >
< div class = "section-label" style = "color:var(--blue)" > What we measure< / div >
< h2 class = "section-title section-title-light" > Five dimensions of intelligence.< / h2 >
< p class = "section-sub" style = "color:#6b7280;margin:0 auto" > Each index is built from five independently observed and scored dimensions — combined into a single comparable score.< / p >
< / div >
< div style = "display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:20px" >
2026-07-07 07:11:50 +00:00
< div style = "background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:24px 28px;cursor:pointer" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div style = "font-size:1.5rem;margin-bottom:10px" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M2 14H14M4 14V8L8 4L12 8V14" stroke = "#666" stroke-width = "1.5" stroke-linejoin = "round" / > < path d = "M6 14V10H10V14" stroke = "#666" stroke-width = "1.5" / > < / svg > < / div >
2026-07-05 06:41:32 +00:00
< h3 style = "font-size:1rem;font-weight:700;color:#0a0a0a;margin-bottom:6px" > Construction activity< / h3 >
< p style = "font-size:.875rem;color:#6b7280;line-height:1.6" > Volume and intensity of active construction, scaffolding, site preparation and demolition observed in the field.< / p >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:24px 28px;cursor:pointer" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div style = "font-size:1.5rem;margin-bottom:10px" > < / div >
2026-07-05 06:41:32 +00:00
< h3 style = "font-size:1rem;font-weight:700;color:#0a0a0a;margin-bottom:6px" > Permit signals< / h3 >
< p style = "font-size:.875rem;color:#6b7280;line-height:1.6" > Observable evidence of planning permissions — site hoardings, notices, contractor presence and groundworks.< / p >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:24px 28px;cursor:pointer" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div style = "font-size:1.5rem;margin-bottom:10px" > < / div >
2026-07-05 06:41:32 +00:00
< h3 style = "font-size:1rem;font-weight:700;color:#0a0a0a;margin-bottom:6px" > Commercial openings< / h3 >
< p style = "font-size:.875rem;color:#6b7280;line-height:1.6" > New business formations and commercial fitouts as a leading indicator of investment confidence.< / p >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:24px 28px;cursor:pointer" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div style = "font-size:1.5rem;margin-bottom:10px" > < / div >
2026-07-05 06:41:32 +00:00
< h3 style = "font-size:1rem;font-weight:700;color:#0a0a0a;margin-bottom:6px" > Capital flows< / h3 >
< p style = "font-size:.875rem;color:#6b7280;line-height:1.6" > Indirect signals of capital allocation — scaffolding, premium renovations, branded development sites.< / p >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:24px 28px;cursor:pointer" onclick = "location.href='#contact'" role = "button" tabindex = "0" >
< div style = "font-size:1.5rem;margin-bottom:10px" > < / div >
2026-07-05 06:41:32 +00:00
< h3 style = "font-size:1rem;font-weight:700;color:#0a0a0a;margin-bottom:6px" > Population movement< / h3 >
< p style = "font-size:.875rem;color:#6b7280;line-height:1.6" > Observable demographic shifts — new residents, changing consumer mix, service infrastructure evolution.< / p >
< / div >
< / div >
< / div >
< / section >
<!-- USE CASES (light grey) -->
< section style = "background:#f8f9ff;padding:64px 24px" >
< div class = "container" >
< div style = "max-width:760px;margin:0 auto;text-align:center" >
< div class = "section-label" > Use cases< / div >
< h2 class = "section-title section-title-light" style = "margin-bottom:24px" > Who uses this index.< / h2 >
< div style = "display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-bottom:40px" >
2026-07-07 07:11:50 +00:00
< span style = "background:#e0eaff;color:#0052cc;font-size:.8125rem;font-weight:600;padding:6px 14px;border-radius: 100px" > Real estate development< / span >
< span style = "background:#e0eaff;color:#0052cc;font-size:.8125rem;font-weight:600;padding:6px 14px;border-radius: 100px" > Investment allocation< / span >
< span style = "background:#e0eaff;color:#0052cc;font-size:.8125rem;font-weight:600;padding:6px 14px;border-radius: 100px" > Urban planning< / span >
2026-07-05 06:41:32 +00:00
< / div >
< / div >
< / div >
< / section >
<!-- SAMPLE OUTPUT (dark) -->
< section style = "background:var(--surface);padding:80px 24px" >
< div class = "container" >
< div style = "max-width:700px;margin:0 auto;text-align:center" >
< div class = "section-label" > Sample output< / div >
< h2 class = "section-title" style = "margin-bottom:8px" > What you receive.< / h2 >
< p style = "color:var(--text-dim);margin-bottom:48px" > Development score + cycle stage + investment confidence< / p >
2026-07-07 07:11:50 +00:00
< div style = "background:var(--surface-2);border:1px solid var(--border);border-radius: var(--radius-lg);padding:36px 40px;text-align:left" >
2026-07-05 06:41:32 +00:00
< div style = "display:flex;align-items:center;justify-content:space-between;margin-bottom:8px" >
< span style = "color:var(--text-dim);font-size:.875rem;font-weight:600" > Sample location · Placeholder score< / span >
< span style = "color:#4ade80;font-size:.875rem;font-weight:700" > ↑ Cycle accelerating< / span >
< / div >
< div style = "display:flex;align-items:center;gap:16px;margin-bottom:4px" >
< span style = "font-size:3rem;font-weight:800;color: #1d1d1f;letter-spacing:-2px" > 67< / span >
< span style = "font-size:1.5rem;color:var(--text-dim)" > /100< / span >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:#f3f4f6;border-radius: var(--radius-md);height:12px;width:100%;margin:12px 0 8px;overflow:hidden" >
< div style = "height:100%;width:67%;background:#fbbf24;border-radius: var(--radius-md);transition:width 1s ease" > < / div >
2026-07-05 06:41:32 +00:00
< / div >
< div style = "display:flex;justify-content:space-between;font-size:.75rem;color:var(--text-dim)" >
< span > Critical< / span > < span > Moderate< / span > < span > Strong< / span >
< / div >
< div style = "margin-top:28px;padding-top:20px;border-top:1px solid var(--border);font-size:.8125rem;color:var(--text-dim)" >
< svg width = "16" height = "16" viewBox = "0 0 24 24" fill = "none" stroke = "#f59e0b" stroke-width = "2" > < 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 > Placeholder values for illustration. Live intelligence from August 2026.
< / div >
< / div >
< / div >
< / div >
< / section >
<!-- CONTRADICTION ENGINE (dark blue) -->
< section style = "background:#001836;padding:80px 24px" >
< div class = "container" >
< div style = "max-width:800px;margin:0 auto" >
< div style = "text-align:center;margin-bottom:48px" >
< div class = "section-label" style = "color:rgba(255,255,255,.75)" > Advanced intelligence< / div >
< h2 class = "section-title" > How this index detects narrative conflicts.< / h2 >
< p style = "color:rgba(255,255,255,.75);max-width:600px;margin:0 auto;line-height:1.7" > Development Forecast detects when official planning data diverges from observed ground activity. A district listed as "under development" in permits with no observable site activity, or conversely, rapid development activity ahead of formal permissions — both trigger narrative conflicts that change the forecast score.< / p >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.1);border-radius: var(--radius-lg);padding:32px 36px" >
2026-07-05 06:41:32 +00:00
< div style = "display:flex;align-items:flex-start;gap:16px;margin-bottom:24px" >
2026-07-07 07:11:50 +00:00
< span style = "font-size:1.5rem" > < / span >
2026-07-05 06:41:32 +00:00
< div >
< div style = "color:#f87171;font-weight:800;font-size:.9375rem;margin-bottom:4px" > Contradiction Engine — How it works< / div >
< div style = "color:rgba(255,255,255,.75);font-size:.875rem;line-height:1.6" > Field observations are continuously cross-referenced against official records, registers, and published statistics. Divergence above threshold triggers a conflict flag.< / div >
< / div >
< / div >
< div style = "display:grid;grid-template-columns:1fr 1fr;gap:16px" >
2026-07-07 07:11:50 +00:00
< div style = "background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.2);border-radius: var(--radius-md);padding:16px" >
2026-07-05 06:41:32 +00:00
< div style = "color:#86efac;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px" > Official record< / div >
< ul style = "list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px" >
2026-07-07 07:11:50 +00:00
< li style = "color:rgba(255,255,255,.7);font-size:.875rem" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M3 8L6.5 11.5L13 4.5" stroke = "#22c55e" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" / > < / svg > Published condition ratings< / li >
< li style = "color:rgba(255,255,255,.7);font-size:.875rem" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M3 8L6.5 11.5L13 4.5" stroke = "#22c55e" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" / > < / svg > Official statistics< / li >
< li style = "color:rgba(255,255,255,.7);font-size:.875rem" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M3 8L6.5 11.5L13 4.5" stroke = "#22c55e" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" / > < / svg > Register data< / li >
2026-07-05 06:41:32 +00:00
< / ul >
< / div >
2026-07-07 07:11:50 +00:00
< div style = "background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.2);border-radius: var(--radius-md);padding:16px" >
2026-07-05 06:41:32 +00:00
< div style = "color:#fca5a5;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px" > Observed reality< / div >
< ul style = "list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px" >
2026-07-07 07:11:50 +00:00
< li style = "color:rgba(255,255,255,.7);font-size:.875rem" > < 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 > Field observations< / li >
< li style = "color:rgba(255,255,255,.7);font-size:.875rem" > < 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 > Real-time signals< / li >
< li style = "color:rgba(255,255,255,.7);font-size:.875rem" > < 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 > Contradiction flags< / li >
2026-07-05 06:41:32 +00:00
< / ul >
< / div >
< / div >
< / div >
< / div >
< / div >
< / section >
<!-- RELATED INDEXES (white) -->
< section style = "background:#fff;padding:80px 24px" >
< div class = "container" >
< div style = "text-align:center;margin-bottom:48px" >
< div class = "section-label" > Related intelligence< / div >
< h2 class = "section-title section-title-light" > Explore related indexes.< / h2 >
< / div >
< div style = "display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:20px;max-width:900px;margin:0 auto" >
2026-07-07 07:11:50 +00:00
< a href = "/intelligence/urban-growth-index/" style = "display:block;background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:20px 24px;text-decoration:none;color:inherit;transition:border-color .2s,transform .15s" onmouseover = "this.style.borderColor='#0066ff';this.style.transform='translateY(-2px)'" onmouseout = "this.style.borderColor='#e5e7eb';this.style.transform='none'" >
< div style = "font-size:1.25rem;margin-bottom:8px" > < / div >
2026-07-05 06:41:32 +00:00
< div style = "font-weight:700;color:#0a0a0a;font-size:.9375rem;margin-bottom:4px" > Urban Growth Index< / div >
< div style = "color:#0066ff;font-size:.8125rem;font-weight:700" > View index →< / div >
< / a >
2026-07-07 07:11:50 +00:00
< a href = "/intelligence/investment-attractiveness-index/" style = "display:block;background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:20px 24px;text-decoration:none;color:inherit;transition:border-color .2s,transform .15s" onmouseover = "this.style.borderColor='#0066ff';this.style.transform='translateY(-2px)'" onmouseout = "this.style.borderColor='#e5e7eb';this.style.transform='none'" >
< div style = "font-size:1.25rem;margin-bottom:8px" > < / div >
2026-07-05 06:41:32 +00:00
< div style = "font-weight:700;color:#0a0a0a;font-size:.9375rem;margin-bottom:4px" > Investment Attractiveness Index< / div >
< div style = "color:#0066ff;font-size:.8125rem;font-weight:700" > View index →< / div >
< / a >
2026-07-07 07:11:50 +00:00
< a href = "/intelligence/commercial-opportunity-index/" style = "display:block;background:#f8f9ff;border:1px solid #e5e7eb;border-radius: var(--radius-md);padding:20px 24px;text-decoration:none;color:inherit;transition:border-color .2s,transform .15s" onmouseover = "this.style.borderColor='#0066ff';this.style.transform='translateY(-2px)'" onmouseout = "this.style.borderColor='#e5e7eb';this.style.transform='none'" >
< div style = "font-size:1.25rem;margin-bottom:8px" > < svg width = "16" height = "16" viewBox = "0 0 16 16" fill = "none" > < path d = "M2 12L6 8L9 11L14 5" stroke = "#22c55e" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" / > < path d = "M10 5H14V9" stroke = "#22c55e" stroke-width = "2" stroke-linecap = "round" stroke-linejoin = "round" / > < / svg > < / div >
2026-07-05 06:41:32 +00:00
< div style = "font-weight:700;color:#0a0a0a;font-size:.9375rem;margin-bottom:4px" > Commercial Opportunity Index< / div >
< div style = "color:#0066ff;font-size:.8125rem;font-weight:700" > View index →< / div >
< / a >
< / div >
< div style = "text-align:center;margin-top:40px" >
< a href = "/" style = "color:var(--blue);font-weight:700;font-size:.9375rem" > ← Back to Landvex< / a >
< / div >
< / div >
< / section >
<!-- CONTACT (dark) -->
< section id = "contact" style = "background: var(--bg-dark);padding:80px 24px" >
< div class = "container" >
< div style = "max-width:680px;margin:0 auto;text-align:center" >
< div class = "section-label" > Get in touch< / div >
< h2 class = "section-title" > Request a briefing.< / h2 >
< p class = "section-sub" style = "margin:0 auto 40px" > Tell us the question you need answered. We'll show you how this index applies to your decision.< / p >
< form class = "contact-form" id = "contact-form" >
< div class = "form-row" >
< div class = "form-group" >
< label for = "name" > Name< / label >
< input type = "text" id = "name" name = "name" placeholder = "Your name" required >
< / div >
< div class = "form-group" >
< label for = "email" > Email< / label >
< input type = "email" id = "email" name = "email" placeholder = "you@organisation.com" required >
< / div >
< / div >
< div class = "form-group" >
< label for = "message" > Message< / label >
< textarea id = "message" name = "message" placeholder = "Describe your question or decision — location, context, what you need to know..." > < / 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 -->
2026-07-14 09:58:53 +00:00
< footer >
< div class = "footer-container" style = "max-width:1200px;margin:0 auto;padding:48px 24px 32px;" >
<!-- Main Footer Grid -->
< div style = "display:grid;grid-template-columns:repeat(4,1fr);gap:40px;margin-bottom:48px;" >
<!-- Column 1: Products -->
< div >
< h4 style = "font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;" > Produkter< / h4 >
< ul style = "list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;" >
< li > < a href = "/infrastructure-monitoring/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > VIMS< / a > < / li >
< li > < a href = "/intelligence/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Intelligence< / a > < / li >
< li > < a href = "/reality-alerts/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Reality Alerts< / a > < / li >
< li > < a href = "/enterprise/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Enterprise< / a > < / li >
< li > < a href = "/pilot/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Pilotprogram< / a > < / li >
< / ul >
< / div >
<!-- Column 2: Solutions -->
< div >
< h4 style = "font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;" > Lösningar< / h4 >
< ul style = "list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;" >
< li > < a href = "/verticals/bridge-inspection/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Broinspektion< / a > < / li >
< li > < a href = "/verticals/road-monitoring/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Vägövervakning< / a > < / li >
< li > < a href = "/verticals/infrastructure/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Infrastruktur< / a > < / li >
< li > < a href = "/verticals/utilities/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Utilities< / a > < / li >
< li > < a href = "/use-cases/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Användningsfall< / a > < / li >
< / ul >
< / div >
<!-- Column 3: Resources -->
< div >
< h4 style = "font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;" > Resurser< / h4 >
< ul style = "list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;" >
< li > < a href = "/blog/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Intelligence Insights< / a > < / li >
< li > < a href = "/guides/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Guider< / a > < / li >
< li > < a href = "/developers/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Developer API< / a > < / li >
< li > < a href = "/status/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Systemstatus< / a > < / li >
< li > < a href = "/reports/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Rapporter< / a > < / li >
< / ul >
< / div >
<!-- Column 4: Company -->
< div >
< h4 style = "font-size:13px;font-weight:600;color:#0A0A0A;margin-bottom:16px;text-transform:uppercase;letter-spacing:0.5px;" > Företag< / h4 >
< ul style = "list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;" >
< li > < a href = "/about/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Om oss< / a > < / li >
< li > < a href = "/careers/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Karriär< / a > < / li >
< li > < a href = "/press/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Press< / a > < / li >
< li > < a href = "/contact/" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > Kontakt< / a > < / li >
< li > < a href = "https://www.quixzoom.com" target = "_blank" rel = "noopener" style = "font-size:13px;color:#6E6E73;text-decoration:none;transition:color 0.2s;" > quiXzoom →< / a > < / li >
< / ul >
< / div >
2026-07-05 06:41:32 +00:00
< / div >
2026-07-14 09:58:53 +00:00
<!-- Divider -->
< div style = "border-top:1px solid #E5E5E5;padding-top:32px;" >
<!-- Legal & Compliance Row -->
< div style = "display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:24px;margin-bottom:24px;" >
< div style = "display:flex;flex-wrap:wrap;gap:16px 24px;" >
< a href = "/privacy/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Privacy< / a >
< a href = "/terms/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Terms< / a >
< a href = "/cookie-policy/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Cookies< / a >
< a href = "/compliance/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Compliance< / a >
< a href = "/trust/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Trust Centre< / a >
< a href = "/dpa/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > DPA< / a >
< a href = "/sla/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > SLA< / a >
< a href = "/security/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Security< / a >
< a href = "/accessibility/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Accessibility< / a >
< a href = "/responsible-disclosure/" style = "font-size:12px;color:#6E6E73;text-decoration:none;" > Responsible Disclosure< / a >
< / div >
< div style = "display:flex;gap:16px;" >
< a href = "https://www.linkedin.com/company/landvex" target = "_blank" rel = "noopener" style = "color:#6E6E73;" title = "LinkedIn" >
< svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "none" stroke = "currentColor" stroke-width = "2" > < 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" / > < rect x = "2" y = "9" width = "4" height = "12" / > < circle cx = "4" cy = "4" r = "2" / > < / svg >
< / a >
< a href = "https://x.com/landvex" target = "_blank" rel = "noopener" style = "color:#6E6E73;" title = "X" >
< svg width = "18" height = "18" viewBox = "0 0 24 24" fill = "currentColor" > < 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 >
<!-- Company Info Row -->
< div style = "display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;" >
< div >
< div style = "font-size:12px;color:#86868B;line-height:1.6;" >
< strong style = "color:#0A0A0A;" > Landvex Inc.< / strong > · Houston, Texas · USA< br >
2026-07-14 15:27:33 +00:00
< strong style = "color:#0A0A0A;" > Landvex AB< / strong > · Org.nr 559141-7042 · Stockholm, Sweden · EU< br >
2026-07-14 09:58:53 +00:00
< a href = "mailto:contact@landvex.com" style = "color:#86868B;text-decoration:none;" > contact@landvex.com< / a > ·
< a href = "mailto:security@landvex.com" style = "color:#86868B;text-decoration:none;" > security@landvex.com< / a >
< / div >
< div style = "font-size:11px;color:#86868B;margin-top:8px;line-height:1.5;" >
Field data powered by < a href = "https://www.quixzoom.com" style = "color:#86868B;text-decoration:underline;" > quiXzoom< / a > ·
< a href = "/data-lineage/" style = "color:#86868B;text-decoration:underline;" > Data Lineage< / a > ·
< a href = "/subprocessors/" style = "color:#86868B;text-decoration:underline;" > Sub-processors< / a > ·
< a href = "/methodology/" style = "color:#86868B;text-decoration:underline;" > Methodology< / a >
< / div >
< / div >
< div style = "font-size:12px;color:#86868B;" >
© 2026 Landvex Inc / Landvex AB. All rights reserved.
< / div >
< / div >
2026-07-05 06:41:32 +00:00
< / 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-intelligence' ,
index : 'development-forecast' ,
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' ;
2026-07-07 07:11:50 +00:00
msgEl . textContent = "<svg width=" 16 " height=" 16 " viewBox=" 0 0 16 16 " fill=" none "><path d=" M3 8 L6 . 5 11.5 L13 4.5 " stroke=" # 22 c55e " stroke-width=" 2 " stroke-linecap=" round " stroke-linejoin=" round "/></svg> Request received. We'll be in touch within one business day." ;
2026-07-05 06:41:32 +00:00
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 at contact@landvex.com.' ;
msgEl . style . display = 'block' ;
}
btn . disabled = false ; btn . textContent = 'Request briefing →' ;
} ) ;
< / script >
< / body >
< / html >