23 lines
No EOL
6.7 KiB
HTML
23 lines
No EOL
6.7 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="alternate icon" href="/favicon.ico"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="canonical" href="https://gabeefran.co/404/"><link rel="alternate" hreflang="en" href="https://gabeefran.co/404/"><link rel="alternate" hreflang="pt-BR" href="https://gabeefran.co/pt/404/"><meta name="generator" content="Astro v7.2.10"><title>Page not found — gabeefranco</title><meta name="description" content="There’s nothing here. Let’s get you back home."><meta property="og:type" content="website"><meta property="og:title" content="Page not found — gabeefranco"><meta property="og:description" content="There’s nothing here. Let’s get you back home."><meta property="og:url" content="https://gabeefran.co/404/"><meta property="og:image" content="https://gabeefran.co/logo.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://gabeefran.co/logo.png"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400..700;1,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet"><script>
|
||
// Runs before paint to avoid a flash of the wrong theme.
|
||
(function () {
|
||
const stored = localStorage.getItem('theme');
|
||
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
||
const dark = stored ? stored === 'dark' : prefersDark;
|
||
document.documentElement.classList.toggle('dark', dark);
|
||
})();
|
||
</script><link rel="stylesheet" href="/_astro/BaseLayout.C3cx7DTv.css"><script>window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); };
|
||
var script = document.createElement('script');
|
||
script.defer = true;
|
||
script.src = '/_vercel/insights/script.js';
|
||
var head = document.querySelector('head');
|
||
head.appendChild(script);
|
||
</script></head><body class="flex min-h-screen flex-col bg-bg font-sans text-text antialiased selection:bg-primary selection:text-white"><header class="sticky top-0 z-40 border-b border-border/80 bg-bg/85 backdrop-blur"><div class="flex flex-col justify-center gap-4 px-4 py-3 sm:px-6"><div class="flex flex-row justify-between items-end"><a href="/" class="flex hover:underline shrink-0 items-center gap-2.5" aria-label="gabeefranco"><img src="/logo.png" class="h-4"><span class="font-mono text-[15px] font-semibold tracking-tight text-text">gabeefranco</span></a><div class="ml-10 flex sm:hidden justify-end gap-3"><a href="/pt/404/" hreflang="pt" title="Switch language" aria-label="Switch language: Português" class="text-accent max-w-fit font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep">Switch language: Português</a><button type="button" class="theme-toggle text-accent sm:ml-2 font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep" aria-label="Toggle color theme" title="Toggle color theme">Toggle color theme</button><script type="module">function e(){document.querySelectorAll(`.theme-toggle`).forEach(e=>{e.addEventListener(`click`,function(){let e=document.documentElement.classList.toggle(`dark`);localStorage.setItem(`theme`,e?`dark`:`light`)})})}e(),document.addEventListener(`astro:after-swap`,e);</script></div><div class="hidden sm:flex items-center gap-2"><nav class="flex items-center gap-1 justify-right" aria-label="Menu"><a href="/" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">Home</a><a href="/posts" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">Posts</a><a href="/about" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">About</a></nav><a href="/pt/404/" hreflang="pt" title="Switch language" aria-label="Switch language: Português" class="text-accent max-w-fit py-1 font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep ">Switch language: Português</a><button type="button" class="theme-toggle text-accent sm:ml-2 font-mono text-xs sm:text-sm underline hover:cursor-pointer hover:text-accent-deep" aria-label="Toggle color theme" title="Toggle color theme">Toggle color theme</button></div></div><div class="flex justify-end sm:hidden items-center gap-2"><nav class="flex items-center gap-1 justify-right" aria-label="Menu"><a href="/" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">Home</a><a href="/posts" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">Posts</a><a href="/about" class="px-2 py-1 text-sm font-medium font-mono underline text-text-muted hover:text-text">About</a></nav></div></div></header><main class="flex-1"><section class="mx-10 flex flex-col items-start px-4 py-24 sm:px-6 font-mono"><p class="font-mono text-sm text-primary">404</p><div data-notfound-lang="en" class><h1 class="mt-2 text-3xl font-bold tracking-tight text-text">Page not found</h1><p class="mt-3 text-text-muted">There’s nothing here. Let’s get you back home.</p><a href="/" class="mt-4 inline-block underline text-primary hover:text-primary-hover font-bold">Back to home</a></div><div data-notfound-lang="pt" class="hidden"><h1 class="mt-2 text-3xl font-bold tracking-tight text-text">Página não encontrada</h1><p class="mt-3 text-text-muted">Não há nada aqui. Vamos te levar de volta para o início.</p><a href="/pt" class="mt-4 inline-block underline text-primary hover:text-primary-hover font-bold">Voltar para o início</a></div></section></main><footer class="border-t border-border/80 font-mono"><div class="mx-auto flex max-w-3xl flex-col gap-2 px-4 py-8 text-sm text-text-muted sm:flex-row sm:items-center sm:justify-between sm:px-6"><p>© 2026 <span class="font-mono text-text">gabeefranco</span> · All rights reserved.</p><div class="flex items-center gap-4"><span class="hidden sm:inline">Written by hand in Porto Alegre.</span><a href="https://github.com/gabeefranco" target="_blank" rel="noopener noreferrer me" class="transition-colors hover:text-primary">GitHub</a><a href="https://github.com/gabeefranco/gabeefran.co-blog" target="_blank" rel="noopener noreferrer" class="transition-colors hover:text-primary">Source</a></div></div></footer></body></html><script>
|
||
(function () {
|
||
if (location.pathname.replace(/\/$/, '').startsWith('/pt') === false) return;
|
||
document.documentElement.lang = 'pt';
|
||
document.querySelectorAll('[data-notfound-lang]').forEach(function (el) {
|
||
el.classList.toggle('hidden', el.getAttribute('data-notfound-lang') !== 'pt');
|
||
});
|
||
})();
|
||
</script> |