- /418/ (et /fr|en/418) : vraie page HTTP 418 'Je suis une théière', SVG
animé (vapeur), boutons café (refus RFC 2324) / thé (toast), noindex.
- Nouveau public/js/global.js chargé sur toutes les pages (statiques,
dynamiques articles/blog, page d'erreur) qui :
* écoute le code Konami ↑↑↓↓←→←→BA → redirige vers /418/ ;
* charge ses clés par codes de caractères (aucune chaîne révélatrice en
clair : ni 'ArrowUp', ni '/418/', ni 'b/a' dans la source) ;
* sert de dispatcher centralisé : injecte par page (components/discord/
zfprobe) via <body data-page=...> ou règles de chemin, sans doublon.
- easter.js supprimé au profit de global.js unique sur 22 pages statiques.
64 lines
4 KiB
HTML
64 lines
4 KiB
HTML
<!doctype html>
|
|
<html lang="__LANG__">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta name="robots" content="noindex, nofollow" />
|
|
<title>__STATUS__ · Zektyc</title>
|
|
<meta name="theme-color" content="#070a0f" />
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
<link rel="shortcut icon" href="/favicon.ico" />
|
|
<link rel="stylesheet" href="/css/style.css?v=8" />
|
|
<script src="/js/theme.js" defer></script>
|
|
<script src="/js/global.js?v=1" defer></script>
|
|
<script src="/js/i18n.js" defer></script>
|
|
<script>document.addEventListener("click",function(e){var t=e.target.closest?e.target.closest(".site-nav"):null;if(t){var n=document.getElementById("nav-toggle");if(n)n.checked=false}})</script>
|
|
<style>
|
|
.err-hero h1{font-size:clamp(5rem,18vw,11rem);font-weight:900;line-height:1;letter-spacing:-0.04em;margin-bottom:1rem}
|
|
.err-hero p{color:var(--text-muted);font-size:1.05rem;max-width:38ch;margin:0 auto 2.5rem;line-height:1.6}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header class="site-header">
|
|
<a class="skip-link" href="#main">Aller au contenu</a>
|
|
<a class="brand" href="/"><span class="brand-mark" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 16" role="presentation" focusable="false"><path d="M5 4h22L5 12h22" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/></svg></span><span class="brand-name">Zektyc</span></a>
|
|
<input type="checkbox" id="nav-toggle" class="nav-toggle-input" />
|
|
<label for="nav-toggle" class="nav-burger" aria-label="Menu">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg>
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6L6 18"/></svg>
|
|
</label>
|
|
<nav class="site-nav" aria-label="Navigation">
|
|
<div class="lang-switch" role="group" aria-label="Langue / Language">
|
|
<button type="button" data-lang="fr" class="lang-btn __FR_ACTIVE__">__FR_LABEL__</button>
|
|
<button type="button" data-lang="en" class="lang-btn __EN_ACTIVE__">__EN_LABEL__</button>
|
|
</div>
|
|
<button type="button" class="theme-btn" aria-label="Theme">
|
|
<svg class="icon-moon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
|
|
<svg class="icon-sun" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/></svg>
|
|
</button>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="site-main" id="main">
|
|
<section class="hero">
|
|
<h1>__STATUS__</h1>
|
|
<p class="hero-sub">__MSG__</p>
|
|
<div class="hero-actions">
|
|
<a class="btn btn-primary" href="__HREF__">__BACK__</a>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<footer class="site-footer">
|
|
<p>Zektyc · France</p>
|
|
<p class="footer-note">__NOTE__</p>
|
|
<nav class="footer-nav" aria-label="Legal">
|
|
<a href="__TOS_HREF__">__TOS__</a>
|
|
<span class="footer-sep" aria-hidden="true">·</span>
|
|
<a href="__PRIV_HREF__">__PRIV__</a>
|
|
<span class="footer-sep" aria-hidden="true">·</span>
|
|
<a href="/.well-known/security.txt">security.txt</a>
|
|
</nav>
|
|
</footer>
|
|
</body>
|
|
</html>
|