*{box-sizing:border-box;margin:0;padding:0}html,body{background:#fefcf9}.app-root{--card-bg: #f6f6f5;--card-info-bg: #fefbe8;--card-splash-bg: #FEFDF9;--card-accent: #babc95;--card-accent-light: #35241F;--card-accent-soft: #da999a;--card-accent-info: #fefdf9;background:#fefcf9;width:100%;min-height:100vh;font-family:EB Garamond,serif}.wrapper{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;cursor:pointer;background:var(--card-splash-bg);display:flex;align-items:center;justify-content:center;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.wrapper.opening{animation:cardSlideUp .9s cubic-bezier(.4,0,.2,1) forwards}@keyframes cardSlideUp{0%{transform:translateY(0) scale(1);opacity:1}25%{transform:translateY(-18px) scale(1.02);opacity:1}to{transform:translateY(-110vh);opacity:0}}.splash-stage{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(10px,2.5vh,24px);padding:4vh 20px 2vh;box-sizing:border-box}.splash-heading{text-align:center;display:flex;flex-direction:column;align-items:center;gap:15px}.splash-kicker{font-family:EB Garamond,serif;font-size:clamp(10px,2.9vw,13px);letter-spacing:.22em;text-transform:uppercase;color:#5a4a3a;margin:0}.splash-names{font-family:Pinyon Script,serif;font-size:clamp(34px,11vw,54px);font-weight:400;line-height:1.12;margin:0;color:var(--card-accent-light)}.splash-names .splash-amp{font-family:EB Garamond,serif;font-size:.5em;font-style:italic;color:#5a4a3a}.splash-date{font-family:EB Garamond,serif;font-size:clamp(11px,3.2vw,14px);letter-spacing:.16em;color:#5a4a3a;margin:2px 0 0}.splash-plaque{flex:0 1 auto;min-height:0;padding:0;border:none;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .25s ease}.splash-plaque img{display:block;max-height:62vh;max-width:min(100%,320px);height:auto;width:auto;object-fit:contain}.splash-plaque:hover{transform:translateY(-4px)}.splash-plaque:active{transform:translateY(0)}.card{max-width:420px;margin:0 auto;background:#fefcf9;position:relative;overflow:hidden;box-shadow:0 10px 20px #00000030,0 6px 6px #0000003b;padding-bottom:68px}.reveal{opacity:0}.reveal.active{opacity:1}.active.fade-bottom{animation:fadeBottom 1s ease-in-out}@keyframes fadeBottom{0%{transform:translateY(50px);opacity:0}to{transform:translateY(0);opacity:1}}.fade-in-1{animation:growIn .5s ease-in-out both}.fade-in-2{animation:growIn .8s ease-in-out both}.fade-in-3{animation:growIn 1s ease-in-out both}.fade-in-4{animation:growIn 1.2s ease-in-out both}@keyframes growIn{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.intro{position:relative;z-index:1;container-type:inline-size}.intro-bg{display:block;width:100%;height:auto;position:relative;z-index:0}.intro-content{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:50px 36px;gap:0;z-index:1}.intro-content img{width:50%;margin-bottom:16px}.walimatul{font-size:clamp(16px,5.6cqw,23px);letter-spacing:2px;color:var(--card-accent);margin-bottom:5.5cqw}.intro-content h2{font-family:Pinyon Script,serif;font-size:clamp(56px,21cqw,86px);font-weight:500;color:#8b632c;line-height:1.1;margin:4px 0;overflow-wrap:anywhere}.intro-content h3{font-family:EB Garamond,serif;font-size:clamp(28px,9.6cqw,40px);font-weight:500;color:#8b632c}.intro-date{display:flex;gap:10px;font-size:clamp(16px,5.6cqw,23px);letter-spacing:1.5px;color:var(--card-accent);margin-top:5.5cqw}.intro-desc{display:flex;gap:10px;font-size:clamp(14px,4.6cqw,19px);line-height:1.5;letter-spacing:1.5px;color:var(--card-accent);margin-top:7cqw}.info{display:flex;flex-direction:column;align-items:center;padding:50px 0;position:relative;z-index:1}.lace-section{position:relative;margin:8px auto;background:transparent}.lace-frame-img{display:block;width:100%;height:auto}.lace-content{position:absolute;top:12%;left:16%;right:16%;bottom:12%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px}.lace-item{display:flex;flex-direction:column;align-items:center}.lace-label{font-family:Pinyon Script,serif;font-size:28px;color:#8b632c;line-height:1;margin-bottom:8px;margin-top:8px}.lace-item p{font-size:15px;color:#380d14;line-height:1.7;font-weight:400}.lace-divider{width:50%;height:0;border-top:1px solid #380d14;margin:8px 0;align-self:center}.event-info{width:95%;text-align:center;position:relative;padding:20px 18px}.event-flower{display:block;width:52%;max-width:210px;min-width:150px;height:auto;margin:0 auto 10px}.event-part{margin-bottom:6px}.event-part p{font-family:EB Garamond,serif;font-style:italic;font-size:15px;color:#3e321d;font-weight:400;letter-spacing:.5px;line-height:1.5}.event-part.one{display:flex;flex-direction:column;align-items:center;gap:2px}.parent-names{display:flex;flex-direction:column;align-items:center;margin:16px 0;gap:4px}.parent-names p{font-size:16px;font-weight:600;color:#3e321d}.event-part.two{display:flex;flex-direction:column;align-items:center;margin:20px 0;gap:4px}.event-part.two p{font-family:Pinyon Script,serif;letter-spacing:2px;font-size:28px;font-weight:600;color:#5a4a3a}.countdown{text-align:center;padding:24px 0 0}.countdown-title{font-size:13px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#5a4a3a;margin-bottom:20px}.count-boxes{display:flex;align-items:center;justify-content:center}.count-divider{width:1px;height:48px;background:#b39b78;opacity:.55;margin:0 16px}.count-box{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:56px}.count-box h1{font-family:EB Garamond,serif;font-size:30px;font-weight:700;color:#35241f;line-height:1;margin-bottom:6px}.count-box span{font-size:9px;font-weight:700;letter-spacing:2px;text-transform:uppercase;color:#8a7565;opacity:.9}.countdown-row{display:flex;flex-direction:column;align-items:center;gap:20px}.mini-cal{width:100%;display:flex;flex-direction:column;align-items:center;padding:24px 8px 8px}.mini-cal-title{font-family:EB Garamond,serif;font-size:11px;font-weight:400;letter-spacing:6px;text-transform:uppercase;color:#5a4a3a;margin-bottom:18px;text-align:center}.mini-cal-row{display:flex;width:100%}.mini-cal-cell{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px}.mini-cal-dow{font-family:EB Garamond,serif;font-size:11px;color:#8a7565;font-weight:400;text-align:center}.mini-cal-day{font-family:EB Garamond,serif;font-size:17px;color:#5a4a3a;font-weight:400;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%}.mini-cal-cell--active .mini-cal-day{border:1.5px dashed #b39b78}.mini-cal-stem{display:block;width:0;height:40px;border-left:1.5px dashed #b39b78}.mini-cal-script{font-family:Pinyon Script,serif;font-size:44px;color:#35241f;line-height:1.1;margin-top:2px;text-align:center}.aturcara-row{font-size:13px;color:#5a4535;font-weight:400;letter-spacing:.3px;line-height:1.8}.aturcara-dot{color:#380d14;opacity:.7;margin:0 4px}.aturcara-time{color:#380d14;font-style:italic}.rsvp-tray{position:relative;width:100%;margin:8px auto 4px}.rsvp-tray-img{display:block;width:100%;height:auto}.rsvp-tray-inner{position:absolute;top:47%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:46%}.rsvp-btn{padding:clamp(7px,2.2vw,11px) clamp(14px,4.5vw,26px);border:1px solid #5a4a3a;background:#fefdf98c;color:#5a4a3a;font-family:EB Garamond,serif;font-size:clamp(10px,3vw,14px);font-weight:700;letter-spacing:2px;white-space:nowrap;cursor:pointer;transition:background .25s,color .25s}.rsvp-btn:hover{background:#5a4a3a;color:#fefdf9}.ucapan-khas{position:relative;align-self:stretch;margin:6px 0 4px;display:flex;flex-direction:column;align-items:center}.ucapan-heart{position:relative;width:100%;display:flex;aspect-ratio:1254 / 1265}.ucapan-heart-img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none}.ucapan-khas-content{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:30% 21% 27%;text-align:center}.ucapan-khas-title{font-family:Pinyon Script,serif;font-size:27px;color:var(--card-accent-light);line-height:1}.ucapan-khas-msg{font-family:EB Garamond,serif;font-style:italic;font-size:14.5px;color:#5a4a3a;line-height:1.7}.ucapan-khas-name{font-family:Pinyon Script,serif;font-size:21px;color:#8b632c;line-height:1.2}.ucapan-khas-empty{font-family:EB Garamond,serif;font-size:13.5px;color:#8a7565;font-style:italic;line-height:1.7}.ucapan-khas-controls{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:-4px}.ucapan-khas-nav{display:flex;align-items:center;gap:16px}.ucapan-khas-nav button{background:none;border:none;font-size:26px;color:#5a4a3a;cursor:pointer;line-height:1;padding:0 4px;opacity:.8}.ucapan-khas-nav span{font-family:EB Garamond,serif;font-size:13px;color:#8a7565}.ucapan-khas-btn{display:flex;align-items:center;gap:6px;padding:8px 20px;border:1px solid #5a4a3a;background:#fefdf98c;color:#5a4a3a;font-family:EB Garamond,serif;font-size:14px;font-style:italic;cursor:pointer;border-radius:2px;transition:background .25s,color .25s;margin-top:4px}.ucapan-khas-btn:hover{background:#5a4a3a;color:#fefdf9}.footer{width:100%;position:fixed;bottom:0;left:50%;transform:translate(-50%);max-width:420px;z-index:1000}.footer .menu{list-style:none;background:#fefcf9;border-radius:20px 20px 0 0;height:64px;padding:0 8px;display:flex;align-items:center;justify-content:space-around;box-shadow:0 -4px 20px #00000040}.footer .menu li{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;padding:6px 8px}.footer .menu li.active{border-color:#ffffff80}.footer .menu li .bx{color:#5a4a3a;font-size:22px}.footer .menu li span{font-size:8.5px;color:#5a4a3a;letter-spacing:.3px}.toggle-menu{position:fixed;bottom:-100%;left:50%;transform:translate(-50%);width:100%;max-width:400px;background:#fefcf9;box-shadow:0 -10px 30px #0000004d;padding:24px 20px;transition:bottom .35s cubic-bezier(.25,.46,.45,.94);z-index:2000;border-radius:20px 20px 0 0}.toggle-menu.open{bottom:64px}.modal-inner{display:flex;flex-direction:column;align-items:center;gap:10px}.modal-inner h1{font-family:EB Garamond,serif;font-size:20px;font-weight:400;color:var(--card-accent-light);text-transform:uppercase;letter-spacing:1px;text-align:center;text-indent:1px;margin-bottom:8px}.modal-inner h1:after{content:"✦";display:block;width:150px;margin:9px auto 0;text-indent:0;font-size:9px;line-height:1;color:#b39b78;background:linear-gradient(#c3ae8d,#c3ae8d) left center / 58px 1px no-repeat,linear-gradient(#c3ae8d,#c3ae8d) right center / 58px 1px no-repeat}.modal-buttons{display:flex;gap:10px;margin-top:10px}.modal-buttons.col{flex-direction:column;width:100%}.modal-buttons.row{flex-direction:row;justify-content:center}.modal-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 24px;border:none;border-radius:8px;background:var(--card-bg);cursor:pointer;font-size:14px;font-family:EB Garamond,serif;font-weight:600;transition:opacity .2s;min-width:140px}.modal-btn:hover{opacity:.85}.modal-btn .bx{font-size:18px}.google-icon{background:linear-gradient(to bottom left,transparent 49%,#fbbc05 50%) 0 25%/48% 40%,linear-gradient(to top left,transparent 49%,#fbbc05 50%) 0 75%/48% 40%,linear-gradient(-40deg,transparent 53%,#ea4335 54%),linear-gradient(45deg,transparent 46%,#4285f4 48%),#34a853;background-repeat:no-repeat;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.modal-inner.rsvp-form{width:100%;padding:0;align-items:stretch;max-height:70vh;overflow-y:auto}.rsvp-form-inner{display:flex;flex-direction:column;gap:14px;padding:20px 20px 8px}.rsvp-field{display:flex;flex-direction:column;gap:6px}.rsvp-field label{text-align:center;font-family:EB Garamond,serif;font-size:15px;font-weight:600;color:#5a4a3a;letter-spacing:.5px}.rsvp-hint{font-size:11px;font-weight:400;color:#999}.rsvp-field input,.rsvp-field textarea{width:100%;padding:10px 14px;border:1px solid #ddd;border-radius:8px;font-family:EB Garamond,serif;font-size:14px;color:#333;background:#fafafa;outline:none;transition:border .2s}.rsvp-field input:focus,.rsvp-field textarea:focus{border-color:var(--card-accent)}.rsvp-field input[type=number]{text-align:center}.rsvp-field textarea{resize:none}.rsvp-attend-row{display:flex;justify-content:center;gap:32px}.rsvp-radio-label{display:flex;flex-direction:row;align-items:center;gap:8px;font-family:EB Garamond,serif;font-size:15px;color:#5a4a3a;cursor:pointer}.rsvp-radio-label input[type=radio]{width:17px;height:17px;accent-color:var(--card-accent);cursor:pointer}.rsvp-radio-label.selected{color:var(--card-accent);font-weight:700}.rsvp-submit{width:100%;padding:12px;border:none;border-radius:24px;background:#babc95;color:#fffffe;font-family:EB Garamond,serif;font-size:15px;font-weight:700;letter-spacing:1px;cursor:pointer;margin-top:4px;transition:background .2s}.rsvp-submit:hover{background:var(--card-accent-soft)}.modal-inner.wishlist{gap:0;padding:2px 0 6px}.modal-inner.wishlist h1{margin-bottom:4px}.wishlist-note{max-width:270px;font-family:EB Garamond,serif;font-style:italic;font-size:13.5px;line-height:1.65;color:#8a7565;text-align:center;margin:0 0 14px}.wishlist-qr-frame{--tick: #c3ae8d;display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 14px 10px;border-radius:3px;background:linear-gradient(var(--tick),var(--tick)) 0 0 / 15px 1px no-repeat,linear-gradient(var(--tick),var(--tick)) 0 0 / 1px 15px no-repeat,linear-gradient(var(--tick),var(--tick)) 100% 0 / 15px 1px no-repeat,linear-gradient(var(--tick),var(--tick)) 100% 0 / 1px 15px no-repeat,linear-gradient(var(--tick),var(--tick)) 0 100% / 15px 1px no-repeat,linear-gradient(var(--tick),var(--tick)) 0 100% / 1px 15px no-repeat,linear-gradient(var(--tick),var(--tick)) 100% 100% / 15px 1px no-repeat,linear-gradient(var(--tick),var(--tick)) 100% 100% / 1px 15px no-repeat,linear-gradient(168deg,#fffefb,#fbf5ea);box-shadow:0 4px 14px #35241f1a}.wishlist-qr{width:158px;height:158px;object-fit:contain;border:1px solid rgba(179,155,120,.4);border-radius:2px;background:#fff;margin:0}.wishlist-qr-cap{font-family:EB Garamond,serif;font-style:italic;font-size:12px;letter-spacing:.5px;color:#8a7565}.wishlist-acc{display:flex;flex-direction:column;align-items:center;gap:3px;margin:18px 0 2px;padding:0 22px;width:100%;max-width:290px}.wishlist-bank{font-family:EB Garamond,serif;font-size:12px;letter-spacing:2px;text-transform:uppercase;color:#8a7565}.wishlist-accnum{font-family:EB Garamond,serif;font-size:23px;font-weight:600;letter-spacing:2px;color:#35241f;font-variant-numeric:tabular-nums;line-height:1.25}.wishlist-name{font-family:Pinyon Script,serif;font-size:20px;color:#8b632c;line-height:1.3}.wishlist-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px}.wishlist-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border:1px solid #5a4a3a;border-radius:2px;background:#fefdf98c;color:#5a4a3a;font-family:EB Garamond,serif;font-size:14px;letter-spacing:.3px;cursor:pointer;transition:background .25s,color .25s,border-color .25s}.wishlist-btn:hover,.wishlist-btn.primary{background:#5a4a3a;color:#fefdf9}.wishlist-btn.primary:hover{background:#46382b;border-color:#46382b}.wishlist-btn.primary.is-copied{background:#6d7a58;border-color:#6d7a58}.wishlist-btn .bx{font-size:16px;font-style:normal}.modal-inner.calendar p{display:flex;gap:10px;margin-bottom:4px}.modal-inner.calendar p span{font-family:EB Garamond,serif;font-size:15px;color:#000}.modal-inner.location p{font-family:EB Garamond,serif;font-size:15px;color:#000;font-weight:300;line-height:.8}.modal-inner.music p{font-family:EB Garamond,serif;font-size:15px;color:#000;text-align:center}.music-credit{font-size:13px!important;opacity:.7}.music-visualizer{display:flex;align-items:flex-end;justify-content:center;gap:7px;height:40px;margin:12px 0;width:100%}.vis-bar{display:block;width:8px;border-radius:3px;background:var(--card-accent-soft);opacity:.2;height:6px}.music-visualizer.playing .vis-bar{opacity:.65;animation:visBar 1s ease-in-out infinite alternate}.music-visualizer.playing .vis-bar:nth-child(1){animation-duration:.7s;animation-delay:0s}.music-visualizer.playing .vis-bar:nth-child(2){animation-duration:.9s;animation-delay:.1s}.music-visualizer.playing .vis-bar:nth-child(3){animation-duration:.6s;animation-delay:.2s}.music-visualizer.playing .vis-bar:nth-child(4){animation-duration:1.1s;animation-delay:.05s}.music-visualizer.playing .vis-bar:nth-child(5){animation-duration:.8s;animation-delay:.3s}.music-visualizer.playing .vis-bar:nth-child(6){animation-duration:1s;animation-delay:.15s}.music-visualizer.playing .vis-bar:nth-child(7){animation-duration:.65s;animation-delay:.25s}.music-visualizer.playing .vis-bar:nth-child(8){animation-duration:.85s;animation-delay:.08s}.music-visualizer.playing .vis-bar:nth-child(9){animation-duration:.75s;animation-delay:.18s}@keyframes visBar{0%{height:4px}to{height:34px}}.music-controls{margin-top:12px}.play-btn{display:flex;align-items:center;gap:8px;padding:10px 28px;background:var(--card-bg);border:none;border-radius:100px;cursor:pointer;font-size:15px;font-family:EB Garamond,serif;font-weight:600;transition:opacity .2s}.play-btn .bx{font-size:20px;color:var(--card-accent)}.play-btn:hover{opacity:.85}.contact-list{width:100%;display:flex;flex-direction:column;gap:14px;margin-top:4px}.contact-person{display:flex;align-items:center;justify-content:space-between;width:100%;padding-bottom:12px;border-bottom:1px solid rgba(179,155,120,.35)}.contact-person:last-child{padding-bottom:0;border-bottom:none}.contact-left{display:flex;align-items:center;gap:8px}.contact-info{display:flex;flex-direction:column}.contact-name{font-family:EB Garamond,serif;font-size:16px;color:#000}.contact-relation{font-family:EB Garamond,serif;font-style:italic;font-size:12.5px;letter-spacing:.4px;color:#8a7565;margin-top:1px}.contact-right{display:flex;gap:10px}.contact-right button{background:transparent;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}.contact-right .bx{font-size:28px;color:#000;transition:opacity .2s}.contact-right button:hover .bx{opacity:.7}.modal-inner.success{flex-direction:row;gap:16px;padding:8px 0;align-items:center;justify-content:flex-start;width:100%}.modal-inner.success .bx{font-size:56px;color:#adff2f}.modal-inner.success p{font-family:EB Garamond,serif;font-size:16px;color:#111;font-weight:300;line-height:1.6}.loading-screen{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--card-bg)}.loading-block{display:flex;flex-direction:column;align-items:center;gap:14px}.loading-heart{font-size:22px;color:var(--card-accent-soft);animation:loadingHeartPulse 1.3s ease-in-out infinite}.loading-script{font-family:Pinyon Script,serif;font-size:34px;color:var(--card-accent-light);margin:0}.loading-bar-track{width:180px;height:6px;border-radius:100px;background:var(--card-info-bg);border:1px solid var(--card-accent);overflow:hidden}.loading-bar-fill{height:100%;border-radius:100px;background:var(--card-accent-light);transition:width .2s ease-out}.loading-percent{font-family:EB Garamond,serif;font-size:13px;letter-spacing:1px;color:var(--card-accent-info);margin:0}@keyframes loadingHeartPulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}@media (prefers-reduced-motion: reduce){.loading-heart{animation:none}.loading-bar-fill{transition:none}}@media (max-width: 600px){.card,.footer,.toggle-menu{max-width:100%}}.made-by{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 0 22px}.made-by__label{font-family:EB Garamond,serif;font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:#8a7565}.made-by__logo{width:92px;height:auto;opacity:.92;-webkit-user-select:none;user-select:none}
