Spaces:
Running
Running
Update index.html
Browse files- index.html +17 -68
index.html
CHANGED
|
@@ -152,13 +152,6 @@
|
|
| 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 |
|
|
@@ -211,7 +204,7 @@
|
|
| 211 |
</nav>
|
| 212 |
|
| 213 |
<!-- Mobile Menu Dropdown -->
|
| 214 |
-
<div id="mobile-menu" class="fixed top-
|
| 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>
|
|
@@ -219,7 +212,7 @@
|
|
| 219 |
<i class="fas fa-times text-gray-300"></i>
|
| 220 |
</button>
|
| 221 |
</div>
|
| 222 |
-
<div class="flex flex-col space-y-4
|
| 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>
|
|
@@ -251,8 +244,8 @@
|
|
| 251 |
</div>
|
| 252 |
|
| 253 |
<div class="mt-24 w-64 h-64 relative conscious-element" id="conscious-orb-container">
|
| 254 |
-
<
|
| 255 |
-
|
| 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,10 +1573,7 @@
|
|
| 1580 |
SUPER BOLD & LARGE HEARTBEAT NEURAL ANIMATION
|
| 1581 |
----------------------------------------------------------------- */
|
| 1582 |
const neuralCanvas = document.getElementById('orb-neural-canvas');
|
| 1583 |
-
|
| 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,19 +1581,15 @@
|
|
| 1591 |
neuralCanvas.height = neuralCanvas.parentElement.clientHeight;
|
| 1592 |
}
|
| 1593 |
}
|
| 1594 |
-
|
| 1595 |
-
|
| 1596 |
resizeNeuralCanvas();
|
| 1597 |
-
|
| 1598 |
-
|
| 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,9 +1605,7 @@
|
|
| 1619 |
});
|
| 1620 |
}
|
| 1621 |
}
|
| 1622 |
-
|
| 1623 |
-
setupNeurons();
|
| 1624 |
-
}
|
| 1625 |
|
| 1626 |
function drawNeuralActivity(time) {
|
| 1627 |
if (!neuralCanvas || !neuralCtx) return;
|
|
@@ -1975,63 +1959,28 @@
|
|
| 1975 |
const mobileMenuClose = document.getElementById('mobile-menu-close');
|
| 1976 |
|
| 1977 |
function toggleMobileMenu(show) {
|
| 1978 |
-
|
| 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', (
|
| 2006 |
-
e.preventDefault();
|
| 2007 |
-
e.stopPropagation();
|
| 2008 |
-
toggleMobileMenu(true);
|
| 2009 |
-
});
|
| 2010 |
}
|
| 2011 |
|
| 2012 |
if (mobileMenuClose) {
|
| 2013 |
-
mobileMenuClose.addEventListener('click', (
|
| 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 |
-
|
| 2030 |
-
|
| 2031 |
mobileMenuLinks.forEach(link => {
|
| 2032 |
-
link.addEventListener('click', () =>
|
| 2033 |
-
toggleMobileMenu(false);
|
| 2034 |
-
});
|
| 2035 |
});
|
| 2036 |
}
|
| 2037 |
|
|
|
|
| 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 |
|
|
|
|
| 204 |
</nav>
|
| 205 |
|
| 206 |
<!-- Mobile Menu Dropdown -->
|
| 207 |
+
<div id="mobile-menu" class="md:hidden fixed top-0 left-0 right-0 z-50 bg-black/95 backdrop-blur-md border-b border-gray-800 modal modal-hidden">
|
| 208 |
<div class="px-6 py-4">
|
| 209 |
<div class="flex justify-between items-center mb-6">
|
| 210 |
<span class="text-lg font-semibold">Menu</span>
|
|
|
|
| 212 |
<i class="fas fa-times text-gray-300"></i>
|
| 213 |
</button>
|
| 214 |
</div>
|
| 215 |
+
<div class="flex flex-col space-y-4">
|
| 216 |
<a href="about.html" class="text-gray-300 hover:text-indigo-400 transition py-2">About</a>
|
| 217 |
<a href="research.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Research</a>
|
| 218 |
<a href="capabilities.html" class="text-gray-300 hover:text-indigo-400 transition py-2">Capabilities</a>
|
|
|
|
| 244 |
</div>
|
| 245 |
|
| 246 |
<div class="mt-24 w-64 h-64 relative conscious-element" id="conscious-orb-container">
|
| 247 |
+
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg" class="w-full h-full">
|
| 248 |
+
<canvas id="orb-neural-canvas" class="absolute top-0 left-0 w-full h-full pointer-events-none"></canvas>
|
| 249 |
<circle cx="100" cy="100" r="80" fill="url(#orbGradient)" filter="url(#orbGlow)" />
|
| 250 |
<path d="M100,20 Q120,50 100,80 Q80,50 100,20 Z" fill="rgba(255,255,255,0.1)" />
|
| 251 |
<path d="M100,180 Q80,150 100,120 Q120,150 100,180 Z" fill="rgba(255,255,255,0.1)" />
|
|
|
|
| 1573 |
SUPER BOLD & LARGE HEARTBEAT NEURAL ANIMATION
|
| 1574 |
----------------------------------------------------------------- */
|
| 1575 |
const neuralCanvas = document.getElementById('orb-neural-canvas');
|
| 1576 |
+
const neuralCtx = neuralCanvas.getContext('2d');
|
|
|
|
|
|
|
|
|
|
| 1577 |
|
| 1578 |
function resizeNeuralCanvas() {
|
| 1579 |
if (neuralCanvas && neuralCanvas.parentElement) {
|
|
|
|
| 1581 |
neuralCanvas.height = neuralCanvas.parentElement.clientHeight;
|
| 1582 |
}
|
| 1583 |
}
|
| 1584 |
+
resizeNeuralCanvas();
|
| 1585 |
+
window.addEventListener('resize', () => {
|
| 1586 |
resizeNeuralCanvas();
|
| 1587 |
+
setupNeurons();
|
| 1588 |
+
});
|
|
|
|
|
|
|
|
|
|
| 1589 |
|
| 1590 |
const neuronCount = 22;
|
| 1591 |
const neurons = [];
|
| 1592 |
function setupNeurons() {
|
|
|
|
| 1593 |
neurons.length = 0;
|
| 1594 |
const w = neuralCanvas.width;
|
| 1595 |
const h = neuralCanvas.height;
|
|
|
|
| 1605 |
});
|
| 1606 |
}
|
| 1607 |
}
|
| 1608 |
+
setupNeurons();
|
|
|
|
|
|
|
| 1609 |
|
| 1610 |
function drawNeuralActivity(time) {
|
| 1611 |
if (!neuralCanvas || !neuralCtx) return;
|
|
|
|
| 1959 |
const mobileMenuClose = document.getElementById('mobile-menu-close');
|
| 1960 |
|
| 1961 |
function toggleMobileMenu(show) {
|
| 1962 |
+
toggleModal(mobileMenu, show);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1963 |
}
|
| 1964 |
|
| 1965 |
if (mobileMenuBtn) {
|
| 1966 |
+
mobileMenuBtn.addEventListener('click', () => toggleMobileMenu(true));
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1967 |
}
|
| 1968 |
|
| 1969 |
if (mobileMenuClose) {
|
| 1970 |
+
mobileMenuClose.addEventListener('click', () => toggleMobileMenu(false));
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1971 |
}
|
| 1972 |
|
| 1973 |
if (mobileMenu) {
|
| 1974 |
mobileMenu.addEventListener('click', (e) => {
|
| 1975 |
+
if (e.target === mobileMenu) toggleMobileMenu(false);
|
|
|
|
|
|
|
| 1976 |
});
|
| 1977 |
}
|
| 1978 |
|
| 1979 |
// Close mobile menu when clicking on a link
|
| 1980 |
+
const mobileMenuLinks = mobileMenu?.querySelectorAll('a');
|
| 1981 |
+
if (mobileMenuLinks) {
|
| 1982 |
mobileMenuLinks.forEach(link => {
|
| 1983 |
+
link.addEventListener('click', () => toggleMobileMenu(false));
|
|
|
|
|
|
|
| 1984 |
});
|
| 1985 |
}
|
| 1986 |
|