<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Happy Birthday Radhikaa!</title>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
user-select: none;
}
body {
background: linear-gradient(135deg, #2c1b3d, #1a1025);
color: #fff;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container {
width: 100%;
max-width: 420px;
height: 100vh;
max-height: 850px;
background: linear-gradient(180deg, #2c1b3d, #160c22);
position: relative;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.screen {
position: absolute;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 20px;
opacity: 0;
pointer-events: none;
transition: opacity 0.5s ease-in-out;
text-align: center;
}
.screen.active {
opacity: 1;
pointer-events: auto;
}
/* Gift Screen */
.gift-box {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
padding: 30px 20px;
border-radius: 20px;
width: 85%;
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
backdrop-filter: blur(4px);
}
.gift-icon {
font-size: 50px;
margin-bottom: 15px;
}
h2 {
font-size: 22px;
margin-bottom: 8px;
font-weight: 600;
}
p {
font-size: 14px;
color: #d1d1d1;
margin-bottom: 25px;
}
.btn {
background: linear-gradient(135deg, #ff758c, #ff7eb3);
color: white;
border: none;
padding: 12px 30px;
border-radius: 30px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
box-shadow: 0 4px 15px rgba(255, 117, 140, 0.4);
transition: transform 0.2s;
}
.btn:active {
transform: scale(0.95);
}
/* Tree Screen */
.tree-container {
position: relative;
width: 100%;
height: 60%;
display: flex;
justify-content: center;
align-items: flex-end;
}
.tree-text {
padding: 20px;
z-index: 10;
}
/* Cake Screen */
.cake-area {
font-size: 80px;
margin-bottom: 20px;
position: relative;
}
.candle {
width: 8px;
height: 35px;
background: #fff;
position: absolute;
top: -30px;
left: 50%;
transform: translateX(-50%);
border-radius: 4px;
}
.flame {
width: 12px;
height: 20px;
background: #ff9f43;
border-radius: 50% 50% 20% 20%;
position: absolute;
top: -20px;
left: 50%;
transform: translateX(-50%);
box-shadow: 0 0 10px #ff9f43, 0 0 20px #ff5252;
animation: flicker 0.5s infinite alternate;
cursor: pointer;
}
@keyframes flicker {
0% { transform: translateX(-50%) scale(1); opacity: 0.9; }
100% { transform: translateX(-50%) scale(1.1); opacity: 1; }
}
.flame.out {
display: none;
}
/* Balloons Screen */
.balloons-list {
width: 100%;
max-height: 65vh;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 10px;
padding: 10px;
text-align: left;
}
.reason-card {
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 117, 140, 0.3);
padding: 12px 15px;
border-radius: 12px;
font-size: 13px;
}
.reason-card span {
display: block;
font-size: 10px;
color: #ff7eb3;
text-transform: uppercase;
font-weight: 600;
margin-bottom: 4px;
}
/* Memory Lane */
.polaroid {
background: #fff;
padding: 15px 15px 35px 15px;
color: #333;
border-radius: 4px;
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
transform: rotate(-3deg);
width: 240px;
margin-bottom: 20px;
}
.polaroid img {
width: 100%;
height: 220px;
object-fit: cover;
border-radius: 2px;
}
.polaroid p {
color: #333;
margin: 10px 0 0 0;
font-family: cursive;
font-size: 16px;
}
/* Letter Screen */
.envelope-box {
background: #d4a373;
width: 280px;
height: 180px;
border-radius: 10px;
position: relative;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
box-shadow: 0 10px 25px rgba(0,0,0,0.4);
}
.envelope-seal {
width: 45px;
height: 45px;
background: #ff758c;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
font-size: 18px;
box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.letter-paper {
background: #fefae0;
color: #333;
width: 90%;
max-height: 70vh;
overflow-y: auto;
padding: 20px;
border-radius: 8px;
text-align: left;
font-size: 13px;
line-height: 1.6;
box-shadow: 0 5px 20px rgba(0,0,0,0.5);
display: none;
}
.letter-paper.show {
display: block;
}
</style>
</head>
<body>
<div class="container">
<!-- Screen 1: Gift Unwrap -->
<div class="screen active" id="screen-1">
<div class="gift-box">
<div class="gift-icon">🎁</div>
<h2>A SURPRISE FOR</h2>
<p style="font-size: 20px; font-weight: bold; color: #ff7eb3; margin-bottom: 10px;">Radhikaa</p>
<p>Vishal made this — just for you.</p>
<button class="btn" onclick="nextScreen()">Unwrap it ✨</button>
</div>
</div>
<!-- Screen 2: Heart Tree -->
<div class="screen" id="screen-2" onclick="nextScreen()">
<div style="font-size: 60px; margin-bottom: 20px;">🌳💖</div>
<p style="margin-bottom: 5px;">it's officially your day</p>
<h2 style="color: #ff7eb3; font-size: 26px;">Happy Birthday, Radhikaa</h2>
<p style="margin-top: 10px; font-size: 13px;">and just like that, you're turning 17 ✨</p>
<p style="font-size: 11px; color: rgba(255,255,255,0.5); position: absolute; bottom: 20px;">Tap anywhere to continue</p>
</div>
<!-- Screen 3: Cake & Candle -->
<div class="screen" id="screen-3">
<p style="margin-bottom: 30px;">First things first 🎂</p>
<div class="cake-area">
🍰
<div class="candle"><div class="flame" id="flame" onclick="blowCandle(event)"></div></div>
</div>
<h2 id="cake-title">Make a wish 🕯️</h2>
<p id="cake-sub" style="font-size: 12px; margin-top: 5px;">Tap the flame to blow it out</p>
</div>
<!-- Screen 4: Reasons / Balloons -->
<div class="screen" id="screen-4">
<h2 style="margin-bottom: 5px;">Reasons you're loved ❤️</h2>
<p style="font-size: 12px; margin-bottom: 15px;">Here are a few things:</p>
<div class="balloons-list">
<div class="reason-card"><span>Reason No. 1</span>Happy Birthday betuu 🥺</div>
<div class="reason-card"><span>Reason No. 2</span>Happy happy wala birthday mere bete ko 🌸🎂</div>
<div class="reason-card"><span>Reason No. 3</span>Tu hmesha khush rhe beta 🤌</div>
<div class="reason-card"><span>Reason No. 4</span>Happy Birthday meri kabutarii!! 💖</div>
<div class="reason-card"><span>Reason No. 5</span>Teri sari wishes puri ho 💌</div>
</div>
<button class="btn" style="margin-top: 15px; padding: 8px 20px; font-size: 14px;" onclick="nextScreen()">Keep going ✨</button>
</div>
<!-- Screen 5: Memory Lane -->
<div class="screen" id="screen-5">
<p style="margin-bottom: 15px;">A walk down memory lane 📸</p>
<div class="polaroid">
<img src="https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400" alt="Radhikaa">
<p>Radhiii 🤌</p>
</div>
<button class="btn" style="padding: 8px 20px; font-size: 14px;" onclick="nextScreen()">Keep going ✨</button>
</div>
<!-- Screen 6: Letter -->
<div class="screen" id="screen-6">
<p id="letter-top-text" style="margin-bottom: 20px;">One last thing, Radhikaa..<br><span style="font-size: 12px; color: #ff7eb3;">Vishal wrote you a letter.</span></p>
<div class="envelope-box" id="env" onclick="openLetter()">
<div class="envelope-seal">R</div>
</div>
<div class="letter-paper" id="letter">
<p><b>Dear Radhikaa,</b><br><br>
I keep thinking about how lucky I got with you. You have seen me at my worst and stayed anyway, and I do not say thank you nearly enough for that 🤍 This year, I hope life is gentle with you...<br><br>
<b>With all my love,</b><br>— Vishal</p>
<button class="btn" style="margin-top: 15px; padding: 6px 15px; font-size: 13px;" onclick="nextScreen()">Continue</button>
</div>
</div>
<!-- Screen 7: Final Ending -->
<div class="screen" id="screen-7">
<div style="font-size: 50px; margin-bottom: 10px;">🐱🌷</div>
<h2 style="font-size: 28px; color: #ff7eb3;">HAPPY BIRTHDAY</h2>
<h2 style="font-size: 28px;">Radhikaa!</h2>
</div>
</div>
<script>
let currentScreen = 1;
const totalScreens = 7;
function nextScreen() {
if(currentScreen < totalScreens) {
document.getElementById(`screen-${currentScreen}`).classList.remove('active');
currentScreen++;
document.getElementById(`screen-${currentScreen}`).classList.add('active');
}
}
function blowCandle(event) {
event.stopPropagation();
document.getElementById('flame').classList.add('out');
document.getElementById('cake-title').innerText = "Happy Birthday, Radhikaa!";
document.getElementById('cake-sub').innerText = "Tap anywhere to continue";
document.getElementById('screen-3').setAttribute('onclick', 'nextScreen()');
}
function openLetter() {
document.getElementById('env').style.display = 'none';
document.getElementById('letter-top-text').style.display = 'none';
document.getElementById('letter').classList.add('show');
}
</script>
</body>
</html><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Happy Birthday Radhikaa!</title>
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
user-select: none;
}
body {
background: linear-gradient(135deg, #2c1b3d, #1a1025);
color: #fff;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.container {
width: 100%;
max-width: 420px;
height: 100vh;
max-height: 850px;
background: linear-gradient(180deg, #2c1b3d, #160c22);
position: relative;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.5);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.screen {
position: absolute;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 20px;
opacity: 0;
pointer-events: none;
transition: opacity 0.5s ease-in-out;
text-align: center;
}
.screen.active {
opacity: 1;
pointer-events: auto;
}
/* Gift Screen */
.gift-box {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
padding: 30px 20px;
border-radius: 20px;
width: 85%;
box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
backdrop-filter: blur(4px);
}
.gift-icon {
font-size: 50px;
margin-bottom: 15px;
}
h2 {
font-size: 22px;
margin-bottom: 8px;
font-weight: 600;
}
p {
font-size: 14px;
color: #d1d1d1;
margin-bottom: 25px;
}
.btn {
background: linear-gradient(135deg, #ff758c, #ff7eb3);
color: white;
border: none;
padding: 12px 30px;
border-radius: 30px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
box-shadow: 0 4px 15px rgba(255, 117, 140, 0.4);
transition: transform 0.2s;
}
.btn:active {
transform: scale(0.95);
}
/* Tree Screen */
.tree-container {
position: relative;
width: 100%;
height: 60%;
display: flex;
justify-content: center;
align-items: flex-end;
}
.tree-text {
padding: 20px;
z-index: 10;
}
/* Cake Screen */
.cake-area {
font-size: 80px;
margin-bottom: 20px;
position: relative;
}
.candle {
width: 8px;
height: 35px;
background: #fff;
position: absolute;
top: -30px;
left: 50%;
transform: translateX(-50%);
border-radius: 4px;
}
.flame {
width: 12px;
height: 20px;
background: #ff9f43;
border-radius: 50% 50% 20% 20%;
position: absolute;
top: -20px;
left: 50%;
transform: translateX(-50%);
box-shadow: 0 0 10px #ff9f43, 0 0 20px #ff5252;
animation: flicker 0.5s infinite alternate;
cursor: pointer;
}
@keyframes flicker {
0% { transform: translateX(-50%) scale(1); opacity: 0.9; }
100% { transform: translateX(-50%) scale(1.1); opacity: 1; }
}
.flame.out {
display: none;
}
/* Balloons Screen */
.balloons-list {
width: 100%;
max-height: 65vh;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 10px;
padding: 10px;
text-align: left;
}
.reason-card {
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 117, 140, 0.3);
padding: 12px 15px;
border-radius: 12px;
font-size: 13px;
}
.reason-card span {
display: block;
font-size: 10px;
color: #ff7eb3;
text-transform: uppercase;
font-weight: 600;
margin-bottom: 4px;
}
/* Memory Lane */
.polaroid {
background: #fff;
padding: 15px 15px 35px 15px;
color: #333;
border-radius: 4px;
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
transform: rotate(-3deg);
width: 240px;
margin-bottom: 20px;
}
.polaroid img {
width: 100%;
height: 220px;
object-fit: cover;
border-radius: 2px;
}
.polaroid p {
color: #333;
margin: 10px 0 0 0;
font-family: cursive;
font-size: 16px;
}
/* Letter Screen */
.envelope-box {
background: #d4a373;
width: 280px;
height: 180px;
border-radius: 10px;
position: relative;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
box-shadow: 0 10px 25px rgba(0,0,0,0.4);
}
.envelope-seal {
width: 45px;
height: 45px;
background: #ff758c;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
font-size: 18px;
box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.letter-paper {
background: #fefae0;
color: #333;
width: 90%;
max-height: 70vh;
overflow-y: auto;
padding: 20px;
border-radius: 8px;
text-align: left;
font-size: 13px;
line-height: 1.6;
box-shadow: 0 5px 20px rgba(0,0,0,0.5);
display: none;
}
.letter-paper.show {
display: block;
}
</style>
</head>
<body>
<div class="container">
<!-- Screen 1: Gift Unwrap -->
<div class="screen active" id="screen-1">
<div class="gift-box">
<div class="gift-icon">🎁</div>
<h2>A SURPRISE FOR</h2>
<p style="font-size: 20px; font-weight: bold; color: #ff7eb3; margin-bottom: 10px;">Radhikaa</p>
<p>Vishal made this — just for you.</p>
<button class="btn" onclick="nextScreen()">Unwrap it ✨</button>
</div>
</div>
<!-- Screen 2: Heart Tree -->
<div class="screen" id="screen-2" onclick="nextScreen()">
<div style="font-size: 60px; margin-bottom: 20px;">🌳💖</div>
<p style="margin-bottom: 5px;">it's officially your day</p>
<h2 style="color: #ff7eb3; font-size: 26px;">Happy Birthday, Radhikaa</h2>
<p style="margin-top: 10px; font-size: 13px;">and just like that, you're turning 17 ✨</p>
<p style="font-size: 11px; color: rgba(255,255,255,0.5); position: absolute; bottom: 20px;">Tap anywhere to continue</p>
</div>
<!-- Screen 3: Cake & Candle -->
<div class="screen" id="screen-3">
<p style="margin-bottom: 30px;">First things first 🎂</p>
<div class="cake-area">
🍰
<div class="candle"><div class="flame" id="flame" onclick="blowCandle(event)"></div></div>
</div>
<h2 id="cake-title">Make a wish 🕯️</h2>
<p id="cake-sub" style="font-size: 12px; margin-top: 5px;">Tap the flame to blow it out</p>
</div>
<!-- Screen 4: Reasons / Balloons -->
<div class="screen" id="screen-4">
<h2 style="margin-bottom: 5px;">Reasons you're loved ❤️</h2>
<p style="font-size: 12px; margin-bottom: 15px;">Here are a few things:</p>
<div class="balloons-list">
<div class="reason-card"><span>Reason No. 1</span>Happy Birthday betuu 🥺</div>
<div class="reason-card"><span>Reason No. 2</span>Happy happy wala birthday mere bete ko 🌸🎂</div>
<div class="reason-card"><span>Reason No. 3</span>Tu hmesha khush rhe beta 🤌</div>
<div class="reason-card"><span>Reason No. 4</span>Happy Birthday meri kabutarii!! 💖</div>
<div class="reason-card"><span>Reason No. 5</span>Teri sari wishes puri ho 💌</div>
</div>
<button class="btn" style="margin-top: 15px; padding: 8px 20px; font-size: 14px;" onclick="nextScreen()">Keep going ✨</button>
</div>
<!-- Screen 5: Memory Lane -->
<div class="screen" id="screen-5">
<p style="margin-bottom: 15px;">A walk down memory lane 📸</p>
<div class="polaroid">
<img src="https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=400" alt="Radhikaa">
<p>Radhiii 🤌</p>
</div>
<button class="btn" style="padding: 8px 20px; font-size: 14px;" onclick="nextScreen()">Keep going ✨</button>
</div>
<!-- Screen 6: Letter -->
<div class="screen" id="screen-6">
<p id="letter-top-text" style="margin-bottom: 20px;">One last thing, Radhikaa..<br><span style="font-size: 12px; color: #ff7eb3;">Vishal wrote you a letter.</span></p>
<div class="envelope-box" id="env" onclick="openLetter()">
<div class="envelope-seal">R</div>
</div>
<div class="letter-paper" id="letter">
<p><b>Dear Radhikaa,</b><br><br>
I keep thinking about how lucky I got with you. You have seen me at my worst and stayed anyway, and I do not say thank you nearly enough for that 🤍 This year, I hope life is gentle with you...<br><br>
<b>With all my love,</b><br>— Vishal</p>
<button class="btn" style="margin-top: 15px; padding: 6px 15px; font-size: 13px;" onclick="nextScreen()">Continue</button>
</div>
</div>
<!-- Screen 7: Final Ending -->
<div class="screen" id="screen-7">
<div style="font-size: 50px; margin-bottom: 10px;">🐱🌷</div>
<h2 style="font-size: 28px; color: #ff7eb3;">HAPPY BIRTHDAY</h2>
<h2 style="font-size: 28px;">Radhikaa!</h2>
</div>
</div>
<script>
let currentScreen = 1;
const totalScreens = 7;
function nextScreen() {
if(currentScreen < totalScreens) {
document.getElementById(`screen-${currentScreen}`).classList.remove('active');
currentScreen++;
document.getElementById(`screen-${currentScreen}`).classList.add('active');
}
}
function blowCandle(event) {
event.stopPropagation();
document.getElementById('flame').classList.add('out');
document.getElementById('cake-title').innerText = "Happy Birthday, Radhikaa!";
document.getElementById('cake-sub').innerText = "Tap anywhere to continue";
document.getElementById('screen-3').setAttribute('onclick', 'nextScreen()');
}
function openLetter() {
document.getElementById('env').style.display = 'none';
document.getElementById('letter-top-text').style.display = 'none';
document.getElementById('letter').classList.add('show');
}
</script>
</body>
</html>3
3
55KB
59KB
186.0ms
108.0ms
186.0ms