jerseylabs / index.html
unknown262007's picture
Update index.html
7e0efdb verified
Raw History Blame Contribute Delete
16.8 kB
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JERSEY LABS - Custom Sportswear & Teamwear</title>
<link href="https://fonts.googleapis.com/css2?family=Teko:wght@600;700&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root {
--bg-dark: #090a0f;
--bg-card: #12141c;
--accent: #00ff88;
--accent-gold: #e5c158;
--text-main: #ffffff;
--text-muted: #9aa0a6;
--border-color: #232733;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
background-color: var(--bg-dark);
color: var(--text-main);
font-family: 'Inter', sans-serif;
overflow-x: hidden;
}
/* Top Announcement Bar */
.announcement-bar {
background: linear-gradient(90deg, #00ff88, #00b8ff);
color: #000;
text-align: center;
padding: 8px 12px;
font-size: 0.85rem;
font-weight: 700;
letter-spacing: 1px;
text-transform: uppercase;
}
/* Header & Navigation */
header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 18px 5%;
background-color: rgba(9, 10, 15, 0.95);
backdrop-filter: blur(10px);
position: sticky;
top: 0;
z-index: 100;
border-bottom: 1px solid var(--border-color);
}
.brand-logo {
font-family: 'Teko', sans-serif;
font-size: 2.2rem;
letter-spacing: 2px;
text-transform: uppercase;
color: var(--text-main);
text-decoration: none;
}
.brand-logo span {
color: var(--accent);
}
nav {
display: flex;
align-items: center;
gap: 20px;
}
.nav-btn {
background: none;
border: none;
color: var(--text-muted);
font-size: 0.9rem;
font-weight: 600;
text-transform: uppercase;
cursor: pointer;
transition: color 0.3s;
}
.nav-btn:hover, .nav-btn.active {
color: var(--accent);
}
.auth-btn {
background-color: transparent;
border: 1px solid var(--accent);
color: var(--accent);
padding: 6px 16px;
border-radius: 4px;
font-weight: 700;
cursor: pointer;
text-transform: uppercase;
transition: all 0.3s ease;
}
.auth-btn:hover {
background-color: var(--accent);
color: #000;
}
/* Hero Section */
.hero {
position: relative;
height: 70vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
padding: 0 20px;
background: linear-gradient(180deg, rgba(9, 10, 15, 0.75) 0%, rgba(9, 10, 15, 0.95) 100%),
url('https://images.unsplash.com/photo-1546519638-68e109498ffc?auto=format&fit=crop&w=1600&q=80') center/cover no-repeat;
}
.hero h1 {
font-family: 'Teko', sans-serif;
font-size: clamp(3.5rem, 8vw, 6rem);
line-height: 0.95;
text-transform: uppercase;
letter-spacing: 3px;
margin-bottom: 15px;
}
.hero h1 span {
color: var(--accent-gold);
}
.hero p {
color: var(--text-muted);
font-size: 1.1rem;
max-width: 600px;
margin-bottom: 25px;
}
.btn-primary {
padding: 14px 36px;
background-color: var(--accent);
color: #000;
font-weight: 700;
text-transform: uppercase;
text-decoration: none;
border-radius: 4px;
font-size: 0.95rem;
border: none;
cursor: pointer;
box-shadow: 0 0 20px rgba(0, 255, 136, 0.3);
transition: transform 0.2s;
}
.btn-primary:hover {
transform: translateY(-2px);
}
/* Sports Banner Strip */
.sports-strip {
display: flex;
justify-content: center;
gap: 30px;
margin-top: 30px;
color: var(--text-muted);
font-size: 0.9rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
}
/* Product Section */
.container {
max-width: 1250px;
margin: 60px auto;
padding: 0 20px;
}
.section-header {
border-bottom: 1px solid var(--border-color);
padding-bottom: 15px;
margin-bottom: 30px;
}
.section-title {
font-family: 'Teko', sans-serif;
font-size: 2.8rem;
text-transform: uppercase;
line-height: 1;
}
.product-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
gap: 25px;
}
.product-card {
background-color: var(--bg-card);
border: 1px solid var(--border-color);
border-radius: 8px;
overflow: hidden;
cursor: pointer;
transition: transform 0.3s, border-color 0.3s;
}
.product-card:hover {
transform: translateY(-6px);
border-color: var(--accent);
}
.img-container {
width: 100%;
height: 340px;
overflow: hidden;
position: relative;
}
.img-container img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.4s ease;
}
.product-card:hover .img-container img {
transform: scale(1.06);
}
.tag {
position: absolute;
top: 12px;
left: 12px;
background: rgba(0, 0, 0, 0.85);
border: 1px solid var(--accent);
color: var(--accent);
padding: 4px 10px;
font-size: 0.75rem;
font-weight: 700;
border-radius: 3px;
text-transform: uppercase;
}
.info {
padding: 18px;
}
.info h3 {
font-size: 1.1rem;
font-weight: 700;
text-transform: uppercase;
margin-bottom: 6px;
}
.info p {
color: var(--text-muted);
font-size: 0.85rem;
}
/* Modal Overlay Base */
.modal-overlay {
display: none;
position: fixed;
top: 0; left: 0; width: 100%; height: 100%;
background: rgba(0, 0, 0, 0.85);
backdrop-filter: blur(5px);
z-index: 1000;
justify-content: center;
align-items: center;
}
.modal {
background: var(--bg-card);
padding: 35px;
border-radius: 8px;
max-width: 450px;
width: 90%;
border: 1px solid var(--border-color);
position: relative;
}
.close-btn {
position: absolute;
top: 15px; right: 20px;
background: none; border: none;
color: white; font-size: 1.8rem;
cursor: pointer;
}
/* Auth Form Styles */
.form-group {
margin-bottom: 18px;
}
.form-group label {
display: block;
font-size: 0.85rem;
color: var(--text-muted);
margin-bottom: 6px;
text-transform: uppercase;
font-weight: 600;
}
.form-group input {
width: 100%;
padding: 12px;
background-color: var(--bg-dark);
border: 1px solid var(--border-color);
border-radius: 4px;
color: #fff;
font-size: 0.95rem;
outline: none;
}
.form-group input:focus {
border-color: var(--accent);
}
.form-toggle {
text-align: center;
margin-top: 15px;
font-size: 0.85rem;
color: var(--text-muted);
}
.form-toggle a {
color: var(--accent);
text-decoration: none;
font-weight: 600;
cursor: pointer;
}
/* WhatsApp Floating Button */
.whatsapp-btn {
position: fixed;
bottom: 25px; right: 25px;
background-color: #25d366;
color: white;
width: 55px; height: 55px;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 4px 15px rgba(0,0,0,0.5);
text-decoration: none;
font-weight: bold;
z-index: 99;
}
</style>
</head>
<body>
<!-- Announcement -->
<div class="announcement-bar">
⚡ CUSTOM TEAMWEAR &amp; JERSEYS | MADE TO ORDER AT JERSEY LABS ⚡
</div>
<!-- Navigation Header -->
<header>
<a href="#" class="brand-logo">JERSEY <span>LABS</span></a>
<nav>
<button class="nav-btn active" onclick="filterCategory('all')">All Sports</button>
<button class="nav-btn" onclick="filterCategory('basketball')">Basketball</button>
<button class="nav-btn" onclick="filterCategory('football')">Football</button>
<button class="nav-btn" onclick="filterCategory('badminton')">Badminton</button>
<button class="auth-btn" id="userAuthBtn" onclick="openAuthModal()">Log In</button>
</nav>
</header>
<!-- Hero Banner -->
<section class="hero">
<h1>BUILT FOR <span>BOLD</span> TEAMS</h1>
<p>Custom jerseys, shorts, and high-performance wear designed for athletes across all sports.</p>
<a href="#products" class="btn-primary">Explore Collections</a>
<div class="sports-strip">
<span>🏀 Basketball</span>
<span>⚽ Football</span>
<span>🏸 Badminton</span>
<span>🏐 Volleyball</span>
</div>
</section>
<!-- Products -->
<main class="container" id="products">
<div class="section-header">
<h2 class="section-title">Trending Products</h2>
</div>
<div class="product-grid" id="productGrid">
<div class="product-card" data-category="basketball" onclick="openOrderModal('Court Ready Basketball Kit')">
<div class="img-container">
<span class="tag">Basketball</span>
<img src="https://picsum.photos/600/750?random=101" alt="Basketball Kit">
</div>
<div class="info">
<h3>Court Ready Set</h3>
<p>Sublimated Jersey + Shorts</p>
</div>
</div>
<div class="product-card" data-category="football" onclick="openOrderModal('Manganite Football Jersey')">
<div class="img-container">
<span class="tag">Football</span>
<img src="https://picsum.photos/600/750?random=102" alt="Football Jersey">
</div>
<div class="info">
<h3>Manganite Kit</h3>
<p>Breathable Mesh Fabric</p>
</div>
</div>
<div class="product-card" data-category="badminton" onclick="openOrderModal('Smash Badminton Tee')">
<div class="img-container">
<span class="tag">Badminton</span>
<img src="https://picsum.photos/600/750?random=103" alt="Badminton Tee">
</div>
<div class="info">
<h3>Smash Pro Tee</h3>
<p>Lightweight Performance Fit</p>
</div>
</div>
<div class="product-card" data-category="basketball" onclick="openOrderModal('Assam Rhinos Pro Jersey')">
<div class="img-container">
<span class="tag">Basketball</span>
<img src="https://picsum.photos/600/750?random=104" alt="Pro Basketball Kit">
</div>
<div class="info">
<h3>Assam Rhinos #23</h3>
<p>Pro-Grade Customization</p>
</div>
</div>
</div>
</main>
<!-- Authentication Modal (Login / Sign Up) -->
<div class="modal-overlay" id="authModalOverlay">
<div class="modal">
<button class="close-btn" onclick="closeAuthModal()">&times;</button>
<!-- Login Form -->
<div id="loginFormBlock">
<h2 style="font-family:'Teko'; font-size:2.2rem; margin-bottom:15px; color:var(--accent);">User Login</h2>
<form onsubmit="handleLogin(event)">
<div class="form-group">
<label>Email Address</label>
<input type="email" id="loginEmail" placeholder="athlete@jerseylabs.com" required>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" id="loginPass" placeholder="••••••••" required>
</div>
<button type="submit" class="btn-primary" style="width:100%; margin-top:10px;">Sign In</button>
</form>
<div class="form-toggle">
Don't have an account? <a onclick="toggleAuthMode('signup')">Sign Up</a>
</div>
</div>
<!-- Sign Up Form (Hidden by default) -->
<div id="signupFormBlock" style="display:none;">
<h2 style="font-family:'Teko'; font-size:2.2rem; margin-bottom:15px; color:var(--accent);">Create Account</h2>
<form onsubmit="handleSignUp(event)">
<div class="form-group">
<label>Full Name</label>
<input type="text" id="signUpName" placeholder="Alex Morgan" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" id="signUpEmail" placeholder="alex@domain.com" required>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" id="signUpPass" placeholder="••••••••" required>
</div>
<button type="submit" class="btn-primary" style="width:100%; margin-top:10px;">Register</button>
</form>
<div class="form-toggle">
Already have an account? <a onclick="toggleAuthMode('login')">Log In</a>
</div>
</div>
</div>
</div>
<!-- Product Order Modal -->
<div class="modal-overlay" id="orderModalOverlay">
<div class="modal">
<button class="close-btn" onclick="closeOrderModal()">&times;</button>
<h2 id="orderTitle" style="font-family:'Teko'; font-size:2rem; margin-bottom:10px;">Custom Order</h2>
<p style="color:var(--text-muted); margin-bottom:20px;">Contact our design team to choose custom colors, add logos, names, and team numbers.</p>
<button class="btn-primary" style="width:100%;" onclick="orderOnWhatsApp()">Order via WhatsApp</button>
</div>
</div>
<!-- Floating WhatsApp Chat -->
<a href="https://wa.me/" target="_blank" class="whatsapp-btn" title="Chat on WhatsApp">WA</a>
<script>
let currentUser = null;
let selectedItem = '';
/* Category Filtering */
function filterCategory(category) {
const cards = document.querySelectorAll('.product-card');
const buttons = document.querySelectorAll('.nav-btn');
buttons.forEach(btn => btn.classList.remove('active'));
event.target.classList.add('active');
cards.forEach(card => {
if (category === 'all' || card.getAttribute('data-category') === category) {
card.style.display = 'block';
} else {
card.style.display = 'none';
}
});
}
/* Auth Modals */
function openAuthModal() {
if (currentUser) {
if (confirm(`Logged in as ${currentUser.name}. Do you want to log out?`)) {
currentUser = null;
document.getElementById('userAuthBtn').innerText = 'Log In';
}
} else {
document.getElementById('authModalOverlay').style.display = 'flex';
}
}
function closeAuthModal() {
document.getElementById('authModalOverlay').style.display = 'none';
}
function toggleAuthMode(mode) {
if (mode === 'signup') {
document.getElementById('loginFormBlock').style.display = 'none';
document.getElementById('signupFormBlock').style.display = 'block';
} else {
document.getElementById('signupFormBlock').style.display = 'none';
document.getElementById('loginFormBlock').style.display = 'block';
}
}
function handleLogin(e) {
e.preventDefault();
const email = document.getElementById('loginEmail').value;
const userName = email.split('@')[0];
currentUser = { email: email, name: userName };
document.getElementById('userAuthBtn').innerText = `Profile (${userName})`;
closeAuthModal();
alert(`Welcome back, ${userName}!`);
}
function handleSignUp(e) {
e.preventDefault();
const name = document.getElementById('signUpName').value;
const email = document.getElementById('signUpEmail').value;
currentUser = { email: email, name: name };
document.getElementById('userAuthBtn').innerText = `Profile (${name})`;
closeAuthModal();
alert(`Account created! Welcome, ${name}.`);
}
/* Order Modal */
function openOrderModal(title) {
selectedItem = title;
document.getElementById('orderTitle').innerText = title;
document.getElementById('orderModalOverlay').style.display = 'flex';
}
function closeOrderModal() {
document.getElementById('orderModalOverlay').style.display = 'none';
}
function orderOnWhatsApp() {
const userTag = currentUser ? ` [User: ${currentUser.name} - ${currentUser.email}]` : '';
const msg = encodeURIComponent(`Hi Jersey Labs, I would like to place an order for: ${selectedItem}${userTag}`);
window.open(`https://wa.me/?text=${msg}`, '_blank');
}
</script>
</body>
</html>