Files
grepo-remote/templates/hub.html

200 lines
6.0 KiB
HTML

<!DOCTYPE html>
<html lang="el">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Grepolis Remote — Hub</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
min-height: 100vh;
background: #0f0f1a;
font-family: 'Inter', 'Segoe UI', sans-serif;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 2rem;
color: #e0e0e0;
}
.hub-header {
text-align: center;
margin-bottom: 3rem;
}
.hub-header h1 {
font-size: 2.4rem;
font-weight: 800;
background: linear-gradient(135deg, #c8a44a, #f0c96e, #c8a44a);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
letter-spacing: -0.5px;
}
.hub-header p {
color: #888;
margin-top: 0.5rem;
font-size: 1rem;
}
.player-badge {
display: inline-block;
background: rgba(200, 164, 74, 0.15);
border: 1px solid rgba(200, 164, 74, 0.35);
color: #c8a44a;
padding: 4px 14px;
border-radius: 20px;
font-size: 0.82rem;
font-weight: 600;
margin-top: 0.7rem;
}
.hub-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 1.5rem;
max-width: 900px;
width: 100%;
}
.hub-card {
background: linear-gradient(160deg, #1e1e30 0%, #181824 100%);
border: 1px solid #2a2a40;
border-radius: 18px;
padding: 2rem;
text-decoration: none;
color: inherit;
cursor: pointer;
transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
position: relative;
overflow: hidden;
}
.hub-card::before {
content: '';
position: absolute;
inset: 0;
border-radius: 18px;
opacity: 0;
transition: opacity 0.2s ease;
}
.hub-card:hover {
transform: translateY(-5px);
box-shadow: 0 12px 40px rgba(0,0,0,0.5);
}
.hub-card:hover::before { opacity: 1; }
/* Admin Mode — gold */
.hub-card.admin { border-color: #3a3020; }
.hub-card.admin::before { background: radial-gradient(circle at top left, rgba(200,164,74,0.08), transparent 70%); }
.hub-card.admin:hover { border-color: #c8a44a; box-shadow: 0 12px 40px rgba(200,164,74,0.15); }
/* Farm Manager — green */
.hub-card.farm { border-color: #1a3020; }
.hub-card.farm::before { background: radial-gradient(circle at top left, rgba(74,200,100,0.08), transparent 70%); }
.hub-card.farm:hover { border-color: #4acc64; box-shadow: 0 12px 40px rgba(74,200,100,0.15); }
/* Live Tracker — blue (coming soon, dimmed) */
.hub-card.tracker { border-color: #1a2030; opacity: 0.65; cursor: not-allowed; }
.hub-card.tracker:hover { transform: none; box-shadow: none; border-color: #1a2030; }
.card-icon {
font-size: 2.8rem;
margin-bottom: 1rem;
display: block;
}
.card-title {
font-size: 1.3rem;
font-weight: 700;
margin-bottom: 0.5rem;
}
.hub-card.admin .card-title { color: #c8a44a; }
.hub-card.farm .card-title { color: #4acc64; }
.hub-card.tracker .card-title { color: #6fcfcf; }
.card-desc {
font-size: 0.875rem;
color: #888;
line-height: 1.5;
}
.soon-badge {
position: absolute;
top: 1rem;
right: 1rem;
background: rgba(111,207,207,0.15);
border: 1px solid rgba(111,207,207,0.3);
color: #6fcfcf;
font-size: 0.7rem;
font-weight: 700;
padding: 2px 10px;
border-radius: 10px;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.back-link {
margin-top: 2.5rem;
color: #555;
text-decoration: none;
font-size: 0.85rem;
transition: color 0.2s;
}
.back-link:hover { color: #aaa; }
</style>
</head>
<body>
<div class="hub-header">
<h1>⚔️ Grepolis Remote</h1>
<p>Επέλεξε λειτουργία</p>
<span class="player-badge" id="player-badge">Φόρτωση...</span>
</div>
<div class="hub-grid">
<a href="/player/{{ player_id }}/{{ world_id }}/admin" class="hub-card admin">
<span class="card-icon">🏛️</span>
<div class="card-title">Admin Mode</div>
<div class="card-desc">Κτίρια, στρατολόγηση, αγορά, ουρά κατασκευών και πλήρης έλεγχος πόλεων.</div>
</a>
<a href="/player/{{ player_id }}/{{ world_id }}/farm" class="hub-card farm">
<span class="card-icon">🌾</span>
<div class="card-title">Farm Manager</div>
<div class="card-desc">Αυτόματη συλλογή πόρων από χωριά. Ρυθμίσεις χρόνου λεηλασίας και έλεγχος με ένα κλικ.</div>
</a>
<div class="hub-card tracker">
<span class="soon-badge">Σύντομα</span>
<span class="card-icon">🛡️</span>
<div class="card-title">Live Tracker</div>
<div class="card-desc">Παρακολούθηση κινήσεων στρατού σε πραγματικό χρόνο. Εισερχόμενες επιθέσεις και ενισχύσεις.</div>
</div>
</div>
<a href="/" class="back-link">← Επιστροφή στην επιλογή παίκτη</a>
<script>
// Fetch player name to show in the badge
const playerId = '{{ player_id }}';
const worldId = '{{ world_id }}';
fetch(`/dashboard/towns?player_id=${playerId}&world_id=${worldId}`)
.then(r => r.json())
.then(towns => {
if (towns && towns.length > 0) {
const t = towns[0];
document.getElementById('player-badge').textContent =
`${t.player} · ${t.world_id}${t.alliance_name ? ' · ' + t.alliance_name : ''}`;
} else {
document.getElementById('player-badge').textContent = `ID: ${playerId}`;
}
})
.catch(() => { document.getElementById('player-badge').textContent = `ID: ${playerId}`; });
</script>
</body>
</html>