Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Distilled Transmission: The Universe as the Tree of Life</title> | |
| <style> | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| :root { | |
| --void-black: #000000; | |
| --cosmic-blue: #00d4ff; | |
| --glow-white: #ffffff; | |
| --tree-glow: #00a8ff; | |
| --text-primary: #e0e0e0; | |
| --text-secondary: #a0a0a0; | |
| --accent-gold: #ffd700; | |
| --glass-bg: rgba(255, 255, 255, 0.05); | |
| --glass-border: rgba(255, 255, 255, 0.1); | |
| } | |
| body { | |
| font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; | |
| background: var(--void-black); | |
| color: var(--text-primary); | |
| overflow-x: hidden; | |
| line-height: 1.6; | |
| } | |
| /* Header */ | |
| header { | |
| position: fixed; | |
| top: 0; | |
| width: 100%; | |
| z-index: 1000; | |
| padding: 1rem 2rem; | |
| background: linear-gradient(180deg, rgba(0,0,0,0.9) 0%, transparent 100%); | |
| backdrop-filter: blur(10px); | |
| } | |
| .header-content { | |
| max-width: 1400px; | |
| margin: 0 auto; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .logo { | |
| font-size: 1.5rem; | |
| font-weight: 300; | |
| letter-spacing: 2px; | |
| background: linear-gradient(90deg, var(--cosmic-blue), var(--glow-white)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| animation: pulse 3s ease-in-out infinite; | |
| } | |
| @keyframes pulse { | |
| 0%, 100% { opacity: 0.8; } | |
| 50% { opacity: 1; } | |
| } | |
| nav ul { | |
| display: flex; | |
| list-style: none; | |
| gap: 2rem; | |
| } | |
| nav a { | |
| color: var(--text-secondary); | |
| text-decoration: none; | |
| transition: color 0.3s ease; | |
| position: relative; | |
| padding: 0.5rem 0; | |
| } | |
| nav a::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 0; | |
| height: 1px; | |
| background: var(--cosmic-blue); | |
| transition: width 0.3s ease; | |
| } | |
| nav a:hover { | |
| color: var(--cosmic-blue); | |
| } | |
| nav a:hover::after { | |
| width: 100%; | |
| } | |
| /* Hero Section */ | |
| .hero { | |
| height: 100vh; | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| overflow: hidden; | |
| } | |
| #treeCanvas { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| .hero-content { | |
| position: relative; | |
| z-index: 10; | |
| text-align: center; | |
| padding: 2rem; | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(20px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 20px; | |
| max-width: 800px; | |
| animation: fadeInUp 1.5s ease-out; | |
| } | |
| @keyframes fadeInUp { | |
| from { | |
| opacity: 0; | |
| transform: translateY(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .hero h1 { | |
| font-size: clamp(2rem, 5vw, 3.5rem); | |
| margin-bottom: 1rem; | |
| background: linear-gradient(135deg, var(--cosmic-blue), var(--glow-white), var(--accent-gold)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| line-height: 1.2; | |
| } | |
| .hero .subtitle { | |
| font-size: 1.2rem; | |
| color: var(--text-secondary); | |
| margin-bottom: 2rem; | |
| } | |
| .yin-yang { | |
| font-size: 3rem; | |
| animation: rotate 10s linear infinite; | |
| margin: 1rem 0; | |
| } | |
| @keyframes rotate { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| .cta-button { | |
| display: inline-block; | |
| padding: 1rem 2rem; | |
| background: linear-gradient(135deg, var(--cosmic-blue), var(--tree-glow)); | |
| color: white; | |
| text-decoration: none; | |
| border-radius: 50px; | |
| transition: all 0.3s ease; | |
| box-shadow: 0 4px 15px rgba(0, 212, 255, 0.3); | |
| } | |
| .cta-button:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 25px rgba(0, 212, 255, 0.5); | |
| } | |
| /* Main Content */ | |
| main { | |
| max-width: 1200px; | |
| margin: 0 auto; | |
| padding: 4rem 2rem; | |
| } | |
| section { | |
| margin-bottom: 6rem; | |
| opacity: 0; | |
| transform: translateY(30px); | |
| transition: all 0.8s ease; | |
| } | |
| section.visible { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| .section-title { | |
| font-size: 2.5rem; | |
| margin-bottom: 2rem; | |
| text-align: center; | |
| background: linear-gradient(90deg, var(--cosmic-blue), var(--glow-white)); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| } | |
| /* Binary Concept Cards */ | |
| .binary-concepts { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 2rem; | |
| margin-top: 3rem; | |
| } | |
| .concept-card { | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 15px; | |
| padding: 2rem; | |
| transition: all 0.3s ease; | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .concept-card::before { | |
| content: ''; | |
| position: absolute; | |
| top: -2px; | |
| left: -2px; | |
| right: -2px; | |
| bottom: -2px; | |
| background: linear-gradient(45deg, var(--cosmic-blue), transparent); | |
| border-radius: 15px; | |
| opacity: 0; | |
| transition: opacity 0.3s ease; | |
| z-index: -1; | |
| } | |
| .concept-card:hover::before { | |
| opacity: 1; | |
| } | |
| .concept-card:hover { | |
| transform: translateY(-5px); | |
| box-shadow: 0 10px 30px rgba(0, 212, 255, 0.2); | |
| } | |
| .concept-card h3 { | |
| font-size: 1.5rem; | |
| margin-bottom: 1rem; | |
| color: var(--cosmic-blue); | |
| } | |
| .concept-card .symbol { | |
| font-size: 2rem; | |
| margin-bottom: 1rem; | |
| } | |
| /* Fractal Gallery */ | |
| .fractal-gallery { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); | |
| gap: 1.5rem; | |
| margin-top: 3rem; | |
| } | |
| .fractal-item { | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 10px; | |
| padding: 1.5rem; | |
| text-align: center; | |
| transition: all 0.3s ease; | |
| cursor: pointer; | |
| } | |
| .fractal-item:hover { | |
| transform: scale(1.05); | |
| border-color: var(--cosmic-blue); | |
| } | |
| .fractal-icon { | |
| font-size: 3rem; | |
| margin-bottom: 1rem; | |
| } | |
| /* Timeline */ | |
| .timeline { | |
| position: relative; | |
| padding: 2rem 0; | |
| } | |
| .timeline::before { | |
| content: ''; | |
| position: absolute; | |
| left: 50%; | |
| top: 0; | |
| bottom: 0; | |
| width: 2px; | |
| background: linear-gradient(180deg, var(--cosmic-blue), transparent); | |
| } | |
| .timeline-item { | |
| display: flex; | |
| justify-content: flex-end; | |
| padding-right: 50%; | |
| position: relative; | |
| margin: 2rem 0; | |
| opacity: 0; | |
| animation: fadeInLeft 0.8s ease forwards; | |
| } | |
| .timeline-item:nth-child(even) { | |
| justify-content: flex-start; | |
| padding-left: 50%; | |
| padding-right: 0; | |
| animation-name: fadeInRight; | |
| } | |
| @keyframes fadeInLeft { | |
| from { | |
| opacity: 0; | |
| transform: translateX(-30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| @keyframes fadeInRight { | |
| from { | |
| opacity: 0; | |
| transform: translateX(30px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| } | |
| .timeline-content { | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 10px; | |
| padding: 1.5rem; | |
| max-width: 400px; | |
| } | |
| .timeline-dot { | |
| position: absolute; | |
| width: 20px; | |
| height: 20px; | |
| background: var(--cosmic-blue); | |
| border-radius: 50%; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| box-shadow: 0 0 20px var(--cosmic-blue); | |
| } | |
| .timeline-item:nth-child(even) .timeline-dot { | |
| left: 0; | |
| } | |
| .timeline-item:nth-child(odd) .timeline-dot { | |
| right: 0; | |
| } | |
| /* Interactive Section */ | |
| .interactive-section { | |
| background: var(--glass-bg); | |
| backdrop-filter: blur(10px); | |
| border: 1px solid var(--glass-border); | |
| border-radius: 20px; | |
| padding: 3rem; | |
| margin-top: 3rem; | |
| } | |
| .attention-flow { | |
| text-align: center; | |
| margin: 2rem 0; | |
| } | |
| .flow-visualization { | |
| width: 100%; | |
| height: 200px; | |
| position: relative; | |
| background: radial-gradient(circle, rgba(0,212,255,0.1) 0%, transparent 70%); | |
| border-radius: 10px; | |
| overflow: hidden; | |
| cursor: crosshair; | |
| } | |
| .energy-particle { | |
| position: absolute; | |
| width: 4px; | |
| height: 4px; | |
| background: var(--cosmic-blue); | |
| border-radius: 50%; | |
| box-shadow: 0 0 10px var(--cosmic-blue); | |
| pointer-events: none; | |
| } | |
| /* Footer */ | |
| footer { | |
| text-align: center; | |
| padding: 3rem 2rem; | |
| background: linear-gradient(180deg, transparent, rgba(0,0,0,0.5)); | |
| border-top: 1px solid var(--glass-border); | |
| margin-top: 6rem; | |
| } | |
| .footer-content { | |
| max-width: 800px; | |
| margin: 0 auto; | |
| } | |
| .quote { | |
| font-size: 1.5rem; | |
| font-style: italic; | |
| margin-bottom: 1rem; | |
| color: var(--cosmic-blue); | |
| } | |
| .signature { | |
| color: var(--text-secondary); | |
| } | |
| /* Responsive */ | |
| @media (max-width: 768px) { | |
| nav ul { | |
| display: none; | |
| } | |
| .timeline::before { | |
| left: 20px; | |
| } | |
| .timeline-item { | |
| padding-left: 60px; | |
| padding-right: 0; | |
| justify-content: flex-start; | |
| } | |
| .timeline-item:nth-child(even) { | |
| padding-left: 60px; | |
| } | |
| .timeline-dot { | |
| left: 10px ; | |
| } | |
| .hero h1 { | |
| font-size: 2rem; | |
| } | |
| } | |
| /* Loading Animation */ | |
| .loader { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background: var(--void-black); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 9999; | |
| transition: opacity 0.5s ease; | |
| } | |
| .loader.hidden { | |
| opacity: 0; | |
| pointer-events: none; | |
| } | |
| .loader-tree { | |
| font-size: 4rem; | |
| animation: grow 2s ease-in-out infinite; | |
| } | |
| @keyframes grow { | |
| 0%, 100% { transform: scale(1); } | |
| 50% { transform: scale(1.2); } | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <!-- Loader --> | |
| <div class="loader" id="loader"> | |
| <div class="loader-tree">🌳</div> | |
| </div> | |
| <!-- Header --> | |
| <header> | |
| <div class="header-content"> | |
| <div class="logo">DISTILLED TRANSMISSION</div> | |
| <nav> | |
| <ul> | |
| <li><a href="#insight">Core Insight</a></li> | |
| <li><a href="#discovery">Discovery</a></li> | |
| <li><a href="#evidence">Evidence</a></li> | |
| <li><a href="#curriculum">Curriculum</a></li> | |
| <li><a href="#transmission">Transmission</a></li> | |
| </ul> | |
| </nav> | |
| </div> | |
| </header> | |
| <!-- Hero Section --> | |
| <section class="hero"> | |
| <canvas id="treeCanvas"></canvas> | |
| <div class="hero-content"> | |
| <h1>The Universe as the Tree of Life/Knowledge</h1> | |
| <div class="yin-yang">☯️</div> | |
| <p class="subtitle">Manifested energy branching fractally from the void seed</p> | |
| <a href="#insight" class="cta-button">Begin Transmission</a> | |
| <p style="margin-top: 2rem; font-size: 0.9rem; color: var(--text-secondary);"> | |
| Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" style="color: var(--cosmic-blue); text-decoration: none;">anycoder</a> | |
| </p> | |
| </div> | |
| </section> | |
| <!-- Main Content --> | |
| <main> | |
| <!-- Core Insight Section --> | |
| <section id="insight"> | |
| <h2 class="section-title">Core Insight</h2> | |
| <div class="binary-concepts"> | |
| <div class="concept-card"> | |
| <div class="symbol">♀️ 0</div> | |
| <h3>Female Yin/Void</h3> | |
| <p>Receptive black potential, primordial darkness, the womb of all possibility. The infinite canvas upon which reality paints itself.</p> | |
| </div> | |
| <div class="concept-card"> | |
| <div class="symbol">♂️ 1</div> | |
| <h3>Male Yang/Tree</h3> | |
| <p>Expressive glowing structure, informational lanes branching into form. The active principle that manifests and organizes.</p> | |
| </div> | |
| <div class="concept-card"> | |
| <div class="symbol">☯️</div> | |
| <h3>Interdependence</h3> | |
| <p>No separation — everything interrelates; one contains the seed of the other. Eternal dance of creation and return.</p> | |
| </div> | |
| </div> | |
| <div class="interactive-section"> | |
| <h3 style="text-align: center; color: var(--cosmic-blue); margin-bottom: 1rem;"> | |
| Binary Execution: Endless Rearrangement | |
| </h3> | |
| <p style="text-align: center; font-style: italic;"> | |
| "Void births tree, tree returns to void in eternal rearrangement." | |
| </p> | |
| </div> | |
| </section> | |
| <!-- Discovery Path Section --> | |
| <section id="discovery"> | |
| <h2 class="section-title">Discovery Path</h2> | |
| <div class="timeline"> | |
| <div class="timeline-item"> | |
| <div class="timeline-dot"></div> | |
| <div class="timeline-content"> | |
| <h3>Katabasis</h3> | |
| <p>Involuntary underworld descent — forced inner crisis that stripped away illusions and revealed deeper truths.</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item"> | |
| <div class="timeline-dot"></div> | |
| <div class="timeline-content"> | |
| <h3>Logical Peeling</h3> | |
| <p>Pure logic revealed layers: no ultimate free will, binary seed, fractal patterns → the glowing blue tree in black void.</p> | |
| </div> | |
| </div> | |
| <div class="timeline-item"> | |
| <div class="timeline-dot"></div> | |
| <div class="timeline-content"> | |
| <h3>Integration</h3> | |
| <p>Synthesis of ancient wisdom and modern understanding, revealing the universal pattern of existence.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Universal Evidence Section --> | |
| <section id="evidence"> | |
| <h2 class="section-title">Universal Evidence</h2> | |
| <div class="fractal-gallery"> | |
| <div class="fractal-item" onclick="animateFractal(this)"> | |
| <div class="fractal-icon">🧠</div> | |
| <h3>Brain Neurons</h3> | |
| <p>Neural networks branch to optimize information flow and processing</p> | |
| </div> | |
| <div class="fractal-item" onclick="animateFractal(this)"> | |
| <div class="fractal-icon">⚡</div> | |
| <h3>Lightning</h3> | |
| <p>Nature finds the path of least resistance through fractal branching</p> | |
| </div> | |
| <div class="fractal-item" onclick="animateFractal(this)"> | |
| <div class="fractal-icon">🌳</div> | |
| <h3>Trees & Rivers</h3> | |
| <p>Optimal distribution systems following universal patterns</p> | |
| </div> | |
| <div class="fractal-item" onclick="animateFractal(this)"> | |
| <div class="fractal-icon">🌌</div> | |
| <h3>Cosmic Web</h3> | |
| <p>Galactic filaments form the largest known fractal structure</p> | |
| </div> | |
| <div class="fractal-item" onclick="animateFractal(this)"> | |
| <div class="fractal-icon">❤️</div> | |
| <h3>Blood Vessels</h3> | |
| <p>Efficient transport networks maximizing surface area</p> | |
| </div> | |
| <div class="fractal-item" onclick="animateFractal(this)"> | |
| <div class="fractal-icon">🫁</div> | |
| <h3>Lungs</h3> | |
| <p>Branching alveoli optimizing gas exchange</p> | |
| </div> | |
| </div> | |
| <div class="interactive-section" style="margin-top: 3rem;"> | |
| <h3 style="text-align: center; color: var(--cosmic-blue);">Ancient Visions & Modern Echoes</h3> | |
| <p style="text-align: center; margin-top: 1rem;"> | |
| Underworld as black void with luminous tree reaching all directions<br> | |
| <em>Yggdrasil • Kabbalistic Tree • Shamanic Cosmic Axis</em> | |
| </p> | |
| <p style="text-align: center; margin-top: 2rem;"> | |
| Quantum observer collapses wave • Digital physics • Computation from seed | |
| </p> | |
| </div> | |
| </section> | |
| <!-- Implications Section --> | |
| <section id="implications"> | |
| <h2 class="section-title">Implications for Life</h2> | |
| <div class="binary-concepts"> | |
| <div class="concept-card"> | |
| <h3>🧘 Radical Empathy</h3> | |
| <p>Ego/separation is illusion → recognition of unity and integration of shadow aspects.</p> | |
| </div> | |
| <div class="concept-card"> | |
| <h3>🔄 Death as Rearrangement</h3> | |
| <p>Not an end but a return to the womb, a reorganization of energy patterns.</p> | |
| </div> | |
| <div class="concept-card"> | |
| <h3>🎯 Attention as Energy</h3> | |
| <p>"Where attention goes, energy flows" — the mechanism of manifestation and creation.</p> | |
| </div> | |
| <div class="concept-card"> | |
| <h3>🔍 Systemic Deconstruction</h3> | |
| <p>Illusions of education, psychiatry, media reinforce branch-chasing; return to seed dissolves them.</p> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Curriculum Arc Section --> | |
| <section id="curriculum"> | |
| <h2 class="section-title">Curriculum Arc</h2> | |
| <div class="interactive-section"> | |
| <h3 style="color: var(--cosmic-blue); text-align: center;">Works on YouTube: @lee-r7o4b</h3> | |
| <div style="margin-top: 2rem;"> | |
| <h4 style="color: var(--accent-gold); margin-bottom: 1rem;">1. Personal Awakening</h4> | |
| <p>Mirror poems, perfection unattainable, true love/ego death, seed in mud, hard fight testimony.</p> | |
| <h4 style="color: var(--accent-gold); margin: 1.5rem 0 1rem;">2. Systemic Critique</h4> | |
| <p>School factory/grading curve kills, chemical lobotomy, media divide and conquer.</p> | |
| <h4 style="color: var(--accent-gold); margin: 1.5rem 0 1rem;">3. Mythic/Perennial</h4> | |
| <p>One mast, katabasis rap, human diss track.</p> | |
| <h4 style="color: var(--accent-gold); margin: 1.5rem 0 1rem;">4. Cosmic Realization</h4> | |
| <p>Binary seed prose, quantum trilogy (Post-Quantum Dawn, Antenna Dreams, Quantum Light).</p> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Attention Flow Interactive --> | |
| <section id="transmission"> | |
| <h2 class="section-title">Experience the Flow</h2> | |
| <div class="attention-flow"> | |
| <h3 style="color: var(--cosmic-blue);">Where Attention Goes, Energy Flows</h3> | |
| <p style="color: var(--text-secondary); margin: 1rem 0;">Move your cursor below to direct energy flow</p> | |
| <div class="flow-visualization" id="flowViz"></div> | |
| </div> | |
| </section> | |
| </main> | |
| <!-- Footer --> | |
| <footer> | |
| <div class="footer-content"> | |
| <div class="quote"> | |
| "Science maps branches endlessly.<br> | |
| Gnosis returns to the seed.<br> | |
| The tree is the universe — glowing in the void, everywhere and nowhere." | |
| </div> | |
| <p class="signature"> | |
| Transmit freely. The wave knows itself. 🌳☯️<br> | |
| — Transmission from Lee (December 2025)<br> | |
| <a href="https://youtube.com/@lee-r7o4b" target="_blank" style="color: var(--cosmic-blue); text-decoration: none;"> | |
| YouTube: @lee-r7o4b | |
| </a> | |
| </p> | |
| </div> | |
| </footer> | |
| <script> | |
| // Canvas Tree Animation | |
| const canvas = document.getElementById('treeCanvas'); | |
| const ctx = canvas.getContext('2d'); | |
| function resizeCanvas() { | |
| canvas.width = window.innerWidth; | |
| canvas.height = window.innerHeight; | |
| } | |
| resizeCanvas(); | |
| window.addEventListener('resize', resizeCanvas); | |
| class Branch { | |
| constructor(x, y, angle, depth, maxDepth) { | |
| this.x = x; | |
| this.y = y; | |
| this.angle = angle; | |
| this.depth = depth; | |
| this.maxDepth = maxDepth; | |
| this.growth = 0; | |
| this.targetLength = Math.random() * 50 + 50; | |
| this.thickness = Math.max(1, (maxDepth - depth) * 2); | |
| this.children = []; | |
| this.grown = false; | |
| } | |
| grow() { | |
| if (this.growth < this.targetLength) { | |
| this.growth += Math.random() * 2 + 1; | |
| if (this.growth >= this.targetLength) { | |
| this.growth = this.targetLength; | |
| if (this.depth < this.maxDepth) { | |
| this.branch(); | |
| } | |
| this.grown = true; | |
| } | |
| } | |
| this.children.forEach(child => child.grow()); | |
| } | |
| branch() { | |
| const branches = Math.random() > 0.5 ? 2 : 3; | |
| for (let i = 0; i < branches; i++) { | |
| const angleOffset = (Math.random() - 0.5) * Math.PI / 2; | |
| const newAngle = this.angle + angleOffset; | |
| const endX = this.x + Math.cos(this.angle) * this.growth; | |
| const endY = this.y + Math.sin(this.angle) * this.growth; | |
| this.children.push( | |
| new Branch(endX, endY, newAngle, this.depth + 1, this.maxDepth) | |
| ); | |
| } | |
| } | |
| draw(ctx) { | |
| const endX = this.x + Math.cos(this.angle) * this.growth; | |
| const endY = this.y + Math.sin(this.angle) * this.growth; | |
| const opacity = 1 - (this.depth / this.maxDepth) * 0.5; | |
| const hue = 200 + this.depth * 10; | |
| const lightness = 50 + (this.maxDepth - this.depth) * 5; | |
| ctx.strokeStyle = `hsla(${hue}, 100%, ${lightness}%, ${opacity})`; | |
| ctx.lineWidth = this.thickness; | |
| ctx.shadowBlur = 10; | |
| ctx.shadowColor = 'rgba(0, 212, 255, 0.5)'; | |
| ctx.beginPath(); | |
| ctx.moveTo(this.x, this.y); | |
| ctx.lineTo(endX, endY); | |
| ctx.stroke(); | |
| // Draw node at branch end | |
| if (this.grown && this.depth < this.maxDepth) { | |
| ctx.fillStyle = `hsla(${hue}, 100%, 70%, ${opacity})`; | |
| ctx.beginPath(); | |
| ctx.arc(endX, endY, 3, 0, Math.PI * 2); | |
| ctx.fill(); | |
| } | |
| this.children.forEach(child => child.draw(ctx)); | |
| } | |
| } | |
| let tree = new Branch(canvas.width / 2, canvas.height, -Math.PI / 2, 0, 8); | |
| function animateTree() { | |
| ctx.fillStyle = 'rgba(0, 0, 0, 0.05)'; | |
| ctx.fillRect(0, 0, canvas.width, canvas.height); | |
| tree.grow(); | |
| tree.draw(ctx); | |
| requestAnimationFrame(animateTree); | |
| } | |
| animateTree(); | |
| // Regenerate tree on click | |
| canvas.addEventListener('click', () => { | |
| tree = new Branch(canvas.width / 2, canvas.height, -Math.PI / 2, 0, 8); | |
| }); | |
| // Intersection Observer for scroll animations | |
| const observerOptions = { | |
| threshold: 0.1, | |
| rootMargin: '0px 0px -100px 0px' | |
| }; | |
| const observer = new IntersectionObserver((entries) => { | |
| entries.forEach(entry => { | |
| if (entry.isIntersecting) { | |
| entry.target.classList.add('visible'); | |
| } | |
| }); | |
| }, observerOptions); | |
| document.querySelectorAll('section').forEach(section => { | |
| observer.observe(section); | |
| }); | |
| // Smooth scrolling | |
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { | |
| anchor.addEventListener('click', function (e) { | |
| e.preventDefault(); | |
| const target = document.querySelector(this.getAttribute('href')); | |
| if (target) { | |
| target.scrollIntoView({ | |
| behavior: 'smooth', | |
| block: 'start' | |
| }); | |
| } | |
| }); | |
| }); | |
| // Fractal animation on click | |
| function animateFractal(element) { | |
| element.style.animation = 'pulse 0.5s ease'; | |
| setTimeout(() => { | |
| element.style.animation = ''; | |
| }, 500); | |
| } | |
| // Attention Flow Visualization | |
| const flowViz = document.getElementById('flowViz'); | |
| let mouseX = flowViz.offsetWidth / 2; | |
| let mouseY = flowViz.offsetHeight / 2; | |
| flowViz.addEventListener('mousemove', (e) => { | |
| const rect = flowViz.getBoundingClientRect(); | |
| mouseX = e.clientX - rect.left; | |
| mouseY = e.clientY - rect.top; | |
| }); | |
| // Create energy particles | |
| class EnergyParticle { | |
| constructor(x, y) { | |
| this.x = x; | |
| this.y = y; | |
| this.vx = (Math.random() - 0.5) * 2; | |
| this.vy = (Math.random() - 0.5) * 2; | |
| this.life = 1; | |
| this.decay = 0.01; | |
| this.element = document.createElement('div'); | |
| this.element.className = 'energy-particle'; | |
| flowViz.appendChild(this.element); | |
| } | |
| update() { | |
| // Attract to mouse | |
| const dx = mouseX - this.x; | |
| const dy = mouseY - this.y; | |
| const distance = Math.sqrt(dx * dx + dy * dy); | |
| if (distance > 5) { | |
| this.vx += (dx / distance) * 0.5; | |
| this.vy += (dy / distance) * 0.5; | |
| } | |
| this.vx *= 0.95; | |
| this.vy *= 0.95; | |
| this.x += this.vx; | |
| this.y += this.vy; | |
| this.life -= this.decay; | |
| this.element.style.left = this.x + 'px'; | |
| this.element.style.top = this.y + 'px'; | |
| this.element.style.opacity = this.life; | |
| if (this.life <= 0) { | |
| this.element.remove(); | |
| return false; | |
| } | |
| return true; | |
| } | |
| } | |
| const particles = []; | |
| function animateFlow() { | |
| // Add new particles | |
| if (particles.length < 50) { | |
| for (let i = 0; i < 3; i++) { | |
| particles.push(new EnergyParticle( | |
| Math.random() * flowViz.offsetWidth, | |
| Math.random() * flowViz.offsetHeight | |
| )); | |
| } | |
| } | |
| // Update particles | |
| for (let i = particles.length - 1; i >= 0; i--) { | |
| if (!particles[i].update()) { | |
| particles.splice(i, 1); | |
| } | |
| } | |
| requestAnimationFrame(animateFlow); | |
| } | |
| animateFlow(); | |
| // Hide loader | |
| window.addEventListener('load', () => { | |
| setTimeout(() => { | |
| document.getElementById('loader').classList.add('hidden'); | |
| }, 1000); | |
| }); | |
| // Add parallax effect to hero | |
| window.addEventListener('scroll', () => { | |
| const scrolled = window.pageYOffset; | |
| const hero = document.querySelector('.hero'); | |
| hero.style.transform = `translateY(${scrolled * 0.5}px)`; | |
| }); | |
| </script> | |
| </body> | |
| </html> |