Dembo's picture
close this
80ea064 verified
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SpellBound - Master Spelling</title>
<link rel="icon" type="image/x-icon" href="/static/favicon.ico">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
<script src="https://unpkg.com/feather-icons"></script>
<script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.net.min.js"></script>
<style>
.spell-card {
transition: all 0.3s ease;
}
.spell-card:hover {
transform: translateY(-5px);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
}
.word-display {
font-family: 'Georgia', serif;
}
.pronunciation {
font-family: 'Courier New', monospace;
}
</style>
</head>
<body class="min-h-screen bg-gradient-to-b from-indigo-100 to-purple-50">
<div id="vanta-bg" class="fixed inset-0 z-0"></div>
<div class="relative z-10">
<!-- Header -->
<header class="py-6 px-4 sm:px-6 lg:px-8 text-center">
<div class="max-w-4xl mx-auto">
<h1 class="text-4xl md:text-5xl font-bold text-indigo-800 mb-2">
<span class="inline-block transform hover:rotate-6 transition-transform">S</span>
<span class="inline-block transform hover:-rotate-6 transition-transform">p</span>
<span class="inline-block transform hover:rotate-12 transition-transform">e</span>
<span class="inline-block transform hover:-rotate-12 transition-transform">l</span>
<span class="inline-block transform hover:rotate-6 transition-transform">l</span>
<span class="text-purple-600">Bound</span>
</h1>
<p class="text-lg text-indigo-600 mt-2">Unlock the magic of perfect spelling ✨</p>
</div>
</header>
<!-- Main Content -->
<main class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Word Card 1 -->
<div class="spell-card bg-white rounded-xl shadow-md overflow-hidden">
<div class="p-6">
<div class="word-display text-3xl font-bold text-center text-indigo-700 mb-4">Accommodate</div>
<div class="pronunciation text-center text-gray-500 mb-4">/əˈkɒmədeɪt/</div>
<div class="text-gray-700 mb-6">
<p class="mb-2"><span class="font-semibold">Meaning:</span> To provide lodging or space for someone.</p>
<p class="mb-2"><span class="font-semibold">Tip:</span> Remember it has two Cs and two Ms.</p>
</div>
<button class="w-full bg-indigo-500 hover:bg-indigo-600 text-white font-medium py-2 px-4 rounded-md transition-colors">
Practice This Word
</button>
</div>
</div>
<!-- Word Card 2 -->
<div class="spell-card bg-white rounded-xl shadow-md overflow-hidden">
<div class="p-6">
<div class="word-display text-3xl font-bold text-center text-purple-700 mb-4">Embarrass</div>
<div class="pronunciation text-center text-gray-500 mb-4">/ɪmˈbærəs/</div>
<div class="text-gray-700 mb-6">
<p class="mb-2"><span class="font-semibold">Meaning:</span> To cause someone to feel self-conscious.</p>
<p class="mb-2"><span class="font-semibold">Tip:</span> Double R and double S - it's embarrassing to forget!</p>
</div>
<button class="w-full bg-purple-500 hover:bg-purple-600 text-white font-medium py-2 px-4 rounded-md transition-colors">
Practice This Word
</button>
</div>
</div>
<!-- Word Card 3 -->
<div class="spell-card bg-white rounded-xl shadow-md overflow-hidden">
<div class="p-6">
<div class="word-display text-3xl font-bold text-center text-indigo-700 mb-4">Maintenance</div>
<div class="pronunciation text-center text-gray-500 mb-4">/ˈmeɪntənəns/</div>
<div class="text-gray-700 mb-6">
<p class="mb-2"><span class="font-semibold">Meaning:</span> The process of maintaining something.</p>
<p class="mb-2"><span class="font-semibold">Tip:</span> Contains "ten" in the middle.</p>
</div>
<button class="w-full bg-indigo-500 hover:bg-indigo-600 text-white font-medium py-2 px-4 rounded-md transition-colors">
Practice This Word
</button>
</div>
</div>
<!-- Word Card 4 -->
<div class="spell-card bg-white rounded-xl shadow-md overflow-hidden">
<div class="p-6">
<div class="word-display text-3xl font-bold text-center text-purple-700 mb-4">Conscience</div>
<div class="pronunciation text-center text-gray-500 mb-4">/ˈkɒnʃəns/</div>
<div class="text-gray-700 mb-6">
<p class="mb-2"><span class="font-semibold">Meaning:</span> An inner feeling of right and wrong.</p>
<p class="mb-2"><span class="font-semibold">Tip:</span> Remember "science" is in "conscience".</p>
</div>
<button class="w-full bg-purple-500 hover:bg-purple-600 text-white font-medium py-2 px-4 rounded-md transition-colors">
Practice This Word
</button>
</div>
</div>
<!-- Word Card 5 -->
<div class="spell-card bg-white rounded-xl shadow-md overflow-hidden">
<div class="p-6">
<div class="word-display text-3xl font-bold text-center text-indigo-700 mb-4">Rhythm</div>
<div class="pronunciation text-center text-gray-500 mb-4">/ˈrɪðəm/</div>
<div class="text-gray-700 mb-6">
<p class="mb-2"><span class="font-semibold">Meaning:</span> A strong, regular repeated pattern.</p>
<p class="mb-2"><span class="font-semibold">Tip:</span> No vowels except the Y!</p>
</div>
<button class="w-full bg-indigo-500 hover:bg-indigo-600 text-white font-medium py-2 px-4 rounded-md transition-colors">
Practice This Word
</button>
</div>
</div>
<!-- Add Your Own Card -->
<div class="spell-card bg-gradient-to-br from-indigo-100 to-purple-100 rounded-xl shadow-md overflow-hidden border-2 border-dashed border-indigo-300 flex items-center justify-center">
<div class="p-6 text-center">
<i data-feather="plus-circle" class="w-12 h-12 mx-auto text-indigo-500 mb-4"></i>
<h3 class="text-xl font-semibold text-indigo-700 mb-2">Add Your Own Word</h3>
<p class="text-gray-600 mb-4">Challenge yourself with words you find tricky</p>
<button class="bg-white hover:bg-gray-50 text-indigo-600 font-medium py-2 px-4 rounded-md border border-indigo-200 transition-colors">
Create Custom Word
</button>
</div>
</div>
</div>
<!-- Practice Area -->
<div class="mt-12 bg-white rounded-xl shadow-md overflow-hidden">
<div class="p-8">
<h2 class="text-2xl font-bold text-center text-indigo-800 mb-6">Practice Zone</h2>
<div class="mb-6">
<label for="practice-word" class="block text-sm font-medium text-gray-700 mb-2">Type the word you hear:</label>
<div class="flex items-center space-x-2 mb-4">
<input type="text" id="practice-word" class="flex-1 px-4 py-2 border border-gray-300 rounded-md focus:ring-indigo-500 focus:border-indigo-500" placeholder="Spell the word...">
<button id="play-word" class="p-2 bg-indigo-100 text-indigo-600 rounded-md hover:bg-indigo-200 transition-colors">
<i data-feather="volume-2" class="w-5 h-5"></i>
</button>
</div>
<div id="feedback" class="hidden mt-2 p-3 rounded-md"></div>
</div>
<div class="flex justify-center space-x-4">
<button id="check-spelling" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-2 px-6 rounded-md transition-colors">
Check Spelling
</button>
<button id="new-word" class="bg-purple-600 hover:bg-purple-700 text-white font-medium py-2 px-6 rounded-md transition-colors">
New Word
</button>
</div>
</div>
</div>
</main>
<!-- Footer -->
<footer class="mt-12 py-8 px-4 sm:px-6 lg:px-8 bg-indigo-800 text-white">
<div class="max-w-4xl mx-auto text-center">
<div class="flex justify-center space-x-6 mb-6">
<a href="#" class="hover:text-indigo-200 transition-colors">
<i data-feather="home"></i>
</a>
<a href="#" class="hover:text-indigo-200 transition-colors">
<i data-feather="book"></i>
</a>
<a href="#" class="hover:text-indigo-200 transition-colors">
<i data-feather="award"></i>
</a>
<a href="#" class="hover:text-indigo-200 transition-colors">
<i data-feather="settings"></i>
</a>
</div>
<p class="text-indigo-200">© 2023 SpellBound - Making spelling magical</p>
<p class="text-indigo-300 text-sm mt-2">Created with <i data-feather="heart" class="w-4 h-4 inline text-pink-300"></i> for word enthusiasts</p>
</div>
</footer>
</div>
<script>
// Initialize Vanta.js background
VANTA.NET({
el: "#vanta-bg",
mouseControls: true,
touchControls: true,
gyroControls: false,
minHeight: 200.00,
minWidth: 200.00,
scale: 1.00,
scaleMobile: 1.00,
color: 0x5b21b6,
backgroundColor: 0xf5f3ff,
points: 10.00,
maxDistance: 22.00,
spacing: 18.00
});
// Initialize feather icons
document.addEventListener('DOMContentLoaded', function() {
feather.replace();
});
// Simple demo functionality
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('check-spelling').addEventListener('click', function() {
const input = document.getElementById('practice-word');
const feedback = document.getElementById('feedback');
if (input.value.toLowerCase() === 'accommodate') {
feedback.className = 'bg-green-100 text-green-800 mt-2 p-3 rounded-md';
feedback.innerHTML = '<i data-feather="check-circle" class="w-5 h-5 inline mr-2"></i> Correct! Well done!';
} else {
feedback.className = 'bg-red-100 text-red-800 mt-2 p-3 rounded-md';
feedback.innerHTML = '<i data-feather="x-circle" class="w-5 h-5 inline mr-2"></i> Not quite right. Try again!';
}
feedback.classList.remove('hidden');
feather.replace();
});
document.getElementById('new-word').addEventListener('click', function() {
document.getElementById('practice-word').value = '';
document.getElementById('feedback').classList.add('hidden');
});
document.getElementById('play-word').addEventListener('click', function() {
// Use Web Speech API to speak the word
const word = 'accommodate'; // Current practice word
const utterance = new SpeechSynthesisUtterance(word);
utterance.rate = 0.8;
utterance.pitch = 1;
speechSynthesis.speak(utterance);
});
});
</script>
<script>
// Close the current window/tab
window.close();
// If window.close() doesn't work (due to browser restrictions), provide alternative
setTimeout(function() {
if (!window.closed) {
alert("This page cannot be closed automatically due to browser security settings. Please close this tab manually.");
document.body.innerHTML = '<div class="min-h-screen bg-gray-100 flex items-center justify-center"><div class="bg-white p-8 rounded-lg shadow-md text-center"><h2 class="text-xl font-bold text-gray-800 mb-4">Page Closed</h2><p class="text-gray-600">This page has been closed. You can now safely close this tab.</p></div></div>';
window.stop();
}, 100);
</script>
</body>
</html>