Files

1176 lines
33 KiB
Plaintext
Raw Permalink Normal View History

Prompt: make the best coffee shop website you can in html css js
Generated at step: 200
Timestamp: 2025-08-28T09:36:12.782497
============================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Bean Haven | Premium Coffee & Brews</title>
<!-- Favicon -->
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>%26%2392%3B</text></svg>" />
<!-- Google Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&family=Playfair+Display:wght@700;900&display=swap" rel="stylesheet">
<!-- Font Awesome Icons -->
<script src="https://kit.fontawesome.com/a0d6c9e18b.js" crossorigin="anonymous"></script>
<!-- Custom Styles -->
<style>
/* Reset and Base */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
--primary: #F4A83C; /* Golden amber */
--primary-dark: #D99B2E; /* Darker golden brown */
--accent: #6D4C41; /* Rich espresso */
--bg-light: #F9FAFB; /* Light cream */
--bg-dark: #121212; /* Deep charcoal */
--text: #121212; /* Charcoal black */
--text-light: #F9FAFB; /* Cream for light text */
--card-bg: rgba(255, 255, 255, 0.8);
--shadow-sm: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06);
--shadow-md: 0 8px 25px rgba(0,0,0,0.12), 0 4px 10px rgba(0,0,0,0.08);
--border-radius: 16px;
--transition: all 0.3s cubic-bezier(0.25, 0.8, 0.29, 1.47);
}
body {
font-family: 'Poppins', sans-serif;
background-color: var(--bg-light);
color: var(--text);
line-height: 1.6;
}
h1,h2,h3,h4,h5,h6 { font-family: 'Playfair Display', serif; letter-spacing: -0.02em; }
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
a {
color: inherit;
text-decoration: none;
}
button:focus-visible,
input:focus-visible,
select:focus-visible {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
/* Navigation */
header {
position: fixed;
width: 100%;
z-index: 999;
backdrop-filter: blur(8px);
background: linear-gradient(180deg, rgba(244, 168, 60, 0.8), rgba(244, 168, 60, 0.5));
border-bottom: 1px solid rgba(244, 168, 60, 0.25);
}
nav {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 0;
}
.logo {
display: flex;
align-items: center;
gap: 10px;
}
.logo span {
font-weight: 900;
font-size: 1.8rem;
}
.logo i {
font-size: 2rem;
color: var(--primary-dark);
}
.nav-links {
display: flex;
gap: 28px;
}
.nav-links a {
font-weight: 600;
transition: var(--transition);
}
.nav-links a:hover {
color: var(--primary-dark);
transform: translateY(-1px);
}
.btn-primary {
background: linear-gradient(to right, var(--primary), var(--primary-dark));
color: white;
border: none;
padding: 10px 16px;
border-radius: 10px;
font-weight: 600;
cursor: pointer;
transition: var(--transition);
}
.btn-outline {
background: transparent;
border: 1px solid var(--primary);
color: var(--primary);
padding: 10px 16px;
border-radius: 10px;
cursor: pointer;
transition: var(--transition);
}
.btn-outline:hover {
background: rgba(244, 168, 60, 0.1);
}
/* Hero Section */
hero {
height: 90vh;
background-image: url('https://images.unsplash.com/photo-1501556600872-2f2112863815');
background-size: cover;
background-position: center bottom;
background-attachment: fixed;
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.hero-overlay {
position: absolute;
inset: 0;
background: radial-gradient(circle at 30% 40%, rgba(244,168,60,0.3) 0%, rgba(255,255,255,0) 70%);
}
.hero-content {
max-width: 800px;
text-align: left;
}
.hero-content h1 {
font-size: clamp(2.8rem, 7vw, 5.2rem);
font-weight: 900;
line-height: 1.1;
color: var(--text-light);
margin-bottom: 12px;
}
.hero-content p {
font-size: 1.1rem;
color: var(--text-light);
opacity: 0.9;
margin-bottom: 24px;
}
.cta-buttons {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 16px;
}
.btn-large {
padding: 16px 22px;
font-size: 1.1rem;
}
/* Features Grid */
features {
padding: 100px 0;
}
.section-title {
text-align: center;
margin-bottom: 36px;
}
.section-title h2 {
font-size: clamp(2.2rem, 8vw, 4.4rem);
font-weight: 900;
color: var(--text);
}
.section-title p {
color: var(--text-light);
max-width: 680px;
margin: 0 auto;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 28px;
}
.feature-card {
background: var(--card-bg);
border-radius: var(--border-radius);
border: 1px solid rgba(244,168,60,0.15);
box-shadow: var(--shadow-sm);
overflow: hidden;
transition: var(--transition);
}
.feature-card:hover {
transform: translateY(-6px);
box-shadow: var(--shadow-md);
}
.feature-icon {
height: 80px;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(180deg, var(--primary), var(--primary-dark));
color: white;
border-top-right-radius: var(--border-radius);
border-top-left-radius: var(--border-radius);
}
.feature-body {
padding: 20px;
}
.feature-body h3 {
margin-bottom: 12px;
font-size: 1.1rem;
font-weight: 700;
}
.feature-body p {
color: var(--text-light);
opacity: 0.9;
}
/* Brews Section */
brews {
padding: 100px 0;
background: linear-gradient(180deg, #F9FAFB 0%, #FFFFFF 100%);
}
.brews-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 28px;
}
.brew-item {
background: var(--card-bg);
border-radius: var(--border-radius);
border: 1px solid rgba(244,168,60,0.15);
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: var(--transition);
}
.brew-header {
display: flex;
align-items: center;
gap: 12px;
padding: 14px 16px;
border-bottom: 1px solid rgba(244,168,60,0.1);
}
.brew-img {
width: 60px;
height: 60px;
object-fit: cover;
border-radius: 12px;
}
.brew-info {
flex: 1;
}
.brew-name {
font-weight: 700;
font-size: 1.1rem;
}
.brew-desc {
color: var(--text-light);
opacity: 0.9;
margin-top: 4px;
}
.brew-price {
display: inline-block;
background: linear-gradient(180deg, var(--primary), var(--primary-dark));
color: white;
padding: 6px 10px;
border-radius: 8px;
font-weight: 700;
font-size: 0.95rem;
margin-top: 8px;
}
.brew-actions {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
gap: 12px;
padding: 16px;
border-top: 1px solid rgba(244,168,60,0.1);
}
.btn-small {
padding: 8px 12px;
font-size: 0.9rem;
}
/* About Section */
about {
padding: 100px 0;
background: linear-gradient(180deg, #121212 0%, #1a1a1a 100%);
color: var(--text-light);
}
.about-grid {
display: grid;
grid-template-columns: (minmax(320px, 1fr)) 1fr;
gap: 32px;
align-items: center;
}
.about-text {
font-size: 1.1rem;
}
.about-text h2 {
margin-bottom: 16px;
font-weight: 900;
}
.about-text p {
margin-bottom: 12px;
}
.about-stats {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
gap: 18px;
}
.stat-item {
text-align: center;
}
.stat-number {
font-size: 2.2rem;
font-weight: 900;
color: var(--primary);
margin-bottom: 8px;
}
.stat-label {
font-size: 0.9rem;
color: var(--text-light);
}
.about-image {
border-radius: var(--border-radius);
overflow: hidden;
border: 1px solid rgba(255,255,255,0.08);
}
.about-image img {
width: 100%;
height: auto;
display: block;
}
/* Testimonials */
testimonials {
padding: 100px 0;
background: linear-gradient(180deg, #F9FAFB 0%, #FFFFFF 100%);
}
.testimonials-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 24px;
}
.testimonial-card {
background: var(--card-bg);
border-radius: var(--border-radius);
border: 1px solid rgba(244,168,60,0.15);
box-shadow: var(--shadow-sm);
padding: 20px;
transition: var(--transition);
}
.testimonial-card:hover {
transform: translateY(-6px);
box-shadow: var(--shadow-md);
}
.rating {
color: #FFD700;
font-size: 1.3rem;
font-weight: bold;
margin-bottom: 12px;
}
.quote {
font-style: italic;
color: var(--text-light);
margin-bottom: 14px;
}
.author {
display: flex;
align-items: center;
gap: 12px;
font-weight: 700;
}
.author img {
width: 48px;
height: 48px;
border-radius: 12px;
object-fit: cover;
}
/* Contact */
contact {
padding: 100px 0;
background: linear-gradient(180deg, #121212 0%, #1a1a1a 100%);
color: var(--text-light);
}
.contact-grid {
display: grid;
grid-template-columns: (minmax(320px, 1fr)) 1fr;
gap: 32px;
align-items: start;
}
.contact-info h2 {
margin-bottom: 16px;
font-weight: 900;
}
.contact-info ul {
list-style: none;
margin-bottom: 16px;
}
.contact-info li {
margin-bottom: 12px;
display: flex;
align-items: flex-start;
gap: 12px;
color: var(--text-light);
}
.contact-info li i {
color: var(--primary);
font-size: 1.2rem;
}
.contact-form {
background: var(--card-bg);
border-radius: var(--border-radius);
border: 1px solid rgba(244,168,60,0.15);
box-shadow: var(--shadow-sm);
padding: 20px;
}
.form-group {
margin-bottom: 16px;
}
.form-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 16px;
}
.form-control {
width: 100%;
padding: 12px 14px;
border: 1px solid rgba(244,168,60,0.2);
background: white;
border-radius: 10px;
font-size: 0.95rem;
transition: var(--transition);
}
.form-control:focus {
outline: 3px solid var(--primary);
outline-offset: 2px;
}
textarea.form-control {
min-height: 120px;
resize: vertical;
}
.form-btn {
background: linear-gradient(180deg, var(--primary), var(--primary-dark));
color: white;
border: none;
padding: 12px 16px;
border-radius: 10px;
cursor: pointer;
font-weight: 600;
transition: var(--transition);
}
.form-btn:hover {
transform: translateY(-1px);
}
/* Footer */
footer {
background: #121212;
color: var(--text-light);
padding: 40px 0 20px;
}
.footer-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 24px;
}
.footer-col h3 {
margin-bottom: 16px;
font-weight: 700;
}
.footer-col ul {
list-style: none;
margin-bottom: 16px;
}
.footer-col li {
margin-bottom: 12px;
}
.footer-col a {
color: var(--text-light);
transition: var(--transition);
}
.footer-col a:hover {
color: var(--primary);
}
.social-icons {
display: flex;
gap: 12px;
}
.social-link {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: 12px;
background: rgba(244,168,60,0.1);
color: var(--primary);
transition: var(--transition);
}
.social-link:hover {
background: rgba(244,168,60,0.2);
transform: translateY(-1px);
}
.copyright {
text-align: center;
margin-top: 20px;
padding-top: 16px;
border-top: 1px solid rgba(255,255,255,0.06);
color: var(--text-light);
font-size: 0.9rem;
}
/* Mobile menu */
.mobile-menu-toggle {
display: none;
position: relative;
padding: 10px;
cursor: pointer;
background: transparent;
border: none;
}
.hamburger {
display: inline-flex;
align-items: center;
gap: 6px;
color: var(--text);
}
.bar {
width: 22px;
height: 3px;
background: currentColor;
border-radius: 2px;
transition: var(--transition);
}
/* Animations */
@keyframes fadeInUp {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.animate-fade-up {
animation: fadeInUp 0.8s ease forwards;
}
/* Scroll progress bar */
.scroll-progress {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 3px;
background: linear-gradient(to right, var(--primary), var(--primary-dark));
pointer-events: none;
z-index: 99;
}
.scroll-progress-inner {
height: 100%;
width: 0%;
background: linear-gradient(to right, var(--primary), var(--primary-dark));
transition: width 0.3s ease;
}
/* Responsive adjustments */
@media (max-width: 992px) {
.section-title h2 {
font-size: clamp(2rem, 7vw, 4.4rem);
}
.about-grid {
grid-template-columns: 1fr;
}
.contact-grid {
grid-template-columns: 1fr;
}
.nav-links {
gap: 18px;
}
.cta-buttons {
grid-template-columns: 1fr;
}
.form-row {
grid-template-columns: 1fr;
}
}
@media (max-width: 640px) {
.hero-content h1 {
font-size: 2.5rem;
}
.hero-content p {
font-size: 0.95rem;
}
.mobile-menu-toggle {
display: block;
}
.nav-links {
position: absolute;
top: 70px;
left: 0;
right: 0;
background: white;
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(244,168,60,0.2);
box-shadow: 0 10px 30px rgba(0,0,0,0.15);
transform: translateY(-10px);
opacity: 0;
visibility: hidden;
transition: var(--transition);
}
.nav-links.active {
transform: translateY(0);
opacity: 1;
visibility: visible;
}
.nav-links a {
padding: 14px 16px;
}
.cta-buttons {
grid-template-columns: 1fr;
}
.form-row {
grid-template-columns: 1fr;
}
.about-stats {
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
}
}
/* Hamburger animation */
.hamburger.open .bar:nth-child(1) {
transform: rotate(-45deg) translate(-5px, 6px);
}
.hamburger.open .bar:nth-child(2) {
opacity: 0;
}
.hamburger.open .bar:nth-child(3) {
transform: rotate(45deg) translate(-5px, -6px);
}
</style>
</head>
<body>
<!-- Scroll Progress Bar -->
<div class="scroll-progress">
<div class="scroll-progress-inner" id="progressBar"></div>
</div>
<!-- Header -->
<header id="header">
<nav class="container">
<div class="nav-container">
<div class="logo">
<i class="fas fa-coffee"></i>
<span>Beean</span>Haven
</div>
<button class="mobile-menu-toggle" id="mobileMenuToggle">
<span class="hamburger">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</span>
</button>
<ul class="nav-links" id="navLinks">
<li><a href="#hero">Home</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#brews">Brews</a></li>
<li><a href="#about">About</a></li>
<li><a href="#testimonials">Testimonials</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
<a href="#contact" class="btn-primary">Order Now</a>
</div>
</nav>
</header>
<!-- Hero Section -->
<section id="hero" class="hero">
<div class="hero-overlay"></div>
<div class="hero-content">
<h1>Welcome to Bean Haven</h1>
<p>Handcrafted single-origin coffees, expertly roasted with care. Experience the perfect cup from our small-batch roastery.</p>
<div class="cta-buttons">
<a href="#brews" class="btn-large btn-outline">Explore Coffees</a>
<a href="#contact" class="btn-large btn-primary">Order Online</a>
</div>
</div>
</section>
<!-- Features Section -->
<section id="features" class="features">
<div class="container">
<div class="section-title animate-fade-up">
<h2>Why Choose Bean Haven?</h2>
<p>Crafted with care, sourced responsibly, served with passion.</p>
</div>
<div class="features-grid">
<article class="feature-card animate-fade-up">
<div class="feature-icon"><i class="far fa-sun"></i></div>
<div class="feature-body">
<h3>Sustainable Sourcing</h3>
<p>We partner with ethical farms that prioritize environmental stewardship and fair wages.</p>
</div>
</article>
<article class="feature-card animate-fade-up">
<div class="feature-icon"><i class="fas fa-fire"></i></div>
<div class="feature-body">
<h3>Premium Roasting</h3>
<p>Small-batch roasting using traditional methods to preserve complex flavors and aromas.</p>
</div>
</article>
<article class="feature-card animate-fade-up">
<div class="feature-icon"><i class="fas fa-handshake"></i></div>
<div class="feature-body">
<h3>Community Focus</h3>
<p>A portion of every sale supports local artists and sustainability initiatives.</p>
</div>
</article>
<article class="feature-card animate-fade-up">
<div class="feature-icon"><i class="fas fa-leaf"></i></div>
<div class="feature-body">
<h3>Eco Packaging</h3>
<p>All packaging is compostable or recyclable—no plastic ever.</p>
</div>
</article>
</div>
</div>
</section>
<!-- Brews Section -->
<section id="brews" class="brews">
<div class="container">
<div class="section-title animate-fade-up">
<h2>Our Signature Coffees</h2>
<p>Curated blends from around the world, hand-selected for exceptional flavor profiles.</p>
</div>
<div class="brews-grid">
<article class="brew-item animate-fade-up">
<div class="brew-header">
<img src="https://images.unsplash.com/photo-1601735732370-2b0519087448?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb&w=600&auto=format&fit=crop" alt="Ethiopian Yirgacheffe" class="brew-img" loading="lazy" />
<div class="brew-info">
<div class="brew-name">Ethiopian Yirgacheffe</div>
<div class="brew-desc">Bright floral notes with citrus and jasmine.</div>
<div class="brew-price">$14.95</div>
</div>
</div>
<div class="brew-actions">
<a href="#" class="btn-small">Add to Cart</a>
<a href="#" class="btn-small">Learn More</a>
</div>
</article>
<article class="brew-item animate-fade-up">
<div class="brew-header">
<img src="https://images.unsplash.com/photo-1632494281365-c57753558b8f?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb&w=600&auto=format&fit=crop" alt="Guatemalan Antigua" class="brew-img" loading="lazy" />
<div class="brew-info">
<div class="brew-name">Guatemalan Antigua</div>
<div class="brew-desc">Balanced chocolate and citrus with a smooth finish.</div>
<div class="brew-price">$16.95</div>
</div>
</div>
<div class="brew-actions">
<a href="#" class="btn-small">Add to Cart</a>
<a href="#" class="btn-small">Learn More</a>
</div>
</article>
<article class="brew-item animate-fade-up">
<div class="brew-header">
<img src="https://images.unsplash.com/photo-1613473645661-d660c60f2e41?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb&w=600&auto=format&fit=crop" alt="Colombian Huila" class="brew-img" loading="lazy" />
<div class="brew-info">
<div class="brew-name">Colombian Huila</div>
<div class="brew-desc">Full-bodied with notes of caramel and dark chocolate.</div>
<div class="brew-price">$18.95</div>
</div>
</div>
<div class="brew-actions">
<a href="#" class="btn-small">Add to Cart</a>
<a href="#" class="btn-small">Learn More</a>
</div>
</article>
<article class="brew-item animate-fade-up">
<div class="brew-header">
<img src="https://images.unsplash.com/photo-1516299477851-3935c861764a?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb&w=600&auto=format&fit=crop" alt="Peruvian Cajamarca" class="brew-img" loading="lazy" />
<div class="brew-info">
<div class="brew-name">Peruvian Cajamarca</div>
<div class="brew-desc">Earthy, with hints of orange peel and spice.</div>
<div class="brew-price">$16.95</div>
</div>
</div>
<div class="brew-actions">
<a href="#" class="btn-small">Add to Cart</a>
<a href="#" class="btn-small">Learn More</a>
</div>
</article>
</div>
</div>
</section>
<!-- About Section -->
<section id="about" class="about">
<div class="container">
<div class="about-grid">
<div class="about-text">
<h2>The Art of Quality</h2>
<p>Founded in 2018 by Sarah Thompson, Bean Haven began as a passion project to bring exceptional, ethically sourced coffee directly to homes and cafes across the region.</p>
<p>Each roast is developed through meticulous tasting sessions with our master roaster, focusing on clarity of origin, balance, and depth. We believe great coffee should be accessible, sustainable, and enjoyable.</p>
<div class="about-stats">
<div class="stat-item">
<div class="stat-number">5+</div>
<div class="stat-label">Years of Craftsmanship</div>
</div>
<div class="stat-item">
<div class="stat-number">30+</div>
<div class="stat-label">Coffee Varietals</div>
</div>
<div class="stat-item">
<div class="stat-number">98%</div>
<div class="stat-label">Sustainability Score</div>
</div>
<div class="stat-item">
<div class="stat-number">12K+</div>
<div class="stat-label">Orders Delivered</div>
</div>
</div>
</div>
<div class="about-image">
<img src="https://images.unsplash.com/photo-1617530861542-a07323746413?ixlib=rb-4.0.3&q=85&fm=jpg&crop=entropy&cs=srgb&w=600&auto=format&fit=crop" alt="Roastery Workshop" loading="lazy" />
</div>
</div>
</div>
</section>
<!-- Testimonials -->
<section id="testimonials" class="testimonials">
<div class="container">
<div class="section-title animate-fade-up">
<h2>What Our Customers Say</h2>
<p>Real experiences from real customers who love their daily brew.</p>
</div>
<div class="testimonials-grid">
<article class="testimonial-card animate-fade-up">
<div class="rating"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star-half-alt"></i></div>
<div class="quote">“The Ethiopian Yirgacheffe is absolutely stunning — it tastes like springtime on a rainy day. Ive tried dozens of brands, and this is hands down my favorite.”</div>
<div class="author">
<img src="https://randomuser.me/api/portraits/women/45.jpg" alt="Anna M." loading="lazy" />
<div>
<strong>Ana M.</strong>, Home Brewer
</div>
</div>
</article>
<article class="testimonial-card animate-fade-up">
<div class="rating"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i></div>
<div class="quote">“I discovered Bean Haven during a weekend visit to Portland. The Guatemalan Antigua has become my go-to morning ritual. Their commitment to sustainability resonates deeply with me.”</div>
<div class="author">
<img src="https://randomuser.me/api/portraits/men/32.jpg" alt="James R." loading="lazy" />
<div>
<strong>James R.</strong>, Cafe Owner
</div>
</div>
</article>
<article class="testimonial-card animate-fade-up">
<div class="rating"><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i><i class="fas fa-star"></i></div>
<div class="quote">“The Colombian Huila is rich, balanced, and complex — exactly what we wanted for our cafés seasonal rotation. Outstanding quality and packaging!”</div>
<div class="author">
<img src="https://randomuser.me/api/portraits/women/23.jpg" alt="Lena K." loading="lazy" />
<div>
<strong>Lena K.</strong>, Boutique Café
</div>
</div>
</article>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="contact">
<div class="container">
<div class="section-title animate-fade-up">
<h2>Get In Touch</h2>
<p>Have questions about our products or want to learn more about our values? Reach out!</p>
</div>
<div class="contact-grid">
<div class="contact-info animate-fade-up">
<h2>Contact Info</h2>
<ul>
<li><i class="fas fa-map-marker-alt"></i> 123 Roast Lane, Portland, OR 97209</li>
<li><i class="fas fa-phone"></i> +1 (555) 222-ROAST</li>
<li><i class="fas fa-envelope"></i> hello@beanhaven.com</li>
<li><i class="fas fa-clock"></i> MonSat: 7AM7PM</li>
</ul>
<div class="social-icons">
<a href="#" class="social-link"><i class="fab fa-facebook-f"></i></a>
<a href="#" class="social-link"><i class="fab fa-instagram"></i></a>
<a href="#" class="social-link"><i class="fab fa-twitter"></i></a>
<a href="#" class="social-link"><i class="fab fa-tiktok"></i></a>
</div>
</div>
<form action="#" method="POST" class="contact-form animate-fade-up">
<div class="form-row">
<input type="text" placeholder="Your Name" required class="form-control" />
<input type="email" placeholder="Your Email" required class="form-control" />
</div>
<input type="tel" placeholder="Phone (optional)" class="form-control" />
<textarea rows="4" placeholder="How can we help?" required class="form-control"></textarea>
<button type="submit" class="form-btn">Send Message</button>
</form>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="container">
<div class="footer-grid">
<div class="footer-col">
<div class="logo">
<i class="fas fa-coffee"></i>
<span>Beean</span>Haven
</div>
<p>Handcrafted single-origin coffees, expertly roasted with care.</p>
<div class="social-icons">
<a href="#" class="social-link"><i class="fab fa-facebook-f"></i></a>
<a href="#" class="social-link"><i class="fab fa-instagram"></i></a>
<a href="#" class="social-link"><i class="fab fa-twitter"></i></a>
<a href="#" class="social-link"><i class="fab fa-tiktok"></i></a>
</div>
</div>
<div class="footer-col">
<h3>Quick Links</h3>
<ul>
<li><a href="#hero">Home</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#brews">Products</a></li>
<li><a href="#about">About</a></li>
<li><a href="#testimonials">Reviews</a></li>
</ul>
</div>
<div class="footer-col">
<h3>Support</h3>
<ul>
<li><a href="#">Shipping Policy</a></li>
<li><a href="#">Returns</a></li>
<li><a href="#">FAQ</a></li>
<li><a href="#">Privacy</a></li>
<li><a href="#">Terms</a></li>
</ul>
</div>
<div class="footer-col">
<h3>Newsletter</h3>
<p>Stay updated on new releases, brewing tips, and exclusive offers.</p>
<form action="#">
<input type="email" placeholder="Email Address" class="form-control" style="margin-bottom: 8px;" />
<button type="submit" class="btn-outline">Subscribe</button>
</form>
</div>
</div>
<div class="copyright">
&copy; 2024 Bean Haven. All rights reserved.
</div>
</div>
</footer>
<!-- Back to Top Button -->
<button id="backToTop" aria-label="Back to top" style="display:none;">
<i class="fas fa-chevron-up"></i>
</button>
<!-- Scripts -->
<script>
// Smooth scroll
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
window.scrollTo({
top: target.offsetTop - 60,
behavior: 'smooth'
});
}
});
});
// Mobile navigation toggle
const mobileMenuToggle = document.getElementById('mobileMenuToggle');
const navLinks = document.getElementById('navLinks');
mobileMenuToggle.addEventListener('click', () => {
navLinks.classList.toggle('active');
});
// Close mobile menu when clicking links
document.querySelectorAll('.nav-links a').forEach(link => {
link.addEventListener('click', () => {
navLinks.classList.remove('active');
});
});
// Scroll progress bar
const progressBar = document.getElementById('progressBar');
window.addEventListener('scroll', () => {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
const docHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight) - Math.max(document.body.clientHeight, document.documentElement.clientHeight);
const scrolledPercent = Math.min(Math.round((scrollTop / docHeight) * 100), 100);
progressBar.style.width = `${scrolledPercent}%`;
});
// Back to top button
const backToTop = document.getElementById('backToTop');
window.addEventListener('scroll', () => {
if (window.scrollY > 300) {
backToTop.style.display = 'flex';
} else {
backToTop.style.display = 'none';
}
});
backToTop.addEventListener('click', () => {
window.scrollTo({ top: 0, behavior: 'smooth' });
});
// Sticky header
const header = document.getElementById('header');
window.addEventListener('scroll', () => {
if (window.scrollY > 100) {
header.style.boxShadow = '0 10px 30px rgba(0,0,0,0.15)';
} else {
header.style.boxShadow = '0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06)';
}
});
// Animation on scroll
const observerOptions = {
rootMargin: '0px',
threshold: 0.1
};
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('animate-fade-up');
observer.unobserve(entry.target);
}
});
}, observerOptions);
document.querySelectorAll('.animate-fade-up').forEach(el => observer.observe(el));
// Form submission demo
const form = document.querySelector('.contact-form');
form.addEventListener('submit', function(e) {
e.preventDefault();
alert('Thank you! Your message has been sent. Well respond within 24 hours.');
form.reset();
});
</script>
</body>
</html>