:root{--ink:#16233f;--ink-24:rgba(22,35,63,0.24);--ink-20:rgba(22,35,63,0.2);--rose:#7e4e5c;--rose-soft:#b08d96;--rose-line:#9c6b78;--pink:#f3d7dc;--pink-lt:#f7edec;--paper:#fbf6f5;--page:#e9dcdb;--muted:#5a6280;--muted-2:#3c4560;--silver:#c9cdd6;--f-body:Jost,"Helvetica Neue",Arial,sans-serif;--f-display:Marcellus,"Times New Roman",serif;--f-serif:"Cormorant Garamond",Georgia,serif;--f-arabic:Amiri,"Times New Roman",serif;--f-basmalah:"Scheherazade New",Amiri,serif}*{-webkit-tap-highlight-color:transparent}html{scroll-snap-type:y proximity;scroll-behavior:smooth}body{margin:0;background:var(--page);font-family:var(--f-body);color:var(--ink);-webkit-font-smoothing:antialiased}body.is-locked{overflow:hidden}a{color:var(--rose);text-decoration:none}a:hover{color:var(--rose-soft)}button{font-family:var(--f-body);cursor:pointer}.stage{min-height:100vh;display:flex;justify-content:center;background:var(--page)}.sheet{position:relative;width:100%;max-width:480px;background:var(--paper);color:var(--ink);box-shadow:0 0 60px rgba(22,35,63,.12);overflow:hidden}.sec{min-height:100svh;box-sizing:border-box;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;padding:48px 36px}.sec--center{text-align:center}.sec--pink{background:var(--pink)}.sec--pinklt{background:var(--pink-lt)}.sec--ink{background:var(--ink)}.eyebrow{font-size:10px;letter-spacing:.34em;text-transform:uppercase;color:var(--rose)}.basmalah{font-family:var(--f-basmalah);direction:rtl;line-height:2}.ayat{font-family:var(--f-arabic);direction:rtl;font-size:20px;line-height:2.1}.translation{font-family:var(--f-serif);font-style:italic;line-height:1.75;color:var(--muted-2)}.rule{width:40px;height:1px;background:var(--rose-line);margin:22px auto}.opening{padding:36px;text-align:center}.opening__salam{font-size:13px;line-height:1.8;color:var(--muted-2);max-width:320px;margin:0 auto 30px}.opening__names{font-family:var(--f-display);font-size:34px;line-height:1.3}.opening__date{font-size:12px;letter-spacing:.22em;margin-top:14px}.photo{border-radius:160px 160px 12px 12px;border:1px solid rgba(22,35,63,.25);overflow:hidden;box-sizing:border-box;display:flex;align-items:flex-end;justify-content:center}.photo--empty{background-image:repeating-linear-gradient(135deg,rgba(22,35,63,.07) 0 6px,transparent 6px 12px);padding-bottom:18px}.photo img{width:100%;height:100%;object-fit:cover;display:block}.photo__hint{font-family:ui-monospace,Menlo,monospace;font-size:10px;letter-spacing:.1em;color:rgba(22,35,63,.55)}.photo--opening{width:min(240px,62%);aspect-ratio:4/5;max-height:30svh;margin:0 auto 26px}.photo--cover{flex:0 1 auto;width:190px;max-width:60vw;aspect-ratio:190/240;max-height:240px;border-radius:130px 130px 10px 10px;border-color:rgba(22,35,63,.28)}.photo--cover.photo--empty{padding-bottom:14px}.photo--host{width:min(300px,92%);aspect-ratio:5/6;max-height:34svh;margin:0 auto 20px}.photo--host img{object-position:center top}.couple{gap:30px}.person__name{font-family:var(--f-display);font-size:30px}.person__nick{font-size:12px;letter-spacing:.2em;color:var(--rose);margin-top:6px}.person__parents{font-size:13px;line-height:1.8;color:var(--muted);margin-top:10px}.amp{display:flex;align-items:center;justify-content:center;gap:14px}.amp__line{flex:1 1;max-width:80px;height:1px;background:var(--ink-20)}.amp__sym{font-family:var(--f-serif);font-style:italic;font-size:24px;color:var(--rose)}.event{gap:16px}.event__card{padding:28px 24px;background:var(--pink);border-radius:16px;text-align:center}.event__title{font-family:var(--f-display);font-size:26px}.event__date{display:flex;align-items:center;justify-content:center;gap:14px;margin:16px 0 14px}.event__dayname{text-align:right}.event__dayname,.event__month{font-size:12px;letter-spacing:.16em}.event__month{text-align:left}.event__sep{width:1px;height:34px;background:var(--ink-24)}.event__num{font-family:var(--f-display);font-size:34px;line-height:1}.event__time{font-size:13px;letter-spacing:.1em;color:var(--rose)}.event__hr{height:1px;background:var(--ink-20);margin:18px 0}.event__place{font-size:13px;line-height:1.75;color:var(--muted-2)}.event__item{display:flex;flex-direction:column;gap:10px}.event--multi{padding:36px 28px;gap:18px}.event--multi .event__card{padding:18px}.event--multi .event__title{font-size:21px}.event--multi .event__date{gap:12px;margin:10px 0 8px}.event--multi .event__num{font-size:28px}.event--multi .event__sep{height:28px}.event--multi .event__hr{margin:12px 0}.event--multi .event__place{font-size:12px;line-height:1.65}.btn-map{display:block;text-align:center;padding:15px;border-radius:99px;background:var(--ink);color:var(--pink);font-size:12px;letter-spacing:.18em;text-transform:uppercase;transition:background .2s ease}.event--multi .btn-map{padding:12px;font-size:11px}.btn-map:hover{background:#24365c;color:var(--pink)}.cd__label{color:var(--rose-soft);margin-bottom:24px}.cd__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:8px;gap:8px}.cd__cell{padding:16px 4px;background:rgba(243,215,220,.1);border-radius:10px}.cd__num{font-family:var(--f-display);font-size:28px;color:var(--pink)}.cd__unit{font-size:9px;letter-spacing:.14em;color:var(--silver);margin-top:4px}.rsvp__form{display:flex;flex-direction:column;gap:12px}.field{width:100%;box-sizing:border-box;padding:15px 16px;border-radius:10px;border:1px solid var(--ink-20);background:#fff;color:var(--ink);font-family:var(--f-body);font-size:14px;outline:none}.field:focus{border-color:var(--rose)}.field::placeholder{color:#9aa0b4}textarea.field{resize:vertical}.attend{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.attend__btn{padding:15px 6px;border-radius:10px;border:1px solid var(--ink-20);background:#fff;color:var(--ink);font-size:12px;line-height:1.35;transition:background .15s ease,border-color .15s ease}.attend__btn.is-on{background:var(--pink);border-color:var(--rose-soft)}.btn-send{padding:16px;border-radius:99px;border:none;background:var(--rose);color:var(--paper);font-size:12px;letter-spacing:.18em;text-transform:uppercase;transition:opacity .2s ease}.btn-send:disabled{opacity:.55;cursor:default}.rsvp__msg{min-height:18px;text-align:center;font-size:12px;color:var(--rose);line-height:1.6}.rsvp__msg--error{color:#a3372f}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}.wishes{margin-top:26px}.wishes__head{text-align:center;font-size:10px;letter-spacing:.34em;text-transform:uppercase;color:var(--rose);margin-bottom:14px}.wishes__list{max-height:240px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding-right:4px}.wish{background:var(--pink-lt);border-radius:12px;padding:14px 16px;text-align:left}.wish__top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.wish__name{font-size:13px;letter-spacing:.04em;color:var(--ink);overflow-wrap:anywhere}.wish__tag{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--rose);white-space:nowrap}.wish__note{font-family:var(--f-serif);font-style:italic;font-size:15px;line-height:1.6;color:var(--muted-2);margin-top:6px;white-space:pre-wrap;overflow-wrap:anywhere}.wishes__empty{text-align:center;font-size:12px;color:var(--muted)}.gift__intro{font-size:13px;line-height:1.7;color:var(--muted);margin-bottom:22px}.gift__cards{display:grid;grid-gap:14px;gap:14px}.gift__card{background:#fff;border-radius:14px;padding:26px 20px}.gift__bank{font-size:11px;letter-spacing:.2em;color:var(--rose)}.gift__no{font-family:var(--f-display);font-size:26px;letter-spacing:.06em;margin:10px 0 4px}.gift__holder{font-size:13px;color:var(--muted)}.btn-copy{margin-top:18px;padding:12px 22px;border-radius:99px;border:1px solid var(--ink-20);background:transparent;color:var(--ink);font-size:11px;letter-spacing:.16em;text-transform:uppercase}.closing__doa{font-family:var(--f-arabic);direction:rtl;font-size:19px;line-height:2;text-align:center}.closing__doa span{white-space:nowrap}.closing__trans{font-family:var(--f-serif);font-style:italic;font-size:16px;line-height:1.7;color:var(--muted-2);margin:16px 0 30px}.closing__from{font-size:12px;line-height:1.9}.cover{position:fixed;inset:0;z-index:20;overflow-y:auto;background:var(--pink);transition:opacity .6s ease,transform .85s cubic-bezier(.65,0,.25,1)}.cover.is-open{opacity:0;transform:translateY(-101%);pointer-events:none}.cover__inner{min-height:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:48px 32px;text-align:center;max-width:480px;margin:0 auto}.cover__inner>*{flex:0 0 auto}.cover__basmalah{font-size:22px;color:var(--ink)}.cover__names{font-family:var(--f-display);font-size:36px;line-height:1.25}.cover__date{font-size:12px;letter-spacing:.22em}.cover__to{font-size:13px;line-height:1.7;color:var(--muted)}.cover__guest{color:var(--ink);overflow-wrap:anywhere}.btn-open{padding:16px 36px;border-radius:99px;border:none;background:var(--ink);color:var(--pink);font-size:12px;letter-spacing:.2em;text-transform:uppercase;transition:background .2s ease}.btn-open:hover{background:#24365c}.music{position:fixed;z-index:15;right:max(16px,calc(50vw - 240px + 16px));bottom:18px;width:44px;height:44px;border-radius:50%;border:1px solid var(--ink-20);background:rgba(251,246,245,.92);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--ink);display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(22,35,63,.16);padding:0}.music svg{width:18px;height:18px}.music.is-playing svg{animation:spin 6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.reveal>*{opacity:0}.reveal.is-in>*{animation:fadeUp .8s cubic-bezier(.22,.68,.24,1) forwards}.reveal.is-in>:nth-child(2){animation-delay:.08s}.reveal.is-in>:nth-child(3){animation-delay:.16s}.reveal.is-in>:nth-child(4){animation-delay:.24s}.reveal.is-in>:nth-child(5){animation-delay:.32s}.reveal.is-in>:nth-child(n+6){animation-delay:.4s}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;scroll-snap-type:none}.reveal>*{opacity:1;animation:none!important}.cover{transition:opacity .2s ease}.music.is-playing svg{animation:none}}.sec{position:relative;z-index:0}.cover:after,.cover:before,.sec--ink:after,.sec--orn-left:before,.sec--orn-right:before{content:"";position:absolute;z-index:-1;pointer-events:none;background-repeat:no-repeat}.cover:before{top:0;aspect-ratio:800/274;background-image:url(/img/bunga-atas.webp);background-position:bottom;opacity:.9}.cover:after,.cover:before{left:50%;translate:-50% 0;width:min(430px,96%);background-size:100% auto}.cover:after{bottom:0;aspect-ratio:800/285;background-image:url(/img/bunga-bawah.webp);background-position:top;opacity:.85}.sec--orn-left:before,.sec--orn-right:before{top:50%;translate:0 -50%;height:min(64svh,540px);width:150px;background-image:url(/img/bunga-samping.webp);background-size:auto 100%;background-position:0;opacity:.38}.sec--orn-left:before{left:0;scale:-1 1}.sec--orn-right:before{right:0}.sec--orn-left{padding-left:92px}.sec--orn-right{padding-right:92px}.sec--ink:after{bottom:0;left:0;width:100%;aspect-ratio:562/239;background-image:url(/img/hydrangea-bawah.png);background-position:bottom;background-size:cover;opacity:.85}.sec--orn-left{text-align:right}.sec--orn-right{text-align:left}.sec--orn-left .opening__salam,.sec--orn-left .photo{margin-left:auto;margin-right:0}.sec--orn-right .photo{margin-left:0;margin-right:auto}.cover,.event__card,.sec{background-image:url(/img/tekstur-kertas.webp);background-repeat:no-repeat;background-position:50%;background-size:cover}