:root{--ink:#161717;--ink-soft:#272929;--paper:#f2efe9;--stone:#d9d3ca;--line:rgba(22,23,23,.18);--white:#fff;--muted:#6d6a65;--serif:"Italiana",Georgia,serif;--sans:"DM Sans",Arial,sans-serif;--max:1120px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ink);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.7;overflow-x:hidden}body.locked{overflow:hidden}img{display:block;max-width:100%}button,input,textarea,select{font:inherit}button,a{color:inherit}button{cursor:pointer}a{text-decoration:none}:focus-visible{outline:3px solid #d2b68c;outline-offset:4px}.skip-link{position:fixed;z-index:999;top:.6rem;left:.6rem;transform:translateY(-160%);padding:.7rem 1rem;background:#fff}.skip-link:focus{transform:none}.overline{margin:0 0 .75rem;font-size:.65rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase}.overline.dark{color:#53514d}.cover{position:fixed;z-index:200;inset:0;display:grid;place-items:center;overflow:hidden;background:#101111;color:#fff;transition:opacity .9s ease,visibility .9s}.cover.opened{opacity:0;visibility:hidden;pointer-events:none}.cover-slides,.cover-slide,.cover-shade{position:absolute;inset:0}.cover-slide{background-position:center;background-size:cover;opacity:0;filter:blur(6px);transform:scale(1.07);transition:opacity 1.4s ease,filter 1.4s ease,transform 7s ease}.cover-slide.active{opacity:1;filter:blur(0);transform:scale(1.01)}.cover-shade{background:linear-gradient(180deg,rgba(10,12,13,.25),rgba(9,10,10,.08) 35%,rgba(9,10,10,.75))}.cover-content{position:relative;z-index:2;display:flex;width:min(100% - 3rem,560px);height:100%;align-items:center;justify-content:flex-end;flex-direction:column;padding:4rem 0 calc(3rem + env(safe-area-inset-bottom));text-align:center}.cover-content>.overline{margin-bottom:.2rem}.cover h1{align-self:flex-start;margin:0 0 auto;text-align:left;font-family:var(--serif);font-size:clamp(3.5rem,15vw,6.2rem);font-weight:400;letter-spacing:.01em;line-height:.84}.cover h1 span{margin-left:8vw}.guest-block{display:grid;gap:.55rem;margin-bottom:1rem}.guest-block small{font-size:.67rem;line-height:1.4}.guest-block strong{font-family:var(--serif);font-size:1.65rem;font-weight:400}.open-button{display:inline-flex;min-height:48px;align-items:center;gap:.55rem;padding:.75rem 1.3rem;border:1px solid rgba(255,255,255,.65);border-radius:2px;background:rgba(255,255,255,.14);color:#fff;backdrop-filter:blur(9px)}.sound-hint{margin-top:.65rem;color:rgba(255,255,255,.72);font-size:.56rem}main{background:var(--paper)}.section-dark{background:var(--ink);color:#fff}.paper-section{background:var(--paper)}.section-stone{background:var(--stone)}.hero{position:relative;height:100svh;min-height:620px;overflow:hidden}.hero-slides,.hero-slide,.hero-shade{position:absolute;inset:0}.hero-slide{opacity:0;filter:blur(5px);transform:scale(1.06);transition:opacity 1.5s ease,filter 1.5s,transform 8s}.hero-slide.active{opacity:1;filter:blur(0);transform:scale(1)}.hero-slide img{width:100%;height:100%;object-fit:cover}.hero-slide:nth-child(3) img{object-position:65% center}.hero-shade{background:linear-gradient(180deg,rgba(12,13,13,.16),rgba(12,13,13,.15) 45%,rgba(12,13,13,.75))}.hero-copy{position:absolute;z-index:2;top:2.5rem;left:2rem}.hero-copy h2{margin:0;font-family:var(--serif);font-size:clamp(3.3rem,14vw,6rem);font-weight:400;line-height:.82}.hero-copy h2 span{margin-left:1.1rem}.hero-copy>p:last-child{margin-top:1.1rem;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase}.scroll-cue{position:absolute;z-index:3;bottom:2rem;left:50%;display:flex;width:36px;height:48px;align-items:center;justify-content:center;flex-direction:column;border:0;background:transparent;transform:translateX(-50%)}.scroll-cue i{width:14px;height:14px;margin:-4px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg);animation:cue 1.6s infinite}.scroll-cue i:nth-child(2){animation-delay:.15s}.scroll-cue i:nth-child(3){animation-delay:.3s}@keyframes cue{0%,100%{opacity:.2;transform:translateY(-3px) rotate(45deg)}50%{opacity:1;transform:translateY(3px) rotate(45deg)}}h2,h3,p{margin-top:0}.opening{display:grid;min-height:760px;place-content:center;padding:6rem 1.5rem;text-align:center}.monogram{color:#252626;font-family:var(--serif);font-size:clamp(5rem,24vw,9rem);line-height:.8}.monogram span{display:inline-block;margin:0 -.2em;color:#b0a48f;font-size:.45em;transform:translateY(-.15em)}.script-note{margin:1.2rem 0 3.5rem;color:#8d7658;font-family:var(--serif);font-size:1.25rem;font-style:italic}.opening blockquote{max-width:600px;margin:0 auto 3.5rem}.opening blockquote p{font-family:var(--serif);font-size:clamp(1.35rem,5vw,2rem);line-height:1.45}.opening cite{color:var(--muted);font-size:.65rem;font-style:normal;letter-spacing:.18em;text-transform:uppercase}.countdown{display:grid;max-width:560px;grid-template-columns:repeat(4,1fr);margin:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.countdown div{padding:1.1rem .25rem;border-right:1px solid var(--line)}.countdown div:last-child{border-right:0}.countdown strong,.countdown span{display:block}.countdown strong{font-family:var(--serif);font-size:1.8rem;font-weight:400}.countdown span{color:var(--muted);font-size:.55rem;text-transform:uppercase}.intro{padding:7rem 1.5rem;text-align:center}.narrow{max-width:640px;margin:auto}.intro h2,.section-title h2,.gift-section h2{margin-bottom:1.2rem;font-family:var(--serif);font-size:clamp(3rem,10vw,5.5rem);font-weight:400;line-height:.95}.intro .narrow>p:last-child{max-width:540px;margin:auto;color:#55534f}.couple-section{padding:5rem 1.25rem}.person{display:grid;max-width:1000px;gap:2rem;margin:0 auto 5rem}.person-photo{aspect-ratio:3/4;overflow:hidden;background:#ccc}.person-photo img{width:100%;height:100%;object-fit:cover;filter:saturate(.85)}.person-copy{align-self:center;text-align:center}.person-copy h2{margin:0;font-family:var(--serif);font-size:clamp(4rem,15vw,7.5rem);font-weight:400;line-height:.9}.person-copy h3{margin:1.1rem 0 .65rem;font-size:.86rem;letter-spacing:.06em;text-transform:uppercase}.person-copy p:last-child{color:var(--muted);font-size:.75rem}.ampersand{margin:-2rem 0 3rem;color:#9b8e7a;font-family:var(--serif);font-size:5rem;text-align:center}.event-section{padding:6rem 1.25rem}.section-title{max-width:760px;margin:0 auto 3.5rem;text-align:center}.event-grid{display:grid;max-width:980px;gap:1rem;margin:auto}.event-card{position:relative;padding:2.2rem;border:1px solid rgba(255,255,255,.2);background:#1d1f1f}.event-card>span{position:absolute;top:1rem;right:1rem;color:#817f7b;font-family:var(--serif);font-size:1.2rem}.event-card h3{font-family:var(--serif);font-size:2.5rem;font-weight:400;line-height:1.1}.event-card h4{margin-bottom:.5rem;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}.event-card p{color:#bbb;font-size:.75rem}.event-card em{color:#858585;font-size:.65rem}.event-card hr{margin:1.5rem 0;border:0;border-top:1px solid rgba(255,255,255,.15)}.line-button{display:inline-block;margin-top:.8rem;padding:.6rem 0;border-bottom:1px solid #aaa;color:#fff;font-size:.68rem;font-weight:600;letter-spacing:.04em}.gallery-section{padding:6rem 1rem}.gallery-grid{display:grid;max-width:1050px;grid-template-columns:1fr 1fr;gap:.65rem;margin:auto}.gallery-item{position:relative;aspect-ratio:1;border:0;overflow:hidden;padding:0;background:#ccc}.gallery-item.tall{grid-row:span 2;aspect-ratio:auto}.gallery-item.wide{grid-column:span 2;aspect-ratio:16/9}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .65s}.gallery-item:hover img{transform:scale(1.035)}.story-section{padding:7rem 1.5rem}.story-list{max-width:760px;margin:auto;border-top:1px solid rgba(22,23,23,.22)}.story-list article{display:grid;grid-template-columns:70px 1fr;gap:1.2rem;padding:2rem 0;border-bottom:1px solid rgba(22,23,23,.22)}.story-list time{color:#796e5f;font-family:var(--serif);font-size:1.4rem}.story-list h3{margin-bottom:.5rem;font-family:var(--serif);font-size:2rem;font-weight:400}.story-list p{margin:0;color:#5e5a55;font-size:.78rem}.gift-section{padding:7rem 1.5rem;text-align:center}.gift-section .narrow>p{color:#bbb}.bank-card{max-width:460px;margin:2rem auto 0;padding:2rem;border:1px solid rgba(255,255,255,.22);background:#1c1e1e}.bank-card small,.bank-card strong,.bank-card span{display:block}.bank-card small{color:#aaa;font-size:.65rem;text-transform:uppercase}.bank-card strong{margin:.6rem 0;font-family:var(--serif);font-size:2rem;font-weight:400;letter-spacing:.08em}.bank-card span{color:#aaa;font-size:.7rem}.copy-button{margin-top:1.2rem;padding:.65rem 1rem;border:1px solid #777;background:transparent;color:#fff;font-size:.68rem}.demo-note{margin-top:.8rem!important;color:#797979!important;font-size:.6rem}.rsvp-section{padding:6rem 1.25rem}.rsvp-section .section-title>p:last-child{color:var(--muted)}.rsvp-form{max-width:680px;margin:auto;padding:1.5rem;border:1px solid var(--line);background:#ebe7df}.rsvp-form label{display:grid;gap:.45rem;margin-bottom:1rem;color:#494743;font-size:.65rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.rsvp-form input,.rsvp-form textarea,.rsvp-form select{width:100%;padding:.85rem;border:0;border-bottom:1px solid #aaa;background:rgba(255,255,255,.5);border-radius:0;outline:0;font-size:.8rem;text-transform:none}.rsvp-form input:focus,.rsvp-form textarea:focus,.rsvp-form select:focus{border-color:#161717}.form-row{display:grid;gap:0 1rem}.submit-button{display:flex;width:100%;min-height:50px;align-items:center;justify-content:space-between;padding:0 1.2rem;border:0;background:#171818;color:#fff;font-size:.72rem;font-weight:600}.form-status{margin:.8rem 0 0;color:#315f45;font-size:.72rem}.form-status.error{color:#8a342d}.wishes{display:grid;max-width:680px;gap:.75rem;margin:2rem auto 0}.wish-card{padding:1.2rem;border-bottom:1px solid var(--line)}.wish-card header{display:flex;justify-content:space-between;gap:1rem}.wish-card strong{font-family:var(--serif);font-size:1.25rem;font-weight:400}.wish-card small{color:var(--muted);font-size:.55rem}.wish-card p{margin:.5rem 0 0;color:#55524e;font-size:.75rem}.empty-wishes{color:var(--muted);font-size:.72rem;text-align:center}.closing-section{position:relative;min-height:760px;overflow:hidden;color:#fff}.closing-section>img,.closing-shade{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.closing-section>img{object-position:70% center}.closing-shade{background:linear-gradient(180deg,rgba(12,13,13,.12),rgba(12,13,13,.78))}.closing-copy{position:absolute;z-index:2;right:1.5rem;bottom:5rem;left:1.5rem;text-align:center}.closing-copy h2{margin:0 0 1.5rem;font-family:var(--serif);font-size:clamp(4rem,16vw,7rem);font-weight:400;line-height:.82}.closing-copy h2 span{margin-left:1rem}.closing-copy>p:not(.overline){max-width:520px;margin:0 auto 2rem;color:#ddd;font-size:.75rem}.closing-copy small{font-size:.55rem;letter-spacing:.12em}.music-button{position:fixed;z-index:150;right:1rem;bottom:4.7rem;width:46px;height:46px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(22,23,23,.78);color:#fff;backdrop-filter:blur(8px)}.music-button span,.music-button span::before,.music-button span::after{position:absolute;bottom:13px;width:2px;background:#fff;animation:eq .8s ease-in-out infinite alternate}.music-button span{left:21px;height:18px}.music-button span::before,.music-button span::after{content:"";bottom:0}.music-button span::before{left:-6px;height:12px}.music-button span::after{left:6px;height:8px}.music-button.paused span,.music-button.paused span::before,.music-button.paused span::after{animation:none;height:3px}@keyframes eq{to{height:6px}}.mobile-nav{position:fixed;z-index:140;right:.7rem;bottom:.65rem;left:.7rem;display:flex;min-height:52px;align-items:center;justify-content:space-around;border:1px solid rgba(255,255,255,.2);border-radius:2px;background:rgba(22,23,23,.88);color:#fff;backdrop-filter:blur(14px)}.mobile-nav a{padding:.65rem;color:#ddd;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase}.lightbox{position:fixed;z-index:300;inset:0;display:none;align-items:center;justify-content:center;background:rgba(10,11,11,.94)}.lightbox.open{display:flex}.lightbox img{max-width:90vw;max-height:86vh;object-fit:contain}.lightbox button{position:absolute;display:grid;width:44px;height:44px;place-items:center;border:1px solid #777;border-radius:50%;background:rgba(0,0,0,.35);color:#fff;font-family:var(--serif);font-size:1.8rem}.lightbox-close{top:1rem;right:1rem}.lightbox-prev{left:1rem}.lightbox-next{right:1rem}.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}
@media(min-width:700px){.cover-content{padding-bottom:4rem}.cover h1{font-size:6.5rem}.hero-copy{top:4rem;left:5vw}.event-grid{grid-template-columns:1fr 1fr}.person{grid-template-columns:1fr 1fr;align-items:center}.person.reverse .person-photo{order:2}.person.reverse .person-copy{text-align:right}.person:not(.reverse) .person-copy{text-align:left}.form-row{grid-template-columns:2fr 1fr}.gallery-grid{grid-template-columns:1.2fr 1fr 1fr}.gallery-item.tall{grid-row:span 2}.gallery-item.wide{grid-column:span 2}.rsvp-form{padding:2.5rem}.mobile-nav{right:50%;left:50%;width:480px;transform:translateX(-50%)}}
@media(min-width:1100px){body{background:#0e0f0f}main{width:min(100%,1200px);margin:auto;box-shadow:0 0 80px rgba(0,0,0,.45)}.cover-content{width:min(100% - 4rem,1100px)}.cover h1{font-size:8rem}.couple-section{padding-inline:4rem}.event-section,.gallery-section,.story-section,.rsvp-section{padding-block:8rem}.closing-section{min-height:850px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}

/* Scroll container untuk seluruh ucapan RSVP */
.wishes {
  display: grid;
  gap: 0;
  max-width: 680px;
  max-height: 520px;
  margin: 2rem auto 0;
  padding-right: 8px;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: #8e887f transparent;
  scroll-behavior: smooth;
}

.wishes::-webkit-scrollbar {
  width: 6px;
}

.wishes::-webkit-scrollbar-track {
  background: transparent;
}

.wishes::-webkit-scrollbar-thumb {
  background: #8e887f;
  border-radius: 999px;
}

.wishes::-webkit-scrollbar-thumb:hover {
  background: #5f5b55;
}

.wish-card {
  padding: 1.25rem 0;
  border-bottom: 1px solid rgba(22, 23, 23, 0.18);
}

.wish-card:first-child {
  padding-top: 0;
}

.wish-card:last-child {
  border-bottom: 0;
}

@media (max-width: 600px) {
  .wishes {
    max-height: 440px;
    padding-right: 5px;
  }

  .wish-card header {
    align-items: flex-start;
    flex-direction: column;
    gap: 2px;
  }
}
