326 lines
11 KiB
HTML
326 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title>
|
|
|
|
<!-- SEO Meta Tags -->
|
|
{{ with .Description }}<meta name="description" content="{{ . }}">{{ end }}
|
|
{{ with .Site.Params.description }}<meta name="description" content="{{ . }}">{{ end }}
|
|
{{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }}
|
|
{{ with .Site.Params.keywords }}<meta name="keywords" content="{{ . }}">{{ end }}
|
|
<meta name="theme-color" content="#faf7f2">
|
|
|
|
<!-- Canonical URL -->
|
|
<link rel="canonical" href="{{ .Permalink }}">
|
|
|
|
<!-- Favicon -->
|
|
<link rel="icon" type="image/png" href="/favicon.png">
|
|
<link rel="apple-touch-icon" href="/favicon.png">
|
|
|
|
<!-- Open Graph / Facebook -->
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="{{ .Permalink }}">
|
|
<meta property="og:title" content="{{ if .Title }}{{ .Title }} | {{ .Site.Title }}{{ else }}{{ .Site.Title }}{{ end }}">
|
|
<meta property="og:description" content="{{ .Site.Params.description }}">
|
|
<meta property="og:image" content="{{ .Site.BaseURL }}og.png">
|
|
<meta property="og:site_name" content="{{ .Site.Title }}">
|
|
|
|
<!-- Twitter -->
|
|
<meta property="twitter:card" content="summary_large_image">
|
|
<meta property="twitter:url" content="{{ .Permalink }}">
|
|
<meta property="twitter:title" content="{{ if .Title }}{{ .Title }} | {{ .Site.Title }}{{ else }}{{ .Site.Title }}{{ end }}">
|
|
<meta property="twitter:description" content="{{ .Site.Params.description }}">
|
|
<meta property="twitter:image" content="{{ .Site.BaseURL }}og.png">
|
|
<style>
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
body {
|
|
font-family: 'Courier New', Courier, monospace;
|
|
line-height: 1.6;
|
|
color: #3d3027;
|
|
background: #faf7f2;
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
padding: 2rem 1.5rem;
|
|
}
|
|
h1 {
|
|
font-size: 2rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
h2 {
|
|
font-size: 1.5rem;
|
|
margin-top: 2rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
p {
|
|
margin-bottom: 1rem;
|
|
}
|
|
ul, ol {
|
|
margin-bottom: 1rem;
|
|
padding-left: 1.5rem;
|
|
}
|
|
ol {
|
|
padding-left: 2rem;
|
|
}
|
|
li {
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
hr {
|
|
border: none;
|
|
border-top: 1px solid #d9cfbb;
|
|
margin: 2rem 0;
|
|
}
|
|
code {
|
|
background: #eee8dc;
|
|
padding: 0.2rem 0.4rem;
|
|
border-radius: 3px;
|
|
font-size: 0.9em;
|
|
}
|
|
pre {
|
|
background: #eee8dc;
|
|
padding: 1rem;
|
|
border-radius: 5px;
|
|
overflow-x: auto;
|
|
margin-bottom: 1rem;
|
|
}
|
|
pre code {
|
|
background: none;
|
|
padding: 0;
|
|
}
|
|
a {
|
|
color: #4a8d8f;
|
|
text-decoration: none;
|
|
}
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
strong {
|
|
font-weight: 600;
|
|
}
|
|
.coc-box {
|
|
border: 2px solid #d9cfbb;
|
|
border-radius: 8px;
|
|
padding: 2rem;
|
|
margin: 2rem 0;
|
|
position: relative;
|
|
}
|
|
.theme-toggle {
|
|
position: fixed;
|
|
top: 1rem;
|
|
right: 1rem;
|
|
background: none;
|
|
border: 1px solid #d9cfbb;
|
|
border-radius: 4px;
|
|
padding: 0.5rem;
|
|
cursor: pointer;
|
|
font-size: 1.2rem;
|
|
color: #3d3027;
|
|
}
|
|
.theme-toggle:hover {
|
|
background: #eee8dc;
|
|
}
|
|
.copy-btn {
|
|
position: absolute;
|
|
top: 1rem;
|
|
right: 1rem;
|
|
background: none;
|
|
border: 1px solid #d9cfbb;
|
|
border-radius: 4px;
|
|
padding: 0.3rem 0.6rem;
|
|
cursor: pointer;
|
|
font-size: 0.85rem;
|
|
font-family: inherit;
|
|
font-weight: bold;
|
|
color: #3d3027;
|
|
}
|
|
.copy-btn:hover {
|
|
background: #eee8dc;
|
|
}
|
|
.copy-icon {
|
|
width: 3rem;
|
|
height: 3rem;
|
|
display: block;
|
|
filter: brightness(0) saturate(100%) invert(20%) sepia(15%) saturate(500%) hue-rotate(350deg) brightness(95%) contrast(90%);
|
|
}
|
|
.version-link, .back-link {
|
|
font-size: 0.9rem;
|
|
color: #6d5d4b;
|
|
margin-top: 1rem;
|
|
display: inline-block;
|
|
}
|
|
.current-badge {
|
|
color: #28a745;
|
|
font-weight: 600;
|
|
font-size: 0.9rem;
|
|
}
|
|
.license {
|
|
font-size: 0.8rem;
|
|
color: #8a8a8a;
|
|
margin-top: 3rem;
|
|
padding-top: 1rem;
|
|
border-top: 1px solid #d9cfbb;
|
|
text-align: center;
|
|
}
|
|
.toast {
|
|
position: fixed;
|
|
bottom: 2rem;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: #3d3027;
|
|
color: #faf7f2;
|
|
padding: 0.75rem 1.5rem;
|
|
border-radius: 6px;
|
|
font-size: 0.9rem;
|
|
font-weight: 600;
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
transition: opacity 0.3s ease;
|
|
z-index: 1000;
|
|
}
|
|
.toast.show {
|
|
opacity: 1;
|
|
}
|
|
.toast.fade-out {
|
|
opacity: 0;
|
|
}
|
|
@media (prefers-color-scheme: dark) {
|
|
body {
|
|
background: #252b37;
|
|
color: #cbd5e1;
|
|
}
|
|
.coc-box {
|
|
border-color: #3d4a5c;
|
|
}
|
|
hr {
|
|
border-top-color: #3d4a5c;
|
|
}
|
|
code, pre {
|
|
background: #2d3748;
|
|
}
|
|
.theme-toggle, .copy-btn {
|
|
border-color: #3d4a5c;
|
|
color: #cbd5e1;
|
|
}
|
|
.theme-toggle:hover {
|
|
background: #2d3748;
|
|
}
|
|
.copy-btn:hover {
|
|
background: #2d3748;
|
|
}
|
|
.copy-icon {
|
|
filter: brightness(0) saturate(100%) invert(95%) sepia(0%) saturate(100%) hue-rotate(0deg) brightness(110%) contrast(100%);
|
|
}
|
|
a {
|
|
color: #74c7ec;
|
|
}
|
|
.version-link, .back-link {
|
|
color: #94a3b8;
|
|
}
|
|
.license {
|
|
border-top-color: #3d4a5c;
|
|
color: #7a8a9a;
|
|
}
|
|
.toast {
|
|
background: #cbd5e1;
|
|
color: #252b37;
|
|
}
|
|
}
|
|
body[data-theme="dark"] {
|
|
background: #252b37;
|
|
color: #cbd5e1;
|
|
}
|
|
body[data-theme="dark"] .coc-box {
|
|
border-color: #3d4a5c;
|
|
}
|
|
body[data-theme="dark"] hr {
|
|
border-top-color: #3d4a5c;
|
|
}
|
|
body[data-theme="dark"] code,
|
|
body[data-theme="dark"] pre {
|
|
background: #2d3748;
|
|
}
|
|
body[data-theme="dark"] .theme-toggle,
|
|
body[data-theme="dark"] .copy-btn {
|
|
border-color: #3d4a5c;
|
|
color: #cbd5e1;
|
|
}
|
|
body[data-theme="dark"] .theme-toggle:hover {
|
|
background: #2d3748;
|
|
}
|
|
body[data-theme="dark"] .copy-btn:hover {
|
|
background: #2d3748;
|
|
}
|
|
body[data-theme="dark"] .copy-icon {
|
|
filter: brightness(0) saturate(100%) invert(95%) sepia(0%) saturate(100%) hue-rotate(0deg) brightness(110%) contrast(100%);
|
|
}
|
|
body[data-theme="dark"] a {
|
|
color: #74c7ec;
|
|
}
|
|
body[data-theme="dark"] .version-link,
|
|
body[data-theme="dark"] .back-link {
|
|
color: #94a3b8;
|
|
}
|
|
body[data-theme="dark"] .license {
|
|
border-top-color: #3d4a5c;
|
|
color: #7a8a9a;
|
|
}
|
|
body[data-theme="dark"] .toast {
|
|
background: #cbd5e1;
|
|
color: #252b37;
|
|
}
|
|
body[data-theme="light"] {
|
|
background: #faf7f2;
|
|
color: #3d3027;
|
|
}
|
|
body[data-theme="light"] .coc-box {
|
|
border-color: #d9cfbb;
|
|
}
|
|
body[data-theme="light"] hr {
|
|
border-top-color: #d9cfbb;
|
|
}
|
|
body[data-theme="light"] code,
|
|
body[data-theme="light"] pre {
|
|
background: #eee8dc;
|
|
}
|
|
body[data-theme="light"] .theme-toggle,
|
|
body[data-theme="light"] .copy-btn {
|
|
border-color: #d9cfbb;
|
|
color: #3d3027;
|
|
}
|
|
body[data-theme="light"] .theme-toggle:hover {
|
|
background: #eee8dc;
|
|
}
|
|
body[data-theme="light"] .copy-btn:hover {
|
|
background: #eee8dc;
|
|
}
|
|
body[data-theme="light"] .copy-icon {
|
|
filter: brightness(0) saturate(100%) invert(20%) sepia(15%) saturate(500%) hue-rotate(350deg) brightness(95%) contrast(90%);
|
|
}
|
|
body[data-theme="light"] a {
|
|
color: #4a8d8f;
|
|
}
|
|
body[data-theme="light"] .version-link,
|
|
body[data-theme="light"] .back-link {
|
|
color: #6d5d4b;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<button class="theme-toggle" id="theme-btn" onclick="toggleTheme()" title="Toggle theme">☀︎</button>
|
|
{{ block "main" . }}{{ end }}
|
|
<div class="toast" id="toast">Copied!</div>
|
|
<p class="license">Licensed under <a href="https://creativecommons.org/publicdomain/zero/1.0/">CC0 1.0</a> • Copyright © 2025 Stephen Waits</p>
|
|
<script>
|
|
function copyCoC(){var t=document.querySelector('.coc-box').getAttribute('data-raw-content');navigator.clipboard.writeText(t).then(function(){var toast=document.getElementById('toast');toast.classList.add('show');setTimeout(function(){toast.classList.remove('show');toast.classList.add('fade-out');setTimeout(function(){toast.classList.remove('fade-out');},300);},2000);});}
|
|
function updateThemeBtn(){var d=window.matchMedia('(prefers-color-scheme: dark)').matches;var t=document.body.dataset.theme;var dark=t=='dark'||(t==''&&d)||(!t&&d);document.getElementById('theme-btn').textContent=dark?'☀︎':'☾';}
|
|
function toggleTheme(){var d=window.matchMedia('(prefers-color-scheme: dark)').matches;var t=document.body.dataset.theme;var dark=t=='dark'||(t==''&&d)||(!t&&d);document.body.dataset.theme=dark?'light':'dark';updateThemeBtn();}
|
|
updateThemeBtn();
|
|
</script>
|
|
</body>
|
|
</html>
|