@font-face{font-family:Script;src:url('assets/script.woff') format('woff');font-display:swap}@font-face{font-family:Sans;src:url('assets/sans-400.woff') format('woff');font-display:swap;font-weight:400}@font-face{font-family:Sans;src:url('assets/sans-500.woff') format('woff');font-display:swap;font-weight:500}
:root{--paper:#f6efe6;--wine:#932b31;--gold:#835b25;--ink:#514535}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:20px}body{margin:0;background:#ddd5c5;color:var(--ink);font:400 14px/1.7 Sans,Arial,sans-serif}body.locked{overflow:hidden}main{width:100%;max-width:560px;margin:auto;background:var(--paper);box-shadow:0 0 60px #4c3f2420;overflow:hidden;container-type:inline-size}h1,h2,h3,p{margin:0}h2{font:400 clamp(42px,10.5cqw,59px)/1.13 Script,cursive;color:var(--wine)}a{color:inherit}img{display:block;width:100%;height:auto}button{font:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid #9a7140;outline-offset:5px}[hidden]{display:none!important}.eyebrow{font-size:clamp(9px,2.4cqw,12px);line-height:1.8;letter-spacing:.1em;font-weight:500;color:var(--gold)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;margin:-1px;padding:0;border:0}
.gate{position:fixed;inset:0;z-index:100;background:#63613b;display:flex;align-items:center;justify-content:center;isolation:isolate;overflow:hidden;opacity:1;will-change:opacity}.gate:before{content:'';position:absolute;inset:-20px;background:url('assets/envelope-video-poster.webp') center/cover;filter:blur(15px) brightness(.78);z-index:-1}.envelope-stage{position:relative;width:min(100vw,56.25dvh);max-width:560px;aspect-ratio:9/16;isolation:isolate}.opening-video{display:block;width:100%;height:100%;object-fit:contain}.envelope-open{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:none;z-index:5;color:#fff8df}.envelope-prompt{position:absolute;left:0;right:0;bottom:6%;font:35px/1.2 Script,cursive;text-shadow:0 2px 10px #33320d;transition:opacity .2s}.envelope-prompt>span{display:block;font:500 9px/1.6 Sans,Arial,sans-serif;letter-spacing:.19em;margin-top:13px}.envelope-prompt small{display:block;font:400 9px/1.5 Sans,Arial,sans-serif;letter-spacing:.04em;margin-top:8px;opacity:.85}.gate.opening .envelope-prompt{opacity:0}.gate.opening .envelope-open{pointer-events:none}.gate.done{opacity:0;visibility:hidden;pointer-events:none}
.date-section{text-align:center;padding-bottom:36px}.date-heading{margin-bottom:15px}.heart-stage{position:relative;width:77%;aspect-ratio:620/580;margin:0 auto;filter:drop-shadow(0 10px 15px #92743920)}.date-under{position:absolute;inset:0;background:radial-gradient(ellipse at 30% 10%,#fffaf0,#eddfbf);clip-path:polygon(50% 17%,35% 3%,19% 3%,6% 14%,0 30%,3% 47%,16% 65%,50% 97%,84% 65%,97% 47%,100% 30%,94% 14%,81% 3%,65% 3%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding-bottom:10%;color:var(--wine)}.date-under>span{font-size:10px;letter-spacing:.14em;margin-top:9%}.date-under strong{font:400 clamp(63px,18cqw,98px)/1.1 Georgia,serif}.date-under b{font-size:clamp(12px,3cqw,17px);font-weight:400;letter-spacing:.05em}.date-under em{font:clamp(28px,7cqw,39px)/1.5 Script,cursive;margin-top:4px}#scratch{position:absolute;inset:0;width:100%;height:100%;touch-action:none;transition:opacity .6s}#scratch.revealed{opacity:0;pointer-events:none}.spark{position:absolute;color:#fff7d2;text-shadow:0 0 8px #967624;font-size:27px;pointer-events:none;animation:twinkle 2.4s infinite;font-style:normal}.s1{top:20%;left:16%}.s2{top:44%;right:16%;animation-delay:.9s;font-size:17px}.revealed~.spark{display:none}#scratch-hint{font-size:12px;margin-top:10px}.text-button{border:0;background:none;color:#87673e;font-size:11px;text-decoration:underline;text-underline-offset:4px;padding:7px 10px}.countdown{display:flex;justify-content:center;align-items:center;gap:20px;margin:26px auto 8px}.countdown strong{display:block;font:400 29px/1.3 Georgia,serif;color:#697043}.countdown span{display:block;font-size:8px;letter-spacing:.12em}.countdown i{font-style:normal;opacity:.35}
.family{padding:55px 12% 160px;background-image:url('assets/family.webp');background-size:100% 100%;background-repeat:no-repeat;text-align:center}.family>.eyebrow{max-width:88%;margin:0 auto 33px;font-size:10px}.family h2{font-size:58px;margin-bottom:15px}.family article p{font-size:clamp(12px,3.15cqw,16px);line-height:1.75;text-shadow:0 1px 3px var(--paper),0 0 8px var(--paper)}.family article .relation{font-size:clamp(10px,2.7cqw,13px);color:var(--gold);margin:13px 0 7px}.family-amp{display:block;font:38px/1 Script,cursive;color:var(--gold);margin:25px auto}.celebrations-intro{text-align:center;padding:60px 20px 42px}.celebrations-intro h2{margin:20px auto 23px}.celebrations-intro>p:last-child{font-size:12px;color:#85734f}.event{text-align:center;padding:26px 0 6px;background:var(--paper)}.event>.eyebrow{padding:0 12px;font-size:10px}.event h2{font-size:clamp(48px,12cqw,68px);line-height:1.15;margin:27px 16px 25px}.event-date{font-size:clamp(12px,3.3cqw,16px);font-weight:500}.event-date span{color:#ae8a50;padding:0 5px}.event-venue{display:block;text-decoration:none;margin:20px auto 0;max-width:92%;font-size:clamp(12px,3cqw,15px);line-height:1.8}.event-venue strong{display:block;font-weight:500}.event-venue>span{display:block;color:#7e6748;font-size:.87em;margin-top:7px}.event-venue small{display:block;font-size:10px;color:#947644;margin-top:9px;text-underline-offset:3px}.event-art{width:95%;margin:30px auto 0}.art-carnival{width:80%}.art-mehndi{width:89%}.art-phere{width:78%}.divider{width:30%;height:auto;margin:12px auto 10px;background:var(--paper)}.venues{text-align:center;padding:40px 7% 20px}.venues>h2{margin:18px auto 40px}.venue{padding:22px 0 45px;scroll-margin-top:30px}.venue+.venue{border-top:1px solid #c4b39066;padding-top:40px}.pin-link{display:block;width:170px;max-width:52%;margin:24px auto;filter:drop-shadow(0 8px 10px #705f3c20)}.map-pin{display:block;position:relative;width:100%;aspect-ratio:240/310;overflow:hidden;background:#dddcc1;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 310'%3E%3Cpath d='M120 0C53 0 0 53 0 120c0 65 120 190 120 190s120-125 120-190C240 53 187 0 120 0Z'/%3E%3C/svg%3E");mask-size:100% 100%;mask-repeat:no-repeat}.map-pin iframe{position:absolute;width:400px;height:400px;top:35%;left:50%;transform:translate(-50%,-50%);border:0;pointer-events:none;filter:saturate(.7) sepia(.12)}.map-pin i{position:absolute;width:16px;height:16px;background:var(--wine);border:3px solid #fff7e3;border-radius:50%;top:32%;left:50%;transform:translate(-50%,-50%)}.venue h3{font:400 27px/1.4 Georgia,serif;color:var(--wine)}.venue-date{font-size:12px;margin:13px auto}.venue address{font-size:13px;line-height:1.8;font-style:normal}.map-link{display:inline-flex;gap:19px;align-items:center;margin-top:23px;border:1px solid #a18b62;border-radius:40px;padding:10px 20px;text-decoration:none;font-size:11px}.map-link span{font-size:17px}.map-link:hover{background:#ece3d1}footer{padding-bottom:40px;text-align:center}footer .download{display:block;width:fit-content;margin:30px auto 13px;padding:12px 24px;border:1px solid #b5a57f;border-radius:40px;text-decoration:none;font-size:12px}
.controls{position:fixed;right:max(16px,calc((100vw - 560px)/2 + 16px));bottom:max(22px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px;z-index:30}.controls button{width:42px;height:42px;border:1px solid #c4b594;border-radius:50%;background:#faf6eef2;color:#746044;box-shadow:0 3px 15px #53452716;display:grid;place-items:center;font-size:18px}#menu{position:fixed;z-index:31;bottom:max(23px,env(safe-area-inset-bottom));right:max(69px,calc((100vw - 560px)/2 + 69px));background:#faf6eff7;border:1px solid #c4b594;border-radius:12px;box-shadow:0 5px 25px #53452722;padding:12px 20px}#menu a{display:block;padding:9px 0;text-decoration:none;font-size:12px}.bars{display:flex;align-items:center;gap:3px;height:18px}.bars i{width:2px;height:12px;background:#7c6c47;animation:musicbar .8s infinite alternate ease-in-out}.bars i:nth-child(2){height:18px;animation-delay:.2s}.bars i:nth-child(3){height:14px;animation-delay:.4s}.bars i:nth-child(4){height:9px;animation-delay:.6s}.paused .bars i{animation:none;height:3px}
#petals,#butterflies{position:fixed;inset:0;max-width:560px;margin:auto;overflow:hidden;pointer-events:none;z-index:20}.locked:not(.intro-playing) #petals,.locked:not(.intro-playing) #butterflies{display:none}.petal{position:absolute;left:var(--x);top:-40px;width:var(--size);height:calc(var(--size)*.8);border-radius:80% 10% 65% 35%;background:radial-gradient(ellipse at 25% 20%,#edbec1,#ce8190 60%,#a74e66);opacity:0;animation:fall var(--duration) var(--delay) linear infinite}.butterfly{position:absolute;width:40px;height:40px;top:22%;left:0;animation:fly 27s linear infinite;opacity:.95;perspective:180px;filter:drop-shadow(0 2px 2px #43321b25)}.butterfly:nth-child(2){top:68%;animation-duration:33s;animation-delay:-12s;scale:.8}.butterfly:nth-child(3){top:43%;animation-duration:30s;animation-delay:-19s;animation-direction:reverse;scale:.9}.butterfly:nth-child(4){top:83%;animation-duration:37s;animation-delay:-7s;animation-direction:reverse;scale:.78}.butterfly i{position:absolute;inset:0;background:url('assets/monarch-butterfly.webp') center/contain no-repeat;transform-origin:50% 50%;backface-visibility:hidden}.butterfly-wing{animation:monarch-flap .32s ease-in-out infinite alternate}.butterfly-left{clip-path:polygon(0 0,50% 0,50% 100%,0 100%)}.butterfly-right{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%);animation-name:monarch-flap-right}.butterfly-body{clip-path:polygon(47% 31%,53% 31%,53% 74%,47% 74%);z-index:1}
@keyframes fall{0%{transform:translate(0,-20px) rotate(0);opacity:0}8%{opacity:.65}60%{transform:translate(var(--sway),65dvh) rotate(220deg) rotateY(120deg)}95%{opacity:.6}100%{transform:translate(calc(var(--sway)*-.5),110dvh) rotate(380deg) rotateY(330deg);opacity:0}}@keyframes fly{0%,100%{transform:translate(-30px,0) rotate(12deg)}25%{transform:translate(min(30vw,170px),-75px) rotate(-15deg)}50%{transform:translate(min(80vw,440px),40px) rotate(20deg)}75%{transform:translate(min(50vw,280px),120px) rotate(-30deg)}}@keyframes monarch-flap{from{transform:rotateY(0)}to{transform:rotateY(65deg)}}@keyframes monarch-flap-right{from{transform:rotateY(0)}to{transform:rotateY(-65deg)}}@keyframes twinkle{0%,100%{opacity:.3;scale:.8}50%{opacity:1;scale:1.2}}@keyframes musicbar{to{transform:scaleY(.25)}}
@media(max-width:350px){.family{padding-inline:9%;padding-bottom:130px}.family article p{font-size:11px}.event-date{font-size:11px}.countdown{gap:13px}.venue h3{font-size:24px}.envelope-prompt{font-size:31px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.petal,.butterfly,.spark{display:none}.bars i{animation:none}.envelope-prompt{transition:none}}

/* Guest guide and top-right invitation sidebar. */
.event-dress{display:block;width:fit-content;max-width:86%;margin:22px auto 0;padding:10px 22px;border:1px solid #cbbb9966;border-radius:30px;text-decoration:none;font-size:12px;color:#655b3f;background:#ece5d54d}.event-dress span{display:block;font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--gold)}
.guest-section{padding:60px 7% 48px;text-align:center}.guest-section>h2{margin:17px auto 23px}.section-note{font-size:12px;line-height:1.9;color:#7b6d57;margin-bottom:30px}.look-grid{display:grid;gap:15px}.look-card{padding:27px 24px;border:1px solid #c6b58b80;border-radius:100px 100px 12px 12px;background:linear-gradient(145deg,#fffbf1a6,#eae0cc66);scroll-margin-top:76px}.look-card h3{font:400 35px/1.2 Script,cursive;color:var(--wine);margin:6px auto 13px}.look-theme{font-size:13px;font-weight:500;letter-spacing:.025em}.look-card>p:last-child{font-size:12px;max-width:320px;margin:10px auto 0;color:#766951}.swatches{display:flex;justify-content:center;gap:9px;margin:17px 0 10px}.swatches i{height:23px;width:23px;border-radius:50%;box-shadow:0 0 0 3px #fff8e9,0 0 0 4px #d8cbb4}.colour-names{font-size:10px;color:#7b6d57}.explore-section{border-top:1px solid #c6b58b55}.places{text-align:left}.place-card{display:flex;gap:17px;padding:25px 0;border-bottom:1px solid #c6b58b66}.place-number{flex:0 0 39px;color:#a6956d;font:italic 29px/1.5 Georgia,serif}.place-card h3{font:400 24px/1.3 Georgia,serif;color:var(--wine);margin:7px 0 11px}.place-card p:not(.eyebrow){font-size:12px;line-height:1.85}.place-link{display:inline-block;font-size:11px;margin-top:15px;text-underline-offset:5px;color:#75613d}.travel-note{font-size:11px;color:#7b6d57;margin:25px auto 12px;max-width:370px}.tourism-link{font-size:10px;text-underline-offset:4px}#dress-code,#explore{scroll-margin-top:40px}
#menu-button{position:fixed;top:max(16px,env(safe-area-inset-top));right:max(16px,calc((100vw - 560px)/2 + 16px))}#menu-backdrop{position:fixed;inset:0;background:#2e291e66;z-index:40;backdrop-filter:blur(3px)}#menu{z-index:41;top:0;bottom:0;right:max(0px,calc((100vw - 560px)/2));width:min(330px,88vw);padding:28px 27px;overflow-y:auto;border-radius:0;border:0;border-left:1px solid #c4b594;background:#faf5eb;box-shadow:-10px 0 40px #33291420}#menu a{padding:15px 0;border-bottom:1px solid #c6b58b66;font-size:13px}#menu a span{float:right;color:#9c824b}.menu-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:28px}.menu-header>span{font:32px/1.3 Script,cursive;color:var(--wine)}#menu-close{border:1px solid #c4b594;border-radius:50%;background:none;color:#746044;width:34px;height:34px;font-size:25px;line-height:1}body.menu-open{overflow:hidden}

.guest-tabs{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:30;display:flex;align-items:center;background:#faf6eef5;border:1px solid #c4b594;border-radius:40px;padding:4px;box-shadow:0 3px 15px #53452720}.guest-tabs button{background:none;border:0;padding:10px 23px;color:#746044;font-size:12px;white-space:nowrap}.guest-tabs button+button{border-left:1px solid #c4b594}.guest-tabs button:hover{color:var(--wine)}.guest-dialog{position:fixed;inset:0;width:min(530px,94vw);max-height:85dvh;margin:auto;padding:0;border:1px solid #c4b594;border-radius:18px;background:var(--paper);color:var(--ink);overflow-y:auto;overscroll-behavior:contain;container-type:inline-size;box-shadow:0 20px 80px #33291440}.guest-dialog::backdrop{background:#2e291e88;backdrop-filter:blur(4px)}.guest-dialog .guest-section{padding-top:30px}.guest-dialog .explore-section{border:0}.guest-close{display:block;position:sticky;top:12px;margin:12px 12px 0 auto;z-index:2;border:1px solid #c4b594;border-radius:50%;background:#faf6ee;color:#746044;width:36px;height:36px;font-size:25px;line-height:1}body.guide-open{overflow:hidden}

.outfit-art{width:min(100%,340px);height:auto;margin:0 auto 8px}.look-card{border-radius:140px 140px 18px 18px;padding:20px 18px 27px}.look-card h3{font-size:37px}.guest-dialog{scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.petal,.butterfly{will-change:transform}body:not(.intro-playing) .gate{will-change:auto}body.guide-open .petal,body.guide-open .butterfly,body.guide-open .butterfly-wing{animation-play-state:paused}.event,.family{content-visibility:auto;contain-intrinsic-size:auto 900px}@media(prefers-reduced-motion:reduce){.guest-dialog{scroll-behavior:auto}}

.outfit-art{width:min(100%,380px);max-height:none;aspect-ratio:2/3;object-fit:contain;margin:0 auto 18px}.look-card{border-radius:22px;padding:20px 18px 28px;background:linear-gradient(160deg,#fffbf1aa,#eee4d266)}

/* The invitation is interactive underneath the playing intro from the initial tap. */
.gate.opening{pointer-events:none}

/* Fixed top navigation: centered menu and right-aligned sound. */
.controls{top:max(12px,env(safe-area-inset-top));bottom:auto;right:max(10px,calc((100vw - 560px)/2 + 10px));z-index:31}
.guest-tabs{max-width:calc(100vw - 124px);height:42px;padding:3px;border-radius:24px}
.guest-tabs button{padding:9px 18px;font-size:12px}
@media(max-width:380px){.guest-tabs button{padding:9px 12px;font-size:11px}}
