/*==========================
    RESET
==========================*/

*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

html{
    scroll-behavior:smooth;
}

body{

    font-family:"Poppins",sans-serif;

    background:#080812;

    color:white;

    overflow-x:hidden;

}

/*==========================
    HERO
==========================*/

.hero{

    height:100vh;

    position:relative;

    display:flex;

    justify-content:center;

    align-items:center;

    text-align:center;

    background:

    linear-gradient(

    rgba(5,5,20,.55),

    rgba(0,0,0,.75)

    ),

    url("images/hero.jpg");

    background-size:cover;

    background-position:center;

}

.hero-content{

    width:min(90%,650px);

    z-index:10;

}

.hero h3{

    color:#ffd3e4;

    font-family:"Great Vibes";

    font-size:42px;

}

.hero h1{

    font-size:72px;

    margin:15px 0;

    font-weight:700;

}

.hero p{

    line-height:1.9;

    font-size:19px;

    opacity:.95;

}

#openLetter{

    margin-top:40px;

    border:none;

    border-radius:50px;

    background:#ff4f92;

    color:white;

    padding:18px 45px;

    cursor:pointer;

    font-size:18px;

    transition:.35s;

}

#openLetter:hover{

    transform:translateY(-6px);

    box-shadow:

    0 15px 40px

    rgba(255,92,163,.45);

}

/*==========================
    SCROLL
==========================*/

.scroll{

position:absolute;

bottom:25px;

left:50%;

transform:translateX(-50%);

display:flex;

flex-direction:column;

align-items:center;

gap:10px;

}

.scroll span{

width:24px;

height:42px;

border:2px solid white;

border-radius:30px;

position:relative;

}

.scroll span::before{

content:"";

position:absolute;

left:50%;

top:8px;

transform:translateX(-50%);

width:6px;

height:6px;

background:white;

border-radius:50%;

animation:scroll 2s infinite;

}

@keyframes scroll{

0%{

top:8px;
opacity:1;

}

100%{

top:22px;
opacity:0;

}

}

/*==========================
    LETTER
==========================*/

#letterSection{

padding:120px 20px;

display:flex;

justify-content:center;

}

.paper{

width:min(900px,100%);

background:

rgba(255,255,255,.08);

border:1px solid

rgba(255,255,255,.12);

backdrop-filter:blur(18px);

padding:50px;

border-radius:25px;

box-shadow:

0 20px 60px

rgba(0,0,0,.3);

}

.paper h2{

font-family:"Great Vibes";

font-size:60px;

text-align:center;

margin-bottom:35px;

color:#ffd6e5;

}

#typing{

font-size:19px;

line-height:2.1;

white-space:pre-line;

}

/*==========================
    GALLERY
==========================*/

.gallery{

padding:100px 20px;

}

.gallery h2{

font-size:48px;

text-align:center;

margin-bottom:50px;

}

.grid{

display:grid;

grid-template-columns:

repeat(auto-fit,minmax(260px,1fr));

gap:25px;

max-width:1200px;

margin:auto;

}

.photo{

overflow:hidden;

border-radius:20px;

position:relative;

cursor:pointer;

box-shadow:

0 20px 45px

rgba(0,0,0,.35);

}

.photo img{

width:100%;

height:380px;

display:block;

object-fit:cover;

transition:.5s;

}

.photo:hover img{

transform:scale(1.08);

}

.caption{

position:absolute;

left:0;
right:0;
bottom:0;

padding:20px;

background:

linear-gradient(

transparent,

rgba(0,0,0,.85)

);

transform:translateY(100%);

transition:.45s;

}

.photo:hover .caption{

transform:translateY(0);

}

/*==========================
    REASONS
==========================*/

.reasons{

padding:120px 20px;

}

.reasons h2{

text-align:center;

font-size:48px;

margin-bottom:55px;

}

.cards{

display:grid;

grid-template-columns:

repeat(auto-fit,minmax(260px,1fr));

gap:25px;

max-width:1100px;

margin:auto;

}

.reason{

background:

rgba(255,255,255,.07);

border-radius:22px;

padding:40px;

text-align:center;

font-size:45px;

backdrop-filter:blur(15px);

transition:.35s;

}

.reason span{

display:block;

font-size:18px;

margin-top:18px;

line-height:1.8;

}

.reason:hover{

transform:

translateY(-10px);

}

/*==========================
    ENDING
==========================*/

.ending{

padding:160px 20px;

text-align:center;

}

.ending h2{

font-size:60px;

font-family:"Great Vibes";

}

.ending p{

margin-top:30px;

line-height:2;

font-size:22px;

}

#heartButton{

font-size:100px;

cursor:pointer;

margin-top:40px;

animation:beat 1.2s infinite;

}

@keyframes beat{

0%{transform:scale(1)}

50%{transform:scale(1.15)}

100%{transform:scale(1)}

}

/*==========================
    POPUP
==========================*/

#popup{

position:fixed;

inset:0;

background:

rgba(0,0,0,.82);

display:none;

justify-content:center;

align-items:center;

padding:25px;

z-index:999;

}

.popup-card{

width:min(700px,100%);

background:white;

color:#333;

border-radius:30px;

padding:50px;

text-align:center;

}

.popup-card h1{

color:#ff4d91;

margin-bottom:20px;

}

.popup-card p{

line-height:2;

}

.popup-card button{

margin-top:35px;

padding:15px 30px;

border:none;

border-radius:40px;

background:#ff4d91;

color:white;

cursor:pointer;

}

/*==========================
    LIGHTBOX
==========================*/

#lightbox{

position:fixed;

inset:0;

display:none;

justify-content:center;

align-items:center;

background:

rgba(0,0,0,.95);

z-index:9999;

}

#lightbox img{

max-width:90%;

max-height:90%;

border-radius:20px;

}

/*==========================
    MUSIC
==========================*/

.music{

position:fixed;

right:20px;

bottom:20px;

z-index:99;

}

.music button{

width:60px;

height:60px;

border-radius:50%;

border:none;

background:#ff4f92;

font-size:22px;

color:white;

cursor:pointer;

box-shadow:

0 10px 25px

rgba(255,92,163,.45);

}

/*==========================
    MOBILE
==========================*/

@media(max-width:768px){

.hero h1{

font-size:48px;

}

.hero h3{

font-size:34px;

}

.hero p{

font-size:16px;

}

.paper{

padding:30px;

}

.paper h2{

font-size:42px;

}

.gallery h2,

.reasons h2{

font-size:34px;

}

.photo img{

height:300px;

}

.reason{

padding:30px;

}

.ending h2{

font-size:42px;

}

.ending p{

font-size:18px;

}

}
#stars{

position:fixed;

top:0;
left:0;

width:100%;
height:100%;

pointer-events:none;

z-index:-1;

overflow:hidden;

}

@keyframes twinkle{

0%{

opacity:.2;
transform:scale(.5);

}

50%{

opacity:1;
transform:scale(1.5);

}

100%{

opacity:.2;
transform:scale(.5);

}

}