Files
boc/landvex-site/language-popup.html
T
Bernt 1a12fb870b dev-api: add developer portal, OpenAPI spec, and Flatenbadet case study
- New /developers/ page with API docs, SDKs, pricing, use cases
- OpenAPI 3.0 spec for Orders, Missions, Photos, Analytics
- Case study: Glasskiosken i Flatenbadet — complete ROI analysis
- Updated /order/ with recurring missions and frequency dropdown
2026-07-14 15:27:33 +00:00

329 lines
8.5 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="sv">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Landvex — Välj språk / Select Language</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Inter', 'Segoe UI', sans-serif;
background: linear-gradient(135deg, #001E50 0%, #003d7a 50%, #001E50 100%);
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
.container {
width: 100%;
max-width: 800px;
padding: 40px 24px;
text-align: center;
}
.logo {
font-size: 42px;
font-weight: 800;
letter-spacing: -1px;
margin-bottom: 8px;
background: linear-gradient(135deg, #fff 0%, #C8763A 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.tagline {
font-size: 15px;
color: rgba(255,255,255,0.6);
margin-bottom: 48px;
letter-spacing: 0.5px;
}
.device-info {
background: rgba(255,255,255,0.08);
border: 1px solid rgba(255,255,255,0.15);
border-radius: 16px;
padding: 20px 24px;
margin-bottom: 40px;
display: inline-flex;
align-items: center;
gap: 16px;
backdrop-filter: blur(10px);
}
.device-icon {
width: 48px;
height: 48px;
background: rgba(200,118,58,0.2);
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
}
.device-details {
text-align: left;
}
.device-label {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 1px;
color: rgba(255,255,255,0.5);
margin-bottom: 4px;
}
.device-value {
font-size: 16px;
font-weight: 600;
color: #fff;
}
.device-meta {
font-size: 13px;
color: rgba(255,255,255,0.5);
margin-top: 2px;
}
.heading {
font-size: 28px;
font-weight: 700;
margin-bottom: 8px;
}
.subheading {
font-size: 16px;
color: rgba(255,255,255,0.6);
margin-bottom: 40px;
}
.lang-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-bottom: 40px;
}
.lang-card {
background: rgba(255,255,255,0.06);
border: 1px solid rgba(255,255,255,0.12);
border-radius: 16px;
padding: 28px 16px;
cursor: pointer;
transition: all 0.3s ease;
text-decoration: none;
color: inherit;
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
}
.lang-card:hover {
background: rgba(255,255,255,0.12);
border-color: rgba(200,118,58,0.5);
transform: translateY(-4px);
box-shadow: 0 20px 40px rgba(0,0,0,0.3);
}
.lang-flag {
font-size: 40px;
line-height: 1;
}
.lang-name {
font-size: 17px;
font-weight: 600;
}
.lang-native {
font-size: 13px;
color: rgba(255,255,255,0.5);
}
.lang-code {
font-size: 11px;
color: rgba(255,255,255,0.3);
font-family: 'SF Mono', monospace;
margin-top: 4px;
padding: 2px 8px;
background: rgba(255,255,255,0.06);
border-radius: 4px;
}
.footer-note {
font-size: 13px;
color: rgba(255,255,255,0.4);
margin-top: 24px;
}
@media (max-width: 640px) {
.lang-grid {
grid-template-columns: 1fr;
max-width: 320px;
margin-left: auto;
margin-right: auto;
}
.logo { font-size: 32px; }
.heading { font-size: 22px; }
.device-info {
flex-direction: column;
text-align: center;
width: 100%;
max-width: 320px;
}
.device-details { text-align: center; }
}
@media (min-width: 641px) and (max-width: 900px) {
.lang-grid {
grid-template-columns: repeat(2, 1fr);
}
}
</style>
</head>
<body>
<div class="container">
<div class="logo">Landvex</div>
<div class="tagline">Control intelligence for the physical world</div>
<div class="device-info" id="deviceInfo">
<div class="device-icon" id="deviceIcon">💻</div>
<div class="device-details">
<div class="device-label">Din enhet / Your device</div>
<div class="device-value" id="deviceType">Desktop</div>
<div class="device-meta" id="deviceMeta">Windows · Chrome</div>
</div>
</div>
<h1 class="heading">Välj språk</h1>
<p class="subheading">Select your language / Sélectionnez votre langue</p>
<div class="lang-grid">
<a href="/sv/" class="lang-card" onclick="setLang('sv')">
<div class="lang-flag">🇸🇪</div>
<div class="lang-name">Svenska</div>
<div class="lang-native">Swedish</div>
<div class="lang-code">SV</div>
</a>
<a href="/en/" class="lang-card" onclick="setLang('en')">
<div class="lang-flag">🇬🇧</div>
<div class="lang-name">English</div>
<div class="lang-native">English</div>
<div class="lang-code">EN</div>
</a>
<a href="/de/" class="lang-card" onclick="setLang('de')">
<div class="lang-flag">🇩🇪</div>
<div class="lang-name">Deutsch</div>
<div class="lang-native">German</div>
<div class="lang-code">DE</div>
</a>
<a href="/fr/" class="lang-card" onclick="setLang('fr')">
<div class="lang-flag">🇫🇷</div>
<div class="lang-name">Français</div>
<div class="lang-native">French</div>
<div class="lang-code">FR</div>
</a>
<a href="/es/" class="lang-card" onclick="setLang('es')">
<div class="lang-flag">🇪🇸</div>
<div class="lang-name">Español</div>
<div class="lang-native">Spanish</div>
<div class="lang-code">ES</div>
</a>
<a href="/no/" class="lang-card" onclick="setLang('no')">
<div class="lang-flag">🇳🇴</div>
<div class="lang-name">Norsk</div>
<div class="lang-native">Norwegian</div>
<div class="lang-code">NO</div>
</a>
</div>
<p class="footer-note">
Landvex Inc. · Houston, Texas · USA<br>
Landvex AB · Org.nr 559141-7042 · Stockholm, Sweden · EU
</p>
</div>
<script>
// Device detection
function detectDevice() {
const ua = navigator.userAgent;
const platform = navigator.platform;
let deviceType = 'Desktop';
let deviceIcon = '💻';
let os = 'Unknown';
let browser = 'Unknown';
// Detect OS
if (ua.indexOf('Win') !== -1) os = 'Windows';
else if (ua.indexOf('Mac') !== -1) os = 'macOS';
else if (ua.indexOf('Linux') !== -1) os = 'Linux';
else if (ua.indexOf('Android') !== -1) os = 'Android';
else if (ua.indexOf('iPhone') !== -1 || ua.indexOf('iPad') !== -1 || ua.indexOf('iPod') !== -1) os = 'iOS';
// Detect browser
if (ua.indexOf('Chrome') !== -1 && ua.indexOf('Edg') === -1) browser = 'Chrome';
else if (ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1) browser = 'Safari';
else if (ua.indexOf('Firefox') !== -1) browser = 'Firefox';
else if (ua.indexOf('Edg') !== -1) browser = 'Edge';
else if (ua.indexOf('Opera') !== -1 || ua.indexOf('OPR') !== -1) browser = 'Opera';
// Detect device type
if (/Mobi|Android|iPhone|iPad|iPod/.test(ua)) {
if (/iPad|Tablet|Android(?!.*Mobile)/.test(ua) || (platform === 'MacIntel' && navigator.maxTouchPoints > 1)) {
deviceType = 'Tablet';
deviceIcon = '📱';
} else {
deviceType = 'Mobile';
deviceIcon = '📱';
}
} else {
deviceType = 'Desktop';
deviceIcon = '💻';
}
// Screen info
const screenSize = window.screen.width + '×' + window.screen.height;
const pixelRatio = window.devicePixelRatio > 1 ? ' (' + window.devicePixelRatio + '× retina)' : '';
document.getElementById('deviceIcon').textContent = deviceIcon;
document.getElementById('deviceType').textContent = deviceType + ' version';
document.getElementById('deviceMeta').textContent = os + ' · ' + browser + ' · ' + screenSize + pixelRatio;
// Store for analytics
localStorage.setItem('landvex_device', JSON.stringify({
type: deviceType,
os: os,
browser: browser,
screen: screenSize,
pixelRatio: window.devicePixelRatio,
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone
}));
}
function setLang(lang) {
localStorage.setItem('landvex_lang', lang);
// Analytics: log language choice
console.log('Language selected:', lang);
}
// Run detection on load
detectDevice();
// Update on resize (in case of orientation change)
window.addEventListener('resize', function() {
detectDevice();
});
</script>
</body>
</html>