BruceBanners's picture
Single long-scroll page, dark starfield background continuous throughout.
0043c79 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>VoidPulse Nebula Navigator</title>
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/animejs@3.2.1/lib/anime.min.js"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;500;700&display=swap');
body {
font-family: 'Space Grotesk', sans-serif;
scroll-behavior: smooth;
}
.text-glitch {
position: relative;
}
.text-glitch::before, .text-glitch::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
}
.text-glitch::before {
animation: glitch 3s infinite alternate-reverse;
clip-path: polygon(0 0, 100% 0, 100% 45%, 0 45%);
}
.text-glitch::after {
animation: glitch 2s infinite alternate;
clip-path: polygon(0 60%, 100% 60%, 100% 100%, 0 100%);
}
@keyframes glitch {
0%, 100% { transform: translate(0); opacity: 0; }
25% { transform: translate(-5px, 5px); opacity: 0.3; }
50% { transform: translate(5px, -5px); opacity: 0.3; }
75% { transform: translate(-5px, -5px); opacity: 0.3; }
}
.fade-in {
opacity: 0;
transition: opacity 0.8s ease-in-out;
}
.visible {
opacity: 1;
}
.contact-option {
display: inline-block;
opacity: 0;
transform: translateY(20px);
}
.pulse-text {
animation: pulse 4s infinite ease-in-out;
}
@keyframes pulse {
0%, 100% { opacity: 0.2; }
50% { opacity: 1; }
}
</style>
</head>
<body class="bg-black text-lime-400 overflow-x-hidden">
<div id="vanta-bg"></div>
<div class="container mx-auto px-4 relative z-10">
<!-- HERO SECTION -->
<section class="min-h-screen flex flex-col justify-center items-center text-center py-20">
<div id="name-particles" class="text-6xl md:text-8xl font-bold mb-10 tracking-tighter">
<span class="opacity-0">VOIDPULSE</span>
</div>
<div class="mb-16">
<i data-feather="lock" class="w-12 h-12 mx-auto opacity-0"></i>
</div>
<h2 class="text-xl md:text-3xl mb-12 max-w-2xl mx-auto opacity-0">Decrypting cosmic-scale problems with quantum solutions</h2>
<button class="bg-lime-400 text-black px-8 py-3 rounded-full font-bold tracking-wider transform hover:scale-105 transition-all opacity-0">
INITIATE SEQUENCE
</button>
</section>
<!-- SCENARIOS SECTION -->
<section class="min-h-screen py-32">
<div class="space-y-40">
<!-- Scenario 1 -->
<div class="scenario opacity-0">
<div class="text-glitch text-2xl md:text-4xl text-center" data-text="Legacy systems collapsing under gravity of modern demands">
<span class="original-text">Legacy systems collapsing under gravity of modern demands</span>
</div>
</div>
<!-- Scenario 2 -->
<div class="scenario opacity-0">
<div class="text-glitch text-2xl md:text-4xl text-center" data-text="Security protocols breached by unknown vectors">
<span class="original-text">Security protocols breached by unknown vectors</span>
</div>
</div>
<!-- Scenario 3 -->
<div class="scenario opacity-0">
<div class="text-glitch text-2xl md:text-4xl text-center" data-text="Data constellations lost in dark matter silos">
<span class="original-text=">Data constellations lost in dark matter silos</span>
</div>
</div>
<!-- Scenario 4 -->
<div class="scenario opacity-0">
<div class="text-glitch text-2xl md:text-4xl text-center" data-text="User engagement drifting into event horizon">
<span class="original-text">User engagement drifting into event horizon</span>
</div>
</div>
</div>
</section>
<!-- SUBSIDIARIES SECTION -->
<section class="min-h-screen flex items-center justify-center py-20">
<div class="flex flex-wrap justify-center gap-12 md:gap-20 max-w-4xl mx-auto">
<a href="https://sub1.voidpulse" target="_blank" class="subsidiary opacity-0 group">
<div class="text-5xl hover:text-lime-400 transition-colors duration-300"></div>
<div class="text-xs mt-2 opacity-0 group-hover:opacity-100 transition-opacity duration-300">sub1.voidpulse</div>
</a>
<a href="https://sub2.voidpulse" target="_blank" class="subsidiary opacity-0 group">
<div class="text-5xl hover:text-lime-400 transition-colors duration-300"></div>
<div class="text-xs mt-2 opacity-0 group-hover:opacity-100 transition-opacity duration-300">sub2.voidpulse</div>
</a>
<a href="https://sub3.voidpulse" target="_blank" class="subsidiary opacity-0 group">
<div class="text-5xl hover:text-lime-400 transition-colors duration-300"></div>
<div class="text-xs mt-2 opacity-0 group-hover:opacity-100 transition-opacity duration-300">sub3.voidpulse</div>
</a>
<a href="https://sub4.voidpulse" target="_blank" class="subsidiary opacity-0 group">
<div class="text-5xl hover:text-lime-400 transition-colors duration-300"></div>
<div class="text-xs mt-2 opacity-0 group-hover:opacity-100 transition-opacity duration-300">sub4.voidpulse</div>
</a>
<a href="https://sub5.voidpulse" target="_blank" class="subsidiary opacity-0 group">
<div class="text-5xl hover:text-lime-400 transition-colors duration-300"></div>
<div class="text-xs mt-2 opacity-0 group-hover:opacity-100 transition-opacity duration-300">sub5.voidpulse</div>
</a>
</div>
</section>
<!-- FINAL CTA -->
<section class="min-h-screen flex flex-col items-center justify-center text-center py-20">
<div class="pulse-text text-2xl md:text-4xl mb-16">Need something solved?</div>
<div class="flex space-x-8 md:space-x-16">
<div class="contact-option">[signal]</div>
<div class="contact-option">[pulse]</div>
<div class="contact-option">[transmit]</div>
</div>
</section>
</div>
<script>
// Initialize Vanta.js starfield background
VANTA.NET({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x84cc16,
backgroundColor: 0x000000,
points: 12.00,
maxDistance: 22.00,
spacing: 18.00
});
// Hero section animations
document.addEventListener('DOMContentLoaded', () => {
feather.replace();
// Animate hero elements sequentially
anime({
targets: '#name-particles span',
opacity: [0, 1],
duration: 1200,
easing: 'easeInOutQuad',
delay: 500
});
anime({
targets: '[data-feather="lock"]',
opacity: [0, 1],
duration: 800,
easing: 'easeInOutQuad',
delay: 1500
});
anime({
targets: 'h2',
opacity: [0, 1],
duration: 1000,
easing: 'easeInOutQuad',
delay: 2200
});
anime({
targets: 'button',
opacity: [0, 1],
duration: 800,
easing: 'easeInOutQuad',
delay: 3000
});
// Scroll animations for scenarios
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
if (entry.target.classList.contains('scenario')) {
// Trigger glitch animation for scenarios
const glitchElement = entry.target.querySelector('.text-glitch');
setTimeout(() => {
anime({
targets: glitchElement.querySelector('.original-text'),
opacity: [1, 0],
duration: 800,
easing: 'easeInOutQuad',
complete: () => {
glitchElement.setAttribute('data-text',
glitchElement.getAttribute('data-text').includes('Legacy') ? 'We rebuild foundations with antimatter architecture' :
glitchElement.getAttribute('data-text').includes('Security') ? 'We deploy quantum encryption shields' :
glitchElement.getAttribute('data-text').includes('Data') ? 'We map dark data with neutrino arrays' :
'We design gravitational engagement orbits'
);
anime({
targets: glitchElement.querySelector('.original-text'),
opacity: [0, 1],
duration: 800,
easing: 'easeInOutQuad'
});
}
});
}, 1000);
}
}
});
}, { threshold: 0.3 });
document.querySelectorAll('.fade-in, .scenario, .subsidiary').forEach(el => {
observer.observe(el);
});
// Animate contact options
anime({
targets: '.contact-option',
opacity: [0, 1],
translateY: [20, 0],
delay: anime.stagger(300),
duration: 1000,
easing: 'easeOutExpo',
loop: true,
direction: 'alternate'
});
});
</script>
</body>
</html>