diff --git a/index.html b/index.html new file mode 100644 index 0000000..97b6cdb --- /dev/null +++ b/index.html @@ -0,0 +1,179 @@ + + + + + + RWN | Timeless Truth + + + + + + + + + + + + + + +
+ +
+
+ +
+ +
+ RWN. +
+ + + + +
+
+ +
+
+
+
+ Library +
+ +
+
+

+ Timeless Truth.
+ Modern Witness. +

+

+ Upholding the historic Reformed tradition through accessible media, scholarship, and community. +

+ + Our Network + +
+
+
+ +
+
+
+ +
+ +
+
+ Coming Soon +
+
+

Pulpit Stream

+

Stream sermons and discussions from trusted Reformed pastors.

+ + Preview Page + +
+
+ +
+
+

Confessions of Grace

+

Theological reflections and devotional pieces.

+
+ + Visit Blog + +
+ +
+ +
+

Confessional.social

+

A decentralized space for Christian fellowship.

+
+ + Join Community + +
+ +
+
+

Dead Puritan Society

+

Engage with profound wisdom from past theologians. This initiative provides curated quotes and resources for the modern church.

+
+
+ Archive Research +
LOCKED // COMING SOON
+
+
+
+
+
+ +
+
+
+

RWN Labs

+
+
+
+
+

GBA Confession Reader

+

repo: gba-2lbcf

+ VIEW SOURCE +
+
+

Konfessio

+

repo: konfessio

+ VIEW SOURCE +
+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..76dd91c --- /dev/null +++ b/script.js @@ -0,0 +1,53 @@ +document.addEventListener('DOMContentLoaded', () => { + // Initialize Icons + if (typeof lucide !== 'undefined') { + lucide.createIcons(); + } + + // Theme Engine + const themeToggle = document.getElementById('theme-toggle'); + const updateIcons = () => { + // Lucide re-rendering if needed + lucide.createIcons(); + }; + + themeToggle.addEventListener('click', () => { + document.documentElement.classList.toggle('dark'); + const isDark = document.documentElement.classList.contains('dark'); + localStorage.setItem('rwn-v2-theme', isDark ? 'dark' : 'light'); + }); + + // Check LocalStorage + if (localStorage.getItem('rwn-v2-theme') === 'dark') { + document.documentElement.classList.add('dark'); + } + + // Scroll Progress + window.addEventListener('scroll', () => { + const bar = document.getElementById('scroll-progress'); + const height = document.documentElement.scrollHeight - window.innerHeight; + const scrolled = (window.scrollY / height); + bar.style.transform = `scaleX(${scrolled})`; + }); + + // Reveal Animation on Scroll + const revealObserver = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.add('reveal-active'); + } + }); + }, { threshold: 0.1 }); + + document.querySelectorAll('.bento-card, #labs .group').forEach(el => { + el.classList.add('reveal-init'); + revealObserver.observe(el); + }); + + // Simple Mobile Toggle + const mobileBtn = document.getElementById('mobile-toggle'); + mobileBtn.addEventListener('click', () => { + alert("Mobile menu implementation: Add a slide-over panel here."); + // Usually you'd toggle a 'hidden' class on a menu div + }); +}); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..0cff86b --- /dev/null +++ b/style.css @@ -0,0 +1,66 @@ +/* Custom Blurs & Glass */ +.glass { + background: rgba(255, 255, 255, 0.7); + backdrop-filter: blur(15px); + -webkit-backdrop-filter: blur(15px); +} + +.dark .glass { + background: rgba(18, 18, 18, 0.7); +} + +/* Bento Card Physics */ +.bento-card { + transition: all 0.5s cubic-bezier(0.2, 0.8, 0.2, 1); +} + +.bento-card:hover { + transform: translateY(-10px) scale(1.01); +} + +/* Hero Zoom Keyframe */ +@keyframes heroZoom { + 0% { transform: scale(1.05); } + 100% { transform: scale(1.15); } +} + +.hero-zoom { + animation: heroZoom 20s infinite alternate ease-in-out; +} + +/* Hidden elements for reveal observer */ +.reveal-init { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; +} + +.reveal-active { + opacity: 1 !important; + transform: translateY(0) !important; +} + +/* Glassmorphism Header */ +.glass { + background: rgba(255, 255, 255, 0.75); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); +} +.dark .glass { background: rgba(18, 18, 18, 0.75); } + +/* Animation: Subtle Zoom for Hero */ +@keyframes heroZoom { + 0% { transform: scale(1); } + 100% { transform: scale(1.1); } +} +.hero-zoom { animation: heroZoom 20s infinite alternate ease-in-out; } + +/* Bento Interaction */ +.bento-card { transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); } +.bento-card:hover { transform: translateY(-8px); } + +/* Custom Scroll Progress Bar */ +#scroll-progress { + transform-origin: 0%; + transition: transform 0.1s linear; +} \ No newline at end of file