<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>LUMÉRA — Your Glow, Uncomplicated</title>
<meta name="description" content="LUMÉRA — premium, cruelty-free beauty. Skincare, makeup and hair rituals that solve real problems." />
<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=Playfair+Display:ital,wght@0,400;0,600;0,700;0,900;1,600;1,700&family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script src="https://cdn.tailwindcss.com"></script>
<script>
tailwind.config = {
theme: {
extend: {
fontFamily: {
display: ['"Playfair Display"', 'serif'],
body: ['Poppins', 'sans-serif'],
},
colors: {
rose: '#FF2E87',
coral: '#FF5C5C',
lavender:'#B98CFF',
sky: '#3FC1FF',
mint: '#3FE0A5',
gold: '#E8B923',
peach: '#FFB25E',
ink: '#241221',
},
}
}
}
</script>
<style>
html{ scroll-behavior:smooth; }
body{ background:#241221; }
::selection{ background:#FF2E87; color:#fff; }
@media (prefers-reduced-motion: reduce){
*{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
}
a:focus-visible, button:focus-visible{ outline:2px solid #FFB25E; outline-offset:3px; border-radius:8px; }
/* Vibrant animated gradient backdrop */
.aurora{
position:absolute; inset:-20%;
background:
radial-gradient(38% 45% at 15% 20%, #FF2E87 0%, transparent 60%),
radial-gradient(42% 50% at 85% 15%, #3FC1FF 0%, transparent 60%),
radial-gradient(45% 55% at 75% 85%, #E8B923 0%, transparent 60%),
radial-gradient(40% 45% at 20% 85%, #3FE0A5 0%, transparent 60%),
radial-gradient(35% 40% at 50% 50%, #B98CFF 0%, transparent 65%);
filter: blur(10px) saturate(1.3);
animation: auroraShift 16s ease-in-out infinite alternate;
}
@keyframes auroraShift{
0%{ transform: rotate(0deg) scale(1); }
100%{ transform: rotate(8deg) scale(1.12); }
}
/* Signature: Glow Ribbon — a single vivid gradient stroke that threads through the hero */
.glow-ribbon path{
stroke:url(#ribbonGradient); stroke-width:3; fill:none;
filter: drop-shadow(0 0 22px rgba(255,46,135,.55));
animation: ribbonFloat 12s ease-in-out infinite;
}
@keyframes ribbonFloat{
0%,100%{ transform:translateY(0) scaleX(1); }
50%{ transform:translateY(-16px) scaleX(1.02); }
}
.blob{ position:absolute; border-radius:9999px; filter:blur(50px); opacity:.65; animation: blobFloat 9s ease-in-out infinite; }
@keyframes blobFloat{
0%,100%{ transform: translate(0,0) scale(1); }
50%{ transform: translate(18px,-22px) scale(1.1); }
}
.btn-ripple{ position:relative; overflow:hidden; }
.btn-ripple span.ripple{
position:absolute; border-radius:9999px; background:rgba(255,255,255,.55);
transform:scale(0); animation: rippleAnim .6s ease-out forwards; pointer-events:none;
}
@keyframes rippleAnim{ to{ transform:scale(3); opacity:0; } }
.fade-up{ opacity:0; transform:translateY(22px); animation: fadeUp .8s ease forwards; }
@keyframes fadeUp{ to{ opacity:1; transform:translateY(0); } }
.shine-card::before{
content:""; position:absolute; inset:0;
background: radial-gradient(120% 120% at 20% 10%, rgba(255,255,255,.5), transparent 55%);
mix-blend-mode: overlay; pointer-events:none;
}
</style>
</head>
<body class="font-body antialiased text-white">
<section id="top" class="relative min-h-screen overflow-hidden flex flex-col">
<!-- vibrant animated aurora backdrop -->
<div class="aurora" aria-hidden="true"></div>
<div class="absolute inset-0 bg-ink/35" aria-hidden="true"></div>
<!-- floating gradient blobs -->
<div class="blob w-72 h-72 bg-lavender -top-10 -left-10"></div>
<div class="blob w-96 h-96 bg-peach top-24 -right-16" style="animation-delay:2s"></div>
<div class="blob w-60 h-60 bg-mint bottom-10 left-1/4" style="animation-delay:4s"></div>
<div class="blob w-52 h-52 bg-sky bottom-0 right-1/4" style="animation-delay:6s"></div>
<!-- signature glow ribbon -->
<div class="absolute inset-0 pointer-events-none" aria-hidden="true">
<svg class="glow-ribbon w-full h-full" viewBox="0 0 1440 900" preserveAspectRatio="none">
<defs>
<linearGradient id="ribbonGradient" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#FF2E87"/>
<stop offset="30%" stop-color="#B98CFF"/>
<stop offset="60%" stop-color="#3FC1FF"/>
<stop offset="100%" stop-color="#E8B923"/>
</linearGradient>
</defs>
<path d="M -100 220 C 250 100, 450 380, 750 260 S 1250 60, 1550 240" />
<path d="M -100 460 C 300 540, 500 280, 800 460 S 1300 600, 1550 440" opacity="0.5" />
</svg>
</div>
<!-- minimal top bar -->
<header class="relative z-10 max-w-7xl mx-auto w-full px-5 sm:px-8 h-20 flex items-center justify-between">
<a href="#top" class="font-display text-2xl sm:text-3xl font-700 tracking-wide">
LUM<span class="text-rose">É</span>RA
</a>
<nav class="hidden md:flex items-center gap-8 text-sm font-medium text-white/85">
<a href="#" class="hover:text-gold transition-colors">Shop</a>
<a href="#" class="hover:text-gold transition-colors">Skincare</a>
<a href="#" class="hover:text-gold transition-colors">Makeup</a>
<a href="#" class="hover:text-gold transition-colors">Journal</a>
</nav>
<a href="#" class="p-2.5 rounded-full bg-white/10 hover:bg-white/20 transition-colors" aria-label="Cart">
<svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"><path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l2.4 12.4a2 2 0 0 0 2 1.6h7.2a2 2 0 0 0 2-1.6L20 8H6"/><circle cx="9" cy="20" r="1"/><circle cx="17" cy="20" r="1"/></svg>
</a>
</header>
<!-- hero content -->
<div class="relative z-10 flex-1 max-w-7xl mx-auto w-full px-5 sm:px-8 grid lg:grid-cols-2 gap-14 items-center py-10 sm:py-14">
<div>
<p class="fade-up inline-flex items-center gap-2 text-xs font-semibold tracking-[0.2em] uppercase bg-white/10 border border-white/20 px-4 py-1.5 rounded-full mb-6" style="animation-delay:.05s">
<span class="w-1.5 h-1.5 rounded-full bg-gold animate-pulse"></span> New Season Edit is Live
</p>
<h1 class="fade-up font-display text-5xl sm:text-6xl lg:text-7xl leading-[1.05]" style="animation-delay:.15s">
Your glow,
<span class="italic bg-gradient-to-r from-rose via-coral to-gold bg-clip-text text-transparent">uncomplicated.</span>
</h1>
<p class="fade-up mt-6 text-lg text-white/80 max-w-md" style="animation-delay:.3s">
Skincare, makeup and hair rituals built around real problems — dullness, damage, dryness, downtime — not another 12-step routine you'll abandon by Friday.
</p>
<div class="fade-up mt-9 flex flex-wrap items-center gap-4" style="animation-delay:.45s">
<a href="#" onclick="ripple(event)" class="btn-ripple relative bg-gradient-to-r from-rose to-coral text-white px-8 py-4 rounded-full font-semibold text-sm tracking-wide hover:brightness-110 transition-all shadow-[0_15px_45px_-10px_rgba(255,46,135,.6)]">
Shop Best Sellers
</a>
<a href="#" onclick="ripple(event)" class="btn-ripple relative border-2 border-white/40 px-8 py-4 rounded-full font-semibold text-sm tracking-wide hover:border-gold hover:text-gold transition-colors">
Explore Collection
</a>
</div>
<div class="fade-up mt-10 flex flex-wrap gap-x-8 gap-y-3 text-xs font-medium text-white/70" style="animation-delay:.6s">
<span class="flex items-center gap-1.5">🌿 Cruelty-free</span>
<span class="flex items-center gap-1.5">🔬 Derm-tested</span>
<span class="flex items-center gap-1.5">★ 4.8 avg / 38,000+ reviews</span>
</div>
</div>
<div class="fade-up relative" style="animation-delay:.4s">
<div class="aspect-[4/5] rounded-[2rem] bg-gradient-to-br from-rose via-lavender to-sky shadow-[0_25px_70px_-15px_rgba(255,46,135,.55)] relative overflow-hidden shine-card">
<div class="absolute inset-0 flex items-center justify-center">
<span class="font-display italic text-3xl text-white drop-shadow-lg text-center px-10">"The serum that finally fixed my 2am doom-scroll skin."</span>
</div>
</div>
<div class="absolute -bottom-8 -left-8 bg-ink/90 backdrop-blur rounded-3xl shadow-2xl p-5 w-52 hidden sm:block border border-white/10">
<p class="text-xs text-white/50 mb-1">This week's hero</p>
<p class="font-display text-lg leading-tight">Cloud Dew Hyaluronic Serum</p>
<div class="flex items-center gap-1 text-gold text-sm mt-1" aria-label="4.9 out of 5 stars">★★★★★ <span class="text-white/50 text-xs ml-1">4.9</span></div>
</div>
</div>
</div>
<!-- scroll cue -->
<div class="relative z-10 flex justify-center pb-6">
<div class="w-6 h-10 rounded-full border-2 border-white/40 flex items-start justify-center p-1.5">
<span class="w-1.5 h-1.5 rounded-full bg-gold animate-bounce"></span>
</div>
</div>
</section>
<script>
function ripple(evt){
evt.preventDefault();
const btn = evt.currentTarget;
const rect = btn.getBoundingClientRect();
const span = document.createElement('span');
span.className = 'ripple';
const size = Math.max(rect.width, rect.height);
span.style.width = span.style.height = size+'px';
span.style.left = (evt.clientX - rect.left - size/2)+'px';
span.style.top = (evt.clientY - rect.top - size/2)+'px';
btn.appendChild(span);
setTimeout(()=>span.remove(), 650);
}
</script>
</body>
</html>