Files
boc/landvex-site/index.html
T

83 lines
4.3 KiB
HTML
Raw Normal View History

<!doctype html>
<html lang="sv">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<title>quiXzoom Fotografera uppdrag och tjäna krediter</title>
<meta name="description" content="Den globala plattformen för mobilfotografi. Dokumentera, tjäna krediter och bidra till smart datainsamling det ekonomiska och miljövänliga valet." />
<meta name="author" content="quiXzoom" />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#2F7A69" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="quiXzoom" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" href="/favicon.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<!-- Canonical & Open Graph -->
<link rel="canonical" href="https://app.quixzoom.com/" />
<meta property="og:title" content="quiXzoom Fotografera uppdrag och tjäna krediter" />
<meta property="og:description" content="Den globala plattformen för mobilfotografi. Dokumentera, tjäna krediter och bidra till smart datainsamling." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://app.quixzoom.com/" />
<meta property="og:locale" content="sv_SE" />
<meta property="og:image" content="https://app.quixzoom.com/og-image.jpg" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:site" content="@quixzoom" />
<meta name="twitter:image" content="https://app.quixzoom.com/og-image.jpg" />
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
<body>
<div id="root"></div>
<!-- Loading indicator - shown while JS loads -->
<div id="loading" style="position:fixed;top:0;left:0;right:0;bottom:0;background:#F4F0EC;display:flex;align-items:center;justify-content:center;z-index:9999;transition:opacity 0.3s;">
<div style="text-align:center;">
<div style="width:40px;height:40px;border:3px solid #e5e5e5;border-top-color:#2F7A69;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto;"></div>
<p style="margin-top:16px;color:#666;font-family:system-ui,sans-serif;font-size:14px;">Laddar quiXzoom...</p>
</div>
</div>
<!-- Error display - shows JS errors on screen -->
<div id="error-display" style="display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:#F4F0EC;z-index:10000;padding:20px;overflow:auto;font-family:monospace;font-size:12px;color:#333;">
<h3 style="color:#c00;margin-bottom:10px;">Fel vid uppstart:</h3>
<pre id="error-text" style="white-space:pre-wrap;word-break:break-all;background:#fff;padding:10px;border-radius:4px;"></pre>
</div>
<style>
@keyframes spin { to { transform: rotate(360deg); } }
</style>
<script>
// Global error handler - shows errors on screen
window.onerror = function(msg, url, line, col, err) {
var el = document.getElementById('error-display');
var txt = document.getElementById('error-text');
if (el && txt) {
txt.textContent = msg + '\n at ' + url + ':' + line + ':' + col + '\n' + (err && err.stack ? err.stack : '');
el.style.display = 'block';
}
console.error('[GLOBAL ERROR]', msg, err);
return false;
};
window.onunhandledrejection = function(e) {
var el = document.getElementById('error-display');
var txt = document.getElementById('error-text');
if (el && txt) {
txt.textContent = 'Unhandled Promise Rejection:\n' + (e.reason && e.reason.stack ? e.reason.stack : String(e.reason));
el.style.display = 'block';
}
console.error('[UNHANDLED REJECTION]', e.reason);
};
</script>
<link rel="stylesheet" crossorigin href="/assets/index-DPgFtObt.css">
<script type="module" crossorigin src="/assets/index-CZD3_4lD.js"></script>
<!-- Deploy Warning -->
<script>fetch("deploy-warning.html").then(r=>r.text()).then(h=>document.body.insertAdjacentHTML("beforeend",h))</script>
</body>
</html>