:root{
  --blue:#cfe9ff;
  --blue-dark:#4fa3ff;
  --text:#1f3b57;
}

*{
  margin:0;
  padding:0;
  box-sizing:border-box;
  font-family:"Segoe UI",sans-serif;
}

body{
  background:linear-gradient(to bottom,#eaf6ff,#ffffff);
  color:var(--text);
  overflow-x:hidden;
}

.hero{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  text-align:center;
  padding:20px;
  position:relative;
}

.hero::after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(circle at top, rgba(255,255,255,.45), transparent 60%);
  pointer-events:none;
}

.title-wrap{
  display:flex;
  align-items:center;
  gap:14px;
  margin-bottom:30px;
}

.hero h1{
  font-size:clamp(2.4rem,6vw,4rem);
  background:linear-gradient(45deg,#1f3b57,#4fa3ff);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  text-shadow:0 8px 20px rgba(79,163,255,0.3);
}

.title-heart{
  font-size:2.6rem;
  color:#4fa3ff;
  animation:beat 1.6s infinite;
}

@keyframes beat{
  0%{transform:scale(1)}
  30%{transform:scale(1.15)}
  60%{transform:scale(1)}
}

.heart{
  position:absolute;
  font-size:2rem;
  color:#ff6b81;
  opacity:0.55;
  animation:float 6s infinite ease-in-out;
}

.heart:nth-of-type(1){top:10%;left:15%}
.heart:nth-of-type(2){top:25%;right:10%;animation-delay:1s}
.heart:nth-of-type(3){bottom:20%;left:20%;animation-delay:2s}
.heart:nth-of-type(4){bottom:15%;right:25%;animation-delay:3s}

@keyframes float{
  0%{transform:translateY(0);opacity:.4}
  50%{transform:translateY(-25px);opacity:1}
  100%{transform:translateY(0);opacity:.4}
}

.music-btn{
  display:flex;
  align-items:center;
  gap:10px;
  padding:15px 32px;
  border-radius:50px;
  background:var(--blue);
  border:none;
  cursor:pointer;
  font-size:1rem;
  transition:.3s;
}

.music-btn:hover{
  transform:scale(1.07);
}

.music-btn.playing{
  animation:pulse 1.5s infinite;
}

@keyframes pulse{
  0%{box-shadow:0 0 0 0 rgba(79,163,255,.6)}
  70%{box-shadow:0 0 0 18px rgba(79,163,255,0)}
  100%{box-shadow:0 0 0 0 rgba(79,163,255,0)}
}

.gallery{
  max-width:1000px;
  margin:90px auto;
  padding:0 20px;
}

.photo{
  display:flex;
  margin:55px 0;
}

.photo.left{justify-content:flex-start}
.photo.right{justify-content:flex-end}

.photo img{
  width:70%;
  max-width:420px;
  border-radius:22px;
  box-shadow:0 14px 35px rgba(0,0,0,.18);
  opacity:0;
  transform:translateY(35px);
  transition:.9s ease;
}

.photo.show img{
  opacity:1;
  transform:translateY(0);
}

.photo img:hover{
  transform:scale(1.04);
}

.heart-divider{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:20px;
  width:90%;
  max-width:900px;
  margin:110px auto;
}

.heart-divider span{
  flex:1;
  max-width:260px;
  height:1px;
  background:#cfdfee;
}

.heart-divider i{
  font-style:normal;
  font-size:1.4rem;
  color:#4fa3ff;
  animation:beat 1.6s infinite;
}

.message{
  max-width:860px;
  margin:0 auto 120px;
  padding:45px 35px;
  text-align:center;
  background:rgba(207,233,255,.6);
  backdrop-filter:blur(6px);
  border-radius:24px;
  box-shadow:0 18px 45px rgba(79,163,255,.25);
}

.message p{
  font-size:1.1rem;
  line-height:1.9;
}

.closing{
  text-align:center;
  margin-bottom:80px;
}

.closing-name{
  font-size:2.2rem;
  font-weight:600;
  background:linear-gradient(45deg,#1f3b57,#4fa3ff);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
}

.closing-heart{
  display:block;
  font-size:2.8rem;
  color:#4fa3ff;
  margin-top:10px;
  animation:beat 1.8s infinite;
}

@media(max-width:768px){
  .photo img{width:100%}
  .photo{justify-content:center !important}
  .title-wrap{flex-direction:column;gap:8px}
}
