<div class="max-w-md w-full bg-white rounded-2xl shadow-xl border border-stone-100 overflow-hidden transition-all duration-300">
<!-- Header Banner -->
<div class="bg-gradient-to-r from-brand-900 to-brand-700 px-8 py-8 text-white text-center relative overflow-hidden">
<div class="absolute inset-0 opacity-10 bg-[radial-gradient(#fff_1px,transparent_1px)] [background-size:16px_16px]"></div>
<div class="relative z-10">
<h1 class="text-2xl sm:text-3xl font-bold tracking-tight">Get in Touch</h1>
<p class="text-stone-300 text-sm mt-2">Have a question? Send us a message and we'll respond promptly.</p>
</div>
</div>
<!-- Form Body -->
<div class="p-6 sm:p-8">
<form id="contactForm" onsubmit="handleFormSubmit(event)" class="space-y-5" novalidate>
<!-- Name Field -->
<div>
<label for="name" class="block text-xs font-semibold text-stone-700 uppercase tracking-wider mb-2">
Your Name <span class="text-rose-500">*</span>
</label>
<input
type="text"
id="name"
name="name"
required
placeholder="John Doe"
class="w-full px-4 py-3 rounded-lg border border-stone-200 focus:ring-2 focus:ring-brand-500 focus:border-brand-500 text-sm outline-none transition duration-200 placeholder:text-stone-400"
>
<p id="nameError" class="hidden text-xs text-rose-500 mt-1.5">Please enter your name.</p>
</div>
<!-- Email Field -->
<div>
<label for="email" class="block text-xs font-semibold text-stone-700 uppercase tracking-wider mb-2">
Email Address <span class="text-rose-500">*</span>
</label>
<input
type="email"
id="email"
name="email"
required
placeholder="you@example.com"
class="w-full px-4 py-3 rounded-lg border border-stone-200 focus:ring-2 focus:ring-brand-500 focus:border-brand-500 text-sm outline-none transition duration-200 placeholder:text-stone-400"
>
<p id="emailError" class="hidden text-xs text-rose-500 mt-1.5">Please enter a valid email address.</p>
</div>
<!-- Message Field -->
<div>
<label for="message" class="block text-xs font-semibold text-stone-700 uppercase tracking-wider mb-2">
Message <span class="text-rose-500">*</span>
</label>
<textarea
id="message"
name="message"
rows="4"
required
placeholder="How can we help you with you?"
class="w-full px-4 py-3 rounded-lg border border-stone-200 focus:ring-2 focus:ring-brand-500 focus:border-brand-500 text-sm outline-none transition duration-200 placeholder:text-stone-400 resize-none"
></textarea>
<p id="messageError" class="hidden text-xs text-rose-500 mt-1.5">Please write your message.</p>
</div>
<!-- Submit Button -->
<button
type="submit"
id="submitBtn"
class="w-full bg-brand-600 hover:bg-brand-700 text-white font-medium py-3.5 px-6 rounded-lg transition duration-200 shadow-md hover:shadow-lg active:scale-[0.99] flex items-center justify-center space-x-2 cursor-pointer"
>
<span>Send Message</span>
<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="M14 5l7 7m0 0l-7 7m7-7H3"></path>
</svg>
</button>
</form>
<!-- Success Confirmation Screen -->
<div id="successState" class="hidden text-center py-6 fade-in space-y-5">
<div class="w-16 h-16 bg-emerald-100 text-emerald-600 rounded-full flex items-center justify-center mx-auto">
<svg class="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M5 13l4 4L19 7"></path>
</svg>
</div>
<div>
<h2 class="text-2xl font-bold text-stone-900">Message Sent!</h2>
<p class="text-stone-600 text-sm mt-2 leading-relaxed">
Thank you for reaching out. Your submission has been recorded and queued for forwarding to <span class="font-semibold text-stone-800">slav@slavtech.com</span>.
</p>
</div>
<div class="pt-2">
<button
type="button"
onclick="resetForm()"
class="inline-flex items-center space-x-2 text-sm font-medium text-brand-600 hover:text-brand-700 underline underline-offset-4 cursor-pointer focus:outline-none"
>
<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="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
</svg>
<span>Send another message</span>
</button>
</div>
</div>
</div>
</div>
<script>
function validateEmail(email) {
const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return re.test(email.toLowerCase());
}
function handleFormSubmit(event) {
event.preventDefault();
const nameInput = document.getElementById('name');
const emailInput = document.getElementById('email');
const messageInput = document.getElementById('message');
const nameError = document.getElementById('nameError');
const emailError = document.getElementById('emailError');
const messageError = document.getElementById('messageError');
let isValid = true;
// Name validation
if (!nameInput.value.trim()) {
nameError.classList.remove('hidden');
nameInput.classList.add('border-rose-400');
isValid = false;
} else {
nameError.classList.add('hidden');
nameInput.classList.remove('border-rose-400');
}
// Email validation
if (!emailInput.value.trim() || !validateEmail(emailInput.value.trim())) {
emailError.classList.remove('hidden');
emailInput.classList.add('border-rose-400');
isValid = false;
} else {
emailError.classList.add('hidden');
emailInput.classList.remove('border-rose-400');
}
// Message validation
if (!messageInput.value.trim()) {
messageError.classList.remove('hidden');
messageInput.classList.add('border-rose-400');
isValid = false;
} else {
messageError.classList.add('hidden');
messageInput.classList.remove('border-rose-400');
}
if (isValid) {
// Hide form and show success state
document.getElementById('contactForm').classList.add('hidden');
document.getElementById('successState').classList.remove('hidden');
}
}
function resetForm() {
// Reset input values
document.getElementById('contactForm').reset();
// Clear errors
document.querySelectorAll('[id$="Error"]').forEach(el => el.classList.add('hidden'));
document.querySelectorAll('input, textarea').forEach(el => el.classList.remove('border-rose-400'));
// Toggle view state
document.getElementById('successState').classList.add('hidden');
document.getElementById('contactForm').classList.remove('hidden');
}
</script>
``
Wine Stores in USA, Coolers and Cellar Guide
Explore wine stores across the USA, plus wine coolers, wine cellar information, and more helpful wine shopping resources.
<title>Contact Us - Wine Cellar Value-Added</title>
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
sans: ['Inter', 'sans-serif'],
},
colors: {
brand: {
50: '#faf5f5',
100: '#f7e8e8',
500: '#8b0000', // Deep wine red
600: '#720000',
700: '#590000',
900: '#2c0000',
}
}
}
}
}
</script>
<style>
body {
font-family: 'Inter', sans-serif;
}
.fade-in {
animation: fadeIn 0.4s ease-in-out forwards;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
</style>