HTML
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div class="hearts-container">
<div class="content">
<nav class="menu">
<a href="#gallery">Memories</a>
</nav>
<div class="card">
</div>
</section>
<div class="envelope">
<div class="letter-content">
<p>On this special day, I want to tell you how much you mean to me. Your love fills my
heart with joy and makes every day brighter. You're not just my valentine, you're my best friend, my
confident, and my soulmate.</p>
<p>Thank you for being you, and for choosing to share your life with me. I love you
more with each passing day.</p>
<p class="signature">Forever Yours,<br>Me </p>
</div>
</div>
</div>
</section>
<div class="photo-grid">
<img src="https://plus.unsplash.com/premium_photo-1670601070125-
a0f3c2862d1d?w=500&auto=format&fit=crop&q=60&ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8aW1hZ2UlMjBvZiUyMGElMjBiZWF1dGlmdWwlMjB
waW5rJTIwcm9zZSUyMGluJTIwdmVzc2VsfGVufDB8fDB8fHww" alt="Memory 1">
<img src="https://images.unsplash.com/photo-1523438885200-e635ba2c371e?w=600"
alt="Memory 2">
<img src="https://images.unsplash.com/photo-1516589178581-6cd7833ae3b2?w=600"
alt="Memory 3">
<img src="https://media.istockphoto.com/id/2171284151/photo/a-couple-enjoys-a-
joyful-moment-together-on-a-serene-autumn-
day.jpg?s=612x612&w=0&k=20&c=7jTDSb03hZ5aPzvTWm4KIU9Lkn_sgdJtWPnNPWbOXCQ="
alt="Memory 4">
<img src="https://images.unsplash.com/photo-1453230645768-
7ecb0653013d?w=500&auto=format&fit=crop&q=60&ixlib=rb-
4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTl8fHBpY3R1cmUlMjBvZiUyMGElMjBjb3VwbGUlMjBza
XR0aW5nJTIwbG9uZWx5fGVufDB8fDB8fHww" alt="Memory 5">
<img src="https://images.unsplash.com/photo-1518199266791-5375a83190b7?w=600"
alt="Memory 6">
</div>
</div>
</section>
<div class="song-list">
</div>
</div>
</section>
</div>
</body>
</html>
CSS
*{
margin: 0;
padding: 0;
box-sizing: border-box;
body {
min-height: 100vh;
position: relative;
.hearts-container {
position: fixed;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 1;
.heart {
position: absolute;
font-size: 24px;
opacity: 0.7;
@keyframes fall {
0% {
opacity: 1;
100% {
/* Content Styles */
.content {
position: relative;
z-index: 2;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
padding: 2rem;
/* Navigation Menu */
.menu {
padding: 1rem;
border-radius: 50px;
margin-bottom: 2rem;
backdrop-filter: blur(10px);
.menu a {
color: #ff4b6e;
text-decoration: none;
margin: 0 0.5rem;
border-radius: 25px;
.menu a:hover {
background: #ff4b6e;
color: white;
}
.menu a.active {
background: #ff4b6e;
color: white;
/* Card Styles */
.card {
padding: 2rem;
border-radius: 20px;
max-width: 800px;
width: 100%;
margin: 0 auto;
backdrop-filter: blur(10px);
text-align: center;
h1 {
color: #ff4b6e;
font-size: 2.5rem;
margin-bottom: 1rem;
h2 {
color: #ff4b6e;
font-size: 2rem;
margin-bottom: 1.5rem;
p{
color: #666;
line-height: 1.6;
margin-bottom: 1rem;
.big-heart {
font-size: 5rem;
@keyframes pulse {
0% { transform: scale(1); }
/* Letter Styles */
.letter {
cursor: pointer;
}
.envelope {
background: #fff;
padding: 2rem;
border-radius: 10px;
transform-origin: center;
.letter:hover .envelope {
transform: scale(1.02);
.letter-content {
text-align: left;
.signature {
text-align: right;
font-style: italic;
margin-top: 2rem;
/* Gallery Styles */
.photo-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin-top: 1rem;
.photo-grid img {
width: 100%;
height: 200px;
object-fit: cover;
border-radius: 10px;
.photo-grid img:hover {
transform: scale(1.05);
/* Playlist Styles */
.song-list {
display: flex;
flex-direction: column;
gap: 1rem;
.song {
padding: 1rem;
border-radius: 10px;
.song:hover {
transform: translateX(10px);
/* Page Transitions */
.page {
display: none;
.page.active {
display: block;
@keyframes fadeIn {
/* Responsive Design */
.menu {
display: flex;
flex-direction: column;
gap: 0.5rem;
width: 100%;
max-width: 300px;
.menu a {
text-align: center;
margin: 0;
.card {
padding: 1.5rem;
.photo-grid {
#welcome:target,
#letter:target,
#gallery:target,
#playlist:target {
display: block;
}
#welcome:not(:target),
#letter:not(:target),
#gallery:not(:target),
#playlist:not(:target) {
display: none;
#welcome:not(:target):not(:only-child) {
display: block;