2025-11-08 09:59:10 -06:00
|
|
|
|
<!DOCTYPE html>
|
2025-11-08 09:05:40 -06:00
|
|
|
|
<html lang="en">
|
|
|
|
|
|
<head>
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<meta charset="utf-8">
|
|
|
|
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
|
|
|
|
<title>The Fold Within</title>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
|
|
|
|
|
<!-- Tight CSP: scripts only from 'self' now that libs are vendored -->
|
|
|
|
|
|
<meta http-equiv="Content-Security-Policy"
|
|
|
|
|
|
content="default-src 'self';
|
|
|
|
|
|
script-src 'self';
|
|
|
|
|
|
style-src 'self' 'unsafe-inline';
|
|
|
|
|
|
img-src 'self' data:;
|
|
|
|
|
|
frame-src 'self';
|
|
|
|
|
|
connect-src 'self';">
|
|
|
|
|
|
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<link rel="stylesheet" href="/styles.css">
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
|
|
|
|
|
<!-- Local, vendored libraries (load before app.js so they’re ready) -->
|
|
|
|
|
|
<script src="/lib/marked.min.js"></script>
|
|
|
|
|
|
<script src="/lib/purify.min.js"></script>
|
2025-11-08 09:05:40 -06:00
|
|
|
|
</head>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
2025-11-08 09:05:40 -06:00
|
|
|
|
<body>
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<header class="topbar">
|
|
|
|
|
|
<button id="navToggle">☰</button>
|
|
|
|
|
|
<a href="/">Home</a>
|
|
|
|
|
|
<a href="/about/">About</a>
|
|
|
|
|
|
<a href="/essays/">Essays</a>
|
|
|
|
|
|
<a href="/fieldnotes/">Fieldnotes</a>
|
|
|
|
|
|
</header>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<aside class="sidebar">
|
|
|
|
|
|
<div class="controls">
|
|
|
|
|
|
<select id="filter"></select>
|
|
|
|
|
|
<select id="sort">
|
|
|
|
|
|
<option value="new">Newest</option>
|
|
|
|
|
|
<option value="old">Oldest</option>
|
|
|
|
|
|
<option value="name">Name</option>
|
|
|
|
|
|
</select>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<input id="search" type="text" placeholder="Search titles...">
|
|
|
|
|
|
<nav id="tree"></nav>
|
|
|
|
|
|
</aside>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<div class="overlay"></div>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<main class="content">
|
|
|
|
|
|
<div id="meta" class="meta"></div>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
|
|
|
|
|
<!-- Visible warning if markdown falls back -->
|
|
|
|
|
|
<div id="mdWarn" class="md-warn" style="display:none;">
|
|
|
|
|
|
Markdown fallback in effect (parser not available).
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div id="mdView" class="viewer" style="display:none;"></div>
|
|
|
|
|
|
<iframe id="htmlView"
|
|
|
|
|
|
sandbox="allow-scripts allow-forms allow-popups allow-modals allow-downloads"
|
|
|
|
|
|
style="display:none;"></iframe>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="pager">
|
2025-11-08 11:31:50 -06:00
|
|
|
|
<button id="prev">← Prev</button>
|
|
|
|
|
|
<button id="next">Next →</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</main>
|
2025-11-08 12:59:07 -06:00
|
|
|
|
|
|
|
|
|
|
<!-- App logic last -->
|
2025-11-08 12:32:09 -06:00
|
|
|
|
<script src="/app.js"></script>
|
2025-11-08 09:05:40 -06:00
|
|
|
|
</body>
|
|
|
|
|
|
</html>
|