:root{--paper: #f4f1ea;--paper-2: #ece4d4;--ink: #4a4540;--ink-soft: #6f6a62;--ink-faint: #a59c8c;--gold: #b9975b;--gold-soft: #c2a878;--green: #8a9a7b;--rose: #cf9aa6;--lav: #a194bd;--serif: "Cormorant Garamond", Georgia, serif;--display: "Cinzel", "Cormorant Garamond", serif;--script: "Pinyon Script", cursive;--arabic: "Amiri", serif;--card-w: 414px;--ease: cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--serif);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;overscroll-behavior:none}.stage{width:100%;min-height:100vh;min-height:100dvh;display:grid;place-items:stretch}.card{position:relative;width:100vw;height:100vh;height:100dvh;overflow:hidden;background:var(--paper);isolation:isolate;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}@media (min-width: 600px){body{background:radial-gradient(120% 80% at 50% 0%,#2b2722,#181613 70%)}.stage{place-items:center;padding:clamp(0px,3vh,32px)}.card{width:auto;height:min(900px,calc(100dvh - 48px));aspect-ratio:576 / 1024;max-width:100vw;border-radius:26px;box-shadow:0 30px 80px #0000008c,0 0 0 1px #ffffff0f}}.card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(140% 100% at 50% 50%,transparent 60%,rgba(120,105,80,.14) 100%);z-index:6}.scenes{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scroll-behavior:smooth;overscroll-behavior-y:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scenes::-webkit-scrollbar{display:none}.scenes--locked{overflow:hidden}.scene-layer{position:relative;height:100%;display:flex;flex-direction:column;scroll-snap-align:start;scroll-snap-stop:always}.scene{position:relative;flex:1;width:100%;overflow:hidden;background:url(/floral-frame.png) center / cover no-repeat,linear-gradient(176deg,#fcfaf5,#f1ebde)}.anim{opacity:0}.scene-layer--inview .anim{animation:rise 1.4s var(--d, 0s) var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}.petals{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;pointer-events:none}.petal{position:absolute;top:-8%;width:9px;height:9px;border-radius:60% 0;background:linear-gradient(135deg,#fbeef0,var(--rose));filter:blur(.2px);animation:drift linear infinite}.petal:nth-child(3n){background:linear-gradient(135deg,#fff,#e6dfce)}.petal:nth-child(3n+1){background:linear-gradient(135deg,#d7e0cb,var(--green))}@keyframes drift{0%{transform:translateY(-10%) translate(0) rotate(0)}to{transform:translateY(115vh) translate(40px) rotate(420deg)}}.dots{position:absolute;right:calc(10px + env(safe-area-inset-right));top:50%;transform:translateY(-50%);z-index:7;display:flex;flex-direction:column;gap:14px}.dot{position:relative;width:9px;height:9px;padding:0;border:0;border-radius:50%;background:#78695052;cursor:pointer;transition:background .4s var(--ease),height .4s var(--ease)}.dot:before{content:"";position:absolute;top:-11px;right:-11px;bottom:-11px;left:-11px}.dot--on{background:var(--gold);height:22px;border-radius:5px}.bismillah{font-family:var(--arabic);font-size:26px;color:var(--ink);text-align:center;direction:rtl}.section-title{font-family:var(--display);font-weight:500;font-size:clamp(22px,6.5vw,27px);letter-spacing:.05em;text-align:center;color:var(--ink)}@media (prefers-reduced-motion: reduce){.scenes{scroll-behavior:auto}.petal{animation:none}.anim{opacity:1}.scene-layer--inview .anim{animation:none}}.cover__center{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 12%}.cover__eyebrow{font-family:var(--display);font-size:13px;font-weight:500;letter-spacing:.4em;text-indent:.4em;text-transform:uppercase;color:var(--gold);margin-bottom:28px}.cover__couple{margin-top:26px;font-family:var(--serif);font-size:26px;letter-spacing:.04em;color:var(--ink)}.cover__hint{margin-top:14px;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:.85}}.mono-amp{font-family:var(--script);font-style:normal;color:var(--gold)}.monogram{position:relative;display:grid;place-items:center;filter:drop-shadow(0 6px 14px rgba(120,105,80,.25))}.monogram svg{position:absolute;top:0;right:0;bottom:0;left:0}.monogram__letters{position:relative;display:flex;align-items:baseline;gap:2px;font-family:var(--display);font-size:34px;color:var(--ink)}.monogram__letters .mono-amp{font-size:26px}.couple__content{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 11%}.couple__kicker{font-family:var(--display);font-size:clamp(13px,3.6vw,15px);font-weight:500;letter-spacing:.42em;text-indent:.42em;color:var(--gold)}.couple__flourish{width:132px;height:auto;color:var(--gold-soft);margin:16px 0 22px}.couple__names{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--ink)}.couple__name{font-family:var(--serif);font-weight:500;font-size:clamp(40px,14vw,58px);line-height:1.04;letter-spacing:.01em;text-transform:capitalize}.couple__amp{font-family:var(--script);font-size:clamp(38px,12vw,52px);line-height:.7;color:var(--gold);margin:-2px 0}.couple__date{display:flex;align-items:center;gap:14px;margin-top:30px;font-size:clamp(12px,3.3vw,13.5px);letter-spacing:.26em;text-indent:.26em;text-transform:uppercase;color:var(--ink-soft)}.couple__rule{width:28px;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft))}.couple__rule:last-child{background:linear-gradient(90deg,var(--gold-soft),transparent)}.couple__hashtag{margin-top:16px;font-style:italic;font-size:13px;letter-spacing:.04em;color:var(--ink-faint)}.jemputan__inner{position:relative;z-index:2;height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:9% 11% 52px;gap:4px}.jemputan__salam{font-size:15px;letter-spacing:.06em;color:var(--ink-soft);margin-bottom:14px}.jemputan__waris{display:flex;flex-direction:column;gap:2px;font-size:20px;line-height:1.2;color:var(--ink);margin-bottom:16px}.jemputan__waris strong{font-weight:600;letter-spacing:.02em}.jemputan__waris .amp{font-family:var(--script);font-size:22px;color:var(--gold);font-weight:400}.jemputan__intro,.jemputan__body{font-size:15px;color:var(--ink-soft);line-height:1.5;max-width:30ch}.jemputan__honorifics{font-size:12.5px;font-weight:600;letter-spacing:.01em;color:var(--ink);margin:6px 0;line-height:1.6}.jemputan__name{font-family:var(--display);font-weight:500;font-size:21px;letter-spacing:.04em;line-height:1.3;color:var(--ink);margin:14px 0 4px;max-width:24ch}.jemputan__connector{font-family:var(--script);font-size:26px;color:var(--gold)}.butiran__inner{position:relative;z-index:2;height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:9% 12% 52px}.butiran__block{margin-bottom:13px;width:100%}.butiran__block .label{font-style:italic;font-size:15px;color:var(--ink-soft);margin-bottom:4px}.butiran__block .emph{font-family:var(--display);font-size:18px;letter-spacing:.04em;color:var(--ink)}.butiran__block .emph--sm{font-size:15px;font-family:var(--serif);font-weight:600}.butiran__block .emph--sm .muted{font-weight:400;color:var(--ink-soft)}.butiran__block .sub{font-size:13.5px;color:var(--ink-soft);font-style:italic}.butiran__block .venue{font-family:var(--script);font-size:30px;color:var(--gold);line-height:1;margin:4px 0 8px}.contacts{list-style:none;max-width:26ch;margin:4px auto 0}.contacts li{display:flex;align-items:baseline;font-size:14px;color:var(--ink);gap:6px;padding:2px 0}.contacts .dotfill{flex:1;border-bottom:1px dotted var(--ink-faint);transform:translateY(-3px)}.contacts a{color:var(--ink-soft);text-decoration:none;font-variant-numeric:tabular-nums}.doa__inner{position:relative;z-index:2;height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10% 13% 52px}.doa__monogram{font-family:var(--display);font-size:30px;color:var(--ink);margin-bottom:6px}.doa__monogram .mono-amp{font-size:26px;margin:0 4px}.doa__lines{margin:12px 0}.doa__lines p{font-size:13.5px;line-height:1.55;color:var(--ink)}.doa__amin{font-family:var(--display);font-size:16px;letter-spacing:.05em;color:var(--ink);margin-top:8px}.doa__closing{margin-top:12px;font-style:italic;font-size:13.5px;line-height:1.6;color:var(--ink-soft);max-width:32ch;padding-top:10px;border-top:1px solid rgba(201,184,156,.5)}.cover__hint:after{content:"⌄";display:block;font-size:22px;line-height:1;margin-top:2px;animation:nudge 1.8s ease-in-out infinite}@keyframes nudge{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}.envelope{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center}.env-half{position:absolute;top:0;bottom:0;width:50.5%;overflow:hidden;background-image:url(/floral-frame.png),linear-gradient(176deg,#fcfaf5,#f1ebde);background-repeat:no-repeat;background-size:198.02% 100%,100% 100%;transition:transform 1.2s var(--ease)}.env-half--l{left:0;background-position:left center;box-shadow:inset -16px 0 30px -16px #96805066}.env-half--r{right:0;background-position:right center;box-shadow:inset 16px 0 30px -16px #96805066}.envelope--opening .env-half--l{transform:translate(-101%)}.envelope--opening .env-half--r{transform:translate(101%)}.env-seal{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;gap:14px;padding:0;border:0;background:none;cursor:pointer;transition:opacity .5s var(--ease),transform .6s var(--ease)}.envelope--opening .env-seal{opacity:0;transform:scale(.7);pointer-events:none}.env-names{font-family:var(--display);font-size:22px;letter-spacing:.12em;color:var(--ink)}.env-hint{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-faint);animation:pulse 2.4s ease-in-out infinite}.wax{position:relative;display:grid;place-items:center;filter:drop-shadow(0 6px 12px rgba(80,60,20,.4))}.wax svg{position:absolute;top:0;right:0;bottom:0;left:0}.wax__letters{position:relative;font-family:var(--display);font-size:30px;letter-spacing:.02em;color:#f6eccb;text-shadow:0 1px 1px rgba(80,60,20,.7)}.wax__letters .mono-amp{color:#f6eccb;font-size:20px;opacity:.9;margin:0 3px}.countdown__inner{position:relative;z-index:2;height:100%;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:12% 10% 80px;gap:8px}.countdown__date{font-size:clamp(13px,4vw,16px);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.countdown__grid{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:18px;max-width:100%}.cd-box{display:flex;flex-direction:column;align-items:center;gap:3px;width:58px;padding:13px 0;background:#fbfaf6;border:1px solid rgba(201,184,156,.6);border-radius:12px;box-shadow:0 8px 18px #78695029}.cd-num{font-family:var(--display);font-size:26px;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}.cd-label{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.countdown__past{margin-top:16px;font-style:italic;font-size:15px;line-height:1.6;color:var(--ink-soft);max-width:26ch}.btn-row{display:flex;gap:10px;width:100%;max-width:300px;margin-top:10px}.btn{flex:1;text-align:center;padding:11px 12px;border-radius:999px;font-family:var(--serif);font-size:14px;font-weight:600;letter-spacing:.03em;text-decoration:none;color:var(--ink);background:#fbfaf6;border:1px solid var(--gold-soft);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px #78695033}.btn--ghost{background:transparent}.btn--gold{background:var(--gold);border-color:var(--gold);color:#fff}.music{position:absolute;top:calc(12px + env(safe-area-inset-top));left:calc(12px + env(safe-area-inset-left));z-index:8;width:38px;height:38px;border-radius:50%;border:1px solid rgba(120,105,80,.4);background:#fbfaf68c;color:var(--ink-soft);font-size:15px;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.jemputan__inner,.butiran__inner,.doa__inner,.countdown__inner{scrollbar-width:none;overflow-x:hidden}.jemputan__inner::-webkit-scrollbar,.butiran__inner::-webkit-scrollbar,.doa__inner::-webkit-scrollbar,.countdown__inner::-webkit-scrollbar{display:none}
