|
|
<!DOCTYPE html> |
|
|
<html lang="en"> |
|
|
<head> |
|
|
<meta charset="UTF-8"> |
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
|
<title>Morphic Solutions Lab</title> |
|
|
<link rel="preconnect" href="https://fonts.googleapis.com"> |
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> |
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap" rel="stylesheet"> |
|
|
<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.globe.min.js"></script> |
|
|
<script src="https://cdn.jsdelivr.net/npm/three@0.121.1/build/three.min.js"></script> |
|
|
<style> |
|
|
body { |
|
|
font-family: 'Inter', sans-serif; |
|
|
background-color: #000; |
|
|
color: rgba(255,255,255,0.9); |
|
|
overflow-x: hidden; |
|
|
} |
|
|
.neon-cyan { |
|
|
color: #00f0ff; |
|
|
text-shadow: 0 0 8px rgba(0, 240, 255, 0.4); |
|
|
} |
|
|
.electric-lime { |
|
|
color: #b0ff00; |
|
|
} |
|
|
.btn-lime { |
|
|
background: transparent; |
|
|
border: 2px solid #b0ff00; |
|
|
color: #b0ff00; |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
.btn-lime:hover { |
|
|
background: rgba(176, 255, 0, 0.1); |
|
|
box-shadow: 0 0 15px rgba(176, 255, 0, 0.4); |
|
|
} |
|
|
.morph-container { |
|
|
height: 60vh; |
|
|
position: relative; |
|
|
} |
|
|
.icon-hover { |
|
|
transition: all 0.3s ease; |
|
|
opacity: 0.7; |
|
|
} |
|
|
.icon-hover:hover { |
|
|
opacity: 1; |
|
|
filter: drop-shadow(0 0 8px rgba(0, 240, 255, 0.6)); |
|
|
} |
|
|
.typing-animation { |
|
|
display: inline-block; |
|
|
overflow: hidden; |
|
|
border-right: 2px solid #00f0ff; |
|
|
white-space: nowrap; |
|
|
animation: typing 3.5s steps(30, end), blink-caret 0.75s step-end infinite; |
|
|
} |
|
|
@keyframes typing { |
|
|
from { width: 0 } |
|
|
to { width: 100% } |
|
|
} |
|
|
@keyframes blink-caret { |
|
|
from, to { border-color: transparent } |
|
|
50% { border-color: #00f0ff } |
|
|
} |
|
|
.pulse-text { |
|
|
animation: pulse 3s infinite alternate; |
|
|
} |
|
|
@keyframes pulse { |
|
|
from { opacity: 0.3 } |
|
|
to { opacity: 1 } |
|
|
} |
|
|
</style> |
|
|
</head> |
|
|
<body class="relative"> |
|
|
|
|
|
<div id="vanta-bg" class="fixed inset-0 -z-10"></div> |
|
|
|
|
|
|
|
|
<section class="min-h-screen flex flex-col justify-center items-center px-4"> |
|
|
<div class="morph-container w-full flex justify-center items-center" id="morph-canvas"> |
|
|
|
|
|
</div> |
|
|
<h1 class="text-6xl md:text-8xl font-bold neon-cyan mb-8 opacity-0 transition-opacity duration-1000" id="main-title">SAM SAI</h1> |
|
|
<p class="text-2xl md:text-3xl font-light mb-12 text-center max-w-2xl mx-auto"> |
|
|
<span class="typing-animation">Any problem has a solution.</span> |
|
|
</p> |
|
|
<button class="btn-lime px-8 py-4 rounded-full text-xl font-semibold electric-lime hover:scale-105 transition-transform" id="cta-button"> |
|
|
No fix, no fee — start here |
|
|
</button> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="py-32 px-4"> |
|
|
<div class="max-w-4xl mx-auto space-y-24"> |
|
|
<div class="scenario-item"> |
|
|
<h2 class="text-4xl font-bold neon-cyan mb-6">Problem → Solution</h2> |
|
|
<p class="text-xl leading-relaxed scenario-text" data-original="Legacy system slowing operations" data-replacement="Modern cloud architecture with 300% speed boost"> |
|
|
Legacy system slowing operations |
|
|
</p> |
|
|
</div> |
|
|
<div class="scenario-item"> |
|
|
<h2 class="text-4xl font-bold neon-cyan mb-6">Problem → Solution</h2> |
|
|
<p class="text-xl leading-relaxed scenario-text" data-original="Data silos causing inefficiency" data-replacement="Unified data lake with real-time analytics"> |
|
|
Data silos causing inefficiency |
|
|
</p> |
|
|
</div> |
|
|
<div class="scenario-item"> |
|
|
<h2 class="text-4xl font-bold neon-cyan mb-6">Problem → Solution</h2> |
|
|
<p class="text-xl leading-relaxed scenario-text" data-original="Security vulnerabilities in workflow" data-replacement="Zero-trust architecture with automated compliance"> |
|
|
Security vulnerabilities in workflow |
|
|
</p> |
|
|
</div> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="py-20 px-4"> |
|
|
<div class="flex justify-center space-x-12 md:space-x-24"> |
|
|
<a href="#" target="_blank" class="icon-hover" title="Architecture"> |
|
|
<i data-feather="compass" class="w-12 h-12 stroke-current neon-cyan"></i> |
|
|
</a> |
|
|
<a href="#" target="_blank" class="icon-hover" title="Aviation"> |
|
|
<i data-feather="wind" class="w-12 h-12 stroke-current neon-cyan"></i> |
|
|
</a> |
|
|
<a href="#" target="_blank" class="icon-hover" title="Precision"> |
|
|
<i data-feather="watch" class="w-12 h-12 stroke-current neon-cyan"></i> |
|
|
</a> |
|
|
<a href="#" target="_blank" class="icon-hover" title="Craft"> |
|
|
<i data-feather="tool" class="w-12 h-12 stroke-current neon-cyan"></i> |
|
|
</a> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
|
|
|
<section class="min-h-screen flex flex-col justify-center items-center px-4" id="contact"> |
|
|
<h2 class="text-3xl md:text-4xl font-light mb-16 pulse-text">Need something solved?</h2> |
|
|
<div class="flex flex-col md:flex-row space-y-4 md:space-y-0 md:space-x-8"> |
|
|
<button class="btn-lime px-6 py-3 rounded-full font-medium contact-btn" data-type="write">Write it</button> |
|
|
<button class="btn-lime px-6 py-3 rounded-full font-medium contact-btn" data-type="show">Show me live</button> |
|
|
<button class="btn-lime px-6 py-3 rounded-full font-medium contact-btn" data-type="call">Phone call</button> |
|
|
</div> |
|
|
|
|
|
|
|
|
<div class="hidden mt-12 max-w-md w-full" id="write-form"> |
|
|
<textarea class="w-full bg-black bg-opacity-50 border border-gray-700 rounded-lg p-4 text-white mb-4" placeholder="Describe your challenge..." rows="5"></textarea> |
|
|
<input type="email" class="w-full bg-black bg-opacity-50 border border-gray-700 rounded-lg p-4 text-white mb-4" placeholder="Your email"> |
|
|
<button class="btn-lime px-6 py-3 rounded-full font-medium w-full">Send</button> |
|
|
</div> |
|
|
|
|
|
<div class="hidden mt-12 max-w-md w-full" id="show-form"> |
|
|
<div class="bg-black bg-opacity-50 border border-gray-700 rounded-lg p-6 text-center"> |
|
|
<p class="mb-4">Pick a time for a screenshare session:</p> |
|
|
<div class="grid grid-cols-2 gap-2 mb-6"> |
|
|
<button class="bg-gray-800 hover:bg-gray-700 py-2 rounded">Mon 10am</button> |
|
|
<button class="bg-gray-800 hover:bg-gray-700 py-2 rounded">Mon 2pm</button> |
|
|
<button class="bg-gray-800 hover:bg-gray-700 py-2 rounded">Tue 11am</button> |
|
|
<button class="bg-gray-800 hover:bg-gray-700 py-2 rounded">Tue 3pm</button> |
|
|
</div> |
|
|
<input type="email" class="w-full bg-black bg-opacity-50 border border-gray-700 rounded-lg p-4 text-white mb-4" placeholder="Your email"> |
|
|
<button class="btn-lime px-6 py-3 rounded-full font-medium w-full">Schedule</button> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="hidden mt-12 max-w-md w-full" id="call-form"> |
|
|
<input type="tel" class="w-full bg-black bg-opacity-50 border border-gray-700 rounded-lg p-4 text-white mb-4" placeholder="Your phone number"> |
|
|
<div class="bg-black bg-opacity-50 border border-gray-700 rounded-lg p-6 text-center mb-4"> |
|
|
<p class="mb-4">We'll call you immediately at:</p> |
|
|
<p class="text-xl electric-lime font-medium" id="phone-display"></p> |
|
|
</div> |
|
|
<button class="btn-lime px-6 py-3 rounded-full font-medium w-full">Call me now</button> |
|
|
</div> |
|
|
</section> |
|
|
|
|
|
<script> |
|
|
|
|
|
VANTA.GLOBE({ |
|
|
el: "#vanta-bg", |
|
|
mouseControls: true, |
|
|
touchControls: true, |
|
|
gyroControls: false, |
|
|
minHeight: 200.00, |
|
|
minWidth: 200.00, |
|
|
scale: 1.00, |
|
|
scaleMobile: 1.00, |
|
|
color: 0x00f0ff, |
|
|
backgroundColor: 0x010112, |
|
|
size: 0.8 |
|
|
}); |
|
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', function() { |
|
|
|
|
|
feather.replace(); |
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
document.getElementById('main-title').style.opacity = '1'; |
|
|
}, 500); |
|
|
|
|
|
|
|
|
document.getElementById('cta-button').addEventListener('click', function() { |
|
|
document.getElementById('contact').scrollIntoView({ behavior: 'smooth' }); |
|
|
}); |
|
|
|
|
|
|
|
|
const contactBtns = document.querySelectorAll('.contact-btn'); |
|
|
const forms = { |
|
|
write: document.getElementById('write-form'), |
|
|
show: document.getElementById('show-form'), |
|
|
call: document.getElementById('call-form') |
|
|
}; |
|
|
|
|
|
contactBtns.forEach(btn => { |
|
|
btn.addEventListener('click', function() { |
|
|
const type = this.getAttribute('data-type'); |
|
|
|
|
|
|
|
|
Object.values(forms).forEach(form => { |
|
|
form.classList.add('hidden'); |
|
|
}); |
|
|
|
|
|
|
|
|
forms[type].classList.remove('hidden'); |
|
|
|
|
|
|
|
|
if (type === 'call') { |
|
|
document.getElementById('phone-display').textContent = |
|
|
new Date().toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
const scenarioItems = document.querySelectorAll('.scenario-item'); |
|
|
const observer = new IntersectionObserver((entries) => { |
|
|
entries.forEach(entry => { |
|
|
if (entry.isIntersecting) { |
|
|
const textEl = entry.target.querySelector('.scenario-text'); |
|
|
const originalText = textEl.getAttribute('data-original'); |
|
|
const replacementText = textEl.getAttribute('data-replacement'); |
|
|
|
|
|
|
|
|
textEl.textContent = originalText; |
|
|
setTimeout(() => { |
|
|
textEl.textContent = replacementText; |
|
|
textEl.classList.add('electric-lime'); |
|
|
}, 1500); |
|
|
} |
|
|
}); |
|
|
}, { threshold: 0.5 }); |
|
|
|
|
|
scenarioItems.forEach(item => { |
|
|
observer.observe(item); |
|
|
}); |
|
|
|
|
|
|
|
|
document.addEventListener('keydown', function(e) { |
|
|
if (e.key === 'Escape') { |
|
|
window.scrollTo({ top: 0, behavior: 'smooth' }); |
|
|
} |
|
|
}); |
|
|
|
|
|
|
|
|
const morphCanvas = document.getElementById('morph-canvas'); |
|
|
morphCanvas.innerHTML = ` |
|
|
<div class="absolute inset-0 flex items-center justify-center"> |
|
|
<div class="w-64 h-64 border-2 border-cyan-500 rounded-lg animate-pulse"></div> |
|
|
</div> |
|
|
`; |
|
|
}); |
|
|
</script> |
|
|
</body> |
|
|
</html> |
|
|
|