:root{
  --cream: #f7f0dd;
  --cream-deep: #efe3c5;
  --paper: #f9f3e2;
  --ink: #3a2a17;
  --ink-soft: #5c4a30;
  --gold: #a9812d;
  --gold-deep: #8a6a20;
  --gold-line: #c9a94f;
  --line-faint: rgba(169,129,45,0.35);
  --shadow: 0 20px 60px rgba(58,42,23,0.18);

  --img-slide5-tl: url("assets/bunga-atas-kiri-slide-5.png");
  --img-slide5-bl: url("assets/bunga-bawah-kiri-slide-5.png");
  --img-slide5-br: url("assets/bunga-bawah-kanan-slide-5.png");
}
*{box-sizing:border-box; margin:0; padding:0;}
html{
  scroll-behavior:smooth;
  scroll-padding-top: 0;
}
body{
  font-family:'Jost', sans-serif;
  background: var(--ink);
  color: var(--ink);
  overflow-x:hidden;
  -webkit-tap-highlight-color: transparent;
}
/* Slide dots nav (auto-generated in JS) */
.slide-dots{
  position:fixed; right:14px; top:50%; transform:translateY(-50%);
  display:flex; flex-direction:column; gap:10px; z-index:50;
}
.slide-dots.hidden{ opacity:0; pointer-events:none; }
.slide-dots button{
  width:8px; height:8px; border-radius:50%;
  background: rgba(58,42,23,0.25);
  border:1px solid rgba(58,42,23,0.35);
  padding:0; cursor:pointer;
  transition: all .3s ease;
}
.slide-dots button.active{
  background: var(--gold-deep);
  border-color: var(--gold-deep);
  height:22px; border-radius:5px;
}
.serif{ font-family:'Cormorant Garamond', serif; }
.script{ font-family:'Mrs Saint Delafield', cursive; font-weight:400; }

.paper-bg{
  position:relative;
  background:
    radial-gradient(circle at 15% 10%, rgba(255,252,240,0.9), transparent 45%),
    radial-gradient(circle at 85% 20%, rgba(255,250,232,0.7), transparent 50%),
    radial-gradient(circle at 30% 90%, rgba(240,225,190,0.6), transparent 55%),
    linear-gradient(160deg, var(--cream) 0%, var(--cream-deep) 100%);
}
.paper-bg::before{
  content:"";
  position:absolute; inset:0;
  opacity:0.65;
  mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='3' stitchTiles='stitch'/><feColorMatrix type='matrix' values='0 0 0 0 0.55  0 0 0 0 0.47  0 0 0 0 0.34  0 0 0 0.16 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  pointer-events:none;
}

section{
  position:relative;
  min-height:100vh;
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding: 60px 28px;
  text-align:center;
  overflow:hidden;
}

/* Dari "Momen Kami" (gallery) sampai "Terima Kasih" (closing),
   tinggi menyesuaikan konten (tidak dipaksa 100vh). */
#gallery,
#rsvp,
#kado,
#story-frame{
  min-height:auto;
}

/* ============ DECORATIVE FLOWER ASSETS ============ */
.deco{
  position:absolute;
  pointer-events:none;
  background-repeat:no-repeat;
  background-size:contain;
  z-index:1;
}

/* Tombol mute/unmute musik latar */
.music-toggle{
  position:fixed;
  left:16px; bottom:16px;
  z-index:60;
  width:44px; height:44px;
  border-radius:50%;
  border:1px solid var(--line-faint);
  background: var(--cream);
  color: var(--gold-deep);
  font-size:18px;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
  box-shadow: 0 6px 18px rgba(58,42,23,0.22);
  transition: opacity .3s ease, transform .3s ease;
}
.music-toggle.hidden{
  opacity:0;
  pointer-events:none;
  transform: scale(0.8);
}
.music-toggle .music-icon{
  display:block;
  animation: musicSpin 3.5s linear infinite;
}
.music-toggle.muted .music-icon{
  animation-play-state: paused;
  opacity:0.4;
}
@keyframes musicSpin{
  from{ transform: rotate(0deg); }
  to{ transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce){
  .music-toggle .music-icon{ animation:none; }
}

/* Slide 1 - Gate */
/* .deco-gate-left{
  top:100px; left:0; width:168px; height:264px;
  background-image:url("assets/bunga-kiri-slide-1.png");
  background-position:top left;
  transform-origin: top left;
  animation: swayLeft 5.5s ease-in-out infinite;
}
.deco-gate-right{
  top:0; right:0; width:257px; height:243px;
  background-image:url("assets/bunga-kanan-slide-1.png");
  background-position:top right;
  transform-origin: top right;
  animation: swayRight 6.5s ease-in-out infinite;
  animation-delay: -1.2s;
} */
.deco-gate-bottom{
  bottom:0; right:0; width:450px; height:450px;
  background-image:url("assets/gate.png");
  background-position:bottom center;
  transform-origin: bottom center;
  animation: swayBottom 7s ease-in-out infinite;
  animation-delay: -3s;
}

/* Di HP, box dekorasi ini dulu tetap 1000px lebar (dipusatkan), jadi di
   layar sempit cuma bagian tengah gambar yang kelihatan dan bunga di
   ujung kiri/kanan ke-crop hilang. Dibawah ini bikin box-nya selebar
   layar HP saja, supaya seluruh gambar (termasuk bunga kanan-kiri) muat
   di dalam layar. */
/* @media (max-width:639px){
  .deco-gate-bottom{
    left:0;
    margin-left:0;
    width:100%;
    height:45vw;
    max-height:600px;
    background-size:cover;
  }
} */

@keyframes swayLeft{
  0%,100%{ transform: rotate(0deg); }
  25%{ transform: rotate(2deg); }
  50%{ transform: rotate(-1deg); }
  75%{ transform: rotate(1.5deg); }
}
@keyframes swayRight{
  0%,100%{ transform: rotate(0deg); }
  30%{ transform: rotate(-2.2deg); }
  55%{ transform: rotate(1deg); }
  80%{ transform: rotate(-1.2deg); }
}
@keyframes swayBottom{
  0%,100%{ transform: rotate(0deg); }
  20%{ transform: rotate(1.2deg); }
  50%{ transform: rotate(-1.8deg); }
  75%{ transform: rotate(0.8deg); }
}

@media (prefers-reduced-motion: reduce){
  .deco-gate-left, .deco-gate-right, .deco-gate-bottom, .deco-story-left, .deco-story-right{
    animation: none;
  }
}

/* Burung terbang berkeliling di atas gerbang (sepasang) */
.gate-bird{
  position:absolute;
  top:0;
  left:0;
  object-fit:contain;
  z-index:2;
  pointer-events:none;
  /* filter:drop-shadow(0 4px 6px rgba(0,0,0,0.15)); */
}
.gate-bird-1{
  width:100px;
  height:100px;
  animation: birdFly 16s ease-in-out infinite;
}
.gate-bird-2{
  width:70px;
  height:70px;
  animation: birdFly2 16s ease-in-out infinite;
  animation-delay: -2.4s;
}

@keyframes birdFly{
  0%{
    transform: translate(20px, 140px) scaleX(-1) rotate(-4deg);
  }
  12%{
    transform: translate(45cqw, 60px) scaleX(-1) rotate(3deg);
  }
  25%{
    transform: translate(calc(100cqw - 110px), 100px) scaleX(-1) rotate(-2deg);
  }
  30%{
    transform: translate(calc(100cqw - 110px), 100px) scaleX(1) rotate(2deg);
  }
  45%{
    transform: translate(50cqw, 40px) scaleX(1) rotate(-3deg);
  }
  58%{
    transform: translate(20px, 90px) scaleX(1) rotate(3deg);
  }
  63%{
    transform: translate(20px, 90px) scaleX(-1) rotate(-2deg);
  }
  78%{
    transform: translate(45cqw, 150px) scaleX(-1) rotate(2deg);
  }
  90%{
    transform: translate(calc(100cqw - 130px), 60px) scaleX(-1) rotate(-3deg);
  }
  93%{
    transform: translate(calc(100cqw - 130px), 60px) scaleX(1) rotate(-3deg);
  }
  98%{
    transform: translate(20px, 140px) scaleX(1) rotate(-4deg);
  }
  100%{
    transform: translate(20px, 140px) scaleX(-1) rotate(-4deg);
  }
}

/* Jalur burung kedua: sedikit di bawah/belakang pasangannya, dengan lengkungan berbeda */
@keyframes birdFly2{
  0%{
    transform: translate(50px, 185px) scaleX(-1) rotate(-3deg);
  }
  12%{
    transform: translate(40cqw, 110px) scaleX(-1) rotate(4deg);
  }
  25%{
    transform: translate(calc(100cqw - 150px), 150px) scaleX(-1) rotate(-3deg);
  }
  30%{
    transform: translate(calc(100cqw - 150px), 150px) scaleX(1) rotate(3deg);
  }
  45%{
    transform: translate(55cqw, 85px) scaleX(1) rotate(-2deg);
  }
  58%{
    transform: translate(48px, 135px) scaleX(1) rotate(4deg);
  }
  63%{
    transform: translate(48px, 135px) scaleX(-1) rotate(-3deg);
  }
  78%{
    transform: translate(40cqw, 195px) scaleX(-1) rotate(3deg);
  }
  90%{
    transform: translate(calc(100cqw - 170px), 105px) scaleX(-1) rotate(-2deg);
  }
  93%{
    transform: translate(calc(100cqw - 170px), 105px) scaleX(1) rotate(-2deg);
  }
  98%{
    transform: translate(50px, 185px) scaleX(1) rotate(-3deg);
  }
  100%{
    transform: translate(50px, 185px) scaleX(-1) rotate(-3deg);
  }
}

@media (max-width:480px){
  .gate-bird-1{ width:52px; height:52px; }
  .gate-bird-2{ width:40px; height:40px; }
}

@media (prefers-reduced-motion: reduce){
  .gate-bird-1, .gate-bird-2{ animation:none; }
  .gate-bird-1{ top:24px; left:24px; }
  .gate-bird-2{ top:24px; left:70px; }
}

/* Slide 2 - Hero (combined overlay) */
.deco-hero-overlay{
  inset:0;
  background-image:url("assets/hero-bottom.png");
  background-position: center 100%;
  background-size: contain;
  opacity:0.9;
  transform-origin: bottom center;
  animation: swayBottom 7s ease-in-out infinite;
}

/* Sepasang kupu-kupu terbang menyilang di atas tulisan "The Wedding Of", mirip pola burung */
#hero{ container-type: inline-size; }
.hero-butterfly{
  position:absolute;
  top:20%; left:0;
  z-index:3;
  pointer-events:none;
  object-fit:contain;
  filter: drop-shadow(0 4px 6px rgba(58,42,23,0.15));
}
.hero-butterfly-1{
  width:60px;
  height:60px;
  animation: heroButterflyFly1 15s ease-in-out infinite;
}
.hero-butterfly-2{
  width:50px;
  height:50px;
  animation: heroButterflyFly2 15s ease-in-out infinite;
  animation-delay: -5s;
}

@keyframes heroButterflyFly1{
  0%{ transform: translate(4cqw, 150px) scaleX(-1) rotate(-4deg); }
  15%{ transform: translate(32cqw, 75px) scaleX(-1) rotate(3deg); }
  28%{ transform: translate(calc(100cqw - 60px), 115px) scaleX(-1) rotate(-2deg); }
  32%{ transform: translate(calc(100cqw - 60px), 115px) scaleX(1) rotate(2deg); }
  48%{ transform: translate(45cqw, 65px) scaleX(1) rotate(-3deg); }
  62%{ transform: translate(6cqw, 130px) scaleX(1) rotate(3deg); }
  66%{ transform: translate(6cqw, 130px) scaleX(-1) rotate(-2deg); }
  82%{ transform: translate(40cqw, 80px) scaleX(-1) rotate(2deg); }
  92%{ transform: translate(calc(100cqw - 70px), 110px) scaleX(-1) rotate(-3deg); }
  96%{ transform: translate(calc(100cqw - 70px), 110px) scaleX(1) rotate(-3deg); }
  100%{ transform: translate(4cqw, 150px) scaleX(1) rotate(-4deg); }
}
@keyframes heroButterflyFly2{
  0%{ transform: translate(calc(100cqw - 50px), 140px) scaleX(1) rotate(4deg); }
  18%{ transform: translate(58cqw, 70px) scaleX(1) rotate(-3deg); }
  30%{ transform: translate(20px, 110px) scaleX(1) rotate(3deg); }
  34%{ transform: translate(20px, 110px) scaleX(-1) rotate(-2deg); }
  50%{ transform: translate(50cqw, 60px) scaleX(-1) rotate(3deg); }
  64%{ transform: translate(calc(100cqw - 40px), 125px) scaleX(-1) rotate(-3deg); }
  68%{ transform: translate(calc(100cqw - 40px), 125px) scaleX(1) rotate(2deg); }
  84%{ transform: translate(55cqw, 75px) scaleX(1) rotate(-2deg); }
  95%{ transform: translate(30px, 135px) scaleX(1) rotate(3deg); }
  98%{ transform: translate(30px, 135px) scaleX(-1) rotate(3deg); }
  100%{ transform: translate(calc(100cqw - 50px), 140px) scaleX(-1) rotate(4deg); }
}

@media (max-width:480px){
  .hero-butterfly-1{ width:32px; height:32px; }
  .hero-butterfly-2{ width:24px; height:24px; }
}

@media (prefers-reduced-motion: reduce){
  .deco-hero-overlay{ animation:none; }
  .hero-butterfly-1, .hero-butterfly-2{ animation:none; }
}

/* Slide Ayat */
.deco-batik-atas{
  inset:0;
  background-image:url("assets/ayat-bawah.png");
  background-position: center 0%;
  background-size: contain;
  opacity:0.9;
}

.deco-wayang{
  inset:0;
  background-image:url("assets/ayat-wayang.png");
  background-position: center 50%;
  background-size: 35%;
  opacity:0.9;
}

.deco-batik-bawah{
  inset:0;
  background-image:url("assets/ayat-bawah.png");
  background-position: center 100%;
  background-size: contain;
  opacity:0.9;
}

/* Slide 3 - Bride & Groom */
.deco-couple-tl{
  top:0; left:0; width:176px; height:196px;
  background-image:url("assets/bunga-atas-kiri.png");
  background-position:top left;
}
.deco-couple-tr{
  top:0; right:0; width:176px; height:196px;
  background-image:url("assets/bunga-atas-kanan.png");
  background-position:top right;
}
.deco-couple-center{
  top:40%; left:50%; transform:translateX(-50%); width:405px; height:378px;
  background-image:url("assets/bunga-tengah-slide-3.png");
  background-position:center top;
  opacity:0.55;
}
.deco-couple-bl{
  bottom:0; left:0; width:203px; height:176px;
  background-image:url("assets/bunga-bawah-kiri-slide-3.png");
  background-position:bottom left;
}
.deco-couple-br{
  bottom:0; right:0; width:203px; height:176px;
  background-image:url("assets/bunga-bawah-kanan-slide-3.png");
  background-position:bottom right;
}

/* RSVP */
.deco-flower-rsvp{
  bottom:0; left:0; width:600px; height:600px;
  background-image:url("assets/rsvp-kiri-bawah.png");
  background-position:bottom left;
  transform-origin: bottom left;
  animation: swayLeft 6s ease-in-out infinite;
  animation-delay: -2s;
}

@media (prefers-reduced-motion: reduce){
  .deco-flower-rsvp{
    animation: none;
  }
}

/* Closing */
.deco-closing-tl{
  top:0; left:0; width:150px; height:150px;
  background-image:url("assets/penutup-atas-kiri.png");
  background-position:top left;
}
.deco-closing-tr{
  top:0; right:0; width:150px; height:150px;
  background-image:url("assets/penutup-atas-kanan.png");
  background-position:top right;
}
.deco-closing-bawah{
  inset:0;
  background-image:url("assets/penutup-bawah.png");
  background-position: center 100%;
  background-size: contain;
}

/* ============ GATE ============ */
#gate{
  position:fixed; inset:0; z-index:100;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  transition: transform 0.9s cubic-bezier(.7,0,.2,1), opacity 0.9s ease;
  container-type: inline-size; /* biar animasi burung (cqw) relatif ke lebar gate, bukan lebar layar */
}
#gate.closed{ transform: translateY(-100%); opacity:0; pointer-events:none; }
.gate-inner{ position:relative; z-index:2; max-width:420px; padding: 40px 30px; text-align:center; }
.gate-eyebrow{
  font-size:13px; letter-spacing:4px; text-transform:uppercase; color:var(--gold-deep); margin-bottom:18px;
}
.gate-names{
  font-size:clamp(38px, 11vw, 60px); line-height:1.05; color:var(--ink); margin: 6px 0 4px;
}
.gate-amp{ color: var(--gold); }
.gate-date{
  font-size:15px; letter-spacing:3px; color:var(--ink-soft); margin-top:10px; text-transform:uppercase;
}
.gate-guest-box{
  margin-top:38px; padding-top:24px; border-top:1px solid var(--line-faint);
}
.gate-panel{
  margin-top:32px;
  padding:26px 24px 30px;
  background: rgba(255,255,255,0.55);
  border: 1px solid rgba(255,255,255,0.6);
  border-radius: 18px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 8px 24px rgba(44,38,32,0.06);
}

/* Cascading entrance saat gate pertama kali muncul: eyebrow -> nama -> tanggal -> panel */
.gate-eyebrow, .gate-names, .gate-date, .gate-panel{
  opacity:0;
  transform: translateY(18px);
  animation: gateItemRise 0.9s cubic-bezier(.22,1,.36,1) forwards;
}
.gate-eyebrow{ animation-delay: 0.45s; }
.gate-names{ animation-delay: 0.62s; }
.gate-date{ animation-delay: 0.85s; }
.gate-panel{ animation-delay: 1.05s; }
@keyframes gateItemRise{
  to{ opacity:1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce){
  .gate-eyebrow, .gate-names, .gate-date, .gate-panel{ animation:none; opacity:1; transform:none; }
}
.gate-panel .gate-guest-box{
  margin-top:0; padding-top:0; border-top:none;
}
.gate-guest-label{ font-size:12px; letter-spacing:2px; text-transform:uppercase; color:var(--ink-soft); }
.gate-guest-name{ font-size:clamp(20px, 5.5vw, 28px); margin-top:6px; color:var(--gold-deep); font-family:'Cormorant Garamond',serif; font-weight:600;}
.open-btn{
  position:relative;
  overflow:hidden;
  margin-top:34px;
  display:inline-flex; align-items:center; gap:10px;
  background: var(--ink);
  color: var(--cream);
  border:none; border-radius: 999px;
  padding: 15px 34px;
  font-family:'Jost', sans-serif;
  font-size:14px; letter-spacing:2px; text-transform:uppercase;
  cursor:pointer;
  box-shadow: var(--shadow);
  transition: transform 0.25s ease, background 0.25s ease;
}
.open-btn:active{ transform: scale(0.96); }

/* Kilau tipis yang menyapu tombol solid saat ditekan */
.open-btn::after, .btn-solid::after{
  content:"";
  position:absolute; top:0; left:-60%; width:35%; height:100%;
  background: linear-gradient(115deg, transparent, rgba(255,255,255,0.35), transparent);
  transform: skewX(-18deg);
  transition: left 0.65s ease;
  pointer-events:none;
}
.open-btn:active::after, .btn-solid:active::after{ left:130%; }
.btn-outline:active{ box-shadow: 0 0 0 5px rgba(169,129,45,0.14); }
.env-icon{ display:inline-block; animation: floatY 2.4s ease-in-out infinite; }
@keyframes floatY{ 0%,100%{transform:translateY(0)} 50%{transform:translateY(-6px)} }

/* ============ DIVIDER (borderline asset) ============ */
/* .divider-line{
  width:160px; height:24px; margin: 22px auto;
  background-image:url("data:image/png;base64,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");
  background-repeat:no-repeat;
  background-position:center;
  background-size:contain;
  position:relative; z-index:2;
} */

/* Divider line aktif: garis emas yang "menggambar diri" saat masuk viewport,
   dilengkapi ornamen kecil di tengah. Dipicu bareng .fade-in.visible. */
.divider-line{
  position:relative;
  width:0; height:1px; margin:22px auto;
  background: linear-gradient(90deg, transparent, var(--gold-line), transparent);
  transition: width 1s cubic-bezier(.22,1,.36,1) 0.1s;
}
.divider-line.visible{ width:130px; }
.divider-line::after{
  content:"❦";
  position:absolute; top:50%; left:50%;
  transform:translate(-50%,-50%);
  font-size:13px; line-height:1;
  color: var(--gold-deep);
  opacity:0;
  transition: opacity 0.6s ease 0.5s;
}
.divider-line.visible::after{ opacity:1; }
@media (prefers-reduced-motion: reduce){
  .divider-line{ transition:none; width:130px; }
  .divider-line::after{ transition:none; opacity:1; }
}

/* ============ HERO ============ */
#hero .eyebrow{ font-size:14px; letter-spacing:5px; text-transform:uppercase; color:var(--gold-deep); position:relative; z-index:2;}
#hero h1{ font-size:clamp(42px, 12vw, 70px); line-height:1.05; margin:10px 0 6px; position:relative; z-index:2;}
#hero .amp{ color:var(--gold); }
#hero .date-line{ font-size:16px; letter-spacing:3px; color:var(--ink-soft); text-transform:uppercase; margin-top:6px; position:relative; z-index:2;}

.countdown{ display:flex; gap:14px; margin-top:36px; position:relative; z-index:2; }
.cd-box{
  background: rgba(255,255,255,0.6);
  border:1px solid var(--line-faint);
  border-radius:14px;
  width:66px; padding:12px 0;
  backdrop-filter: blur(2px);
}
.cd-num{ font-size:clamp(20px, 5.5vw, 30px); font-family:'Cormorant Garamond',serif; font-weight:600; color:var(--ink); display:inline-block; }
.cd-label{ font-size:10px; letter-spacing:1px; text-transform:uppercase; color:var(--ink-soft); margin-top:2px; }

/* Denyut halus tiap angka countdown berganti */
@keyframes cdPop{
  0%{ transform:scale(1); }
  35%{ transform:scale(1.22); color:var(--gold-deep); }
  100%{ transform:scale(1); }
}
.cd-num.pop{ animation: cdPop 0.45s ease; }
@media (prefers-reduced-motion: reduce){
  .cd-num.pop{ animation:none; }
}

/* Kelopak bunga melayang turun perlahan di hero (dekorasi ringan, non-blocking) */
.petal{
  position:absolute;
  top:-24px;
  z-index:1;
  font-size:14px;
  color: var(--gold);
  opacity:0.8;
  pointer-events:none;
  animation-name: petalFall;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  will-change: transform, opacity;
}
@keyframes petalFall{
  0%{ transform: translate(0,0) rotate(0deg); opacity:0; }
  8%{ opacity:0.8; }
  90%{ opacity:0.5; }
  100%{ transform: translate(var(--petal-drift, 24px), 420px) rotate(360deg); opacity:0; }
}
@media (prefers-reduced-motion: reduce){
  .petal{ display:none; }
}

/* Garis progres scroll tipis di atas layar */
#scrollProgress{
  position:fixed; top:0; left:0;
  height:3px; width:0px;
  background: linear-gradient(90deg, var(--gold), var(--gold-deep));
  z-index:150;
  transition: width 0.12s linear;
  pointer-events:none;
}

.scroll-hint{
  position:absolute; bottom:26px; left:50%; transform:translateX(-50%);
  font-size:11px; letter-spacing:2px; text-transform:uppercase; color:var(--ink-soft);
  display:flex; flex-direction:column; align-items:center; gap:6px;
  z-index:2;
}
.scroll-hint .arrow{ animation: floatY 1.8s ease-in-out infinite; }

/* ============ VERSE ============ */
#verse{ background: var(--ink); color: var(--cream); }
#verse .quote-mark{ font-family:'Cormorant Garamond', serif; font-size:clamp(50px, 14vw, 80px); color:var(--gold); line-height:0.6; margin-bottom:10px;}
#verse p.text{ font-family:'Cormorant Garamond', serif; font-size:clamp(18px, 4.5vw, 26px); font-style:italic; line-height:1.55; max-width:480px; color:#f2e9d3;}
#verse .cite{ margin-top:20px; font-size:13px; letter-spacing:2px; text-transform:uppercase; color:var(--gold-line);}

/* ============ BRIDE & GROOM ============ */
.section-title-script{ font-family:'Great Vibes', cursive; font-size:clamp(32px, 9vw, 48px); color:var(--ink); position:relative; z-index:2;}
.section-title-sub{ font-family:'Cormorant Garamond',serif; font-size:clamp(20px, 4.5vw, 28px); letter-spacing:6px; text-transform:uppercase; color:var(--ink); margin-top:-8px; font-weight:600; position:relative; z-index:2;}

.couple-grid{ display:flex; flex-direction:column; gap:30px; margin-top:36px; width:100%; max-width:230px; position:relative; z-index:2;}

.couple-card{
    position:relative;
    width:100%;
    border:1px solid var(--gold-line);
    background:rgba(247, 240, 221, 0.55);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
    box-shadow: 0 16px 36px rgba(58,42,23,0.16);
    overflow:hidden;
}

.couple-photo-wrap{
    position:relative;
    width:100%;
    aspect-ratio: 4 / 5;
    overflow:hidden;
}
.couple-photo{
    width:100%;
    height:100%;
    object-fit:cover;
    object-position: top center;
    display:block;
}
/* Gradasi lembut supaya foto "melebur" ke dalam kartu, bukan terpotong tegas.
   Pakai beberapa titik warna (bukan cuma 2) supaya transisinya terasa
   melengkung halus, dan titik paling bawah disamakan dengan opacity kotak
   nama (.couple-card ~0.55) supaya tidak ada loncatan opacity di garis
   sambung foto -> kotak nama. */
.couple-photo-wrap::after{
    content:"";
    position:absolute; inset:0;
    background: linear-gradient(to top,
      rgba(247,240,221,0.94) 0%,
      rgba(247,240,221,0.75) 10%,
      rgba(247,240,221,0.45) 20%,
      rgba(247,240,221,0.20) 30%,
      rgba(247,240,221,0.06) 38%,
      rgba(247,240,221,0) 46%);
    pointer-events:none;
}

/* Kupu-kupu yang terbang keliling lalu hinggap sejenak di sekitar nama mempelai,
   supaya foto tetap bersih. Posisi diatur pakai left/top persen relatif ke .couple-name-wrap. */
.couple-name-wrap{
    position:relative;
    display:inline-block;
    padding: 14px 26px;
    margin: -14px 0;
}
.couple-butterfly{
    position:absolute;
    width:20px; height:20px;
    z-index:2;
    pointer-events:none;
    object-fit:contain;
    filter: drop-shadow(0 3px 5px rgba(58,42,23,0.2));
}
.couple-butterfly-groom{
    animation: butterflyGroom 11s ease-in-out infinite;
}
.couple-butterfly-bride{
    animation: butterflyBride 12s ease-in-out infinite;
    animation-delay: -4s;
}

@keyframes butterflyGroom{
    0%{   left:88%; top:60%; transform: scaleX(1) rotate(4deg); }
    18%{  left:6%;  top:-10%; transform: scaleX(1) rotate(-3deg); }
    36%{  left:50%; top:40%; transform: scaleX(-1) rotate(2deg); }
    50%{  left:82%; top:70%; transform: scaleX(-1) rotate(0deg); }
    /* hinggap di dekat nama */
    68%{  left:82%; top:70%; transform: scaleX(-1) rotate(0deg); }
    85%{  left:14%; top:20%; transform: scaleX(1) rotate(-4deg); }
    100%{ left:88%; top:60%; transform: scaleX(1) rotate(4deg); }
}
@keyframes butterflyBride{
    0%{   left:-8%; top:55%; transform: scaleX(-1) rotate(-4deg); }
    18%{  left:92%; top:-8%; transform: scaleX(-1) rotate(3deg); }
    36%{  left:40%; top:45%; transform: scaleX(1) rotate(-2deg); }
    52%{  left:10%; top:75%; transform: scaleX(1) rotate(0deg); }
    /* hinggap di dekat nama */
    70%{  left:10%; top:75%; transform: scaleX(1) rotate(0deg); }
    86%{  left:80%; top:15%; transform: scaleX(-1) rotate(4deg); }
    100%{ left:-8%; top:55%; transform: scaleX(-1) rotate(-4deg); }
}
@media (prefers-reduced-motion: reduce){
    .couple-butterfly-groom, .couple-butterfly-bride{ animation:none; left:50%; top:-16%; }
}

.couple-info{
    position:relative;
    padding: 4px 16px 26px;
    text-align:center;
}
.couple-role{
    font-size:11px;
    letter-spacing:3px;
    text-transform:uppercase;
    color:var(--gold-deep);
    margin-bottom:4px;
}

.frame-corner{
    position:absolute;
    width:20px;
    height:20px;
    border:1.5px solid var(--gold-deep);
    z-index:3;
}
.frame-corner.tl{ top:9px; left:9px; border-right:none; border-bottom:none; }
.frame-corner.tr{ top:9px; right:9px; border-left:none; border-bottom:none; }
.frame-corner.bl{ bottom:9px; left:9px; border-right:none; border-top:none; }
.frame-corner.br{ bottom:9px; right:9px; border-left:none; border-top:none; }
.couple-divider{
    font-family:'Cormorant Garamond',serif;
    font-size:16px;
    color:var(--gold-deep);
    margin:6px 0 10px;
    line-height:1;
}
.couple-name{
    font-family:'Cormorant Garamond',serif;
    font-size:clamp(24px, 6vw, 32px);
    font-weight:600;
    color:var(--ink);
    line-height:1.3;
}
.couple-desc{
    font-family:'Cormorant Garamond',serif;
    font-size:17px;
    color:var(--ink-soft);
    line-height:1.6;
}
.couple-parents{ font-weight:500; color:var(--gold-deep); }

/* ============ EVENTS ============ */
#events{ padding:0; min-height:100vh; }
.events-bg{
  position:absolute; inset:0;
  background-image:url("assets/save-the-date.png");
  background-size:cover;
  background-position:center;
  z-index:0;
}
.events-shade{
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(20,14,6,0.15) 0%, rgba(20,14,6,0.35) 55%, rgba(20,14,6,0.75) 100%);
  z-index:1;
}
.events-content{
  position:relative; z-index:2;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-end;
  min-height:100vh; width:100%;
  padding: 300px 24px 60px;
  gap:24px;
}
.event-card{
  position:relative;
  width:100%; max-width:400px;
  background: rgba(249,243,226,0.92);
  border:1px solid var(--line-faint);
  border-radius:18px;
  padding: 30px 26px;
  box-shadow: var(--shadow);
  overflow:hidden;
}
.event-name{ font-family:'Mrs Saint Delafield', cursive; font-size:clamp(35px, 7.5vw, 38px); color:var(--gold-deep); position:relative; z-index:2;}
.event-date{ font-family:'Cormorant Garamond',serif; font-size:19px; font-weight:600; margin-top:10px; color:var(--ink); position:relative; z-index:2;}
.event-time{ font-size:15px; color:var(--gold-deep); letter-spacing:1px; margin-top:4px; position:relative; z-index:2;}
.event-place{ font-size:14px; color:var(--ink-soft); margin-top:10px; line-height:1.5; position:relative; z-index:2;}
.event-actions{ display:flex; gap:10px; margin-top:20px; position:relative; z-index:2;}
.btn-outline{
  flex:1;
  border:1px solid var(--gold-deep);
  color:var(--gold-deep);
  background:transparent;
  padding:11px 8px;
  border-radius:8px;
  font-size:11px; letter-spacing:1.5px; text-transform:uppercase;
  cursor:pointer;
  font-family:'Jost',sans-serif;
  transition: background 0.2s ease, color 0.2s ease;
}
.btn-outline:active{ background:var(--gold-deep); color:#fff; }

.deco-resepsi-tl{
  top:-10px; left:-10px; width:100px; height:100px;
  background-image:var(--img-slide5-tl);
  background-position:top left; opacity:0.9;
}
.deco-resepsi-bl{
  bottom:-10px; left:-10px; width:110px; height:130px;
  background-image:var(--img-slide5-bl);
  background-position:bottom left; opacity:0.9;
}
.deco-resepsi-br{
  bottom:-10px; right:-10px; width:110px; height:110px;
  background-image:var(--img-slide5-br);
  background-position:bottom right; opacity:0.9;
}

/* ============ GALLERY ============ */
.moment{
    width: 100%;
    position: relative;
}

.gallery-title{
    font-family: 'Great Vibes', cursive;
    font-size: clamp(38px, 10vw, 54px);
    color: var(--ink);
    font-weight: 400;
    line-height: 1;
    margin-bottom: 8px;
}

.gallery-grid-wrap{
  width:100%; max-width:420px; margin-top:30px; position:relative; z-index:2;
}
.gallery-grid{
  display:grid;
  grid-template-columns: repeat(2, 1fr);
  gap:10px;
}
.gallery-photo{
  width:100%; aspect-ratio: 3 / 4; height:auto; object-fit:cover; border-radius:10px;
  box-shadow: 0 8px 18px rgba(58,42,23,0.2);
  cursor:pointer;
  transition: transform 0.7s cubic-bezier(.22,1,.36,1), opacity 0.6s ease;
  display:block;
  opacity:0;
  transform: scale(1.12);
  background: linear-gradient(100deg, #ece3cf 30%, #f7f0dd 50%, #ece3cf 70%);
  background-size: 200% 100%;
  animation: photoShimmer 1.4s ease-in-out infinite;
}
.gallery-photo.loaded{
  opacity:1;
  transform: scale(1);
  animation:none;
  background:none;
}
.gallery-photo.loaded:active{ transform: scale(0.97); }
@media (prefers-reduced-motion: reduce){
  .gallery-photo{ transform:none; transition: opacity 0.6s ease; }
  .gallery-photo.loaded:active{ transform:none; }
}

@keyframes photoShimmer{
  0%{ background-position: 200% 0; }
  100%{ background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce){
  .gallery-photo{ animation:none; }
}

@media (min-width:600px){
  .gallery-grid-wrap{ max-width:520px; }
  .gallery-grid{
    grid-template-columns: repeat(3, 1fr);
  }
}

#lightbox{
  position:fixed; inset:0; background:rgba(20,14,6,0.92); z-index:200;
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none; transition:opacity 0.3s ease;
}
#lightbox.show{ opacity:1; pointer-events:auto; }
#lightbox img{ max-width:88%; max-height:80vh; border-radius:8px; box-shadow:0 20px 60px rgba(0,0,0,0.5); }
#lightbox .close-btn{
  position:absolute; top:24px; right:24px; color:#f7f0dd; font-size:28px; background:none; border:none; cursor:pointer;
}

/* ============ DOWNLOAD FRAME STORY ============ */
/* Pakai lagi aset bunga goyang yang sebelumnya nganggur di slide Gate */
.deco-story-left{
  top:0; left:0; width:150px; height:236px;
  background-image:url("assets/bunga-kiri-slide-1.png");
  background-position:top left;
  transform-origin: top left;
  animation: swayLeft 5.5s ease-in-out infinite;
}
.deco-story-right{
  top:0; right:0; width:180px; height:170px;
  background-image:url("assets/bunga-kanan-slide-1.png");
  background-position:top right;
  transform-origin: top right;
  animation: swayRight 6.5s ease-in-out infinite;
  animation-delay: -1.2s;
}
.frame-preview-wrap{
  width:100%; max-width:220px; margin-top:26px;
  border-radius:14px; overflow:hidden;
  border:1px solid var(--line-faint);
  box-shadow: var(--shadow);
  position:relative; z-index:2;
}
.frame-preview-img{
  display:block; width:100%; height:auto; aspect-ratio:9/16; object-fit:cover;
}
.frame-download-btn{
  display:inline-block;
  margin-top:22px; max-width:260px; width:100%;
  text-align:center; text-decoration:none;
  position:relative; z-index:2;
}

/* ============ KADO ============ */
.gift-grid{
  display:flex; flex-direction:column; gap:26px;
  width:100%; max-width:380px; margin-top:30px;
  position:relative; z-index:2;
}
.gift-card{
  position:relative;
  text-align:center;
}

/* ---- Kartu debit ---- */
.bank-card{
  position:relative;
  width:100%;
  aspect-ratio: 1.586 / 1;
  border-radius:18px;
  padding:20px 22px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  box-shadow: 0 12px 28px -10px rgba(0,0,0,0.25), 0 2px 6px rgba(0,0,0,0.1);
  font-family:'Jost', sans-serif;
  isolation:isolate;
  border:1px solid rgba(0,0,0,0.06);
}
/* kilau/tekstur halus di atas gradasi */
.bank-card-shine{
  position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(255,255,255,0.5), transparent 55%),
    radial-gradient(90% 70% at 0% 100%, rgba(0,0,0,0.05), transparent 60%);
}
.bank-card-top{
  position:relative; z-index:1;
  display:flex; align-items:center; justify-content:space-between;
}
.bank-card-logo-img{
  height:22px; width:auto; max-width:60%; object-fit:contain; object-position:left center;
  filter: drop-shadow(0 1px 1px rgba(0,0,0,0.08));
}
.bank-card-wave{ width:24px; height:24px; transform:rotate(90deg); }

.bank-card-chip{
  position:relative; z-index:1;
  width:42px; height:32px; border-radius:6px;
  background: linear-gradient(135deg, #f4dfa0 0%, #d9b45f 45%, #f6e6b8 70%, #c79a3f 100%);
  display:flex; align-items:center; justify-content:space-evenly;
  padding:0 5px;
  box-shadow: inset 0 0 0 1px rgba(120,90,20,0.35);
}
.bank-card-chip span{
  display:block; width:1px; height:70%; background:rgba(120,90,20,0.45);
}
.bank-card-chip span:nth-child(2){ height:100%; width:1px; }

.bank-card-number{
  position:relative; z-index:1;
  font-family:'Jost', sans-serif;
  font-weight:600;
  font-size:clamp(20px, 5.6vw, 25px);
  letter-spacing:3px;
  margin-top:-4px;
}
.bank-card-bottom{
  position:relative; z-index:1;
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:10px;
}
.bank-card-holder{ display:flex; flex-direction:column; text-align:left; min-width:0; }
.bank-card-label{
  font-size:9px; letter-spacing:1.5px; text-transform:uppercase;
  opacity:0.6; margin-bottom:3px;
}
.bank-card-name{
  font-size:clamp(10.5px, 3.4vw, 14px); letter-spacing:0.5px; text-transform:uppercase;
  font-weight:500; line-height:1.25;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical;
  overflow:hidden;
}

/* Warna sesuai kartu debit asli tiap bank */
.bank-card[data-bank="bca"]{
  background: linear-gradient(160deg, #ffffff 0%, #eaf3fc 55%, #cfe4f7 100%);
  color:#0a3d7a;
}
.bank-card[data-bank="bca"] .bank-card-wave{ color:#0a5aa8; }
.bank-card[data-bank="bca"] .bank-card-number{ color:#0a3d7a; }
.bank-card[data-bank="bca"] .bank-card-label{ color:#0a3d7a; }

.bank-card[data-bank="mandiri"]{
  background: linear-gradient(160deg, #ffffff 0%, #f2f4f7 55%, #e4e8ee 100%);
  color:#14335e;
}
.bank-card[data-bank="mandiri"] .bank-card-wave{ color:#ffb100; }
.bank-card[data-bank="mandiri"] .bank-card-number{ color:#14335e; }
.bank-card[data-bank="mandiri"] .bank-card-label{ color:#14335e; }
.bank-card[data-bank="mandiri"]::after{
  content:''; position:absolute; z-index:0; right:-30px; bottom:-30px;
  width:140px; height:140px; border-radius:50%;
  background: radial-gradient(circle, rgba(255,177,0,0.16), transparent 70%);
}

.gift-card .btn-outline{
  margin-top:14px; width:100%;
}
.gift-card .btn-outline.copied{
  background:var(--gold-deep); color:#fff;
}

/* ============ RSVP ============ */
.rsvp-form{ width:100%; max-width:380px; margin-top:30px; display:flex; flex-direction:column; gap:14px; position:relative; z-index:2;}
.rsvp-form input, .rsvp-form select, .rsvp-form textarea{
  width:100%; padding:14px 16px; border-radius:10px;
  border:1px solid var(--line-faint);
  background: rgba(255,255,255,0.6);
  font-family:'Jost',sans-serif; font-size:14px; color:var(--ink);
  outline:none;
}
.rsvp-form textarea{ resize:vertical; min-height:80px; }
.rsvp-form label{ font-size:11px; letter-spacing:1.5px; text-transform:uppercase; color:var(--ink-soft); text-align:left; margin-bottom:-8px; }
.rsvp-status-msg{
  position:fixed;
  left:50%;
  bottom:28px;
  transform:translate(-50%, 20px);
  z-index:200;
  max-width:calc(100% - 40px);
  background:#fffdf6;
  border:1px solid var(--line-faint);
  box-shadow: 0 10px 30px rgba(44,38,32,0.18);
  border-radius:14px;
  padding:14px 20px;
  font-family:'Cormorant Garamond',serif; font-size:15px; text-align:center;
  color:var(--ink);
  opacity:0;
  pointer-events:none;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.rsvp-status-msg.show{
  opacity:1;
  transform:translate(-50%, 0);
  pointer-events:auto;
}
.rsvp-status-msg.success{ border-color:#bcd8bc; color:#4c7a4c; }
.rsvp-status-msg.error{ border-color:#e3b9b2; color:#a5453a; }
.btn-solid{
  position:relative; overflow:hidden;
  margin-top:6px;
  background: var(--ink); color:var(--cream); border:none; border-radius:10px;
  padding:16px; font-size:14px; letter-spacing:2px; text-transform:uppercase;
  cursor:pointer; font-family:'Jost',sans-serif;
}
.btn-solid:active{ transform:scale(0.98); }

.wishes-list{
  width:100%; max-width:380px; margin-top:26px; text-align:left;
  max-height:280px; overflow-y:auto; position:relative; z-index:2;
  background: rgba(255,255,255,0.55);
  border: 1px solid rgba(255,255,255,0.6);
  border-radius: 16px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 4px 14px rgba(44,38,32,0.06);
  padding: 6px 18px;
}
.wish-item{ padding:14px 0; border-bottom:1px solid var(--line-faint); }
.wish-item:last-child{ border-bottom:none; }
.wish-name{ font-weight:600; font-size:14px; color:var(--gold-deep); }
.wish-text{ font-size:13.5px; color:var(--ink-soft); margin-top:3px; }
.wish-empty{ font-size:13px; color:var(--ink-soft); font-style:italic; padding:14px 0; }
.wish-status{ font-weight:400; font-size:12px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:0.5px; }

/* ============ CLOSING ============ */
#closing{ background: var(--ink); color:var(--cream); }
#closing .script{ font-size:clamp(34px, 9.5vw, 50px); color:var(--gold-line); }
#closing p{ font-family:'Cormorant Garamond',serif; font-size:clamp(15px, 3.8vw, 17px); max-width:380px; line-height:1.7; margin-top:14px; color:#e9ddc0; }
#closing .couple-sign{ margin-top:26px; font-size:clamp(18px, 4.5vw, 22px); font-family:'Cormorant Garamond',serif; font-weight:600; color:var(--cream); }

.fade-in{ opacity:0; transform:translateY(24px) scale(0.97); transition: opacity 0.9s cubic-bezier(.22,1,.36,1), transform 0.9s cubic-bezier(.22,1,.36,1); }
.fade-in.visible{ opacity:1; transform:translateY(0) scale(1); }

/* Stagger supaya kartu pasangan & kartu acara tidak muncul barengan */
.couple-card:nth-child(1){ transition-delay: 0s; }
.couple-card:nth-child(2){ transition-delay: 0.18s; }
.event-card:nth-child(1){ transition-delay: 0s; }
.event-card:nth-child(2){ transition-delay: 0.18s; }

/* Efek Ken Burns halus di foto pasangan setelah kartunya kelihatan */
.couple-photo{ transform: scale(1); transition: transform 6s cubic-bezier(.22,1,.36,1); }
.couple-card.visible .couple-photo{ transform: scale(1.07); }
@media (prefers-reduced-motion: reduce){
  .couple-photo{ transition:none; }
  .couple-card.visible .couple-photo{ transform:none; }
}

/* Gallery (Momen Kami) - reuses slide-5 flower assets, sized for mobile */
.deco-gallery-tl{
  top:-8px;
  left:-8px;
  width:192px;
  height:192px;
  background-image:var(--img-slide5-tl);
  background-position:top left;
  opacity:0.85;
}

.deco-gallery-bl{
  bottom:-8px;
  left:-8px;
  width:201px;
  height:238px;
  background-image:var(--img-slide5-bl);
  background-position:bottom left;
  opacity:0.85;
}

.deco-gallery-br{
  bottom:-8px;
  right:-8px;
  width:201px;
  height:201px;
  background-image:var(--img-slide5-br);
  background-position:bottom right;
  opacity:0.85;
}

/* ============ TABLET / DESKTOP: bungkus jadi "kartu" di tengah ============ */
/* Di HP, .page-wrap tidak berpengaruh (lebar penuh seperti biasa).
   Di layar lebar, konten dibatasi lebar maksimum & dipusatkan supaya tidak
   melebar kosong atau dekorasi terlihat aneh menempel di pojok layar lebar. */
@media (min-width:640px){
  body{
    background: var(--ink);
    display:flex;
    justify-content:center;
  }
  .page-wrap{
    max-width:480px;
    width:100%;
    margin:0 auto;
    position:relative;
    box-shadow: 0 0 80px rgba(0,0,0,0.45);
  }
  #gate{
    left:50%;
    right:auto;
    width:480px;
    max-width:100vw;
    transform: translate(-50%, 0);
    box-shadow: 0 0 80px rgba(0,0,0,0.45);
    overflow:hidden; /* jangan biarkan dekorasi bunga nembus keluar kartu */
  }
  #gate.closed{
    transform: translate(-50%, -100%);
  }
  /* Bunga gate dulu tetap selebar 1000px (dipusatkan), jadi nongol keluar
     dari kartu 480px ke area gelap di kiri-kanan. Disamakan selebar kartu. */
  .deco-gate-bottom{
    left:0;
    margin-left:0;
    width:100%;
    height:216px;
  }
  /* Dots navigasi ikut mengikuti tepi kanan "kartu", bukan tepi layar */
  .slide-dots{
    right: calc(50% - 240px - 30px);
  }
}