Files
2026-03-24 10:23:12 +01:00

164 lines
4.5 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NetBird + Kubernetes</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
color: #f1f5f9;
overflow: hidden;
}
.container {
text-align: center;
padding: 2rem;
margin-top: -3rem;
}
.logos {
display: flex;
align-items: center;
justify-content: center;
gap: 1.5rem;
margin-bottom: 2.5rem;
}
.logo {
width: 120px;
height: 120px;
filter: drop-shadow(0 0 30px rgba(99, 102, 241, 0.3));
transition: transform 0.3s ease;
}
.logo:hover {
transform: scale(1.1);
}
.heart {
font-size: 4rem;
color: #f43f5e;
animation: pulse 1.5s ease-in-out infinite;
filter: drop-shadow(0 0 20px rgba(244, 63, 94, 0.5));
user-select: none;
}
@keyframes pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.2); }
}
h1 {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 0.75rem;
background: linear-gradient(90deg, #f97316, #6366f1);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.subtitle {
font-size: 1.2rem;
color: #94a3b8;
margin-bottom: 2rem;
}
.badge {
display: inline-block;
padding: 0.5rem 1.5rem;
border-radius: 9999px;
background: rgba(99, 102, 241, 0.15);
border: 1px solid rgba(99, 102, 241, 0.3);
color: #a5b4fc;
font-size: 0.9rem;
font-weight: 500;
margin-bottom: 1.5rem;
}
.qr-code {
margin-top: 0.5rem;
}
.qr-code img {
width: 240px;
height: 240px;
}
.particles {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: -1;
}
.particle {
position: absolute;
width: 4px;
height: 4px;
background: rgba(99, 102, 241, 0.3);
border-radius: 50%;
animation: float linear infinite;
}
@keyframes float {
0% { transform: translateY(100vh) rotate(0deg); opacity: 0; }
10% { opacity: 1; }
90% { opacity: 1; }
100% { transform: translateY(-10vh) rotate(720deg); opacity: 0; }
}
</style>
</head>
<body>
<div class="particles" id="particles"></div>
<div class="container">
<div class="logos">
<!-- NetBird logo (official) -->
<img class="logo" src="assets/netbird-bird-only.svg" alt="NetBird" />
<span class="heart">&hearts;</span>
<!-- Kubernetes logo (official) -->
<img class="logo" src="assets/k8s-logo.svg" alt="Kubernetes" />
</div>
<h1>NetBird meets Kubernetes</h1>
<p class="subtitle">Secure networking for your clusters, powered by the NetBird Operator</p>
<span class="badge">KubeCon 2026 Demo</span>
<div class="qr-code">
<img src="assets/netbird-kubecon-website-qr.svg" alt="QR Code" />
</div>
</div>
<script>
const container = document.getElementById('particles');
for (let i = 0; i < 30; i++) {
const p = document.createElement('div');
p.className = 'particle';
p.style.left = Math.random() * 100 + '%';
p.style.animationDuration = (8 + Math.random() * 12) + 's';
p.style.animationDelay = (Math.random() * 10) + 's';
p.style.width = p.style.height = (2 + Math.random() * 4) + 'px';
container.appendChild(p);
}
</script>
</body>
</html>