:root{--forest:#243d32;--deep:#14271f;--sage:#6d826f;--moss:#506654;--gold:#c8ad76;--ivory:#f7f4eb;--paper:#eee9dc;--ink:#27332d;--muted:#68736d;--nav:72px;--shadow:0 24px 70px rgba(16,35,27,.18)}
*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth;scroll-padding-bottom:var(--nav)}body{min-height:100%;margin:0;overflow-x:hidden;color:var(--ink);background:var(--deep);font-family:"DM Sans",system-ui,sans-serif}body.locked{overflow:hidden}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.music-frame{position:fixed;z-index:-1;left:0;bottom:0;width:2px;height:2px;border:0;opacity:.01;pointer-events:none}.cover{position:fixed;z-index:100;inset:0;width:100%;height:100vh;height:100dvh;min-height:100%;display:grid;place-items:center;overflow:hidden;color:#fff;background:var(--deep);transition:opacity .8s,visibility .8s}.cover.is-hidden{opacity:0;visibility:hidden}.cover-photo{position:absolute;inset:-2px;background:url("images/photo-01.webp") center 63%/cover no-repeat;filter:saturate(.8)}.cover-overlay,.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,30,22,.24),rgba(20,39,31,.46) 48%,rgba(13,30,23,.9))}.cover-content{position:relative;z-index:4;width:min(92%,640px);padding:42px 24px;text-align:center;text-shadow:0 3px 20px rgba(0,0,0,.4)}.eyebrow{margin:0 0 14px;color:#88774e;font:600 .68rem/1.5 "DM Sans",sans-serif;letter-spacing:.28em;text-transform:uppercase}.eyebrow.light{color:#d9c69a}.cover h1,.hero h1{margin:8px 0 18px;font:400 clamp(3.7rem,12vw,8.3rem)/.84 "Italiana",serif;letter-spacing:-.055em}.cover h1 span{display:inline-block;margin:0 .07em;color:#dfcd9f;font:italic 400 .55em "Cormorant Garamond",serif}.cover-date{margin:0 0 27px;font:500 .75rem "DM Sans",sans-serif;letter-spacing:.38em}.guest-box{display:grid;gap:8px;width:min(330px,92%);margin:0 auto 24px;padding:16px 22px;border:1px solid rgba(232,216,179,.52);border-radius:100px;background:rgba(21,44,34,.58);backdrop-filter:blur(10px)}.guest-box small{font-size:.67rem;line-height:1.5}.guest-box strong{font:500 1.28rem "Cormorant Garamond",serif;letter-spacing:.03em}.button,.pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--forest);border-radius:999px;padding:12px 21px;color:#fff;background:var(--forest);font-weight:600;text-decoration:none;cursor:pointer;transition:.25s}.button:hover,.pill:hover{transform:translateY(-2px);background:#385747;box-shadow:0 12px 28px rgba(20,44,33,.2)}.button-light{border-color:rgba(255,255,255,.75);color:#fff;background:rgba(255,255,255,.08);backdrop-filter:blur(8px)}.button-light:hover{background:#fff;color:var(--forest)}.botanical{position:absolute;z-index:2;width:200px;height:320px;pointer-events:none}.botanical-left{left:-25px;bottom:-45px;transform:rotate(-15deg)}.botanical-right{top:-55px;right:-35px;transform:rotate(165deg)}.botanical:before{content:"";position:absolute;left:95px;top:0;width:1px;height:310px;background:rgba(216,202,158,.55);transform:rotate(20deg)}.botanical i{position:absolute;width:70px;height:29px;border:1px solid rgba(216,202,158,.55);border-radius:100% 0 100% 0}.botanical i:nth-child(1){top:65px;left:48px;transform:rotate(28deg)}.botanical i:nth-child(2){top:115px;left:105px;transform:rotate(210deg)}.botanical i:nth-child(3){top:170px;left:50px;transform:rotate(32deg)}.botanical i:nth-child(4){top:220px;left:112px;transform:rotate(212deg)}
.panel{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:clamp(95px,10vw,140px) clamp(20px,7vw,90px) calc(80px + var(--nav));isolation:isolate}.hero{padding:0;color:#fff}.hero-slides,.hero-slides figure,.hero-slides img{position:absolute;inset:0;width:100%;height:100%}.hero-slides figure{margin:0;opacity:0;transition:opacity 1.5s}.hero-slides figure.active{opacity:1}.hero-slides img{object-fit:cover;object-position:center 54%}.hero-overlay{z-index:2;background:linear-gradient(180deg,rgba(11,24,18,.16),rgba(19,43,31,.42) 55%,rgba(8,24,17,.86))}.hero-content{position:relative;z-index:3;padding:25px;text-align:center}.hero h1{margin:8px 0 25px}.hero h1 i,.closing-section h3 i{color:#ddc993;font-family:"Cormorant Garamond",serif;font-weight:400}.hero-content>p:last-of-type{font:500 clamp(.75rem,1.8vw,.94rem) "DM Sans";letter-spacing:.16em;text-transform:uppercase}.scroll-cue{display:grid;gap:6px;justify-items:center;margin-top:38px;color:#fff;font-size:.58rem;letter-spacing:.18em;text-decoration:none;text-transform:uppercase}.scroll-cue span{width:22px;height:34px;border:1px solid rgba(255,255,255,.75);border-radius:20px}.scroll-cue span:before{content:"";display:block;width:3px;height:7px;margin:6px auto;border-radius:4px;background:#fff;animation:scroll 1.6s infinite}@keyframes scroll{to{transform:translateY(14px);opacity:0}}
.botanical-paper{background-color:var(--ivory);background-image:radial-gradient(circle at 10% 20%,rgba(109,130,111,.11),transparent 24%),radial-gradient(circle at 90% 80%,rgba(200,173,118,.1),transparent 26%)}.botanical-paper:before,.botanical-paper:after{content:"❦";position:absolute;color:rgba(65,99,75,.08);font:400 25rem "Cormorant Garamond";line-height:1}.botanical-paper:before{top:-80px;left:-70px;transform:rotate(-28deg)}.botanical-paper:after{right:-70px;bottom:-90px;transform:rotate(150deg)}.section-copy,.section-heading{position:relative;z-index:3;text-align:center}.section-heading{width:min(720px,100%);margin:0 auto 45px}.section-copy h2,.section-heading h2{margin:0 0 18px;font:400 clamp(3rem,7vw,5.6rem)/.92 "Italiana",serif;letter-spacing:-.045em}.section-copy h3{font-family:"Cormorant Garamond",serif}.section-copy p,.section-heading>p:last-child{max-width:660px;margin:0 auto 22px;line-height:1.85}.quote-section{display:grid;grid-template-columns:minmax(290px,560px) minmax(280px,620px);gap:clamp(35px,8vw,100px)}.quote-photo{position:relative;z-index:3;padding:12px;border:1px solid var(--gold);border-radius:50% 50% 8px 8px;background:#fff;box-shadow:var(--shadow)}.quote-photo img{display:block;width:100%;height:min(62svh,600px);object-fit:cover;border-radius:50% 50% 5px 5px}.quote-section blockquote{max-width:680px;margin:0 auto 20px;font:italic 400 clamp(1.3rem,2.6vw,1.9rem)/1.65 "Cormorant Garamond",serif}.verse{color:#7f714f;font-size:.7rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase}
.couple-section{display:grid;grid-template-columns:minmax(250px,460px) minmax(280px,610px);gap:clamp(40px,8vw,110px);color:#f3f1e9;background:linear-gradient(135deg,#172c23,#334f40)}.couple-section.alternate{background:linear-gradient(225deg,#1b3328,#405b49)}.couple-section.alternate .portrait{order:2}.portrait{position:relative;z-index:3;padding:8px;border:1px solid rgba(219,199,151,.72);border-radius:48% 48% 9px 9px;background:rgba(255,255,255,.05);box-shadow:0 28px 80px rgba(0,0,0,.25)}.portrait:after{content:"";position:absolute;inset:18px -15px -15px 18px;z-index:-1;border:1px solid rgba(219,199,151,.35);border-radius:48% 48% 9px 9px}.portrait img{display:block;width:100%;height:min(66svh,640px);border-radius:48% 48% 5px 5px;object-fit:cover}.portrait-groom img{object-position:56% center}.portrait-bride img{object-position:45% center}.couple-section h2{font-size:clamp(4.5rem,10vw,8rem)}.couple-section h3{margin:-7px 0 20px;font-size:clamp(1.1rem,2vw,1.45rem);font-weight:500;letter-spacing:.06em}.couple-section strong{color:#fff}.pill{padding:9px 17px;border-color:rgba(229,215,178,.55);color:#f8f2df;background:transparent;font-size:.72rem}.pill:hover{color:var(--forest);background:#fff}
.event-section,.gallery-section,.rsvp-section{display:block}.event-grid{position:relative;z-index:2;display:grid;grid-template-columns:repeat(2,minmax(280px,450px));justify-content:center;gap:24px}.event-grid article{padding:clamp(28px,4vw,45px);border:1px solid rgba(76,101,81,.24);border-radius:160px 160px 18px 18px;background:rgba(255,255,255,.75);box-shadow:var(--shadow);text-align:center;backdrop-filter:blur(7px)}.line-icon{display:block;margin-bottom:8px;color:var(--forest);font:400 2.1rem "Cormorant Garamond"}.event-grid h3{margin:3px 0 14px;font:400 2.6rem "Italiana",serif}.event-grid b{font:600 .82rem "DM Sans";letter-spacing:.05em}.event-grid p{margin:10px 0;font-size:.86rem}.event-grid address{min-height:90px;margin:14px 0 20px;color:#65726b;font-size:.78rem;font-style:normal;line-height:1.7}.event-grid .button{font-size:.7rem}.countdown{position:relative;z-index:3;display:flex;justify-content:center;gap:9px;margin-top:28px}.countdown span{display:grid;gap:4px;min-width:80px;padding:13px 9px;border:1px solid rgba(52,79,61,.16);border-radius:10px;background:rgba(255,255,255,.63);color:#667169;font-size:.58rem;letter-spacing:.1em;text-align:center;text-transform:uppercase}.countdown b{color:var(--forest);font:500 1.65rem "Italiana",serif}.map-section{color:#fff;background:var(--forest)}.map-wrap{position:relative;z-index:2;display:grid;grid-template-columns:.85fr 1.15fr;align-items:center;gap:clamp(35px,7vw,90px);width:min(1100px,100%)}.map-copy h2{font:400 clamp(3rem,7vw,5.5rem) "Italiana",serif}.map-copy p{max-width:500px;line-height:1.8}.map-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:25px}.map-visual{position:relative;padding:9px;border:1px solid rgba(220,202,158,.6);border-radius:220px 220px 12px 12px}.map-visual img{display:block;width:100%;height:min(68svh,650px);object-fit:cover;object-position:center 58%;border-radius:220px 220px 8px 8px;filter:saturate(.7)}.map-visual span{position:absolute;right:26px;bottom:25px;padding:13px 18px;color:var(--forest);background:rgba(249,246,236,.9);font:600 .72rem "DM Sans";letter-spacing:.15em;text-align:center}.map-visual small{font-size:.5rem;font-weight:500}
.gallery-grid{position:relative;z-index:3;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:210px;gap:10px;width:min(1080px,100%);margin:auto}.gallery-item{overflow:hidden;padding:0;border:0;border-radius:4px;background:#cbd3c9;cursor:zoom-in;transition:transform .4s,box-shadow .4s}.gallery-item:hover{z-index:2;transform:translateY(-5px);box-shadow:0 18px 34px rgba(26,49,38,.2)}.gallery-item.wide{grid-column:span 2}.gallery-item.tall{grid-row:span 2}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .6s}.gallery-item:hover img{transform:scale(1.045)}.story-section{display:block;color:#f5f2e9;background:#172c23}.story-grid{position:relative;z-index:3;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;width:min(1100px,100%);margin:auto}.story-grid article{position:relative;overflow:hidden;border:1px solid rgba(222,205,161,.27);background:rgba(255,255,255,.04)}.story-grid article>span{position:absolute;z-index:2;top:13px;right:14px;color:#fff;font:400 1.1rem "Italiana"}.story-grid img{display:block;width:100%;height:330px;object-fit:cover;filter:saturate(.72)}.story-grid div{padding:25px}.story-grid small{color:#d6c28d;font-size:.6rem;letter-spacing:.17em;text-transform:uppercase}.story-grid h3{margin:8px 0 12px;font:400 1.65rem "Italiana",serif}.story-grid p{margin:0;color:#d7ddd8;font-size:.78rem;line-height:1.7}
.form-card{position:relative;z-index:3;width:min(660px,100%);margin:auto;padding:clamp(27px,5vw,52px);border:1px solid rgba(71,94,77,.22);border-radius:200px 200px 16px 16px;background:rgba(255,255,255,.82);box-shadow:var(--shadow);text-align:center}.form-card h2{margin:0;font:400 clamp(2.8rem,7vw,4.8rem) "Italiana",serif}.form-card>p{color:var(--muted)}.form-card form{display:grid;gap:15px;margin-top:28px;text-align:left}.form-row{display:grid;grid-template-columns:2fr 1fr;gap:12px}.form-card label{display:grid;gap:7px;color:#45564c;font-size:.68rem;font-weight:600}.form-card input,.form-card select,.form-card textarea{width:100%;border:1px solid #cbd2c8;border-radius:8px;padding:13px;color:var(--ink);background:#fff}.form-card textarea{min-height:110px;resize:vertical}.form-card form .button{justify-self:center}.form-status{min-height:20px;margin:0!important;color:#4a6855!important;font-size:.72rem}.wishes-panel{margin-top:28px;padding-top:24px;border-top:1px solid rgba(49,75,58,.16);text-align:left}.wishes-panel h3{margin:0 0 15px;font:400 2rem "Italiana";text-align:center}.wishes-list{display:grid;gap:10px;max-height:340px;overflow-y:auto;padding:3px 8px 3px 3px;overscroll-behavior:contain;scrollbar-color:#82947f rgba(49,75,58,.08);scrollbar-width:thin}.wishes-list article{padding:15px;border:1px solid rgba(72,100,78,.22);border-radius:10px;background:rgba(247,244,235,.82)}.wishes-list article>div{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.wishes-list strong{font:600 .82rem "DM Sans"}.wishes-list p{margin:9px 0 8px;color:#59665f;font-size:.77rem;line-height:1.65;overflow-wrap:anywhere;white-space:pre-wrap}.wishes-list small{color:#869089;font-size:.6rem}.wishes-empty{margin:0!important;padding:18px;color:#708078!important;text-align:center;font-size:.73rem}.attendance-badge{padding:4px 8px;border-radius:999px;color:#fff;background:#8b866b;font-size:.53rem;font-weight:700;text-transform:uppercase}.attendance-hadir{background:#52715b}.attendance-tidak-hadir{background:#8a5a54}.attendance-belum-pasti{background:#9a813f}.form-card button:disabled{cursor:wait;filter:grayscale(.4);opacity:.65}
.gift-section{display:block;color:#fff;background:linear-gradient(135deg,#263e33,#172c23)}.gift-grid{position:relative;z-index:3;display:grid;grid-template-columns:repeat(2,minmax(260px,420px));justify-content:center;gap:22px}.gift-grid article{display:grid;justify-items:center;gap:10px;padding:40px 28px;border:1px solid rgba(218,200,153,.32);border-radius:180px 180px 15px 15px;background:rgba(255,255,255,.045);text-align:center}.gift-mark{display:grid;place-items:center;width:58px;height:58px;margin-bottom:8px;border:1px solid var(--gold);border-radius:50%;color:#e2ce9a;font:400 1.5rem "Italiana"}.gift-grid small{color:#d9c690;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase}.gift-grid b{font:500 1.35rem "DM Sans";letter-spacing:.04em}.gift-grid p{min-height:43px;max-width:330px;color:#d8ded9;font-size:.78rem;line-height:1.65}.closing-section{min-height:100svh;color:#fff}.closing-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 60%}.closing-section .hero-overlay{z-index:2}.closing-section .section-copy{max-width:700px}.closing-section h2{font-size:clamp(3.4rem,8vw,6.5rem)}.closing-section h3{margin:32px 0 12px;font:400 clamp(3rem,8vw,6rem) "Italiana"}.closing-section small{color:#e0d0a7;letter-spacing:.3em}
.bottom-menu{position:fixed;z-index:50;right:0;bottom:0;left:0;height:var(--nav);display:flex;align-items:stretch;justify-content:center;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;border-top:1px solid rgba(221,204,157,.22);background:rgba(18,39,30,.94);backdrop-filter:blur(13px)}.bottom-menu::-webkit-scrollbar{display:none}.bottom-menu a{flex:0 0 76px;display:grid;place-content:center;justify-items:center;gap:5px;color:#aebcaf;font-size:1.02rem;text-decoration:none;transition:.25s}.bottom-menu span{font-size:.5rem}.bottom-menu a.active{color:#fff;background:#46614e}.floating-tools{position:fixed;z-index:60;right:14px;bottom:calc(var(--nav) + 14px);display:grid;gap:9px}.floating-tools button{width:42px;height:42px;border:1px solid rgba(231,216,180,.5);border-radius:50%;color:#fff;background:rgba(31,64,48,.9);box-shadow:0 8px 20px rgba(0,0,0,.25);cursor:pointer}.floating-tools button.playing{animation:pulse 1.8s infinite}@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(200,173,118,.16)}}.reveal,.scroll-reveal{opacity:0;filter:blur(6px);transform:translateY(38px);transition:opacity .85s,transform .85s,filter .85s;transition-delay:var(--delay,0ms)}.reveal.is-visible,.scroll-reveal.is-visible{opacity:1;filter:none;transform:none}.lightbox{width:100vw;max-width:none;height:100svh;max-height:none;margin:0;padding:30px;border:0;color:#fff;background:rgba(10,24,18,.97)}.lightbox::backdrop{background:#000}.lightbox figure{display:grid;place-items:center;align-content:center;gap:10px;width:100%;height:100%;margin:0}.lightbox img{max-width:100%;max-height:calc(100svh - 90px);object-fit:contain}.lightbox button{position:fixed;z-index:2;border:0;color:#fff;background:rgba(58,87,67,.8);cursor:pointer}.lightbox-close{top:12px;right:12px;width:42px;height:42px;border-radius:50%;font-size:1.7rem}.lightbox-prev,.lightbox-next{top:50%;width:42px;height:62px;border-radius:99px;font-size:2rem;transform:translateY(-50%)}.lightbox-prev{left:7px}.lightbox-next{right:7px}
@media(max-width:1100px){.bottom-menu{justify-content:flex-start}}@media(max-width:820px){:root{--nav:68px}.panel{padding:88px 18px calc(78px + var(--nav))}.quote-section,.couple-section,.map-wrap{grid-template-columns:1fr}.quote-photo,.portrait{width:min(82vw,390px);margin:auto}.quote-photo img,.portrait img{height:50svh}.couple-section.alternate .portrait{order:0}.event-grid,.gift-grid,.story-grid{grid-template-columns:1fr}.event-grid article{border-radius:130px 130px 16px 16px}.map-copy{text-align:center}.map-actions{justify-content:center}.map-visual{width:min(84vw,480px);margin:auto}.gallery-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:180px}.story-grid{width:min(480px,100%)}.story-grid img{height:380px}.bottom-menu a{flex-basis:68px}.botanical{opacity:.65}}@media(max-width:460px){.cover-photo{background-position:52% center}.cover h1{font-size:3.8rem}.cover h1 span{display:block;margin:.2em}.hero h1{font-size:4rem}.hero-slides img{object-position:center 52%}.countdown{gap:5px}.countdown span{min-width:61px;padding:10px 4px}.countdown b{font-size:1.25rem}.gallery-grid{grid-auto-rows:150px}.form-card{border-radius:120px 120px 14px 14px;padding-top:55px}.form-row{grid-template-columns:1fr}.story-grid img{height:310px}.gift-grid article{border-radius:120px 120px 14px 14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}.reveal,.scroll-reveal{opacity:1;filter:none;transform:none}}
