Initial: TerraVerse landing page

This commit is contained in:
Carlos
2026-06-11 21:17:56 +02:00
commit 430244e903
3 changed files with 318 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
<!DOCTYPE html>
<html><head><title>50x</title></head>
<body><h1>Service Unavailable</h1></body></html>
+4
View File
@@ -0,0 +1,4 @@
FROM nginx:alpine
COPY index.html /usr/share/nginx/html/index.html
COPY 50x.html /usr/share/nginx/html/50x.html
EXPOSE 80
+311
View File
@@ -0,0 +1,311 @@
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TerraVerse — O Novo Mundo te Espera</title>
<meta name="description" content="TerraVerse: O game de realidade aumentada que vai revolucionar a forma como você explora, conquista e monetiza o mundo real. Em breve." />
<style>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&display=swap');
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Inter', system-ui, -apple-system, sans-serif;
background: #0a0a0f;
color: #e4e4e7;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
overflow-x: hidden;
background-image:
radial-gradient(ellipse at 20% 50%, rgba(34, 139, 230, 0.08) 0%, transparent 50%),
radial-gradient(ellipse at 80% 20%, rgba(99, 102, 241, 0.06) 0%, transparent 50%),
radial-gradient(ellipse at 50% 80%, rgba(16, 185, 129, 0.04) 0%, transparent 50%);
}
.stars {
position: fixed;
top: 0; left: 0;
width: 100%; height: 100%;
pointer-events: none;
z-index: 0;
}
.container {
position: relative;
z-index: 1;
max-width: 720px;
padding: 2rem;
text-align: center;
}
.globe {
width: 160px;
height: 160px;
margin: 0 auto 2rem;
position: relative;
border-radius: 50%;
background: linear-gradient(135deg, #1a73e8, #6366f1, #10b981);
box-shadow: 0 0 60px rgba(34, 139, 230, 0.3), 0 0 120px rgba(99, 102, 241, 0.15);
animation: pulse-glow 3s ease-in-out infinite;
}
.globe::after {
content: '';
position: absolute;
inset: 4px;
border-radius: 50%;
background: #0a0a0f;
mask: radial-gradient(circle at 35% 35%, transparent 30%, black 31%);
-webkit-mask: radial-gradient(circle at 35% 35%, transparent 30%, black 31%);
}
.globe-ring {
position: absolute;
inset: -8px;
border: 1.5px solid rgba(99, 102, 241, 0.2);
border-radius: 50%;
animation: spin 12s linear infinite;
}
.globe-ring:nth-child(2) {
inset: -16px;
border-color: rgba(16, 185, 129, 0.15);
animation-direction: reverse;
animation-duration: 18s;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
@keyframes pulse-glow {
0%, 100% { box-shadow: 0 0 60px rgba(34, 139, 230, 0.3), 0 0 120px rgba(99, 102, 241, 0.15); }
50% { box-shadow: 0 0 80px rgba(34, 139, 230, 0.45), 0 0 160px rgba(99, 102, 241, 0.25); }
}
.badge {
display: inline-block;
padding: 0.4rem 1.2rem;
background: rgba(99, 102, 241, 0.12);
border: 1px solid rgba(99, 102, 241, 0.25);
border-radius: 100px;
font-size: 0.8rem;
font-weight: 600;
color: #818cf8;
text-transform: uppercase;
letter-spacing: 0.08em;
margin-bottom: 1.5rem;
}
.globe-icon {
font-size: 4rem;
margin-bottom: 1rem;
display: block;
}
h1 {
font-size: clamp(2.5rem, 6vw, 4rem);
font-weight: 800;
line-height: 1.1;
margin-bottom: 0.75rem;
background: linear-gradient(135deg, #e4e4e7 30%, #818cf8 70%, #10b981);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.subtitle {
font-size: clamp(1.1rem, 2.5vw, 1.4rem);
color: #a1a1aa;
font-weight: 300;
margin-bottom: 2.5rem;
line-height: 1.6;
}
.features {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 1rem;
margin: 2.5rem 0;
text-align: left;
}
.feature {
background: rgba(255, 255, 255, 0.03);
border: 1px solid rgba(255, 255, 255, 0.06);
border-radius: 12px;
padding: 1.25rem;
transition: border-color 0.3s, background 0.3s;
}
.feature:hover {
border-color: rgba(99, 102, 241, 0.3);
background: rgba(99, 102, 241, 0.05);
}
.feature-icon {
font-size: 1.5rem;
margin-bottom: 0.5rem;
display: block;
}
.feature h3 {
font-size: 1rem;
font-weight: 600;
margin-bottom: 0.3rem;
}
.feature p {
font-size: 0.85rem;
color: #71717a;
line-height: 1.5;
}
.coming-soon {
display: inline-flex;
align-items: center;
gap: 0.75rem;
padding: 1rem 2.5rem;
background: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(16, 185, 129, 0.1));
border: 1px solid rgba(99, 102, 241, 0.3);
border-radius: 100px;
font-size: 1.05rem;
font-weight: 600;
color: #c4b5fd;
margin-top: 1rem;
cursor: default;
transition: border-color 0.3s, box-shadow 0.3s;
}
.coming-soon:hover {
border-color: rgba(99, 102, 241, 0.5);
box-shadow: 0 0 30px rgba(99, 102, 241, 0.1);
}
.dot {
width: 8px;
height: 8px;
background: #10b981;
border-radius: 50%;
display: inline-block;
animation: blink 2s ease-in-out infinite;
}
@keyframes blink {
0%, 100% { opacity: 1; }
50% { opacity: 0.3; }
}
.footer {
margin-top: 3rem;
font-size: 0.8rem;
color: #52525b;
}
.footer a {
color: #818cf8;
text-decoration: none;
}
.footer a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<canvas class="stars" id="stars"></canvas>
<div class="container">
<div class="globe">
<div class="globe-ring"></div>
<div class="globe-ring"></div>
</div>
<div class="badge">🌎 Geo-Location · AR · NFT</div>
<h1>TerraVerse</h1>
<p class="subtitle">
Explore o mundo real, conquiste territórios, construa seu império.
O game de realidade aumentada que vai redefinir a propriedade virtual.
</p>
<div class="features">
<div class="feature">
<span class="feature-icon">🗺️</span>
<h3>Explore</h3>
<p>Caminhe pelo mundo real e descubra parcelas de terra disponíveis perto de você.</p>
</div>
<div class="feature">
<span class="feature-icon">⚔️</span>
<h3>Conquiste</h3>
<p>Reivindique territórios, dispute áreas estratégicas e expanda seu domínio.</p>
</div>
<div class="feature">
<span class="feature-icon">🏗️</span>
<h3>Construa</h3>
<p>Edifique construções virtuais no mundo real e gere renda passiva.</p>
</div>
<div class="feature">
<span class="feature-icon">💎</span>
<h3>Monetize</h3>
<p>Negocie terras, colete recursos e transforme seu jogo em ganhos reais.</p>
</div>
</div>
<div class="coming-soon">
<span class="dot"></span>
Em desenvolvimento — Disponível em breve
</div>
<p class="footer">
TerraVerse © 2026 · Em construção · <a href="#">terraverse.fluxtechnologies.uk</a>
</p>
</div>
<script>
const canvas = document.getElementById('stars');
const ctx = canvas.getContext('2d');
let stars = [];
function resize() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
function createStars() {
stars = [];
const count = Math.floor((canvas.width * canvas.height) / 2500);
for (let i = 0; i < count; i++) {
stars.push({
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
r: Math.random() * 1.5 + 0.3,
a: Math.random() * 0.8 + 0.2,
s: Math.random() * 0.005 + 0.002
});
}
}
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
for (const s of stars) {
ctx.beginPath();
ctx.arc(s.x, s.y, s.r, 0, Math.PI * 2);
ctx.fillStyle = `rgba(255, 255, 255, ${s.a * (0.6 + 0.4 * Math.sin(Date.now() * s.s))})`;
ctx.fill();
}
requestAnimationFrame(draw);
}
window.addEventListener('resize', () => { resize(); createStars(); });
resize();
createStars();
draw();
</script>
</body>
</html>