/* =====================================================
GLOBAL
===================================================== */

body{
margin:0;
font-family:'Poppins',sans-serif;
color:white;
background: radial-gradient(circle at top,#1b0033,#000);
text-align:center;
overflow-x:hidden;

/* FIX: prevent floating WhatsApp CTA overlap */
padding-bottom:220px;
}

body::before{
content:"";
position:fixed;
width:100%;
height:100%;
background-image:url("https://www.transparenttextures.com/patterns/stardust.png");
opacity:0.2;
pointer-events:none;
}

/* =====================================================
SCREENS
===================================================== */

.screen{
display:none;
min-height:100vh;
justify-content:flex-start;
align-items:center;
flex-direction:column;
padding-top:80px;
padding-bottom:200px;
}

.screen.active{
display:flex;
}

/* =====================================================
HEADINGS
===================================================== */

h1{
font-family:'Great Vibes',cursive;
font-size:64px;
background:linear-gradient(45deg,#ff5ec4,#ff7aa8,#ffa6e7);
-webkit-background-clip:text;
-webkit-text-fill-color:transparent;
text-shadow:0 0 20px rgba(255,120,200,0.5);
letter-spacing:2px;
margin-bottom:20px;
}

h2,h3{
font-family:'Quicksand',sans-serif;
}

/* =====================================================
TEXT
===================================================== */

p{
font-family:'Quicksand',sans-serif;
font-size:20px;
color:#ffd1ec;
letter-spacing:0.5px;
opacity:0.9;
}

/* =====================================================
LOADER
===================================================== */

#loader{
position:fixed;
width:100%;
height:100%;
background:black;
display:flex;
flex-direction:column;
justify-content:center;
align-items:center;
z-index:999;
}

.heart{
font-size:50px;
animation:pulse 1.5s infinite;
}

@keyframes pulse{
0%{transform:scale(1);}
50%{transform:scale(1.3);}
100%{transform:scale(1);}
}

.progress{
width:250px;
height:6px;
background:#333;
border-radius:10px;
margin-top:20px;
}

.progress-bar{
height:100%;
width:0%;
background:#ff3cac;
animation:load 3s forwards;
}

@keyframes load{
100%{width:100%;}
}

/* =====================================================
BUTTONS
===================================================== */

button{
font-family:'Poppins',sans-serif;
padding:16px 40px;
border:none;
border-radius:40px;
font-size:20px;
background:linear-gradient(45deg,#ff4ecd,#8f4fff);
color:white;
cursor:pointer;
box-shadow:
0 10px 30px rgba(255,0,140,0.4),
0 0 20px rgba(255,0,200,0.4);
transition:all 0.3s ease;
margin-top:20px;
position:relative;
z-index:5;
}

button:hover{
transform:scale(1.08);
box-shadow:0 15px 40px rgba(255,0,140,0.6);
}

/* container for buttons */

.action-buttons{
display:flex;
flex-direction:column;
align-items:center;
gap:18px;
margin-top:40px;
margin-bottom:160px;
position:relative;
z-index:10;
}

/* =====================================================
GAME
===================================================== */

#gameArea{
width:400px;
height:300px;
border:2px solid #ff3cac;
border-radius:20px;
position:relative;
}

.heartObj{
position:absolute;
font-size:32px;
cursor:pointer;
animation:float 2s infinite alternate;
}

@keyframes float{
0%{transform:translateY(0);}
100%{transform:translateY(-15px);}
}

.sparkle{
position:absolute;
font-size:18px;
animation:pop 0.7s forwards;
}

@keyframes pop{
0%{transform:scale(0);}
100%{transform:scale(1.8);opacity:0;}
}

/* =====================================================
CONFETTI
===================================================== */

.confetti{
position:fixed;
top:-10px;
width:8px;
height:8px;
background:#ff4ecd;
animation:fall 2s linear;
}

@keyframes fall{
to{
transform:translateY(100vh) rotate(360deg);
}
}

/* =====================================================
GALLERY
===================================================== */

.gallery-slider{
display:flex;
gap:20px;
overflow-x:auto;
overflow-y:hidden;
scroll-snap-type:x mandatory;
padding:40px 20px;
width:100%;
scroll-behavior:smooth;
justify-content:flex-start;
}

.gallery-slider::-webkit-scrollbar{
display:none;
}

.gallery-slider img{
flex:0 0 320px;
width:320px;
height:380px;
object-fit:cover;
border-radius:20px;
scroll-snap-align:center;
box-shadow:0 10px 30px rgba(0,0,0,0.6);
transition:0.35s;
}

.gallery-slider img:hover{
transform:scale(1.05);
}

.gallery-screen{
display:flex;
flex-direction:column;
align-items:center;
}

/* =====================================================
LETTER
===================================================== */

.main-title{
font-family:'Great Vibes',cursive;
font-size:52px;
text-align:center;
color:#ff7acb;
margin-top:40px;
margin-bottom:30px;
text-shadow:0 0 18px rgba(255,0,120,0.8);
line-height:1.2;
}

.letter-box{
width:90%;
max-width:700px;
margin:auto;
padding:40px;
border-radius:20px;
background:linear-gradient(180deg,#24003d,#3b004f);
box-shadow:0 0 40px rgba(255,0,120,0.4);
text-align:left;
}

.letter-box p{
font-size:18px;
line-height:1.9;
color:#f0d9ff;
margin-bottom:22px;
}

.message{
white-space:pre-line;
line-height:1.8;
font-size:18px;
max-width:520px;
margin:auto;
}

/* =====================================================
FINAL SCREEN
===================================================== */

.final-title{
font-family:'Great Vibes',cursive;
font-size:48px;
color:#ff7acb;
text-align:center;
margin-bottom:30px;
text-shadow:0 0 15px rgba(255,0,150,0.8);
}

.final-card{
background:linear-gradient(180deg,#2a003d,#4a005a);
padding:30px;
border-radius:20px;
max-width:420px;
margin:auto;
box-shadow:0 0 40px rgba(255,0,150,0.4);
text-align:center;
}

.final-photo{
width:100%;
height:auto;
max-height:320px;
object-fit:cover;
border-radius:16px;
margin-bottom:20px;
margin-top:80px;
box-shadow:0 10px 25px rgba(0,0,0,0.5);
}

.final-text{
font-size:18px;
line-height:1.6;
color:#f3d9ff;
}

.final-card svg{
filter: drop-shadow(0 0 25px #ff4da6);
}

/* =====================================================
HEART FRAME
===================================================== */

.heart-frame{
display:flex;
justify-content:center;
margin:30px 0;
}

.heart-frame svg{
overflow:hidden;
}

.heart-svg{
width:280px;
height:260px;
filter: drop-shadow(0 0 25px rgba(255,80,160,0.7));
transition:transform 0.4s;
}

.heart-svg:hover{
transform:scale(1.05);
}

/* =====================================================
LOVE TIMER
===================================================== */

.love-timer{
display:flex;
justify-content:center;
gap:25px;
margin-top:40px;
flex-wrap:wrap;
}

.flip-box{
text-align:center;
}

.flip{
background:#1b0a2a;
color:#ff6fae;
font-size:38px;
font-weight:600;
padding:20px 30px;
border-radius:12px;
box-shadow:0 10px 30px rgba(0,0,0,0.4);
transition:transform 0.4s ease;
}

.flip.animate{
transform:rotateX(360deg);
}

.flip-box p{
margin-top:8px;
font-size:14px;
color:#ccc;
}

/* =====================================================
FIREWORKS
===================================================== */

#fireworks-canvas{
position:fixed;
top:0;
left:0;
width:100%;
height:100%;
pointer-events:none;
z-index:9999;
}

/* =====================================================
ANNIVERSARY MESSAGE
===================================================== */

.anniversary-msg{
position:absolute;
top:40%;
font-size:22px;
font-weight:600;
color:#ff7ac6;
text-shadow:0 0 15px rgba(255,120,200,0.7);
opacity:0;
transition:all .5s ease;
}

#anniversaryLeft{ left:5%; }
#anniversaryRight{ right:5%; }

.anniversary-msg.show{
opacity:1;
transform:scale(1.1);
}

#yearsBox{
transition:all .3s ease;
}

/* =====================================================
MOBILE
===================================================== */

@media(max-width:768px){

body{
padding-bottom:260px;
}

.screen{
padding-top:60px;
padding-bottom:260px;
}

h1{font-size:42px;}
h2{font-size:22px;}

#gameArea{
width:90%;
height:260px;
}

.gallery-slider img{
flex:0 0 85%;
height:300px;
}

.main-title{
font-size:32px;
padding:30px 20px 10px;
}

.letter-box{
padding:24px;
width:92%;
}

.letter-box p{
font-size:16px;
}

.final-title{
font-size:32px;
}

.final-card{
width:90%;
padding:20px;
}

.final-photo{
max-height:260px;
}

.final-text{
font-size:16px;
}

.heart-svg{
width:220px;
height:200px;
}

.action-buttons{
margin-bottom:200px;
}
}

/* FIX LOADER BUTTON OVERLAP WITH BASE CTA */

#loader{
padding-bottom:200px;
}

.start-btn{
margin-bottom:160px;
position:relative;
z-index:20;
}

@media (max-width:768px){

#loader{
padding-bottom:260px;
}

.start-btn{
margin-bottom:280px;
}

}