/** * RETRO.JS - Utilities for the 2005-Era Research Aesthetic * Features: Zoom, Manuscript Mode (Sepia), Pure Text View */ var retro = (function () { var zoomLevel = 1.0; var isSepia = false; function init() { // Check for saved preferences if (localStorage.getItem("retro_sepia") === "true") { toggleSepia(true); } } // ZOOM ENGINE function zoom(delta) { zoomLevel += delta; if (zoomLevel < 0.5) zoomLevel = 0.5; if (document.body.style.zoom !== undefined) { document.body.style.zoom = zoomLevel; } else { document.body.style.transform = "scale(" + zoomLevel + ")"; document.body.style.transformOrigin = "top center"; } } // MANUSCRIPT MODE (SEPIA) function toggleSepia(force) { var existing = document.getElementById("sepia-style"); if (existing && !force) { existing.parentNode.removeChild(existing); isSepia = false; localStorage.setItem("retro_sepia", "false"); return; } if (!existing || force) { if (force && existing) return; var style = document.createElement("style"); style.id = "sepia-style"; style.innerHTML = ` body { background-color: #F5E6D3 !important; color: #2F2418 !important; } a { color: #8B4513 !important; } table, td, th { background-color: #F5E6D3 !important; border-color: #8B4513 !important; } /* Navbar Exceptions */ table[bgcolor="#000033"], table[bgcolor="#000033"] td { background-color: #000033 !important; } table[bgcolor="#000033"] a, table[bgcolor="#000033"] font { color: #FFFFFF !important; } /* Header Exception */ table[bgcolor="#E6E6E6"], table[bgcolor="#E6E6E6"] td { background-color: #E6E6E6 !important; } /* Marquee Exception */ table[bgcolor="#FFFFDD"], table[bgcolor="#FFFFDD"] td { background-color: #FFFFDD !important; } hr { border-color: #8B4513 !important; } div[style*="background-color: #F8F8F8"] { background-color: #E8DCC5 !important; border-color: #8B4513 !important; } `; document.head.appendChild(style); isSepia = true; localStorage.setItem("retro_sepia", "true"); } } // PURE TEXT MODE (Replaces Raw HTML View) function toggleRaw() { var existing = document.getElementById("raw-box"); if (existing) { document.body.removeChild(existing); var btn = document.getElementById("raw-close-btn"); if (btn) document.body.removeChild(btn); return; } // Get innerText to strip HTML tags var plainText = document.body.innerText; var rawBox = document.createElement("textarea"); rawBox.id = "raw-box"; Object.assign(rawBox.style, { position: "fixed", top: "0", left: "0", width: "100%", height: "100%", zIndex: "9999", fontFamily: "Courier New, monospace", fontSize: "14px", lineHeight: "1.5", padding: "40px 20px 20px 20px", boxSizing: "border-box", backgroundColor: "#F0F0F0", color: "#000", border: "none" }); rawBox.value = plainText; var closeBtn = document.createElement("button"); closeBtn.id = "raw-close-btn"; closeBtn.innerText = "[ RETURN TO VIEW ]"; Object.assign(closeBtn.style, { position: "fixed", top: "10px", right: "20px", zIndex: "10000", padding: "5px 10px", fontFamily: "Arial, sans-serif", cursor: "pointer", background: "#DDD", color: "#000", border: "1px solid #999" }); closeBtn.onclick = toggleRaw; document.body.appendChild(rawBox); document.body.appendChild(closeBtn); } window.addEventListener("DOMContentLoaded", init); return { zoom: zoom, toggleSepia: toggleSepia, toggleRaw: toggleRaw }; })();