2026-08-17 00:03:20 +02:00
|
|
|
<!doctype html>
|
|
|
|
|
<html lang="da" data-theme="dark">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
|
|
|
|
<meta name="theme-color" content="#111312" />
|
|
|
|
|
<meta name="description" content="verdande — opgaver og projekter, delt." />
|
|
|
|
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
|
|
|
<link rel="icon" href="/icon.svg" type="image/svg+xml" />
|
2026-08-17 22:37:52 +02:00
|
|
|
<!-- Safari ignores the manifest's icons entirely and looks for this by name.
|
|
|
|
|
Without it an installed PWA on iOS gets a screenshot of the page as its
|
|
|
|
|
home-screen icon. Generated from the same SVG by scripts/generate-icons.js. -->
|
|
|
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
2026-08-17 00:03:20 +02:00
|
|
|
<title>verdande</title>
|
|
|
|
|
<script>
|
|
|
|
|
// Applied before first paint, so a dark-theme user never sees a white
|
|
|
|
|
// flash on load. Reading localStorage here is the only way to do that —
|
|
|
|
|
// anything inside the app runs after the document has already painted.
|
|
|
|
|
try {
|
|
|
|
|
const stored = localStorage.getItem('verdande:theme');
|
|
|
|
|
const theme =
|
|
|
|
|
stored ??
|
|
|
|
|
(window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark');
|
|
|
|
|
document.documentElement.dataset.theme = theme;
|
|
|
|
|
} catch (e) {
|
|
|
|
|
// Private browsing can refuse localStorage; the dark default stands.
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
%sveltekit.head%
|
|
|
|
|
</head>
|
|
|
|
|
<body data-sveltekit-preload-data="hover">
|
|
|
|
|
<div style="display: contents">%sveltekit.body%</div>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|