diff --git a/404.php b/404.php
new file mode 100644
index 0000000..f3d22e0
--- /dev/null
+++ b/404.php
@@ -0,0 +1,3 @@
+
+
+
+
+ 1 ) ); } ?>
+ {
+ const root = document.documentElement;
+ const storedTheme = localStorage.getItem('c1024-theme');
+ if (storedTheme) root.dataset.theme = storedTheme;
+
+ const themeToggle = document.querySelector('[data-theme-toggle]');
+ if (themeToggle) {
+ const updateThemeLabel = () => {
+ const dark = root.dataset.theme === 'dark';
+ themeToggle.setAttribute('aria-pressed', String(dark));
+ themeToggle.setAttribute('aria-label', dark ? 'Use light mode' : 'Use dark mode');
+ };
+ updateThemeLabel();
+ themeToggle.addEventListener('click', () => {
+ root.dataset.theme = root.dataset.theme === 'dark' ? 'light' : 'dark';
+ localStorage.setItem('c1024-theme', root.dataset.theme);
+ updateThemeLabel();
+ });
+ }
+
+ const header = document.querySelector('.site-header');
+ let lastY = window.scrollY;
+ let ticking = false;
+ window.addEventListener('scroll', () => {
+ if (ticking || !header) return;
+ ticking = true;
+ requestAnimationFrame(() => {
+ const currentY = window.scrollY;
+ header.classList.toggle('is-hidden', currentY > lastY && currentY > header.offsetHeight);
+ lastY = currentY;
+ ticking = false;
+ });
+ }, { passive: true });
+
+ const searchToggle = document.querySelector('[data-search-toggle]');
+ const searchPanel = document.querySelector('[data-search-panel]');
+ if (searchToggle && searchPanel) {
+ searchToggle.addEventListener('click', () => {
+ const open = searchPanel.classList.toggle('is-open');
+ searchToggle.setAttribute('aria-expanded', String(open));
+ if (open) searchPanel.querySelector('input')?.focus();
+ });
+ document.addEventListener('click', event => {
+ if (!searchPanel.contains(event.target) && !searchToggle.contains(event.target)) {
+ searchPanel.classList.remove('is-open');
+ searchToggle.setAttribute('aria-expanded', 'false');
+ }
+ });
+ }
+
+ const menuToggle = document.querySelector('[data-menu-toggle]');
+ if (menuToggle && header) menuToggle.addEventListener('click', () => {
+ const open = header.classList.toggle('menu-open');
+ menuToggle.setAttribute('aria-expanded', String(open));
+ });
+})();
diff --git a/comments.php b/comments.php
new file mode 100644
index 0000000..b43285b
--- /dev/null
+++ b/comments.php
@@ -0,0 +1,12 @@
+
+
diff --git a/editor-style.css b/editor-style.css
new file mode 100644
index 0000000..950993a
--- /dev/null
+++ b/editor-style.css
@@ -0,0 +1 @@
+@font-face{font-family:'Alpha Lyrae';src:url('fonts/AlphaLyrae-Medium.woff2') format('woff2')}@font-face{font-family:'Crimson Pro';src:url('fonts/crimson-pro-latin-ext-wght-normal.woff2') format('woff2')}@font-face{font-family:'Berkeley Mono';src:url('fonts/BerkeleyMono-Regular.woff2') format('woff2')}body{font-family:'Crimson Pro',Georgia,serif;font-size:22px;line-height:1.55;color:#1d1b19}h1,h2,h3,h4{font-family:'Alpha Lyrae',sans-serif;font-weight:500;letter-spacing:.025em}code,pre{font-family:'Berkeley Mono',monospace}a{color:#c3480b}
diff --git a/footer.php b/footer.php
new file mode 100644
index 0000000..0c8f237
--- /dev/null
+++ b/footer.php
@@ -0,0 +1,9 @@
+
+
+
'ol', 'short_ping' => true, 'avatar_size' => 48 ) ); ?>
+ + + + +