<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AuraLink - Coming Soon</title>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Outfit', sans-serif;
margin: 0;
padding: 0;
overflow-x: hidden;
background-color: #0f172a;
}
/* Custom Aura Gradient Animation */
.aura-bg {
background: linear-gradient(125deg, #020617 0%, #1e1b4b 40%, #111827 70%, #0f172a 100%);
background-size: 200% 200%;
animation: gradientMove 15s ease infinite;
}
@keyframes gradientMove {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
.glass-panel {
background: rgba(255, 255, 255, 0.03);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.3);
}
.glow-text {
text-shadow: 0 0 20px rgba(139, 92, 246, 0.5);
}
/* Floating Animation */
.float {
animation: float 6s ease-in-out infinite;
}
@keyframes float {
0% { transform: translateY(0px); }
50% { transform: translateY(-10px); }
100% { transform: translateY(0px); }
}
/* Input Autofill fix for dark mode */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active{
-webkit-box-shadow: 0 0 0 30px #1e1b4b inset !important;
-webkit-text-fill-color: white !important;
transition: background-color 5000s ease-in-out 0s;
}
</style>
</head>
<body class="aura-bg text-white min-h-screen flex flex-col relative">
<!-- Canvas for Particle Network Effect -->
<canvas id="canvas" class="absolute inset-0 w-full h-full pointer-events-none z-0 opacity-40"></canvas>
<!-- Content Wrapper -->
<div class="relative z-10 flex flex-col min-h-screen w-full">
<!-- Navigation / Header -->
<nav class="w-full px-6 py-6 flex justify-between items-center max-w-7xl mx-auto w-full">
<div class="flex items-center gap-3">
<!-- Logo Placement -->
<!-- Image loads by default. Text fallback only shows on error. -->
<div class="relative h-16 flex items-center">
<img src="auralink copy-03.png" alt="AuraLink Logo" class="h-full w-auto object-contain" onerror="this.style.display='none'; document.getElementById('logo-text').classList.remove('hidden'); document.getElementById('logo-text').classList.add('flex');">
<!-- Text Fallback / Representation -->
<div id="logo-text" class="hidden items-center gap-2">
<div class="w-8 h-8 rounded-full bg-gradient-to-tr from-cyan-400 to-violet-600 flex items-center justify-center shadow-lg shadow-violet-500/20">
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" />
</svg>
</div>
<span class="text-2xl font-bold tracking-tight bg-clip-text text-transparent bg-gradient-to-r from-white via-cyan-100 to-violet-200">AuraLink</span>
</div>
</div>
</div>
<a href="mailto:contact@auralink.com" class="hidden sm:block text-sm font-medium text-cyan-200 hover:text-white transition-colors duration-300">
Contact Us
</a>
</nav>
<!-- Main Content -->
<main class="flex-grow flex items-center justify-center px-4 sm:px-6 relative">
<div class="max-w-4xl w-full mx-auto text-center space-y-12 py-12">
<!-- Badge -->
<div class="inline-flex items-center gap-2 px-3 py-1 rounded-full bg-violet-500/10 border border-violet-500/20 text-violet-300 text-xs font-semibold uppercase tracking-wider mb-4 animate-fade-in-up">
<span class="w-2 h-2 rounded-full bg-cyan-400 animate-pulse"></span>
System Upgrade In Progress
</div>
<!-- Headline -->
<h1 class="text-5xl sm:text-7xl font-bold tracking-tight leading-tight float">
<span class="block text-transparent bg-clip-text bg-gradient-to-r from-white via-violet-200 to-cyan-200 glow-text">
Where Innovation
</span>
<span class="block text-4xl sm:text-6xl text-slate-400 mt-2 font-light">Meets Reliability</span>
</h1>
<p class="text-lg sm:text-xl text-slate-300 max-w-2xl mx-auto leading-relaxed">
We are currently building something extraordinary. AuraLink is undergoing a major transformation to bring you a seamless, hyper-connected experience.
</p>
<!-- Countdown Timer -->
<div class="grid grid-cols-2 sm:grid-cols-4 gap-4 max-w-3xl mx-auto my-12">
<div class="glass-panel p-4 rounded-2xl flex flex-col items-center">
<span id="days" class="text-4xl font-bold text-white">00</span>
<span class="text-xs text-violet-200 uppercase tracking-widest mt-1">Days</span>
</div>
<div class="glass-panel p-4 rounded-2xl flex flex-col items-center">
<span id="hours" class="text-4xl font-bold text-white">00</span>
<span class="text-xs text-violet-200 uppercase tracking-widest mt-1">Hours</span>
</div>
<div class="glass-panel p-4 rounded-2xl flex flex-col items-center">
<span id="minutes" class="text-4xl font-bold text-white">00</span>
<span class="text-xs text-violet-200 uppercase tracking-widest mt-1">Minutes</span>
</div>
<div class="glass-panel p-4 rounded-2xl flex flex-col items-center">
<span id="seconds" class="text-4xl font-bold text-white">00</span>
<span class="text-xs text-violet-200 uppercase tracking-widest mt-1">Seconds</span>
</div>
</div>
<!-- Newsletter Form -->
<div class="max-w-md mx-auto relative group">
<div class="absolute -inset-1 bg-gradient-to-r from-cyan-400 to-violet-600 rounded-lg blur opacity-25 group-hover:opacity-50 transition duration-1000 group-hover:duration-200"></div>
<form onsubmit="event.preventDefault(); document.getElementById('success-msg').classList.remove('hidden');" class="relative flex flex-col sm:flex-row gap-2 bg-slate-900 p-2 rounded-xl border border-slate-700/50">
<input type="email" required placeholder="Enter your email address" class="flex-1 bg-transparent border-none outline-none text-white px-4 py-3 placeholder-slate-500 focus:ring-0">
<button type="submit" class="bg-gradient-to-r from-violet-600 to-indigo-600 hover:from-violet-500 hover:to-indigo-500 text-white font-semibold py-3 px-6 rounded-lg transition-all duration-300 shadow-lg shadow-violet-500/25">
Notify Me
</button>
</form>
<p id="success-msg" class="hidden mt-3 text-sm text-cyan-300 flex items-center justify-center gap-2">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path></svg>
You're on the list! We'll keep you posted.
</p>
</div>
</div>
</main>
<!-- Footer -->
<footer class="w-full py-8 border-t border-white/5 relative z-10">
<div class="max-w-7xl mx-auto px-6 flex flex-col md:flex-row justify-between items-center gap-4">
<p class="text-slate-400 text-sm">© 2026 AuraLink. All rights reserved.</p>
<div class="flex gap-6">
<a href="#" class="text-slate-400 hover:text-cyan-400 transition-colors">
<span class="sr-only">Twitter</span>
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"><path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"></path></svg>
</a>
<a href="#" class="text-slate-400 hover:text-cyan-400 transition-colors">
<span class="sr-only">LinkedIn</span>
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"><path d="M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z"/></svg>
</a>
<a href="#" class="text-slate-400 hover:text-cyan-400 transition-colors">
<span class="sr-only">Instagram</span>
<svg class="h-5 w-5" fill="currentColor" viewBox="0 0 24 24"><path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772 4.902 4.902 0 011.772-1.153c.636-.247 1.363-.416 2.427-.465C9.673 2.013 10.03 2 12.48 2h-.165zm0-2H11.7c-2.65 0-3.003.012-4.1.062C6.463.112 5.603.352 4.853.642 4.075.942 3.393 1.353 2.82 1.925c-.572.572-.983 1.254-1.282 2.033-.29.75-.53 1.61-.58 2.75-.05 1.097-.062 1.45-.062 4.101v.186c0 2.651.012 3.004.062 4.101.05 1.14.29 1.999.58 2.75.299.779.71 1.461 1.282 2.033.572.572 1.254.983 2.033 1.282.75.29 1.61.53 2.75.58 1.097.05 1.45.062 4.101.062h.186c2.651 0 3.004-.012 4.101-.062 1.14-.05 1.999-.29 2.75-.58a5.52 5.52 0 002.033-1.282c.572-.572.983-1.254 1.282-2.033.29-.75.53-1.61.58-2.75.05-1.097.062-1.45.062-4.101v-.186c0-2.651-.012-3.004-.062-4.101-.05-1.14-.29-1.999-.58-2.75a5.52 5.52 0 00-1.282-2.033 5.518 5.518 0 00-2.033-1.282c-.75-.29-1.61-.53-2.75-.58-1.097-.05-1.45-.062-4.101-.062h-.186zM12.317 7.375a4.943 4.943 0 100 9.886 4.943 4.943 0 000-9.886zm0 7.886a2.943 2.943 0 110-5.886 2.943 2.943 0 010 5.886zm6.471-7.143a1.186 1.186 0 110-2.372 1.186 1.186 0 010 2.372z" clip-rule="evenodd" /></svg>
</a>
</div>
</div>
</footer>
</div>
<!-- Scripts -->
<script>
// --- Countdown Timer Logic ---
// Set date to 25 days from now
const targetDate = new Date();
targetDate.setDate(targetDate.getDate() + 25);
function updateTimer() {
const now = new Date().getTime();
const distance = targetDate - now;
if (distance < 0) {
// If countdown finishes, just restart it for the demo
targetDate.setDate(targetDate.getDate() + 25);
return;
}
const days = Math.floor(distance / (1000 * 60 * 60 * 24));
const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Add leading zeros
document.getElementById("days").innerText = days < 10 ? "0" + days : days;
document.getElementById("hours").innerText = hours < 10 ? "0" + hours : hours;
document.getElementById("minutes").innerText = minutes < 10 ? "0" + minutes : minutes;
document.getElementById("seconds").innerText = seconds < 10 ? "0" + seconds : seconds;
}
setInterval(updateTimer, 1000);
updateTimer(); // Initial call
// --- Particle Network Animation (The "Link" in AuraLink) ---
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
let width, height;
let particles = [];
// Configuration
const particleCount = 60; // Number of dots
const connectionDistance = 150; // Distance to draw lines
const mouseDistance = 200; // Mouse interaction radius
let mouse = { x: null, y: null };
window.addEventListener('mousemove', (e) => {
mouse.x = e.x;
mouse.y = e.y;
});
// Handle Resize
function resize() {
width = canvas.width = window.innerWidth;
height = canvas.height = window.innerHeight;
}
window.addEventListener('resize', resize);
resize();
class Particle {
constructor() {
this.x = Math.random() * width;
this.y = Math.random() * height;
this.vx = (Math.random() - 0.5) * 0.5; // Velocity X
this.vy = (Math.random() - 0.5) * 0.5; // Velocity Y
this.size = Math.random() * 2 + 1;
this.color = `rgba(${Math.random() > 0.5 ? '139, 92, 246' : '34, 211, 238'}, ${Math.random() * 0.5 + 0.2})`; // Violet or Cyan
}
update() {
this.x += this.vx;
this.y += this.vy;
// Bounce off edges
if (this.x < 0 || this.x > width) this.vx *= -1;
if (this.y < 0 || this.y > height) this.vy *= -1;
// Mouse interaction
if (mouse.x != null) {
let dx = mouse.x - this.x;
let dy = mouse.y - this.y;
let distance = Math.sqrt(dx*dx + dy*dy);
if (distance < mouseDistance) {
const forceDirectionX = dx / distance;
const forceDirectionY = dy / distance;
const force = (mouseDistance - distance) / mouseDistance;
const directionX = forceDirectionX * force * 0.6; // Push strength
const directionY = forceDirectionY * force * 0.6;
this.vx -= directionX;
this.vy -= directionY;
}
}
}
draw() {
ctx.beginPath();
ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
ctx.fillStyle = this.color;
ctx.fill();
}
}
function initParticles() {
particles = [];
for (let i = 0; i < particleCount; i++) {
particles.push(new Particle());
}
}
function animate() {
ctx.clearRect(0, 0, width, height);
for (let i = 0; i < particles.length; i++) {
particles[i].update();
particles[i].draw();
// Draw connections
for (let j = i; j < particles.length; j++) {
let dx = particles[i].x - particles[j].x;
let dy = particles[i].y - particles[j].y;
let distance = Math.sqrt(dx * dx + dy * dy);
if (distance < connectionDistance) {
ctx.beginPath();
ctx.strokeStyle = `rgba(139, 92, 246, ${1 - distance / connectionDistance})`; // Fade out line
ctx.lineWidth = 0.5;
ctx.moveTo(particles[i].x, particles[i].y);
ctx.lineTo(particles[j].x, particles[j].y);
ctx.stroke();
}
}
}
requestAnimationFrame(animate);
}
initParticles();
animate();
</script>
</body>
</html>