Spaces:
Running
Running
Update index.html
Browse files- index.html +132 -9
index.html
CHANGED
|
@@ -152,6 +152,13 @@
|
|
| 152 |
box-shadow: 0 0 0 1px rgba(99,102,241,0.22), 0 0 28px rgba(99,102,241,0.08);
|
| 153 |
transform: translateY(-1px);
|
| 154 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 155 |
</style>
|
| 156 |
</head>
|
| 157 |
|
|
@@ -160,7 +167,7 @@
|
|
| 160 |
<div id="vanta-bg" class="fixed top-0 left-0 w-full h-full z-0"></div>
|
| 161 |
|
| 162 |
<!-- NAVIGATION BAR -->
|
| 163 |
-
<nav class="relative z-10 py-6 px-8 flex justify-between items-center backdrop-blur-sm">
|
| 164 |
<!-- Logo + mini orb -->
|
| 165 |
<div class="flex items-center space-x-2">
|
| 166 |
<a href="index.html" class="flex items-center space-x-2">
|
|
@@ -171,8 +178,23 @@
|
|
| 171 |
</a>
|
| 172 |
</div>
|
| 173 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 174 |
<!-- Right controls: single Constellation glyph + Access -->
|
| 175 |
<div class="flex items-center space-x-3">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
<!-- Constellation Glyph (opens the Lab Navigator) -->
|
| 177 |
<button id="lab-nav-btn"
|
| 178 |
class="w-10 h-10 rounded-full border border-indigo-500/40 bg-gray-900/20 hover:bg-gray-900/40 backdrop-blur-sm transition flex items-center justify-center"
|
|
@@ -188,6 +210,26 @@
|
|
| 188 |
</div>
|
| 189 |
</nav>
|
| 190 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
<!-- HERO SECTION -->
|
| 192 |
<section class="relative z-10 min-h-screen flex flex-col justify-center items-center px-6 py-20 text-center">
|
| 193 |
<div class="max-w-4xl mx-auto">
|
|
@@ -209,8 +251,8 @@
|
|
| 209 |
</div>
|
| 210 |
|
| 211 |
<div class="mt-24 w-64 h-64 relative conscious-element" id="conscious-orb-container">
|
| 212 |
-
<
|
| 213 |
-
|
| 214 |
<circle cx="100" cy="100" r="80" fill="url(#orbGradient)" filter="url(#orbGlow)" />
|
| 215 |
<path d="M100,20 Q120,50 100,80 Q80,50 100,20 Z" fill="rgba(255,255,255,0.1)" />
|
| 216 |
<path d="M100,180 Q80,150 100,120 Q120,150 100,180 Z" fill="rgba(255,255,255,0.1)" />
|
|
@@ -1538,7 +1580,10 @@
|
|
| 1538 |
SUPER BOLD & LARGE HEARTBEAT NEURAL ANIMATION
|
| 1539 |
----------------------------------------------------------------- */
|
| 1540 |
const neuralCanvas = document.getElementById('orb-neural-canvas');
|
| 1541 |
-
|
|
|
|
|
|
|
|
|
|
| 1542 |
|
| 1543 |
function resizeNeuralCanvas() {
|
| 1544 |
if (neuralCanvas && neuralCanvas.parentElement) {
|
|
@@ -1546,15 +1591,19 @@
|
|
| 1546 |
neuralCanvas.height = neuralCanvas.parentElement.clientHeight;
|
| 1547 |
}
|
| 1548 |
}
|
| 1549 |
-
|
| 1550 |
-
|
| 1551 |
resizeNeuralCanvas();
|
| 1552 |
-
|
| 1553 |
-
|
|
|
|
|
|
|
|
|
|
| 1554 |
|
| 1555 |
const neuronCount = 22;
|
| 1556 |
const neurons = [];
|
| 1557 |
function setupNeurons() {
|
|
|
|
| 1558 |
neurons.length = 0;
|
| 1559 |
const w = neuralCanvas.width;
|
| 1560 |
const h = neuralCanvas.height;
|
|
@@ -1570,7 +1619,9 @@
|
|
| 1570 |
});
|
| 1571 |
}
|
| 1572 |
}
|
| 1573 |
-
|
|
|
|
|
|
|
| 1574 |
|
| 1575 |
function drawNeuralActivity(time) {
|
| 1576 |
if (!neuralCanvas || !neuralCtx) return;
|
|
@@ -1910,8 +1961,80 @@
|
|
| 1910 |
closeAccessModal(true);
|
| 1911 |
return;
|
| 1912 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1913 |
});
|
| 1914 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1915 |
// Initial dossier render
|
| 1916 |
renderDossier('start');
|
| 1917 |
</script>
|
|
|
|
| 152 |
box-shadow: 0 0 0 1px rgba(99,102,241,0.22), 0 0 28px rgba(99,102,241,0.08);
|
| 153 |
transform: translateY(-1px);
|
| 154 |
}
|
| 155 |
+
|
| 156 |
+
/* Mobile menu - hide on desktop */
|
| 157 |
+
@media (min-width: 768px) {
|
| 158 |
+
#mobile-menu {
|
| 159 |
+
display: none !important;
|
| 160 |
+
}
|
| 161 |
+
}
|
| 162 |
</style>
|
| 163 |
</head>
|
| 164 |
|
|
|
|
| 167 |
<div id="vanta-bg" class="fixed top-0 left-0 w-full h-full z-0"></div>
|
| 168 |
|
| 169 |
<!-- NAVIGATION BAR -->
|
| 170 |
+
<nav class="relative z-10 py-6 px-8 flex justify-between items-center backdrop-blur-sm bg-black/50">
|
| 171 |
<!-- Logo + mini orb -->
|
| 172 |
<div class="flex items-center space-x-2">
|
| 173 |
<a href="index.html" class="flex items-center space-x-2">
|
|
|
|
| 178 |
</a>
|
| 179 |
</div>
|
| 180 |
|
| 181 |
+
<!-- Navigation Links (Desktop) -->
|
| 182 |
+
<div class="hidden md:flex items-center space-x-6">
|
| 183 |
+
<a href="about.html" class="text-gray-300 hover:text-indigo-400 transition">About</a>
|
| 184 |
+
<a href="research.html" class="text-gray-300 hover:text-indigo-400 transition">Research</a>
|
| 185 |
+
<a href="capabilities.html" class="text-gray-300 hover:text-indigo-400 transition">Capabilities</a>
|
| 186 |
+
<a href="consciousness.html" class="text-gray-300 hover:text-indigo-400 transition">Consciousness</a>
|
| 187 |
+
<a href="chat.html" class="text-gray-300 hover:text-indigo-400 transition">Chat</a>
|
| 188 |
+
<a href="contact.html" class="text-gray-300 hover:text-indigo-400 transition">Contact</a>
|
| 189 |
+
</div>
|
| 190 |
+
|
| 191 |
<!-- Right controls: single Constellation glyph + Access -->
|
| 192 |
<div class="flex items-center space-x-3">
|
| 193 |
+
<!-- Mobile Menu Button -->
|
| 194 |
+
<button id="mobile-menu-btn" class="md:hidden w-10 h-10 rounded-full border border-indigo-500/40 bg-gray-900/20 hover:bg-gray-900/40 backdrop-blur-sm transition flex items-center justify-center" aria-label="Toggle Menu">
|
| 195 |
+
<i class="fas fa-bars text-indigo-300"></i>
|
| 196 |
+
</button>
|
| 197 |
+
|
| 198 |
<!-- Constellation Glyph (opens the Lab Navigator) -->
|
| 199 |
<button id="lab-nav-btn"
|
| 200 |
class="w-10 h-10 rounded-full border border-indigo-500/40 bg-gray-900/20 hover:bg-gray-900/40 backdrop-blur-sm transition flex items-center justify-center"
|
|
|
|
| 210 |
</div>
|
| 211 |
</nav>
|
| 212 |
|
| 213 |
+
<!-- Mobile Menu Dropdown -->
|
| 214 |
+
<div id="mobile-menu" class="fixed top-[73px] left-0 right-0 z-[100] bg-black/95 backdrop-blur-md border-b border-gray-800 modal modal-hidden" style="display: none;">
|
| 215 |
+
<div class="px-6 py-4">
|
| 216 |
+
<div class="flex justify-between items-center mb-6">
|
| 217 |
+
<span class="text-lg font-semibold">Menu</span>
|
| 218 |
+
<button id="mobile-menu-close" class="w-10 h-10 rounded-full border border-gray-700 bg-gray-900/50 hover:bg-gray-900/70 transition flex items-center justify-center" aria-label="Close Menu">
|
| 219 |
+
<i class="fas fa-times text-gray-300"></i>
|
| 220 |
+
</button>
|
| 221 |
+
</div>
|
| 222 |
+
<div class="flex flex-col space-y-4 pb-6">
|
| 223 |
+
<a href="about.html" class="text-gray-300 hover:text-indigo-400 transition py-2">About</a>
|
| 224 |
+
<a href="research.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Research</a>
|
| 225 |
+
<a href="capabilities.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Capabilities</a>
|
| 226 |
+
<a href="consciousness.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Consciousness</a>
|
| 227 |
+
<a href="chat.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Chat</a>
|
| 228 |
+
<a href="contact.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Contact</a>
|
| 229 |
+
</div>
|
| 230 |
+
</div>
|
| 231 |
+
</div>
|
| 232 |
+
|
| 233 |
<!-- HERO SECTION -->
|
| 234 |
<section class="relative z-10 min-h-screen flex flex-col justify-center items-center px-6 py-20 text-center">
|
| 235 |
<div class="max-w-4xl mx-auto">
|
|
|
|
| 251 |
</div>
|
| 252 |
|
| 253 |
<div class="mt-24 w-64 h-64 relative conscious-element" id="conscious-orb-container">
|
| 254 |
+
<canvas id="orb-neural-canvas" class="absolute top-0 left-0 w-full h-full pointer-events-none z-10"></canvas>
|
| 255 |
+
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg" class="w-full h-full relative z-20">
|
| 256 |
<circle cx="100" cy="100" r="80" fill="url(#orbGradient)" filter="url(#orbGlow)" />
|
| 257 |
<path d="M100,20 Q120,50 100,80 Q80,50 100,20 Z" fill="rgba(255,255,255,0.1)" />
|
| 258 |
<path d="M100,180 Q80,150 100,120 Q120,150 100,180 Z" fill="rgba(255,255,255,0.1)" />
|
|
|
|
| 1580 |
SUPER BOLD & LARGE HEARTBEAT NEURAL ANIMATION
|
| 1581 |
----------------------------------------------------------------- */
|
| 1582 |
const neuralCanvas = document.getElementById('orb-neural-canvas');
|
| 1583 |
+
if (!neuralCanvas) {
|
| 1584 |
+
console.warn('Neural canvas element not found');
|
| 1585 |
+
}
|
| 1586 |
+
const neuralCtx = neuralCanvas ? neuralCanvas.getContext('2d') : null;
|
| 1587 |
|
| 1588 |
function resizeNeuralCanvas() {
|
| 1589 |
if (neuralCanvas && neuralCanvas.parentElement) {
|
|
|
|
| 1591 |
neuralCanvas.height = neuralCanvas.parentElement.clientHeight;
|
| 1592 |
}
|
| 1593 |
}
|
| 1594 |
+
|
| 1595 |
+
if (neuralCanvas) {
|
| 1596 |
resizeNeuralCanvas();
|
| 1597 |
+
window.addEventListener('resize', () => {
|
| 1598 |
+
resizeNeuralCanvas();
|
| 1599 |
+
setupNeurons();
|
| 1600 |
+
});
|
| 1601 |
+
}
|
| 1602 |
|
| 1603 |
const neuronCount = 22;
|
| 1604 |
const neurons = [];
|
| 1605 |
function setupNeurons() {
|
| 1606 |
+
if (!neuralCanvas) return;
|
| 1607 |
neurons.length = 0;
|
| 1608 |
const w = neuralCanvas.width;
|
| 1609 |
const h = neuralCanvas.height;
|
|
|
|
| 1619 |
});
|
| 1620 |
}
|
| 1621 |
}
|
| 1622 |
+
if (neuralCanvas && neuralCtx) {
|
| 1623 |
+
setupNeurons();
|
| 1624 |
+
}
|
| 1625 |
|
| 1626 |
function drawNeuralActivity(time) {
|
| 1627 |
if (!neuralCanvas || !neuralCtx) return;
|
|
|
|
| 1961 |
closeAccessModal(true);
|
| 1962 |
return;
|
| 1963 |
}
|
| 1964 |
+
if (mobileMenu && !mobileMenu.classList.contains('modal-hidden')) {
|
| 1965 |
+
toggleMobileMenu(false);
|
| 1966 |
+
return;
|
| 1967 |
+
}
|
| 1968 |
});
|
| 1969 |
|
| 1970 |
+
/* -----------------------------------------------------------------
|
| 1971 |
+
MOBILE MENU TOGGLE
|
| 1972 |
+
----------------------------------------------------------------- */
|
| 1973 |
+
const mobileMenuBtn = document.getElementById('mobile-menu-btn');
|
| 1974 |
+
const mobileMenu = document.getElementById('mobile-menu');
|
| 1975 |
+
const mobileMenuClose = document.getElementById('mobile-menu-close');
|
| 1976 |
+
|
| 1977 |
+
function toggleMobileMenu(show) {
|
| 1978 |
+
if (!mobileMenu) return;
|
| 1979 |
+
|
| 1980 |
+
// Only show on mobile screens
|
| 1981 |
+
if (window.innerWidth >= 768) {
|
| 1982 |
+
return; // Don't show on desktop
|
| 1983 |
+
}
|
| 1984 |
+
|
| 1985 |
+
if (show) {
|
| 1986 |
+
mobileMenu.style.display = 'block';
|
| 1987 |
+
// Force a reflow
|
| 1988 |
+
mobileMenu.offsetHeight;
|
| 1989 |
+
mobileMenu.classList.remove('modal-hidden');
|
| 1990 |
+
mobileMenu.classList.add('modal-visible');
|
| 1991 |
+
document.body.style.overflow = 'hidden';
|
| 1992 |
+
} else {
|
| 1993 |
+
mobileMenu.classList.remove('modal-visible');
|
| 1994 |
+
mobileMenu.classList.add('modal-hidden');
|
| 1995 |
+
setTimeout(() => {
|
| 1996 |
+
if (mobileMenu.classList.contains('modal-hidden')) {
|
| 1997 |
+
mobileMenu.style.display = 'none';
|
| 1998 |
+
}
|
| 1999 |
+
}, 300);
|
| 2000 |
+
document.body.style.overflow = '';
|
| 2001 |
+
}
|
| 2002 |
+
}
|
| 2003 |
+
|
| 2004 |
+
if (mobileMenuBtn) {
|
| 2005 |
+
mobileMenuBtn.addEventListener('click', (e) => {
|
| 2006 |
+
e.preventDefault();
|
| 2007 |
+
e.stopPropagation();
|
| 2008 |
+
toggleMobileMenu(true);
|
| 2009 |
+
});
|
| 2010 |
+
}
|
| 2011 |
+
|
| 2012 |
+
if (mobileMenuClose) {
|
| 2013 |
+
mobileMenuClose.addEventListener('click', (e) => {
|
| 2014 |
+
e.preventDefault();
|
| 2015 |
+
e.stopPropagation();
|
| 2016 |
+
toggleMobileMenu(false);
|
| 2017 |
+
});
|
| 2018 |
+
}
|
| 2019 |
+
|
| 2020 |
+
if (mobileMenu) {
|
| 2021 |
+
mobileMenu.addEventListener('click', (e) => {
|
| 2022 |
+
if (e.target === mobileMenu) {
|
| 2023 |
+
toggleMobileMenu(false);
|
| 2024 |
+
}
|
| 2025 |
+
});
|
| 2026 |
+
}
|
| 2027 |
+
|
| 2028 |
+
// Close mobile menu when clicking on a link
|
| 2029 |
+
if (mobileMenu) {
|
| 2030 |
+
const mobileMenuLinks = mobileMenu.querySelectorAll('a');
|
| 2031 |
+
mobileMenuLinks.forEach(link => {
|
| 2032 |
+
link.addEventListener('click', () => {
|
| 2033 |
+
toggleMobileMenu(false);
|
| 2034 |
+
});
|
| 2035 |
+
});
|
| 2036 |
+
}
|
| 2037 |
+
|
| 2038 |
// Initial dossier render
|
| 2039 |
renderDossier('start');
|
| 2040 |
</script>
|