<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<title>ALLSO MEAL – Your fridge already has what you need</title>
<meta name=”description” content=”Simple, real meals for exhausted international students in Vancouver. Turn leftover groceries into comforting 15-minute meals.”>
<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=Lora:ital,wght@0,400;0,500;0,600;1,400&family=DM+Sans:wght@400;500;600&display=swap” rel=”stylesheet”>
<style>
:root {
–cream: #F5F3EF;
–beige: #D4C5B0;
–warm-brown: #A08972;
–dark-text: #1A1A1A;
–soft-white: #FDFCFA;
–muted-black: #2C2C2C;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: ‘DM Sans’, sans-serif;
background: var(–cream);
color: var(–dark-text);
line-height: 1.6;
overflow-x: hidden;
}
/* Typography */
h1, h2, h3 {
font-family: ‘Lora’, serif;
font-weight: 500;
line-height: 1.2;
}
/* Container */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 24px;
}
/* Hero Section */
.hero {
min-height: 90vh;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 80px 24px;
position: relative;
background: linear-gradient(135deg, var(–soft-white) 0%, var(–cream) 100%);
overflow: hidden;
}
.hero::before {
content: ”;
position: absolute;
top: -50%;
right: -20%;
width: 600px;
height: 600px;
background: radial-gradient(circle, rgba(212, 197, 176, 0.15) 0%, transparent 70%);
border-radius: 50%;
animation: float 20s ease-in-out infinite;
}
.hero::after {
content: ”;
position: absolute;
bottom: -30%;
left: -10%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(160, 137, 114, 0.1) 0%, transparent 70%);
border-radius: 50%;
animation: float 15s ease-in-out infinite reverse;
}
@keyframes float {
0%, 100% { transform: translate(0, 0) scale(1); }
50% { transform: translate(30px, -30px) scale(1.05); }
}
.hero-content {
position: relative;
z-index: 2;
max-width: 800px;
opacity: 0;
animation: fadeInUp 1s ease forwards;
}
@keyframes fadeInUp {
to {
opacity: 1;
transform: translateY(0);
}
from {
opacity: 0;
transform: translateY(30px);
}
}
.logo {
font-family: ‘Lora’, serif;
font-size: 2rem;
margin-bottom: 60px;
letter-spacing: 0.5px;
opacity: 0;
animation: fadeIn 1s ease 0.3s forwards;
}
@keyframes fadeIn {
to { opacity: 1; }
}
.logo .allso {
color: var(–beige);
}
.logo .meal {
color: var(–muted-black);
}
.hero h1 {
font-size: clamp(2.5rem, 6vw, 4.5rem);
margin-bottom: 24px;
color: var(–dark-text);
font-style: italic;
animation-delay: 0.2s;
}
.hero p {
font-size: clamp(1.1rem, 2vw, 1.35rem);
color: var(–warm-brown);
margin-bottom: 48px;
max-width: 600px;
margin-left: auto;
margin-right: auto;
animation-delay: 0.4s;
}
.cta-button {
display: inline-block;
padding: 18px 48px;
background: var(–muted-black);
color: var(–soft-white);
text-decoration: none;
border-radius: 50px;
font-weight: 500;
font-size: 1.1rem;
transition: all 0.4s ease;
border: 2px solid var(–muted-black);
position: relative;
overflow: hidden;
animation-delay: 0.6s;
}
.cta-button::before {
content: ”;
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: var(–beige);
transition: width 0.6s ease, height 0.6s ease, top 0.6s ease, left 0.6s ease;
transform: translate(-50%, -50%);
z-index: 0;
}
.cta-button:hover::before {
width: 300px;
height: 300px;
}
.cta-button:hover {
color: var(–dark-text);
border-color: var(–beige);
transform: translateY(-2px);
}
.cta-button span {
position: relative;
z-index: 1;
}
/* Section Spacing */
section {
padding: 100px 24px;
position: relative;
}
/* Problem Section */
.problem {
background: var(–soft-white);
}
.section-title {
text-align: center;
font-size: clamp(2rem, 4vw, 3rem);
margin-bottom: 60px;
color: var(–dark-text);
font-style: italic;
}
.problem-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 40px;
max-width: 1000px;
margin: 0 auto;
}
.problem-item {
padding: 40px 32px;
background: var(–cream);
border-radius: 16px;
transition: all 0.3s ease;
border: 2px solid transparent;
}
.problem-item:hover {
transform: translateY(-8px);
border-color: var(–beige);
box-shadow: 0 12px 40px rgba(160, 137, 114, 0.15);
}
.problem-item::before {
content: ‘—’;
display: block;
color: var(–beige);
font-size: 2rem;
margin-bottom: 16px;
}
.problem-item p {
font-size: 1.1rem;
line-height: 1.7;
color: var(–dark-text);
}
/* Solution Section */
.solution {
background: linear-gradient(to bottom, var(–soft-white), var(–cream));
}
.solution-intro {
text-align: center;
max-width: 700px;
margin: 0 auto 80px;
font-size: 1.2rem;
line-height: 1.8;
color: var(–warm-brown);
}
.benefits {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 48px;
max-width: 1100px;
margin: 0 auto;
}
.benefit {
text-align: center;
padding: 48px 32px;
background: var(–soft-white);
border-radius: 20px;
transition: all 0.4s ease;
}
.benefit:hover {
transform: translateY(-10px);
box-shadow: 0 20px 60px rgba(160, 137, 114, 0.2);
}
.benefit-icon {
font-size: 3rem;
margin-bottom: 24px;
display: block;
}
.benefit h3 {
font-size: 1.5rem;
margin-bottom: 16px;
color: var(–dark-text);
}
.benefit p {
color: var(–warm-brown);
font-size: 1.05rem;
line-height: 1.7;
}
/* Form Section */
.form-section {
background: var(–muted-black);
color: var(–soft-white);
padding: 120px 24px;
}
.form-section .section-title {
color: var(–soft-white);
}
.form-intro {
text-align: center;
max-width: 600px;
margin: 0 auto 32px;
font-size: 1.15rem;
color: var(–beige);
line-height: 1.7;
}
.form-features {
text-align: center;
max-width: 500px;
margin: 0 auto 60px;
}
.form-features ul {
list-style: none;
padding: 0;
}
.form-features li {
margin-bottom: 12px;
color: var(–cream);
font-size: 1.05rem;
}
.form-features li::before {
content: ‘✓ ‘;
color: var(–beige);
font-weight: bold;
margin-right: 8px;
}
.email-form {
max-width: 500px;
margin: 0 auto;
}
.form-group {
margin-bottom: 24px;
}
.form-group label {
display: block;
margin-bottom: 8px;
font-weight: 500;
color: var(–beige);
}
.form-group input {
width: 100%;
padding: 16px 20px;
border: 2px solid var(–beige);
border-radius: 12px;
font-size: 1.05rem;
font-family: ‘DM Sans’, sans-serif;
background: var(–soft-white);
color: var(–dark-text);
transition: all 0.3s ease;
}
.form-group input:focus {
outline: none;
border-color: var(–warm-brown);
box-shadow: 0 0 0 4px rgba(212, 197, 176, 0.2);
}
.submit-button {
width: 100%;
padding: 18px;
background: var(–beige);
color: var(–dark-text);
border: none;
border-radius: 50px;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
font-family: ‘DM Sans’, sans-serif;
}
.submit-button:hover {
background: var(–warm-brown);
color: var(–soft-white);
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(212, 197, 176, 0.4);
}
.success-message {
display: none;
text-align: center;
padding: 40px;
background: var(–beige);
color: var(–dark-text);
border-radius: 16px;
margin-top: 32px;
}
.success-message.show {
display: block;
animation: slideDown 0.5s ease;
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateY(-20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.success-message h3 {
font-size: 1.8rem;
margin-bottom: 16px;
}
.success-message p {
font-size: 1.1rem;
margin-bottom: 24px;
}
.instagram-button {
display: inline-block;
padding: 14px 32px;
background: var(–dark-text);
color: var(–soft-white);
text-decoration: none;
border-radius: 50px;
font-weight: 500;
transition: all 0.3s ease;
}
.instagram-button:hover {
background: var(–muted-black);
transform: translateY(-2px);
}
/* Final CTA */
.final-cta {
text-align: center;
padding: 100px 24px;
background: var(–cream);
}
.final-cta h2 {
font-size: clamp(2rem, 4vw, 3.5rem);
margin-bottom: 24px;
font-style: italic;
color: var(–dark-text);
}
.final-cta p {
font-size: 1.2rem;
color: var(–warm-brown);
margin-bottom: 48px;
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
/* Footer */
footer {
text-align: center;
padding: 48px 24px;
background: var(–muted-black);
color: var(–beige);
}
footer p {
margin-bottom: 16px;
}
footer a {
color: var(–beige);
text-decoration: none;
transition: color 0.3s ease;
}
footer a:hover {
color: var(–soft-white);
}
/* Responsive */
@media (max-width: 768px) {
.hero {
min-height: 100vh;
padding: 60px 20px;
}
section {
padding: 80px 20px;
}
.problem-grid,
.benefits {
gap: 32px;
}
.form-section {
padding: 80px 20px;
}
}
</style>
</head>
<body>
<!– Hero Section –>
<section class=”hero”>
<div class=”hero-content”>
<div class=”logo”>
<span class=”allso”>allso</span><span class=”meal”>meal</span>
</div>
<h1>Your fridge already has what you need.</h1>
<p>Simple, real meals for tired days — no pressure, no perfection, just comfort.</p>
<a href=”#form” class=”cta-button”><span>Get Weekly Meal Ideas</span></a>
</div>
</section>
<!– Problem Section –>
<section class=”problem”>
<div class=”container”>
<h2 class=”section-title”>Does this sound familiar?</h2>
<div class=”problem-grid”>
<div class=”problem-item”>
<p>Too exhausted after work to even think about cooking</p>
</div>
<div class=”problem-item”>
<p>Half-used tofu and random veggies sitting in your fridge</p>
</div>
<div class=”problem-item”>
<p>”Simple recipes” online still feel complicated in real life</p>
</div>
<div class=”problem-item”>
<p>Guilt every time you throw food away</p>
</div>
</div>
</div>
</section>
<!– Solution Section –>
<section class=”solution”>
<div class=”container”>
<h2 class=”section-title”>What if cooking could feel manageable again?</h2>
<div class=”solution-intro”>
<p>ALLSO MEAL helps you turn leftover groceries into comforting meals — in 15-30 minutes, with what’s already in your fridge.</p>
<p style=”margin-top: 20px;”>No fancy ingredients. No complicated steps. Just realistic, repeatable recipes and the permission to cook “good enough” meals without guilt.</p>
</div>
<div class=”benefits”>
<div class=”benefit”>
<span class=”benefit-icon”>⏱️</span>
<h3>15-30 Minute Meals</h3>
<p>Quick recipes that fit your tired evenings. No marathon cooking sessions.</p>
</div>
<div class=”benefit”>
<span class=”benefit-icon”>🥬</span>
<h3>Leftover-Friendly</h3>
<p>Use what you already have — tofu, veggies, rice, eggs. No special grocery trips.</p>
</div>
<div class=”benefit”>
<span class=”benefit-icon”>🔄</span>
<h3>Weekly Routines</h3>
<p>3-5 simple meals you can rotate every week. Cooking becomes predictable, not chaotic.</p>
</div>
</div>
</div>
</section>
<!– Form Section –>
<section class=”form-section” id=”form”>
<div class=”container”>
<h2 class=”section-title”>Start this week with 3 easy meals</h2>
<div class=”form-intro”>
<p>Get our free starter guide: <strong>3 Leftover-Friendly Meals You Can Make This Week</strong> — plus weekly recipe ideas and honest food stories delivered to your inbox.</p>
</div>
<div class=”form-features”>
<ul>
<li>3 simple, 15-minute recipes</li>
<li>Shopping list for basic ingredients</li>
<li>Tips for reducing food waste</li>
</ul>
</div>
<form class=”email-form” id=”emailForm”>
<div class=”form-group”>
<label for=”name”>First Name (optional)</label>
<input type=”text” id=”name” name=”name” placeholder=”Your name”>
</div>
<div class=”form-group”>
<label for=”email”>Email Address *</label>
<input type=”email” id=”email” name=”email” placeholder=”your@email.com” required>
</div>
<button type=”submit” class=”submit-button”>Send Me the Free Guide</button>
</form>
<div class=”success-message” id=”successMessage”>
<h3>Check your inbox! 📬</h3>
<p>Your free meal guide is on its way.</p>
<p style=”font-size: 0.95rem; margin-bottom: 24px;”>What to expect: Weekly meal ideas every Wednesday + honest kitchen stories</p>
<a href=”https://instagram.com/allso_meal” class=”instagram-button” target=”_blank”>Follow on Instagram</a>
</div>
</div>
</section>
<!– Final CTA –>
<section class=”final-cta”>
<div class=”container”>
<h2>You’re not failing. You’re just tired.</h2>
<p>Let’s make cooking feel doable again — one simple meal at a time.</p>
<a href=”#form” class=”cta-button”><span>Get Started</span></a>
</div>
</section>
<!– Footer –>
<footer>
<p>© 2026 ALLSO MEAL. Made with care for tired days.</p>
<p><a href=”https://instagram.com/allso_meal” target=”_blank”>Instagram</a> | <a href=”mailto:hello@allsomeal.com”>Contact</a></p>
</footer>
<script>
// Smooth scrolling
document.querySelectorAll(‘a[href^=”#”]’).forEach(anchor => {
anchor.addEventListener(‘click’, function (e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute(‘href’));
if (target) {
target.scrollIntoView({
behavior: ‘smooth’,
block: ‘start’
});
}
});
});
// Form submission
document.getElementById(’emailForm’).addEventListener(‘submit’, function(e) {
e.preventDefault();
const email = document.getElementById(’email’).value;
const name = document.getElementById(‘name’).value;
// Here you would normally send to your email service
// For now, we’ll just show the success message
// Hide form
this.style.display = ‘none’;
// Show success message
document.getElementById(‘successMessage’).classList.add(‘show’);
// Optional: Send to your backend or email service
// fetch(‘/your-endpoint’, {
// method: ‘POST’,
// headers: {‘Content-Type’: ‘application/json’},
// body: JSON.stringify({email, name})
// });
console.log(‘Form submitted:’, { email, name });
});
</script>
</body>
</html>
