diff --git a/main.js b/main.js
new file mode 100644
index 0000000..11d75b5
--- /dev/null
+++ b/main.js
@@ -0,0 +1,43 @@
+// main.js
+// Client-side markdown renderer for "The Fold Within"
+
+document.addEventListener('DOMContentLoaded', async () => {
+ const content = document.querySelector('main');
+ const postsDir = 'posts/';
+
+ // Load Markdown renderer
+ const rendererScript = document.createElement('script');
+ rendererScript.src = 'https://cdn.jsdelivr.net/npm/marked/marked.min.js';
+ document.head.appendChild(rendererScript);
+
+ rendererScript.onload = () => {
+ // Attach click handlers to all articles
+ document.querySelectorAll('article').forEach(article => {
+ article.addEventListener('click', async () => {
+ const slug = article.querySelector('h3').textContent.trim()
+ .toLowerCase().replace(/\s+/g, '-');
+ loadPost(slug);
+ });
+ });
+ };
+
+ async function loadPost(slug) {
+ try {
+ const res = await fetch(`${postsDir}${slug}.md`);
+ if (!res.ok) throw new Error('Post not found.');
+ const md = await res.text();
+ const html = marked.parse(md);
+
+ content.innerHTML = `
+
⚠️ ${err.message}
`; + } + } +}); \ No newline at end of file