/* =========================
   BASE
========================= */
*{margin:0;padding:0;box-sizing:border-box;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;}
body{
  background: radial-gradient(circle at top,#ffd1ff,#6a11cb);
  color:#fff;
  min-height:100vh;
  display:flex;
  justify-content:center;
  align-items:center;
  overflow:hidden;
  position:relative;
}

/* =========================
   BACKGROUND FLOATING HEARTS
========================= */
.bg-heart{
  position:fixed;
  bottom:-40px;
  font-size:18px;
  opacity:0.55;
  pointer-events:none;
  animation:floatUp linear infinite;
  z-index:0;
}
@keyframes floatUp{
  0%{transform:translateY(0) translateX(0);opacity:0;}
  10%{opacity:0.55;}
  100%{transform:translateY(-120vh) translateX(22px);opacity:0;}
}

/* =========================
   OVERLAYS / HIDDEN
========================= */
.overlay{
  position:fixed;
  inset:0;
  background:rgba(5,3,15,0.9);
  display:flex;
  justify-content:center;
  align-items:center;
  z-index:50;
}
.hidden{display:none !important;}

/* =========================
   TOAST (wrong answer msg)
========================= */
.toast{
  position:fixed;
  left:50%;
  bottom:28px;
  transform:translateX(-50%);
  background:rgba(10,6,30,0.82);
  border:1px solid rgba(255,182,193,0.55);
  box-shadow:0 0 22px rgba(255,182,193,0.35), 0 0 44px rgba(186,85,211,0.25);
  padding:10px 14px;
  border-radius:999px;
  font-size:14px;
  z-index:80;
  backdrop-filter:blur(12px);
  opacity:0;
  pointer-events:none;
}
.toast.show{animation:toastInOut 1.35s ease forwards;}
@keyframes toastInOut{
  0%{opacity:0; transform:translateX(-50%) translateY(10px) scale(0.98);}
  15%{opacity:1; transform:translateX(-50%) translateY(0) scale(1);}
  80%{opacity:1; transform:translateX(-50%) translateY(0) scale(1);}
  100%{opacity:0; transform:translateX(-50%) translateY(8px) scale(0.98);}
}

/* =========================
   LIGHT BURST (door open glow)
========================= */
.light-burst{
  position:fixed;
  inset:0;
  z-index:70;
  pointer-events:none;
  background:
    radial-gradient(circle at 75% 60%,
      rgba(255,255,255,0.95),
      rgba(255,230,245,0.75),
      rgba(255,182,193,0.50),
      rgba(186,85,211,0.25),
      rgba(0,0,0,0) 70%);
  opacity:0;
  transform:scale(0.985);
  filter:blur(0px);
}
.light-burst.play{animation:lightBurstCine 1.25s ease-out forwards;}
@keyframes lightBurstCine{
  0%{opacity:0; transform:scale(0.985); filter:blur(0px);}
  16%{opacity:1; transform:scale(1.01); filter:blur(0.2px);}
  55%{opacity:0.55; transform:scale(1.03); filter:blur(0.6px);}
  100%{opacity:0; transform:scale(1.05); filter:blur(1px);}
}

/* =========================
   LAYOUT CONTAINER
========================= */
.container{
  max-width:920px;
  width:100%;
  padding:20px;
  z-index:1;
  position:relative;
}

.top-bar{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:12px;
  margin-bottom:12px;
  font-size:14px;
}

.progress,.lives{
  background:rgba(255,255,255,0.10);
  padding:10px 14px;
  border-radius:999px;
  backdrop-filter:blur(12px);
  border:1px solid rgba(255,255,255,0.12);
}

.progress{
  display:flex;
  flex-direction:column;
  gap:6px;
  min-width:220px;
}
.progress-label-row{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
}
.progress-bar-container{
  width:100%;
  height:4px;
  border-radius:999px;
  background:rgba(255,255,255,0.18);
  overflow:hidden;
}
.progress-bar-fill{
  height:100%;
  width:0;
  background:linear-gradient(90deg,#ff79c6,#ffb86c);
  transition:width 0.3s ease;
}

.lives{
  display:flex;
  flex-direction:column;
  gap:6px;
}
#hearts{display:flex;gap:4px;}
.heart{
  font-size:18px;
  transition:opacity 0.25s ease, filter 0.25s ease, transform 0.2s ease;
}
.heart.lost{
  opacity:0.25;
  filter:grayscale(100%);
  transform:scale(0.9);
}

/* =========================
   MAIN CARD
========================= */
.card{
  background:rgba(5,3,20,0.80);
  border-radius:24px;
  padding:28px 24px 24px;
  min-height:260px;
  position:relative;
  border:1px solid rgba(255,182,193,0.80);
  box-shadow:0 0 20px rgba(255,182,193,0.40),0 0 40px rgba(186,85,211,0.35);
  animation:cardPulse 3s ease-in-out infinite;
}

/* intro */
.intro{text-align:center;}
.title{font-size:30px;margin-bottom:10px;}
.subtitle{font-size:16px;opacity:0.92;min-height:24px;}
.mini-note{font-size:13px;opacity:0.82;margin-top:10px;}

/* =========================
   GAME QUESTION UI
========================= */
.question-meta{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-bottom:10px;
}
.question-number{font-size:14px;opacity:0.88;}
.badge{
  padding:4px 10px;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
  letter-spacing:0.04em;
}
.badge-easy{background:rgba(76,217,100,0.15);color:#a8ffb5;}
.badge-medium{background:rgba(255,204,0,0.15);color:#ffe9a6;}
.badge-hard{background:rgba(255,59,48,0.2);color:#ffb3b3;}

.question-text{font-size:20px;margin-bottom:18px;}

.answers{display:flex;flex-direction:column;gap:10px;}
.answer-btn{
  width:100%;
  padding:12px 14px;
  border-radius:16px;
  background:rgba(255,255,255,0.06);
  border:1px solid transparent;
  color:#fff;
  display:flex;
  align-items:center;
  gap:10px;
  cursor:pointer;
  transition:background 0.18s ease, transform 0.12s ease, box-shadow 0.18s ease, border-color 0.18s ease;
  text-align:left;
  font-size:14px;
}
.answer-btn:hover{
  background:rgba(255,255,255,0.14);
  transform:translateY(-2px);
  box-shadow:0 10px 24px rgba(0,0,0,0.4);
}
.answer-label{font-weight:800;opacity:0.92;min-width:24px;}
.answer-btn.correct{
  background:rgba(52,199,89,0.22) !important;
  border-color:rgba(52,199,89,0.9);
  transform:scale(1.02);
}
.answer-btn.wrong{
  background:rgba(255,69,58,0.22) !important;
  border-color:rgba(255,69,58,0.9);
}

/* helper line */
.helper-text{margin-top:12px;font-size:13px;opacity:0.82;}

/* =========================
   BUTTONS
========================= */
button{cursor:pointer;outline:none;}

.primary-btn{
  background:linear-gradient(135deg,#ff79c6,#ffb86c);
  color:#1b0b1f;
  padding:11px 20px;
  border-radius:999px;
  border:none;
  font-weight:700;
  margin-top:14px;
  font-size:14px;
  box-shadow:0 12px 26px rgba(0,0,0,0.6);
  transition:transform 0.12s ease, box-shadow 0.12s ease, filter 0.12s ease;
}
.primary-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 18px 34px rgba(0,0,0,0.7);
  filter:brightness(1.05);
}
.secondary-btn{
  background:rgba(255,255,255,0.08);
  color:#fff;
  padding:9px 18px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.15);
  font-size:14px;
}

/* =========================
   MINI HEART POP (on correct)
========================= */
.mini-heart{
  position:fixed;
  font-size:18px;
  pointer-events:none;
  animation:miniHeartUp 0.9s ease-out forwards;
  z-index:65;
}
@keyframes miniHeartUp{
  from{transform:translateY(0) scale(1);opacity:1;}
  to{transform:translateY(-40px) scale(0.6);opacity:0;}
}

/* =========================
   PATH LINE (girl -> door)
========================= */
.path-wrapper{margin-top:14px;display:flex;justify-content:center;align-items:center;}
.path-line{
  position:relative;
  width:100%;
  max-width:560px;
  height:44px;
  border-radius:999px;
  background:rgba(255,255,255,0.08);
  overflow:hidden;
  padding:0 18px;
  display:flex;
  align-items:center;
  border:1px solid rgba(255,255,255,0.12);
}
#path-girl{
  position:absolute;
  left:18px;
  bottom:6px;
  font-size:22px;
  transition:left 0.4s ease;
}
#path-door{
  position:absolute;
  right:18px;
  bottom:7px;
  font-size:24px;
  transition:transform 0.4s ease, text-shadow 0.4s ease;
}
#path-door.door-open{
  transform:scale(1.18);
  text-shadow:0 0 12px rgba(255,255,255,0.95);
}
#path-door.door-shake{animation:doorShake 0.55s ease;}
@keyframes doorShake{
  0%,100%{transform:translateX(0);}
  20%{transform:translateX(-4px);}
  40%{transform:translateX(4px);}
  60%{transform:translateX(-3px);}
  80%{transform:translateX(3px);}
}

/* =========================
   RESULT / GIFT / FINAL CARDS
========================= */
.result-card,.gift-card,.final-card{
  background:rgba(5,3,20,0.90);
  padding:26px 22px 20px;
  border-radius:22px;
  max-width:700px;
  width:94%;
  max-height:90vh;
  overflow:hidden;
  border:1px solid rgba(255,182,193,0.9);
  box-shadow:0 0 25px rgba(255,182,193,0.6),0 0 45px rgba(186,85,211,0.45);
  animation:cardPulse 3s ease-in-out infinite;
}
.result-card{text-align:center;}

.gift-title{font-size:22px;margin-bottom:4px;}
.gift-subtitle{font-size:14px;opacity:0.92;margin-bottom:14px;}
.gift-subtitle.small{font-size:13px;}

/* steps */
.gift-step{
  max-height:72vh;
  overflow-y:auto;
  padding-right:4px;
  opacity:0;
  transform:translateY(8px);
  transition:opacity 0.3s ease, transform 0.3s ease;
}
.gift-step.visible{opacity:1; transform:translateY(0);}

/* poem */
.poem-block{display:flex;gap:12px;margin-bottom:12px;}
.poem-letter{
  font-size:22px;
  font-weight:900;
  color:#ff9ecf;
  min-width:26px;
}
.poem-lines p{font-size:14px;line-height:1.42;}

/* reasons */
.reasons-list{
  margin-left:18px;
  margin-top:8px;
  display:flex;
  flex-direction:column;
  gap:6px;
  font-size:14px;
}
.reason-last{margin-top:6px;font-style:italic;}

/* slider */
.slider{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  margin:14px 0 6px;
}
.slider-inner{
  width:280px;
  max-width:90vw;
  height:210px;
  border-radius:16px;
  overflow:hidden;
  background:rgba(255,255,255,0.08);
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid rgba(255,255,255,0.12);
  box-shadow:0 12px 28px rgba(0,0,0,0.5);
}
.slider-inner img{width:100%;height:100%;object-fit:cover;}
.slider-btn{
  background:rgba(255,255,255,0.08);
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.2);
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  color:#fff;
  font-size:16px;
}
.photo-caption{font-size:13px;opacity:0.9;text-align:center;margin-top:6px;}

/* ✅ VIDEO */
.memory-video{
  width:100%;
  max-width:560px;
  display:block;
  margin:10px auto 0;
  border-radius:16px;
  border:1px solid rgba(255,255,255,0.18);
  box-shadow:0 10px 30px rgba(0,0,0,0.55);
  background:rgba(255,255,255,0.06);
}

/* letter */
.letter-body{margin-top:10px;padding-right:6px;}
.letter-body p{
  font-size:14px;
  line-height:1.55;
  margin-bottom:10px;
}

/* gift nav */
.gift-nav{
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin-top:10px;
  padding-top:10px;
  border-top:1px solid rgba(255,255,255,0.1);
  gap:10px;
}
.gift-nav .primary-btn{margin-top:0;}
.gift-nav .secondary-btn.hidden{display:none !important;}

/* =========================
   PASSWORD SCREEN
========================= */
#password-screen .result-card{text-align:center;animation:popIn 0.8s ease;border:2px solid rgba(255,255,255,0.16);}
#password-screen h2{font-size:24px;color:#ff9ecf;}
#password-screen .subtitle{opacity:0.9;margin-top:6px;margin-bottom:8px;font-size:14px;}
.password-input{
  width:100%;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.3);
  background:rgba(255,255,255,0.08);
  color:#fff;
  text-align:center;
  font-size:14px;
  animation:glowInput 1.3s ease-in-out infinite alternate;
}
.password-input::placeholder{color:rgba(255,255,255,0.5);}
.error-text{min-height:18px;font-size:13px;color:#ff9fb5;text-align:center;}

/* =========================
   HEART RAIN (celebration)
========================= */
.hearts-rain{
  position:fixed;
  top:-20px;
  font-size:22px;
  pointer-events:none;
  animation:fall 2.5s linear forwards;
  z-index:40;
}
@keyframes fall{
  to{transform:translateY(110vh) rotate(360deg);opacity:0;}
}

/* =========================
   FINAL SCREEN SKY STREAM
========================= */
.final-card{
  text-align:center;
  position:relative;
  overflow:hidden;
}
.final-title{font-size:28px;color:#ff9ecf;}
.final-sub{opacity:0.9;font-size:14px;margin-top:6px;margin-bottom:14px;}

.sky-stream{
  position:relative;
  width:100%;
  height:42vh;
  max-height:380px;
  background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.14);
  border-radius:18px;
  overflow:hidden;
  margin:14px 0 12px;
  backdrop-filter:blur(12px);
}
.sky-line{
  position:absolute;
  top:-50px;
  left:0;
  right:0;
  text-align:center;
  font-weight:900;
  letter-spacing:0.04em;
  color:rgba(255,255,255,0.95);
  text-shadow:0 0 14px rgba(255,255,255,0.55), 0 0 28px rgba(255,182,193,0.35);
  animation:skyDrop linear forwards;
  padding:8px 10px;
}
@keyframes skyDrop{
  from{transform:translateY(0); opacity:0;}
  10%{opacity:1;}
  to{transform:translateY(460px); opacity:0;}
}

/* =========================
   ANIMATIONS
========================= */
.card-animate-in{animation:fadeInUp 0.45s ease;}
.card-shake{animation:shake 0.4s ease;}

@keyframes fadeInUp{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
@keyframes shake{
  0%,100%{transform:translateX(0);}
  25%{transform:translateX(-6px);}
  50%{transform:translateX(6px);}
  75%{transform:translateX(-4px);}
}
@keyframes popIn{0%{transform:scale(0.7);opacity:0;}100%{transform:scale(1);opacity:1;}}
@keyframes glowInput{from{box-shadow:0 0 4px rgba(255,255,255,0.35);}to{box-shadow:0 0 14px rgba(255,255,255,0.9);}}
@keyframes cardPulse{
  0%{box-shadow:0 0 18px rgba(255,182,193,0.40),0 0 32px rgba(186,85,211,0.35);}
  50%{box-shadow:0 0 26px rgba(255,182,193,0.90),0 0 52px rgba(186,85,211,0.70);}
  100%{box-shadow:0 0 18px rgba(255,182,193,0.40),0 0 32px rgba(186,85,211,0.35);}
}

/* =========================
   RESPONSIVE
========================= */
@media (max-width:600px){
  .card{padding:22px 16px 18px;border-radius:18px;}
  .title{font-size:22px;}
  .question-text{font-size:18px;}
  .answer-btn{font-size:13px;}
  .gift-card,.final-card{padding:20px 14px 16px;}
  .sky-stream{height:36vh;}
  .progress{min-width:160px;}
}

