:root{
  --pink-dark:#FF69B4;
  --pink-medium:#FFB6C1;
  --pink-soft:#FFE4E1;
  --white:#fff;
  --ink:#3d3238;
  --muted:#9a8f94;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:'Quicksand',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--pink-soft);
  color:var(--ink);
  overflow-x:hidden;
  line-height:1.6;
}
body.locked{overflow:hidden}

.title-font{
  font-family:'Dancing Script',cursive;
  font-size:clamp(2.2rem,8vw,3.4rem);
  color:var(--pink-dark);
  margin:0 0 .3em;
  line-height:1.15;
  font-weight:700;
}

/* ---------- Cover ---------- */
.cover{
  position:fixed;inset:0;z-index:9999;
  display:flex;align-items:center;justify-content:center;
  padding:32px 22px;text-align:center;
  background:linear-gradient(150deg,var(--white) 0%,var(--pink-medium) 100%);
  transition:transform 1s ease-in-out,opacity 1s ease-in-out;
}
.cover.open{transform:translateY(-100vh);opacity:0}
.cover-inner{max-width:460px;animation:fadeUp 1s ease both}
.cover-sapaan{letter-spacing:.16em;text-transform:uppercase;font-size:.8rem;color:#8a5c72;margin:0 0 .6em}
.cover-tamu{
  margin:26px auto 4px;padding:16px 22px;max-width:330px;
  background:rgba(255,255,255,.72);border-radius:16px;
  border:1px solid rgba(255,255,255,.9);
}
.cover-tamu span{display:block;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#8a5c72}
.cover-tamu strong{display:block;margin-top:6px;font-size:1.25rem;color:var(--pink-dark)}

/* ---------- Tombol ---------- */
.btn-primary{
  margin-top:28px;padding:13px 32px;font-size:1rem;
  background:var(--pink-dark);color:var(--white);
  border:0;border-radius:999px;cursor:pointer;
  font-family:inherit;font-weight:700;
  box-shadow:0 6px 18px rgba(255,105,180,.38);
  transition:transform .25s ease,box-shadow .25s ease;
}
.btn-primary:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 10px 24px rgba(255,105,180,.45)}
.btn-link{display:inline-block;text-decoration:none;margin-top:18px}

/* ---------- Isi ---------- */
#main-content{
  display:none;max-width:620px;margin:0 auto;
  background:var(--white);
  box-shadow:0 0 40px rgba(0,0,0,.08);
  min-height:100vh;
}
.section{padding:56px 22px;text-align:center;border-bottom:2px dashed var(--pink-soft)}
.hero{
  padding:88px 22px;
  background:linear-gradient(rgba(255,255,255,.72),rgba(255,255,255,.72));
  background-size:cover;background-position:center;
}
.hero-prakata{letter-spacing:.18em;text-transform:uppercase;font-size:.78rem;color:#8a5c72;margin:0 0 .8em}
.hero-nama{color:var(--pink-dark);margin:.2em 0 0;font-size:1.15rem;letter-spacing:.06em}
.details p{font-size:1.06rem;margin:.35em 0}
.alamat{color:var(--muted);font-size:.95rem!important}
.muted{color:var(--muted);text-align:center}

/* ---------- Countdown ---------- */
.countdown{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:8px}
.cd-box{
  min-width:74px;padding:14px 8px;border-radius:14px;
  background:var(--pink-soft);border:1px solid var(--pink-medium);
}
.cd-box span{display:block;font-size:1.6rem;font-weight:700;color:var(--pink-dark);line-height:1.1}
.cd-box small{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:#8a5c72}

/* ---------- Galeri ---------- */
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.gallery-item{aspect-ratio:1/1;overflow:hidden;border-radius:12px;background:var(--pink-soft)}
.gallery-item img{width:100%;height:100%;object-fit:cover;display:block}

/* ---------- Form ---------- */
.form-group{margin-bottom:15px;text-align:left}
.form-group label{display:block;margin-bottom:6px;font-weight:600;color:var(--pink-dark);font-size:.92rem}
.form-control{
  width:100%;padding:12px 14px;border:1px solid var(--pink-medium);
  border-radius:10px;font-family:inherit;font-size:1rem;background:#fff;color:var(--ink);
}
.form-control:focus{outline:2px solid var(--pink-dark);outline-offset:1px;border-color:transparent}
.submit-btn{
  width:100%;padding:15px;background:var(--pink-dark);color:#fff;
  border:0;border-radius:10px;font-size:1.05rem;font-weight:700;
  cursor:pointer;margin-top:8px;font-family:inherit;
}
.submit-btn:disabled{opacity:.6;cursor:not-allowed}
.rsvp-sukses{color:#1f8a4c;font-weight:700;margin-top:16px}
.rsvp-error{color:#c0392b;font-weight:600;margin-top:12px}

/* ---------- Ucapan ---------- */
.daftar-pesan{
  max-height:400px;overflow-y:auto;text-align:left;
  padding:12px;background:#fafafa;border-radius:12px;
  border:1px solid var(--pink-soft);margin-top:18px;
}
.pesan-box{
  background:#fff;padding:14px 16px;border-radius:10px;margin-bottom:10px;
  border-left:5px solid var(--pink-dark);box-shadow:0 2px 6px rgba(0,0,0,.05);
}
.pesan-box:last-child{margin-bottom:0}
.pesan-nama{font-weight:700;color:var(--pink-dark);margin-bottom:2px}
.pesan-meta{font-size:.74rem;color:var(--muted);margin-bottom:6px}
.pesan-isi{font-size:.95rem;line-height:1.5;word-break:break-word}

/* ---------- Footer & musik ---------- */
.footer{padding:56px 22px;text-align:center;background:var(--pink-soft)}
.footer p{max-width:420px;margin:0 auto 24px;color:#6d5d64;font-size:.95rem}
.footer .title-font{font-size:clamp(1.6rem,6vw,2.2rem)}

.music-toggle{
  position:fixed;right:16px;bottom:16px;z-index:9998;
  width:46px;height:46px;border-radius:50%;border:0;cursor:pointer;
  background:var(--pink-dark);color:#fff;font-size:1.3rem;line-height:1;
  box-shadow:0 4px 14px rgba(255,105,180,.45);
}
.music-toggle.paused{opacity:.55}

/* ---------- Animasi ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s ease}
.reveal.shown{opacity:1;transform:none}
@keyframes fadeUp{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none}
  .cover{transition:none}
  html{scroll-behavior:auto}
}
