/* ============================================================
   reset global — Elementor mengasumsikan border-box & gambar terikat lebar induk
   ============================================================ */
*, *::before, *::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
img{max-width:100%;height:auto;border:0;vertical-align:middle}
.elementor-image-box-img img{width:100%;height:auto;display:block}

/* ============================================================
   UndanganKita reference conversion - custom skin
   (widgets that have no Elementor core CSS: divider, icon,
    gallery, carousel, countdown, timeline + the LWS widgets)
   ============================================================ */

/* ---------- entrance animations ---------- */
@keyframes e-fadeIn{from{opacity:0}to{opacity:1}}
@keyframes e-fadeInUp{from{opacity:0;transform:translate3d(0,40px,0)}to{opacity:1;transform:none}}
@keyframes e-fadeInDown{from{opacity:0;transform:translate3d(0,-40px,0)}to{opacity:1;transform:none}}
@keyframes e-fadeInLeft{from{opacity:0;transform:translate3d(-60px,0,0)}to{opacity:1;transform:none}}
@keyframes e-fadeInRight{from{opacity:0;transform:translate3d(60px,0,0)}to{opacity:1;transform:none}}
@keyframes e-zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}to{opacity:1;transform:none}}
@keyframes e-zoomInUp{from{opacity:0;transform:scale3d(.4,.4,.4) translate3d(0,60px,0)}to{opacity:1;transform:none}}
@keyframes e-zoomInDown{from{opacity:0;transform:scale3d(.4,.4,.4) translate3d(0,-60px,0)}to{opacity:1;transform:none}}
@keyframes e-zoomInLeft{from{opacity:0;transform:scale3d(.4,.4,.4) translate3d(-60px,0,0)}to{opacity:1;transform:none}}
@keyframes e-zoomInRight{from{opacity:0;transform:scale3d(.4,.4,.4) translate3d(60px,0,0)}to{opacity:1;transform:none}}
@keyframes e-slideInUp{from{transform:translate3d(0,100%,0);visibility:visible}to{transform:none}}
@keyframes e-slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:none}}
@keyframes e-slideInLeft{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:none}}
@keyframes e-slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:none}}
@keyframes e-bounceInUp{0%{opacity:0;transform:translate3d(0,60px,0)}60%{opacity:1;transform:translate3d(0,-15px,0)}80%{transform:translate3d(0,8px,0)}to{transform:none}}
@keyframes e-bounceInDown{0%{opacity:0;transform:translate3d(0,-60px,0)}60%{opacity:1;transform:translate3d(0,15px,0)}80%{transform:translate3d(0,-8px,0)}to{transform:none}}
@keyframes e-bounceInLeft{0%{opacity:0;transform:translate3d(-60px,0,0)}60%{opacity:1;transform:translate3d(15px,0,0)}80%{transform:translate3d(-8px,0,0)}to{transform:none}}
@keyframes e-bounceInRight{0%{opacity:0;transform:translate3d(60px,0,0)}60%{opacity:1;transform:translate3d(-15px,0,0)}80%{transform:translate3d(8px,0,0)}to{transform:none}}
@keyframes e-rotateInUpRight{from{opacity:0;transform:rotate(200deg)}to{opacity:1;transform:none}}
@keyframes e-rotateInUpLeft{from{opacity:0;transform:rotate(-200deg)}to{opacity:1;transform:none}}
@keyframes e-rotateInDownRight{from{opacity:0;transform:rotate(-200deg)}to{opacity:1;transform:none}}
@keyframes e-rotateInDownLeft{from{opacity:0;transform:rotate(200deg)}to{opacity:1;transform:none}}
@keyframes e-rotateIn{from{opacity:0;transform:rotate(-200deg)}to{opacity:1;transform:none}}
@keyframes e-rollIn{from{opacity:0;transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;transform:none}}
@keyframes e-flipInX{from{opacity:0;transform:perspective(400px) rotateX(90deg)}40%{opacity:1}to{transform:none}}
@keyframes e-flipInY{from{opacity:0;transform:perspective(400px) rotateY(90deg)}40%{opacity:1}to{transform:none}}
@keyframes e-lightSpeedIn{from{opacity:0;transform:translate3d(100%,0,0) skewX(-30deg)}60%{opacity:1;transform:skewX(10deg)}80%{transform:skewX(-3deg)}to{opacity:1;transform:none}}
@keyframes e-jackInTheBox{from{opacity:0;transform:scale(.1) rotate(30deg);transform-origin:center bottom}50%{transform:rotate(-10deg)}to{opacity:1;transform:none}}
@keyframes e-hinge{0%{opacity:1;transform-origin:top left;animation-timing-function:ease-in-out}20%{transform:rotate(80deg)}40%{transform:rotate(60deg);opacity:1}60%{transform:rotate(80deg);opacity:0}to{opacity:0;transform:translate3d(0,700px,0)}}
@keyframes e-tada{from{transform:scale3d(1,1,1)}10%,20%{transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{transform:none}}
@keyframes e-pulse{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.08,1.08,1.08)}to{transform:scale3d(1,1,1)}}
@keyframes e-swing{20%{transform:rotate(15deg)}40%{transform:rotate(-10deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-5deg)}to{transform:none}}
@keyframes e-wobble{15%{transform:translate3d(-25%,0,0) rotate(-5deg)}30%{transform:translate3d(20%,0,0) rotate(3deg)}45%{transform:translate3d(-15%,0,0) rotate(-3deg)}60%{transform:translate3d(10%,0,0) rotate(2deg)}75%{transform:translate3d(-5%,0,0) rotate(-1deg)}to{transform:none}}
@keyframes e-rubberBand{from{transform:scale3d(1,1,1)}30%{transform:scale3d(1.25,.75,1)}40%{transform:scale3d(.75,1.25,1)}50%{transform:scale3d(1.15,.85,1)}65%{transform:scale3d(.95,1.05,1)}75%{transform:scale3d(1.05,.95,1)}to{transform:scale3d(1,1,1)}}
@keyframes e-heartBeat{0%,100%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}

.e-js .e-anim{visibility:hidden}
.e-js .e-anim.e-vis{visibility:visible;animation-duration:1s;animation-fill-mode:both}
.e-js .e-anim.e-vis.e-an-fadeIn{animation-name:e-fadeIn}
.e-js .e-anim.e-vis.e-an-fadeInUp{animation-name:e-fadeInUp}
.e-js .e-anim.e-vis.e-an-fadeInDown{animation-name:e-fadeInDown}
.e-js .e-anim.e-vis.e-an-fadeInLeft{animation-name:e-fadeInLeft}
.e-js .e-anim.e-vis.e-an-fadeInRight{animation-name:e-fadeInRight}
.e-js .e-anim.e-vis.e-an-zoomIn{animation-name:e-zoomIn}
.e-js .e-anim.e-vis.e-an-zoomInUp{animation-name:e-zoomInUp}
.e-js .e-anim.e-vis.e-an-zoomInDown{animation-name:e-zoomInDown}
.e-js .e-anim.e-vis.e-an-zoomInLeft{animation-name:e-zoomInLeft}
.e-js .e-anim.e-vis.e-an-zoomInRight{animation-name:e-zoomInRight}
.e-js .e-anim.e-vis.e-an-slideInUp{animation-name:e-slideInUp}
.e-js .e-anim.e-vis.e-an-slideInDown{animation-name:e-slideInDown}
.e-js .e-anim.e-vis.e-an-slideInLeft{animation-name:e-slideInLeft}
.e-js .e-anim.e-vis.e-an-slideInRight{animation-name:e-slideInRight}
.e-js .e-anim.e-vis.e-an-bounceInUp{animation-name:e-bounceInUp}
.e-js .e-anim.e-vis.e-an-bounceInDown{animation-name:e-bounceInDown}
.e-js .e-anim.e-vis.e-an-bounceInLeft{animation-name:e-bounceInLeft}
.e-js .e-anim.e-vis.e-an-bounceInRight{animation-name:e-bounceInRight}
.e-js .e-anim.e-vis.e-an-rotateIn{animation-name:e-rotateIn}
.e-js .e-anim.e-vis.e-an-rotateInUpRight{animation-name:e-rotateInUpRight}
.e-js .e-anim.e-vis.e-an-rotateInUpLeft{animation-name:e-rotateInUpLeft}
.e-js .e-anim.e-vis.e-an-rotateInDownRight{animation-name:e-rotateInDownRight}
.e-js .e-anim.e-vis.e-an-rotateInDownLeft{animation-name:e-rotateInDownLeft}
.e-js .e-anim.e-vis.e-an-rollIn{animation-name:e-rollIn}
.e-js .e-anim.e-vis.e-an-flipInX{animation-name:e-flipInX}
.e-js .e-anim.e-vis.e-an-flipInY{animation-name:e-flipInY}
.e-js .e-anim.e-vis.e-an-lightSpeedIn{animation-name:e-lightSpeedIn}
.e-js .e-anim.e-vis.e-an-jackInTheBox{animation-name:e-jackInTheBox}
.e-js .e-anim.e-vis.e-an-hinge{animation-name:e-hinge}
.e-js .e-anim.e-vis.e-an-tada{animation-name:e-tada}
.e-js .e-anim.e-vis.e-an-pulse{animation-name:e-pulse}
.e-js .e-anim.e-vis.e-an-swing{animation-name:e-swing}
.e-js .e-anim.e-vis.e-an-wobble{animation-name:e-wobble}
.e-js .e-anim.e-vis.e-an-rubberBand{animation-name:e-rubberBand}
.e-js .e-anim.e-vis.e-an-heartBeat{animation-name:e-heartBeat}
@media (prefers-reduced-motion:reduce){
  .e-js .e-anim{visibility:visible}
  .e-js .e-anim.e-vis{animation:none}
}

/* ---------- divider (own skin) ---------- */
.e-divider{display:flex;align-items:center;width:100%}
.e-divider .e-divider-line{flex:1 1 auto;height:0;border-top:1px solid currentColor;min-width:6px}
.e-divider .e-divider-line.e-style-dashed{border-top-style:dashed}
.e-divider .e-divider-line.e-style-dotted{border-top-style:dotted}
.e-divider .e-divider-line.e-style-double{border-top-style:double}
.e-divider .e-divider-mid{flex:0 0 auto;display:inline-flex;align-items:center;color:inherit}
.e-divider .e-divider-mid i{line-height:1}
.e-divider .e-divider-mid span{padding:0 10px;white-space:nowrap}

/* ---------- icon widget ---------- */
.e-icon-wrap{display:block;line-height:1}
.e-icon-wrap i{line-height:1;display:inline-block}
.e-icon-wrap.e-view-stacked i{background:var(--e-icon-bg,#4054B9);color:#fff;border-radius:50%;padding:.5em;text-align:center}
.e-icon-wrap.e-align-center{text-align:center}
.e-icon-wrap.e-align-right{text-align:right}

/* ---------- image gallery ---------- */
.e-gallery{display:grid;gap:10px}
.e-gallery-item{display:block;position:relative;overflow:hidden;line-height:0;background:#0002}
.e-gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease,opacity .3s ease}
.e-gallery-item:hover img{transform:scale(1.05);opacity:.88}

/* ---------- lightbox ---------- */
.e-lightbox{position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.92);display:none;
  align-items:center;justify-content:center;padding:24px}
.e-lightbox.e-open{display:flex}
.e-lightbox img{max-width:92vw;max-height:86vh;object-fit:contain;box-shadow:0 10px 40px rgba(0,0,0,.6)}
.e-lightbox button{position:absolute;background:rgba(255,255,255,.12);border:0;color:#fff;
  font-size:22px;width:44px;height:44px;border-radius:50%;cursor:pointer;line-height:1}
.e-lightbox button:hover{background:rgba(255,255,255,.28)}
.e-lb-close{top:18px;right:18px}
.e-lb-prev{left:18px;top:50%;transform:translateY(-50%)}
.e-lb-next{right:18px;top:50%;transform:translateY(-50%)}

/* ---------- image carousel ---------- */
.e-carousel{position:relative}
.e-carousel-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none}
.e-carousel-track::-webkit-scrollbar{display:none}
.e-carousel-track > *{flex:0 0 auto;scroll-snap-align:start}
.e-carousel-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  width:38px;height:38px;border-radius:50%;border:0;background:rgba(0,0,0,.45);color:#fff;
  font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.e-carousel-nav:hover{background:rgba(0,0,0,.7)}
.e-car-prev{left:6px}
.e-car-next{right:6px}

/* ---------- countdown ---------- */
.e-cd{display:flex;flex-wrap:wrap;justify-content:center}
.e-cd .e-cd-box{margin:03px;text-align:center}
.e-cd .e-cd-num{display:block;border-radius:4px}
.e-cd .e-cd-lbl{display:block;opacity:.9}

/* ---------- timeline ---------- */
.e-tl{position:relative}
.e-tl-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-ms-overflow-style:none;padding-bottom:6px}
.e-tl-track::-webkit-scrollbar{display:none}
.e-tl-item{flex:0 0 auto;scroll-snap-align:start;position:relative;padding-left:26px}
.e-tl-item::before{content:"";position:absolute;left:6px;top:4px;bottom:-16px;width:2px;background:currentColor;opacity:.35}
.e-tl-item::after{content:"";position:absolute;left:0;top:4px;width:14px;height:14px;border-radius:50%;
  background:currentColor;box-shadow:0 0 0 3px rgba(255,255,255,.6)}
.e-tl-item:last-child::before{display:none}
.e-tl-year{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px}
.e-tl-item img{display:block;width:100%;border-radius:8px;margin:8px 0}
.e-tl-date{font-size:13px;opacity:.85}
.e-tl-title{font-size:19px;margin:2px 0 4px}
.e-tl-desc{font-size:14px;line-height:1.55;opacity:.9}
.e-tl-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:5;width:36px;height:36px;
  border-radius:50%;border:0;background:rgba(0,0,0,.45);color:#fff;cursor:pointer;font-size:15px}
.e-tl .e-car-prev{left:-4px}
.e-tl .e-car-next{right:-4px}

/* ---------- welcome / open-invitation cover ---------- */
body.e-has-cover{overflow:hidden}
.e-lws-wellcome{position:fixed;inset:0;z-index:999998;display:flex;align-items:center;justify-content:center;
  transition:opacity .6s ease,visibility .6s ease}
.e-lws-wellcome.e-opened{opacity:0;visibility:hidden;pointer-events:none}
.e-lws-cover{position:absolute;inset:0;background-size:cover;background-position:center;background-repeat:no-repeat}
.e-lws-card{position:relative;z-index:2;width:min(92%,460px);padding:38px 26px 34px;text-align:center;
  border-radius:6px;box-shadow:0 18px 50px rgba(0,0,0,.35)}
.e-lws-card .e-lws-couple{display:block;margin:0 auto 14px;width:46%;height:auto}
.e-lws-dear{font-size:15px;letter-spacing:.4px}
.e-lws-name{margin:6px 0 10px}
.e-lws-text{font-size:14px;line-height:1.7;margin-bottom:22px}
.e-lws-open{display:inline-flex;align-items:center;gap:9px;cursor:pointer;border:0;border-radius:50px;
  padding:13px 30px;font-size:13px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;
  transition:transform .25s ease,box-shadow .25s ease,background-color .25s ease}
.e-lws-open:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,.25)}

/* ---------- music button ---------- */
.e-lws-audio{position:fixed;top:18px;right:18px;z-index:999997}
.e-lws-audio.is-right{right:18px;left:auto}
.e-lws-audio.is-left{left:18px;right:auto}
.e-lws-audio-btn{width:44px;height:44px;border-radius:50%;border:0;cursor:pointer;display:flex;
  align-items:center;justify-content:center;background:#fff;color:#333;
  box-shadow:0 6px 18px rgba(0,0,0,.22);transition:transform .25s ease}
.e-lws-audio-btn.is-playing{animation:e-e-spin 4s linear infinite}
@keyframes e-e-spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.e-lws-audio-btn:hover{transform:scale(1.08)}

/* ---------- guestbook ---------- */
.e-gb{padding:26px 22px;border-radius:8px}
.e-gb-avatar{display:block;width:74px;height:74px;object-fit:cover;border-radius:50%;
  margin:0 auto 16px;border:3px solid rgba(255,255,255,.75)}
.e-gb-form label{display:block;margin-bottom:12px;text-align:left}
.e-gb-form .e-gb-lbl{display:block;font-size:12px;letter-spacing:.6px;text-transform:uppercase;
  opacity:.85;margin-bottom:5px}
.e-gb-form input,.e-gb-form textarea,.e-gb-form select{
  width:100%;padding:11px 13px;border-radius:5px;border:1px solid rgba(255,255,255,.6);
  background:rgba(255,255,255,.95);color:#222;font:inherit;font-size:14px;box-sizing:border-box}
.e-gb-form textarea{min-height:96px;resize:vertical}
.e-gb-form input:focus,.e-gb-form textarea:focus,.e-gb-form select:focus{outline:2px solid rgba(255,255,255,.85)}
.e-gb-form .e-gb-submit{width:100%;margin-top:6px;padding:13px;border:0;border-radius:50px;cursor:pointer;
  font-size:13px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;transition:filter .2s ease}
.e-gb-form .e-gb-submit:hover{filter:brightness(1.08)}
.e-gb-error input,.e-gb-error textarea{border-color:#ff6b6b;box-shadow:0 0 0 2px rgba(255,107,107,.35)}
.e-gb-ok{display:block;text-align:center;font-size:13px;margin-top:10px;opacity:.9}
.e-gb-list{margin-top:20px;display:grid;gap:12px;max-height:420px;overflow:auto;padding-right:4px}
.e-gb-item{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.35);
  border-radius:8px;padding:13px 15px;text-align:left}
.e-gb-item-head{display:flex;justify-content:space-between;gap:10px;align-items:baseline;margin-bottom:4px}
.e-gb-item-name{font-weight:600;font-size:14px}
.e-gb-item-time{font-size:11px;opacity:.7}
.e-gb-item-konf{display:inline-block;font-size:11px;padding:2px 9px;border-radius:999px;
  background:rgba(255,255,255,.28);margin-bottom:6px}
.e-gb-item-msg{font-size:14px;line-height:1.6}

/* ---------- misc ---------- */
.e-copied{outline:2px solid currentColor}

/* slot gambar yang tidak tersedia di mirror */
.e-img-missing{min-height:120px;background:linear-gradient(135deg,#eef1f5 0%,#e2e7ee 100%);border-radius:6px}
.e-lws-couple.e-img-missing{min-height:180px}

/* slide carousel: gambar harus mengikuti lebar slide, jangan membesuk halaman */
.e-carousel-slide{overflow:hidden;position:relative}
.e-carousel-slide img{width:100%;height:100%;object-fit:cover;display:block}

/* google maps */
.elementor-custom-embed{position:relative;width:100%}
.elementor-custom-embed iframe{width:100%;border:0;display:block}
/* kolom flex: cegah konten (gambar/teks) memaksa kolom melebar -> overflow kanan */
.elementor-column{min-width:0}
.elementor-widget-wrap{min-width:0;width:100%}
.elementor-widget-container{min-width:0}
.elementor-widget{min-width:0}

/* template asli mengandalkan tema yang meng-clip overflow horizontal
   (margin widget bisa lebih lebar dari container) */
html, body{overflow-x:hidden}

/* tombol & link dekoratif: tanpa garis bawah default */
.elementor-button, .elementor-button-link, .elementor-button:hover,
.e-icon-link, .e-gallery-item, .e-carousel-nav, .e-lws-open, .e-lws-open:hover,
.e-tl-nav, .elementor-icon-list-item-link{text-decoration:none}
