:root{--rose:#c77f91;--deep:#765466;--gold:#a88650;--ink:#5d4b50;--cream:#fff8f2}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:0}html,body{color:var(--ink);background:#f7dfe8;min-height:100%;margin:0;padding:0;font-family:Montserrat,sans-serif;overflow-x:hidden}body{-webkit-text-size-adjust:100%;text-rendering:optimizelegibility}body.locked{touch-action:none;height:100dvh;min-height:100dvh;overflow:hidden}button,a{font:inherit}a{text-decoration:none}.invite{background:#f7dfe8;width:min(100%,600px);margin:0 auto;box-shadow:0 0 50px #6d4d5518}.page{isolation:isolate;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;width:100%;position:relative;overflow:hidden}.page:not(.opening){margin-top:-16px;-webkit-mask-image:linear-gradient(#0000 0,#0000008c 11px,#000 26px calc(100% - 28px),#0000008c calc(100% - 11px),#0000 100%);mask-image:linear-gradient(#0000 0,#0000008c 11px,#000 26px calc(100% - 28px),#0000008c calc(100% - 11px),#0000 100%)}.opening+.page{margin-top:0}.opening{aspect-ratio:auto;background-image:url(/assets/opening-bg.jpg);background-size:100% 100%;justify-content:center;align-items:center;height:100dvh;min-height:100dvh;max-height:100dvh;margin:0;transition:opacity .85s,visibility .85s,filter .85s,transform .85s;display:flex;overflow:hidden}.opening.hidden{opacity:0;visibility:hidden;filter:blur(7px);z-index:-1;display:none;position:absolute;inset:0;transform:scale(1.012)}.opening-monogram-wrap{flex-direction:column;align-items:center;width:70%;display:flex;position:absolute;top:49%;left:50%;transform:translate(-50%,-50%)}.monogram{object-fit:contain;filter:drop-shadow(0 8px 12px #6e4b3c35);width:100%;max-width:390px;height:auto}.opening-subtitle{color:#8c6670;letter-spacing:.03em;margin:3px 0;font:400 clamp(18px,4.8vw,25px) Great Vibes,cursive;transform:translateY(-15px)}.open-btn{color:#775b3f;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:#fff8f0e8;border:1px solid #a98752;border-radius:40px;margin-top:-4px;padding:12px 27px;font:500 11px Montserrat,sans-serif;transition:transform .2s;box-shadow:0 7px 22px #9e718222}.open-btn:active{transform:scale(.98)}@media (prefers-reduced-motion:no-preference){.open-btn{animation:2.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 7px 22px #9e718222}50%{box-shadow:0 8px 30px #9e718244}}}.music-toggle{z-index:100;right:max(12px,50vw - min(600px,100vw)/2 + 12px);top:max(12px, env(safe-area-inset-top));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#765463;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:#fff8f2eb;border:1px solid #b58a93;border-radius:999px;align-items:center;gap:6px;padding:8px 11px;font:600 9px Montserrat,sans-serif;display:none;position:fixed;box-shadow:0 6px 18px #60424a1f}.music-toggle.active{display:inline-flex}.music-toggle span{font-size:8px}.couple{aspect-ratio:1024/1536;background-image:url(/assets/couple-bg.jpg);justify-content:center;align-items:center;display:flex}.couple-copy{text-align:center;position:absolute;top:24%;left:11%;right:11%}.eyebrow{text-align:center;letter-spacing:.02em;color:#8f756c;text-transform:none;margin:0;font:700 clamp(11.5px,2.4vw,14px)/1.18 Cormorant Garamond,serif;position:absolute;top:-36px;left:0;right:0}.couple .couple-person:first-of-type{transform:translateY(14px)}.couple-person h1{color:#7b5b67;letter-spacing:.01em;margin:0;font:400 clamp(24px,5.8vw,38px)/1 Allura,cursive}.couple-person p{color:#65565b;max-width:300px;margin:6px auto 0;font:500 clamp(12px,2.35vw,14px)/1.28 Cormorant Garamond,serif}.couple-person p em{font-style:italic}.couple-divider{color:#c78a9a;margin:6px 0;font:500 23px Bodoni Moda,serif}.couple-person+.couple-divider{margin-top:6px}.save-date{aspect-ratio:864/1536;background-image:url(/assets/save-date-bg.png);justify-content:center;align-items:flex-start;display:flex}.save-overlay{text-align:center;z-index:2;position:absolute;top:28%;left:15%;right:15%}.scratch-wrap{aspect-ratio:1.48;border-radius:8px;width:100%;position:relative;overflow:hidden;transform:translateY(-5.5%)}.revealed-date{color:#966277;background:0 0;flex-direction:column;justify-content:center;align-items:center;padding-top:12%;display:flex;position:absolute;inset:0}.revealed-date span{letter-spacing:.18em;font:8px Montserrat,sans-serif}.revealed-date strong{color:#a65f79;font:600 clamp(50px,10vw,66px)/.82 Cormorant Garamond,serif}.revealed-date b{letter-spacing:.16em;margin-top:8px;font:600 14px Montserrat,sans-serif}.revealed-date small{letter-spacing:.12em;margin-top:6px;font:600 8.5px Montserrat,sans-serif}.scratch-wrap canvas{touch-action:none;cursor:crosshair;width:100%;height:100%;position:absolute;inset:0}.countdown{grid-template-columns:repeat(4,1fr);gap:5px;margin:14px 2% 0;display:grid;position:relative;transform:translateY(5px)}.countdown div{background:#fff5f0b8;border:1px solid #d1a9a5;border-radius:7px;padding:7px 2px}.countdown strong{color:#986779;font:600 21px Cormorant Garamond,serif;display:block}.countdown span{letter-spacing:.08em;font-size:6px}.petal-layer{z-index:4;pointer-events:none;opacity:0;transition:opacity .3s;position:absolute;inset:0;overflow:hidden}.petal-layer.active{opacity:1}.rose-petal{top:-6%;left:var(--left);width:var(--size);height:calc(var(--size) * 1.45);opacity:0;transform:translate3d(0, -10vh, 0) rotate(var(--rot));animation:petalFall var(--dur) var(--delay) ease-in forwards;background:radial-gradient(circle at 28% 24%,#ffdbe4 0 12%,#f4adc0 34%,#df7896 74%,#c75f80 100%);border-radius:72% 28% 68% 32%/72% 35% 65% 28%;position:absolute;box-shadow:0 2px 5px #8f485f2e,inset -2px -2px 3px #ab49642e}.rose-petal:after{content:"";background:#ffe6ed99;border-radius:1px;width:1px;height:70%;position:absolute;top:14%;left:45%;transform:rotate(10deg)}@keyframes petalFall{0%{opacity:0;transform:translate3d(0, -12vh, 0) rotate(var(--rot)) scale(.72)}12%{opacity:.95}45%{transform:translate3d(var(--drift), 42vh, 0) rotate(calc(var(--rot) + 140deg)) scale(1)}78%{transform:translate3d(calc(var(--drift) * -.45), 78vh, 0) rotate(calc(var(--rot) + 300deg)) scale(.94)}to{opacity:0;transform:translate3d(var(--drift2), 118vh, 0) rotate(calc(var(--rot) + 520deg)) scale(.82)}}.event{justify-content:center;align-items:flex-start;display:flex}.penn{aspect-ratio:864/1536;background-image:url(/assets/penn-vazhthu-bg.jpg)}.wedding{aspect-ratio:910/1536;background-image:url(/assets/wedding-bg.png)}.reception{aspect-ratio:864/1536;background-image:url(/assets/reception-bg.jpg)}.event-copy{text-align:center;width:72%;max-width:430px;position:absolute}.penn-copy{top:31%;left:14%}.wedding-copy{width:72%;top:10%;left:14%}.reception-copy{width:72%;top:18%;left:14%}.event h2{color:#7d5a66;letter-spacing:.01em;white-space:nowrap;margin:0 0 14px;font:400 clamp(30px,7vw,42px)/1 Great Vibes,cursive}.event-date{color:#70545d;margin:8px 0;font:600 20px/1.15 Cormorant Garamond,serif}.event-time{color:#a46e7c;margin:6px 0 10px;font:600 18px Montserrat,sans-serif}.event-place{color:#66545a;max-width:390px;margin:0 auto;font:500 13px/1.5 Montserrat,sans-serif}.map-link{color:#785663;letter-spacing:.1em;text-transform:uppercase;background:#f8dce5e8;border:1px solid #b58a93;border-radius:30px;margin-top:15px;padding:9px 20px;font:600 9px Montserrat,sans-serif;text-decoration:none;transition:transform .2s,background .2s;display:inline-block}.map-link:hover{background:#f3c9d6;transform:translateY(-2px)}.gallery{aspect-ratio:864/1536;background-image:url(/assets/gallery-bg.jpg);justify-content:center;align-items:flex-start;display:flex}.gallery-content{text-align:center;position:absolute;top:19%;left:10%;right:10%}.gallery h2{color:#946071;letter-spacing:.02em;margin:0 0 14px;font:400 36px Great Vibes,cursive}.gallery-viewer{justify-content:center;align-items:center;width:82%;margin:0 auto;display:flex;position:relative}.photo-print{background:#fff;width:100%;max-width:360px;padding:10px 10px 24px;box-shadow:0 10px 28px #60424a25}.photo-print img{aspect-ratio:4/5;object-fit:cover;width:100%;display:block}.photo-caption{color:#765b62;justify-content:center;align-items:flex-start;min-height:66px;padding:14px 10px 0;font:500 16px/1.25 Cormorant Garamond,serif;display:flex}.gallery-nav{z-index:3;color:#805866;cursor:pointer;background:#fff7f2e8;border:1px solid #b58a93;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font:28px/25px Georgia;display:flex;position:absolute;top:45%;transform:translateY(-50%)}.gallery-nav.prev{left:-16px}.gallery-nav.next{right:-16px}.gallery-dots{justify-content:center;gap:5px;margin-top:11px;display:flex}.gallery-dots span{cursor:pointer;background:#c8a3ad;border-radius:50%;width:6px;height:6px}.gallery-dots span.active{background:#8d5d6c}.dress-code{aspect-ratio:1024/1536;background:#f8e9e1;justify-content:center;align-items:center;display:flex}.dress-code img{object-fit:contain;width:100%;max-width:100%;height:auto;display:block}.guest{aspect-ratio:864/1536;background-image:url(/assets/guestbook-bg.png);justify-content:center;align-items:center;display:flex}.guest-copy{text-align:center;position:absolute;top:38%;left:18%;right:18%}.guest h2{color:#946071;letter-spacing:.03em;margin:0 0 14px;font:400 42px Great Vibes,cursive}.guest p{color:#765d63;max-width:330px;margin:0 auto;font:500 18px/1.48 Cormorant Garamond,serif}.guest-signoff{color:#765d63;flex-direction:column;align-items:center;gap:2px;margin-top:13px;font:500 17px/1.25 Cormorant Garamond,serif;display:flex}.guest-signoff strong{color:#946071;font-family:Great Vibes,cursive;font-size:24px;font-weight:400}.footer{aspect-ratio:1536/766;background-image:url(/assets/footer-bg.png);justify-content:center;align-items:flex-start;display:flex}.footer-copy{text-align:center;position:absolute;top:8%;left:10%;right:29%;transform:translate(-5px)}.footer h2{color:#8e5d6d;letter-spacing:.03em;margin:0 0 5px;font:400 42px Great Vibes,cursive}.footer p{color:#725c61;margin:0 0 7px;font:500 15px/1.35 Cormorant Garamond,serif}.footer small{letter-spacing:.04em;color:#8b6b73;margin-bottom:5px;font:500 8px Montserrat,sans-serif;display:block}.instagram-pill{color:#765463;letter-spacing:.03em;background:#fff8f0e8;border:1px solid #b58a93;border-radius:999px;align-items:center;gap:7px;padding:6px 11px;font:600 7.5px Montserrat,sans-serif;text-decoration:none;display:inline-flex}.instagram-icon{border:1.5px solid #8c6170;border-radius:4px;justify-content:center;align-items:center;width:14px;height:14px;font:13px/11px Georgia;display:inline-flex}@media (width<=430px){.opening-monogram-wrap{width:72%;top:48.5%}.opening-subtitle{margin-bottom:0;font-size:18px;transform:translateY(-15px)}.open-btn{margin-top:-5px}.couple-copy{top:24.5%;left:9%;right:9%}.eyebrow{letter-spacing:.015em;font-size:11.5px;font-weight:700;line-height:1.18;top:-35px}.couple-person h1{font-size:28px}.couple-person p{max-width:285px;font-size:12px;line-height:1.26}.couple-divider{margin:5px 0;font-size:21px}.save-overlay{top:28.5%;left:14%;right:14%}.revealed-date{padding-top:13%}.revealed-date strong{font-size:clamp(50px,11vw,63px)}.revealed-date b{margin-top:8px;font-size:13px}.revealed-date small{margin-top:6px;font-size:8px}.countdown{gap:4px;margin-top:14px;transform:translateY(5px)}.event-copy{width:76%;left:12%}.penn-copy{top:31%}.wedding-copy{top:10%}.reception-copy{top:18%}.event h2{margin-bottom:13px;font-size:32px}.event-date{font-size:18px}.event-time{font-size:16px}.event-place{font-size:11.5px}.map-link{padding:9px 18px;font-size:8px}.gallery-content{top:19%;left:7%;right:7%}.gallery h2{margin-bottom:13px;font-size:34px}.gallery-viewer{width:82%}.photo-print{max-width:350px;padding:9px 9px 21px}.photo-caption{min-height:60px;padding-top:12px;font-size:15px}.gallery-nav.prev{left:-11px}.gallery-nav.next{right:-11px}.guest-copy{top:39%;left:14%;right:14%}.guest h2{font-size:42px}.guest p{font-size:16.5px;line-height:1.48}.guest-signoff{font-size:16px}.footer-copy{top:7%;left:7%;right:31%;transform:translate(-3px)}.footer h2{font-size:40px}.footer p{font-size:14px}.footer small{font-size:7.5px}.instagram-pill{padding:6px 10px;font-size:7.3px}.music-toggle{right:12px;top:max(10px, env(safe-area-inset-top));padding:7px 9px}}.monogram-text{letter-spacing:-.12em;color:#b97a28;text-shadow:0 3px 1px #ffe7a7,0 8px 18px #5023194d;white-space:nowrap;margin:0 auto 12px;padding-right:.12em;font-family:Great Vibes,cursive;font-size:clamp(110px,27vw,230px);line-height:1.05}.monogram-text span{margin-left:-.05em}
