All checks were successful
Deploy Production / Deploy to Production (push) Successful in 20s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
71 lines
2.5 KiB
PHP
71 lines
2.5 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="<?= $kirby->language()?->code() ?? 'fr' ?>">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<?php snippet('seo/head') ?>
|
|
|
|
<style>
|
|
html, body { overflow: hidden; }
|
|
#app { min-height: 100vh; }
|
|
|
|
/* Hidden SSR content — in DOM for Google Wave 1 crawl, invisible to users */
|
|
#ssr-content {
|
|
position: absolute;
|
|
width: 1px; height: 1px;
|
|
padding: 0; margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0,0,0,0);
|
|
white-space: nowrap;
|
|
border: 0;
|
|
}
|
|
|
|
/* Preloader — covers the blank #app while JS loads.
|
|
Uses the same background image as the Svelte app so the transition
|
|
is seamless (image is already cached when Svelte requests it). */
|
|
#preloader {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 9999;
|
|
background:
|
|
radial-gradient(ellipse 70% 55% at 10% 90%, #82107a 0%, transparent 65%),
|
|
radial-gradient(ellipse 50% 45% at 8% 15%, #2e0d8e 0%, transparent 55%),
|
|
radial-gradient(ellipse 45% 40% at 48% 35%, #0c2540 0%, transparent 55%),
|
|
#060a1a;
|
|
transition: opacity 0.4s ease;
|
|
pointer-events: none;
|
|
}
|
|
#preloader.preloader-hiding {
|
|
opacity: 0;
|
|
}
|
|
</style>
|
|
|
|
<!-- Favicon -->
|
|
<link rel="icon" type="image/png" href="<?= url('assets/favicon.png') ?>">
|
|
|
|
<?php if (file_exists('assets/dist')): ?>
|
|
<!-- Production: Load compiled assets -->
|
|
<script type="module" src="<?= url('assets/dist/index.js') ?>" defer></script>
|
|
<link rel="stylesheet" href="<?= url('assets/dist/main.css') ?>">
|
|
<?php else: ?>
|
|
<!-- Development: Load from Vite dev server -->
|
|
<script type="module" src="http://localhost:5173/@vite/client" defer></script>
|
|
<script type="module" src="http://localhost:5173/src/main.js" defer></script>
|
|
<?php endif ?>
|
|
|
|
<?php if ($site->faviconPNG()->isNotEmpty()): ?>
|
|
<link rel="icon" type="image/png" href="<?= $site->faviconPNG()->toFile()->url() ?>" sizes="96x96" />
|
|
<?php endif ?>
|
|
<?php if ($site->faviconSVG()->isNotEmpty()): ?>
|
|
<link rel="icon" type="image/svg+xml" href="<?= $site->faviconSVG()->toFile()->url() ?>" />
|
|
<?php endif ?>
|
|
<?php if ($site->faviconICO()->isNotEmpty()): ?>
|
|
<link rel="shortcut icon" href="<?= $site->faviconICO()->toFile()->url() ?>" />
|
|
<?php endif ?>
|
|
|
|
<?php snippet('gtag') ?>
|
|
</head>
|
|
<body data-template="<?= $page->intendedTemplate() ?>">
|
|
<div id="app"></div>
|
|
<div id="preloader" aria-hidden="true"></div>
|