:root{--gold: #C9A96E;--gold-light: #E8D5B0;--gold-dark: #A07840;--cream: #FBF8F3;--dark: #1a1a2e;--text: #4a3728}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:Lato,sans-serif;background:var(--cream);color:var(--text);overflow-x:hidden}a{color:inherit}.font-playfair{font-family:Playfair Display,serif}.font-script{font-family:Great Vibes,cursive}.font-cormorant{font-family:Cormorant Garamond,serif}.gold{color:var(--gold)}#cover{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a1a2e,#2d1b0e,#1a1a2e);transition:opacity .8s ease,transform .8s ease;overflow:hidden}.cover-photo-bg{position:absolute;inset:0;background-size:cover;background-position:center;z-index:0}#cover.has-cover-photo .cover-overlay{background:radial-gradient(ellipse at center,#1a1a2e8c,#1a1a2ed1 70%)}#cover.has-cover-photo .cover-ornament{opacity:.45}#cover.has-cover-photo .cover-content{z-index:2}#cover.opened{opacity:0;pointer-events:none;transform:scale(1.05)}.cover-overlay{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(201,169,110,.15) 0%,transparent 70%)}.cover-ornament{position:absolute;width:100%;height:100%;background-image:radial-gradient(circle at 20% 20%,rgba(201,169,110,.08) 0%,transparent 50%),radial-gradient(circle at 80% 80%,rgba(201,169,110,.08) 0%,transparent 50%)}.cover-border{position:absolute;inset:1.5rem;border:1px solid rgba(201,169,110,.3);pointer-events:none}.cover-border:before,.cover-border:after{content:"";position:absolute;width:2rem;height:2rem;border-color:var(--gold);border-style:solid}.cover-border:before{top:-.5px;left:-.5px;border-width:2px 0 0 2px}.cover-border:after{bottom:-.5px;right:-.5px;border-width:0 2px 2px 0}.cover-content{position:relative;z-index:2;text-align:center;padding:2rem}.cover-sub{color:#c9a96eb3;font-size:.875rem;letter-spacing:.3em;text-transform:uppercase;margin-bottom:1rem;animation:fadeInDown 1s ease .3s both}.cover-names{animation:fadeInUp 1s ease .6s both}.cover-name-script{font-family:Great Vibes,cursive;font-size:clamp(4rem,12vw,7rem);color:var(--gold);line-height:1}.cover-and{font-family:Cormorant Garamond,serif;font-size:1.5rem;color:#ffffff80;letter-spacing:.2em;display:block;margin:.25rem 0}.cover-date{animation:fadeInUp 1s ease .9s both;color:#ffffffa6;font-size:.9rem;letter-spacing:.2em;text-transform:uppercase;margin-top:1.5rem}.cover-divider{width:6rem;height:1px;background:linear-gradient(to right,transparent,var(--gold),transparent);margin:1.25rem auto;animation:scaleIn 1s ease 1.1s both}.cover-btn{animation:fadeInUp 1s ease 1.3s both;background:transparent;border:1.5px solid var(--gold);color:var(--gold);font-family:Lato,sans-serif;font-size:.875rem;letter-spacing:.15em;text-transform:uppercase;padding:.875rem 2.5rem;border-radius:9999px;cursor:pointer;margin-top:2rem;transition:all .3s;position:relative;overflow:hidden}.cover-btn:before{content:"";position:absolute;inset:0;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .3s ease;z-index:-1}.cover-btn:hover:before{transform:scaleX(1)}.cover-btn:hover{color:#fff}.cover-guest{animation:fadeInUp 1s ease .4s both;color:#ffffff80;font-size:.875rem;margin-bottom:.5rem}.cover-guest-name{color:var(--gold);font-family:Great Vibes,cursive;font-size:2.5rem}.petal{position:fixed;pointer-events:none;font-size:1.2rem;opacity:.5;animation:petalFall linear infinite;z-index:999}@keyframes petalFall{0%{transform:translateY(-20px) rotate(0) translate(0);opacity:.6}50%{transform:translateY(50vh) rotate(180deg) translate(30px)}to{transform:translateY(110vh) rotate(360deg) translate(-20px);opacity:0}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes sparkle{0%,to{opacity:.3;transform:scale(1) rotate(0)}50%{opacity:1;transform:scale(1.3) rotate(90deg)}}@keyframes leafWave{0%,to{transform:rotate(-10deg) translateY(0)}50%{transform:rotate(10deg) translateY(-8px)}}@keyframes countUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes ringPulse{0%,to{box-shadow:0 0 #c9a96e4d}50%{box-shadow:0 0 0 20px #c9a96e00}}#main-content{opacity:0;transition:opacity .8s ease .3s}#main-content.visible{opacity:1}section{padding:5rem 1.5rem}.container{max-width:900px;margin:0 auto}.section-title{text-align:center;margin-bottom:3.25rem}.section-label{font-size:.8rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);display:block;margin-bottom:.5rem}.section-heading{font-family:Playfair Display,serif;font-size:clamp(2rem,5vw,3rem);color:var(--dark);font-weight:700}.gold-divider{width:5rem;height:1px;background:linear-gradient(to right,transparent,var(--gold),transparent);margin:1rem auto}#couple{background:var(--cream);position:relative;overflow:hidden}.couple-bg-ornament{position:absolute;inset:0;pointer-events:none;overflow:hidden}.couple-bg-ornament:before{content:"✦";position:absolute;top:5%;left:5%;font-size:4rem;color:var(--gold);opacity:.05;animation:sparkle 4s ease-in-out infinite}.couple-bg-ornament:after{content:"✦";position:absolute;bottom:5%;right:5%;font-size:4rem;color:var(--gold);opacity:.05;animation:sparkle 4s ease-in-out 2s infinite}.couple-wrapper{display:flex;flex-direction:column;align-items:center;text-align:center}.couple-bismillah{font-family:Cormorant Garamond,serif;font-size:2rem;color:var(--gold);margin-bottom:1rem;font-style:italic}.couple-opening{max-width:620px;margin:0 auto 2.5rem;color:#6b5747;line-height:1.9;font-size:1rem}.couple-photos{display:flex;align-items:center;gap:2rem;margin:2rem 0;flex-wrap:wrap;justify-content:center}.couple-photo-wrap{text-align:center}.couple-photo{width:160px;height:160px;border-radius:50%;border:4px solid var(--gold);-o-object-fit:cover;object-fit:cover;display:block;margin:0 auto;box-shadow:0 8px 40px #c9a96e40;animation:ringPulse 3s ease-in-out infinite}.couple-photo-placeholder{width:160px;height:160px;border-radius:50%;border:4px solid var(--gold);display:flex;align-items:center;justify-content:center;font-size:4rem;background:linear-gradient(135deg,#fef3c7,#fde68a);margin:0 auto;box-shadow:0 8px 40px #c9a96e40;animation:ringPulse 3s ease-in-out infinite}.couple-photo-name{font-family:Great Vibes,cursive;font-size:2rem;color:var(--gold);margin-top:.75rem}.couple-photo-fullname{font-family:Cormorant Garamond,serif;font-size:.875rem;color:#8b7355;margin-top:.2rem;font-style:italic}.couple-photo-parents{font-size:.8rem;color:#9ca3af;margin-top:.5rem;line-height:1.6}.couple-ampersand{font-family:Great Vibes,cursive;font-size:4rem;color:var(--gold);animation:float 3s ease-in-out infinite}@media(max-width:768px){.couple-photos{flex-wrap:nowrap;gap:1rem;justify-content:space-between}.couple-photo-wrap{flex:1;max-width:45%}.couple-photo,.couple-photo-placeholder{width:120px;height:120px}.couple-ampersand{font-size:2.5rem;flex:0 0 auto}}#countdown{background:linear-gradient(135deg,var(--dark),#2d1b0e);color:#fff}.countdown-wrapper{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap}.countdown-item{text-align:center;min-width:90px}.countdown-num{font-family:Playfair Display,serif;font-size:3.5rem;font-weight:700;color:var(--gold);background:#ffffff0d;border:1px solid rgba(201,169,110,.2);border-radius:.75rem;padding:.5rem 1rem;display:block;min-width:90px;transition:transform .3s ease}.countdown-label{font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:#ffffff80;margin-top:.5rem}@media(max-width:768px){.countdown-wrapper{flex-wrap:nowrap;gap:.5rem}.countdown-item{flex:1;min-width:0}.countdown-num{font-size:2rem;min-width:unset;padding:.3rem .5rem}.countdown-label{font-size:.6rem}}#events{background:#fff}.event-card{background:var(--cream);border:1px solid rgba(201,169,110,.2);border-radius:1.25rem;padding:2.5rem;text-align:center;position:relative;overflow:hidden}.event-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(to right,transparent,var(--gold),transparent)}.event-icon{font-size:2.5rem;margin-bottom:1rem}.event-name{font-family:Playfair Display,serif;font-size:1.5rem;font-weight:700;color:var(--dark);margin-bottom:.75rem}.event-time{color:var(--gold);font-weight:600;font-size:1.1rem;margin-bottom:.5rem}.event-date{color:#6b5747;margin-bottom:1rem}.event-venue{font-size:.9rem;color:#8b7355;line-height:1.6}.events-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem}@media(max-width:768px){.events-grid{grid-template-columns:repeat(2,1fr);gap:1rem}.event-card{padding:1.2rem}.event-icon{font-size:1.8rem}.event-name{font-size:1rem}.event-time{font-size:.95rem}.event-date,.event-venue{font-size:.8rem}}#love-story{background:var(--cream)}.story-timeline{max-width:640px;margin:0 auto}.story-item{display:flex;gap:1.5rem;margin-bottom:2.5rem}.story-icon{width:3rem;height:3rem;border-radius:50%;background:var(--gold);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:1.2rem;box-shadow:0 4px 20px #c9a96e4d}.story-content{background:#fff;border-radius:1rem;padding:1.5rem;flex:1;box-shadow:0 2px 20px #0000000d}.story-text{color:#6b5747;line-height:1.9;font-size:.95rem;white-space:pre-line}.storyline-grid{display:grid;gap:1rem}.story-photo-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:.9rem}.story-photo-list img{width:100%;aspect-ratio:1/1;-o-object-fit:cover;object-fit:cover;border-radius:.5rem}.gallery-album{margin-bottom:2.5rem}.gallery-album:last-child{margin-bottom:0}.gallery-album__title{text-align:center;font-family:var(--font-serif, "Playfair Display", serif);font-size:1.15rem;margin:0 0 1rem;color:var(--brown, #6b5747)}.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}.gallery-item{position:relative}.gallery-media{width:100%;aspect-ratio:1/1;-o-object-fit:cover;object-fit:cover;border-radius:.5rem;cursor:pointer;display:block}.gallery-caption{font-size:.75rem;color:#ffffffbf;margin:.35rem 0 0;text-align:center}#gallery .section-label{color:var(--gold,#C9A96E)}@media(max-width:768px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}#gallery{background:#fff}.gallery-grid{-moz-column-count:3;column-count:3;-moz-column-gap:1rem;column-gap:1rem}.gallery-item{-moz-column-break-inside:avoid;break-inside:avoid;margin-bottom:1rem;border-radius:.75rem;overflow:hidden;cursor:pointer}.gallery-item img{width:100%;display:block;transition:transform .4s ease}.gallery-item:hover img{transform:scale(1.05)}.gallery-caption{font-size:.75rem;color:#6b5747;background:#fff;padding:.5rem .65rem;line-height:1.5}@media(max-width:640px){.gallery-grid{-moz-column-count:2;column-count:2}}#lightbox{display:none;position:fixed;inset:0;z-index:9999;background:#000000eb;align-items:center;justify-content:center}#lightbox.open{display:flex}#lightbox img{max-width:90vw;max-height:90vh;border-radius:.5rem;box-shadow:0 0 60px #00000080}#lightbox-close{position:absolute;top:1.5rem;right:2rem;color:#fff;font-size:2.5rem;cursor:pointer;background:none;border:none;line-height:1}#rsvp{background:linear-gradient(135deg,#1a1a2e,#2d1b0e)}.rsvp-form{max-width:560px;margin:0 auto}.form-group{margin-bottom:1.25rem}.form-label{display:block;font-size:.875rem;font-weight:600;color:#ffffffb3;margin-bottom:.4rem;letter-spacing:.05em}.form-input,.form-select,.form-textarea{width:100%;padding:.75rem 1rem;background:#ffffff12;border:1.5px solid rgba(201,169,110,.25);border-radius:.5rem;color:#fff;font-family:Lato,sans-serif;font-size:.9rem;transition:border-color .3s,box-shadow .3s}.form-input::-moz-placeholder{color:#ffffff4d}.form-input::placeholder{color:#ffffff4d}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #c9a96e26}.form-select option{background:var(--dark);color:#fff}.form-textarea{min-height:90px;resize:vertical}.form-textarea::-moz-placeholder{color:#ffffff4d}.form-textarea::placeholder{color:#ffffff4d}.rsvp-btn{width:100%;background:var(--gold);color:#fff;border:none;padding:1rem;border-radius:.5rem;font-size:1rem;font-weight:700;cursor:pointer;transition:all .3s;letter-spacing:.05em}.rsvp-btn:hover{background:var(--gold-dark);transform:translateY(-2px);box-shadow:0 8px 30px #c9a96e59}.rsvp-success{text-align:center;padding:3rem 1rem;display:none}.rsvp-success-icon{font-size:4rem;margin-bottom:1rem;animation:float 2s ease-in-out infinite}.rsvp-success-text{font-family:Playfair Display,serif;font-size:1.5rem;color:var(--gold)}#messages{background:var(--cream)}.messages-list{display:flex;flex-direction:column;gap:1rem;max-width:700px;margin:0 auto}.message-card{background:#fff;border-radius:1rem;padding:1.25rem 1.5rem;box-shadow:0 2px 15px #0000000d;border-left:3px solid var(--gold)}.message-name{font-family:Playfair Display,serif;font-weight:700;color:var(--dark);margin-bottom:.4rem}.message-text{color:#6b5747;font-size:.9rem;line-height:1.7}.message-date{font-size:.75rem;color:#9ca3af;margin-top:.5rem}.msg-form{max-width:560px;margin:2rem auto 0}.msg-form .form-input,.msg-form .form-textarea{background:#fff;border-color:#e5e7eb;color:var(--text)}.msg-form .form-input::-moz-placeholder,.msg-form .form-textarea::-moz-placeholder{color:#9ca3af}.msg-form .form-input::placeholder,.msg-form .form-textarea::placeholder{color:#9ca3af}.msg-form .form-label{color:#6b5747}.msg-submit{background:var(--gold);color:#fff;border:none;padding:.75rem 2rem;border-radius:9999px;font-size:.875rem;font-weight:700;cursor:pointer;transition:all .3s}.msg-submit:hover{background:var(--gold-dark);transform:translateY(-1px)}#venue-map{background:#fff}.map-container{border-radius:1.25rem;overflow:hidden;box-shadow:0 8px 40px #0000001a}.map-info{display:flex;gap:2rem;flex-wrap:wrap;margin-top:1.5rem}.map-info-item{flex:1;min-width:200px;text-align:center}.map-info-icon{font-size:2rem;margin-bottom:.5rem}.map-info-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);font-weight:600}.map-info-value{font-family:Playfair Display,serif;font-weight:600;color:var(--dark);margin-top:.25rem}@media(max-width:768px){.map-info{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.map-info-item{min-width:0;padding:.75rem}.map-info-icon{font-size:1.5rem}.map-info-label{font-size:.7rem}.map-info-value{font-size:.85rem}}#closing{background:linear-gradient(135deg,#1a1a2e,#0f1020);color:#fff;text-align:center;padding:5rem 1.5rem}.closing-script{font-family:Great Vibes,cursive;font-size:4rem;color:var(--gold);animation:float 3s ease-in-out infinite}.closing-text{color:#ffffffa6;line-height:1.9;max-width:500px;margin:1.5rem auto}#music-btn{position:fixed;bottom:2rem;right:2rem;z-index:500;width:3.5rem;height:3.5rem;border-radius:50%;background:var(--gold);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #c9a96e66;transition:all .3s;font-size:1.25rem}#music-btn:hover{transform:scale(1.1);box-shadow:0 8px 30px #c9a96e80}#music-btn.playing{animation:ringPulse 2s ease-in-out infinite}.music-tooltip{position:absolute;bottom:calc(100% + .5rem);right:0;background:var(--dark);color:#fff;font-size:.75rem;padding:.4rem .8rem;border-radius:.375rem;white-space:nowrap;opacity:0;transition:opacity .3s;pointer-events:none}#music-btn:hover .music-tooltip{opacity:1}.sparkle-el{position:absolute;color:var(--gold);animation:sparkle 3s ease-in-out infinite;pointer-events:none}.leaf-el{position:absolute;animation:leafWave 4s ease-in-out infinite;pointer-events:none;opacity:.5;font-size:1.5rem}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:var(--cream)}::-webkit-scrollbar-thumb{background:var(--gold);border-radius:9999px}.nav-dots{position:fixed;right:1.5rem;top:50%;transform:translateY(-50%);z-index:200;display:flex;flex-direction:column;gap:.6rem}.nav-dot{width:8px;height:8px;border-radius:50%;background:#c9a96e4d;border:1px solid var(--gold);cursor:pointer;transition:all .3s}.nav-dot.active{background:var(--gold);transform:scale(1.3)}.grid-two-col{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.cover-divider-short{width:4rem;height:1px;background:#c9a96e66;margin:1rem auto 1.5rem}.cover-sparkle-1{top:15%;left:10%;font-size:1.5rem;opacity:.4;animation:sparkle 3s ease-in-out infinite}.cover-sparkle-2{top:20%;right:12%;font-size:1rem;opacity:.3;animation:sparkle 3s ease-in-out 1.5s infinite}.cover-sparkle-3{bottom:20%;left:15%;font-size:.8rem;opacity:.35;animation:sparkle 4s ease-in-out .5s infinite}.cover-sparkle-4{bottom:25%;right:10%;font-size:1.2rem;opacity:.4;animation:sparkle 3.5s ease-in-out 2s infinite}.text-white-soft{color:#fff9;margin-top:.75rem;font-size:.95rem}.text-white-soft-sm{color:#fff9;margin-top:.75rem;font-size:.9rem}.section-label-soft{color:#c9a96eb3}.section-heading-white{color:#fff}.rsvp-success-note{color:#ffffffa6;margin-top:.75rem}.message-empty{text-align:center;color:#9ca3af;padding:2rem}.social-chips{margin-top:.55rem;display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center}.social-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .65rem;border:1px solid rgba(201,169,110,.35);border-radius:9999px;color:#7c6139;text-decoration:none;font-size:.75rem}.quote-block{background:#fff;border-radius:1rem;padding:1.5rem 1.75rem;text-align:center;box-shadow:0 2px 20px #0000000d}.quote-block p{margin:0;color:#5b4633;line-height:1.9;font-size:1rem}.quote-source{margin-top:.75rem;color:#8b7355;font-size:.85rem}.youtube-wrap{border-radius:1rem;overflow:hidden;box-shadow:0 4px 30px #0000001f}.youtube-wrap iframe{width:100%;aspect-ratio:16/9;border:0;display:block}.gift-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem}.gift-card{background:#fff;border:1px solid #f3e8d5;border-radius:1rem;padding:1rem 1.1rem;box-shadow:0 2px 16px #0000000d}.gift-provider{font-weight:700;color:#6f5530}.gift-account{margin-top:.35rem;font-family:Franklin Gothic Medium,serif;font-size:1.2rem;color:#1a1a2e;word-break:break-all}.gift-name{margin-top:.35rem;color:#8b7355;font-size:.85rem}.gift-qris{margin-top:.75rem;width:100%;border-radius:.65rem;border:1px solid #f3f4f6}.msg-success{display:none;text-align:center;padding:1.5rem;color:#166534;background:#dcfce7;border-radius:.75rem;margin-bottom:1rem}.form-feedback-error{display:none;text-align:center;padding:1rem 1.25rem;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:.75rem;margin-bottom:1rem}.text-right{text-align:right}.divider-mb{margin-bottom:1.5rem}.divider-mt{margin-top:1.5rem}.map-placeholder{height:280px;background:linear-gradient(135deg,#f3f4f6,#e5e7eb);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1rem}.map-placeholder-icon{font-size:3rem}.map-placeholder-title{font-family:Playfair Display,serif;font-size:1.25rem;color:#374151}.map-placeholder-address{color:#6b7280;text-align:center;max-width:400px}.map-link{color:var(--gold);font-weight:700;text-decoration:none;font-size:.875rem}.map-link:hover{text-decoration:underline}.closing-top-text{color:#ffffffa6;line-height:1.9;max-width:500px;margin:0 auto 2rem;text-align:center;font-size:.95rem}.closing-footer-note{color:#ffffff59;font-size:.8rem;margin-top:1.5rem}.event-venue-title{font-weight:600;color:var(--dark);margin:.75rem 0 .3rem;font-family:Playfair Display,serif}.map-frame{border:0;display:block}.rsvp-btn:disabled,.msg-submit:disabled,.is-loading{opacity:.75;cursor:not-allowed;transform:none!important;box-shadow:none!important}.cover-btn:focus-visible,.rsvp-btn:focus-visible,.msg-submit:focus-visible,.map-link:focus-visible,.nav-dot:focus-visible,#music-btn:focus-visible,#lightbox-close:focus-visible{outline:2px solid #fff;outline-offset:3px}.form-input:focus-visible,.form-select:focus-visible,.form-textarea:focus-visible{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px #c9a96e40}@media(max-width:640px){.couple-photos{gap:1rem}.couple-photo,.couple-photo-placeholder{width:130px;height:130px}.countdown-num{font-size:2.5rem;min-width:70px}.grid-two-col{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
