
:root{--ink:#294e40;--green:#365c4b;--sage:#82977c;--paper:#faf5ea;--rose:#ad727b;--gold:#b08b5e;--line:#c4b89b;--serif:"Cormorant Garamond",Georgia,serif;--script:"Great Vibes","Cormorant Garamond",cursive;--sans:"Be Vietnam Pro",Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--paper);font:300 14px/1.9 var(--sans);overflow-x:clip}body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.35' filter='url(%23n)'/%3E%3C/svg%3E")}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--rose);outline-offset:5px}button{border:0}img{display:block;max-width:100%}svg{display:block}.svg-library{position:absolute;width:0;height:0;overflow:hidden}h1,h2,h3,p{margin:0}h2{font:500 clamp(44px,5.6vw,74px)/1.06 var(--serif);letter-spacing:-1.5px}h2 em{font-weight:400;color:var(--rose)}h3{font:500 34px/1.2 var(--serif)}.kicker{font:500 11px/1.8 var(--sans);letter-spacing:2.3px}.script-label,.signature{font:400 42px/1.3 var(--script);color:var(--rose)}.button{background:var(--green);color:#fff8e9;min-height:52px;padding:15px 27px;display:inline-flex;align-items:center;justify-content:center;gap:22px;border-radius:3px;box-shadow:0 5px 0 #24413412;transition:background .25s,transform .25s;font-weight:400;font-size:12px;letter-spacing:.4px}.button:hover{background:#203e31;transform:translateY(-3px)}.button span{font-size:24px;line-height:1}.button svg{width:22px;height:22px}.section{padding:110px max(28px,calc((100vw - 1100px)/2));position:relative}.section-heading{text-align:center;margin-bottom:58px}.section-heading .kicker{margin:15px 0 22px}.small-icon{width:32px;height:32px;margin:0 auto;color:var(--gold)}.photo-button{padding:0;background:none;position:relative;display:block;overflow:hidden}.photo-button img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}.photo-button:hover img{transform:scale(1.045)}.photo-button::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,#ffffff40 50%,transparent 70%);transform:translateX(-120%);transition:transform 1s;pointer-events:none}.photo-button:hover::after{transform:translateX(120%)}
.cover{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:32px 22px;overflow-y:auto;background:url("/assets/floral-corner.svg") left top/420px no-repeat,url("/assets/floral-corner.svg") right bottom/350px no-repeat,radial-gradient(ellipse at 80% 65%,#ced8c460,transparent 60%),radial-gradient(ellipse at 15% 20%,#eed4c960,transparent 60%),var(--paper);transition:opacity .8s,transform .8s}.cover-border{position:absolute;inset:22px;border:1px solid #b5986c70;pointer-events:none}.cover-border::before{content:"";position:absolute;inset:7px;border:1px solid #b5986c30}.cover-doves{width:105px;height:58px;margin:0 0 12px;animation:float 5s ease-in-out infinite}.cover h2{font:500 clamp(26px,4vw,40px)/1.25 var(--serif);margin:14px 0 35px;max-width:650px;overflow-wrap:anywhere;color:var(--ink)}.envelope{width:min(360px,78vw);height:213px;position:relative;background:#e5ded0;border:1px solid #b8a48680;box-shadow:0 22px 50px #243e2e20;transform:rotate(-3deg);isolation:isolate}.envelope-card{position:absolute;left:7%;right:7%;top:-17px;height:170px;background:#fffcf5;border:1px solid #d2c3a3;padding:22px 10px;display:flex;flex-direction:column;gap:0;align-items:center;box-shadow:0 -4px 8px #294e4005;transition:transform .65s;z-index:-1;font:32px/1.05 var(--script);color:var(--green)}.envelope-card i{font:20px var(--serif);color:var(--rose)}.envelope-flap{position:absolute;inset:0;background:linear-gradient(155deg,#ddd3bf 0,#f3ead9 50%,#cdbda0 100%);clip-path:polygon(0 0,50% 60%,100% 0);filter:drop-shadow(0 2px 1px #82643a20);transition:transform .65s;transform-origin:top}.envelope::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,#ede5d4,#f8f0df);clip-path:polygon(0 0,50% 54%,100% 0,100% 100%,0 100%);z-index:-1}.wax-seal{position:absolute;z-index:2;left:calc(50% - 29px);top:88px;border-radius:50%;width:58px;height:58px;background:radial-gradient(circle at 30% 25%,#c8898d,#965761);border:4px double #d09e9b;box-shadow:0 4px 8px #50332b2b;display:grid;place-items:center;transition:opacity .3s}.wax-seal svg{width:42px;height:34px;color:#f7ddd2}.envelope-bouquet{position:absolute;right:-35px;bottom:-33px;width:120px;height:150px;transform:rotate(12deg);filter:drop-shadow(0 5px 1px #243e2e15);pointer-events:none}.cover-date{margin:38px 0 20px;font:500 17px var(--serif);letter-spacing:5px;color:var(--gold)}.cover.opening{opacity:0;transform:scale(1.035);pointer-events:none}.cover.opening .envelope-card{transform:translateY(-65px)}.cover.opening .envelope-flap{transform:rotateX(160deg)}.cover.opening .wax-seal{opacity:0}.cover.hidden{display:none}.cover-open,.dialog-open{overflow:hidden}
.hero{position:relative;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:70px;padding:95px max(35px,calc((100vw - 1110px)/2)) 105px;min-height:800px;background:url("/assets/floral-corner.svg") left top/420px no-repeat,radial-gradient(ellipse at 85% 65%,#ccd6c4aa,transparent 55%),radial-gradient(ellipse at 10% 90%,#efd8c9aa,transparent 55%)}.hero::after{content:"";position:absolute;left:27px;right:27px;top:27px;bottom:27px;border:1px solid #ae925f45;border-radius:250px 250px 0 0;pointer-events:none}.hero-copy{text-align:center;position:relative;z-index:1}.hero-rings{width:74px;height:58px;color:var(--gold);margin:0 auto 18px}.names{font:400 clamp(68px,7.8vw,112px)/1.1 var(--script);letter-spacing:0;margin:28px 0 24px}.names>span{display:block;padding:0 8px}.names>i{font:italic 45px/1.1 var(--serif);display:block;color:var(--rose);margin:3px 0 6px}.hero-quote{font:400 27px/1.3 var(--serif);color:#667967}.hero-quote em{color:var(--rose)}.hero-date{display:flex;flex-direction:column;gap:8px;margin-top:28px}.hero-date span{font-size:9px;letter-spacing:3px}.hero-date strong{font:500 27px var(--serif);letter-spacing:2px;color:var(--gold)}.hero-art{position:relative;max-width:460px;z-index:1;margin:5px 15px 0 0}.hero-photo{width:100%;aspect-ratio:2/3;border-radius:230px 230px 8px 8px;box-shadow:0 28px 55px #25413226;border:8px solid #fffaf0}.hero-photo img{animation:kenburns 15s ease-in-out infinite alternate}.portrait-outline{position:absolute;inset:-14px 14px 14px -14px;border:1px solid var(--gold);border-radius:240px 240px 8px 8px;opacity:.75;transform:rotate(-2deg)}.photo-vignette{position:absolute;inset:0;background:linear-gradient(0deg,#294e4014,transparent 35%)}.photo-bouquet{position:absolute;width:180px;height:200px;left:-75px;bottom:-40px;transform:rotate(-15deg);animation:sway 7s ease-in-out infinite;filter:drop-shadow(0 8px 2px #294e4015);pointer-events:none}.love-stamp{position:absolute;right:-30px;top:67%;width:105px;height:105px;border:1px solid #b3925c;background:#f7f1e3;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(13deg);box-shadow:0 3px 12px #294e4020;gap:6px}.love-stamp::before{content:"";position:absolute;inset:6px;border:1px dashed #b3925c80;border-radius:50%}.love-stamp span{font-size:7px;letter-spacing:1.5px}.love-stamp svg{width:31px;height:31px;color:var(--rose);animation:heartbeat 4s infinite}
.love-ribbon{background:var(--green);color:#f1e8d1;padding:18px 0;overflow:hidden;border-top:3px double #bfa573;border-bottom:3px double #bfa573}.love-ribbon>div{display:flex;align-items:center;gap:55px;width:max-content;animation:marquee 38s linear infinite;font:400 12px var(--serif);letter-spacing:3px}.love-ribbon i{font-size:24px;color:#d7b784}
.invitation{text-align:center;background:url("/assets/floral-corner.svg") left top/310px no-repeat,radial-gradient(ellipse at 100% 60%,#e3d5c250,transparent 60%)}.dove-sticker{width:135px;height:80px;margin:0 auto 12px;animation:float 6s ease-in-out infinite}.guest-name{font:500 clamp(35px,4.8vw,59px)/1.2 var(--serif);margin:15px auto;max-width:900px;overflow-wrap:anywhere;color:var(--ink)}.ornament{font:26px var(--serif);color:var(--gold);letter-spacing:16px;margin:22px 0}.ornament span{color:var(--rose)}.invitation-copy{font:300 14px/2.2 var(--sans);max-width:580px;margin:0 auto 28px}.signature{font-size:44px;margin-top:20px}
.family-section{background:linear-gradient(0deg,#d9e2d23f,#faf5ea),radial-gradient(ellipse at 10% 60%,#e5d2c080,transparent 50%)}.family-grid{display:grid;grid-template-columns:1fr 105px 1fr;align-items:center;max-width:990px;margin:0 auto}.family-card{text-align:center}.family-photo{width:100%;aspect-ratio:2/3;max-width:340px;margin:auto;border:9px solid #fffaf1;box-shadow:0 20px 40px #294e4018;border-radius:165px 165px 5px 5px}.groom-card .family-photo{transform:rotate(-3deg)}.bride-card .family-photo{transform:rotate(3deg)}.family-copy{padding:34px 10px 0}.family-copy .kicker{font-size:9px;color:var(--gold)}.family-copy h3{font:49px/1.3 var(--script);color:var(--ink);margin:8px 0 18px}.bride-card h3{color:var(--rose)}.family-copy p{font-size:12px;line-height:2.1}.family-copy strong{font-weight:500}.family-address{max-width:270px;margin:12px auto 0;color:#6d7967;font-size:11px!important}.family-heart{align-self:center;text-align:center;color:var(--rose);transform:translateY(-85px)}.family-heart svg{width:44px;height:44px;margin:auto;animation:heartbeat 4s infinite}.family-heart span{font:26px var(--script);display:block;white-space:nowrap;margin-top:8px}
.wedding-day{background-color:var(--green);color:#f8f0de;background-image:radial-gradient(ellipse at top right,#75906c60,transparent 55%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='50' height='50'%3E%3Cpath d='M25 22v6M22 25h6' stroke='%23e0c58b' opacity='.12'/%3E%3C/svg%3E")}.wedding-day h2 em{color:#ddbbab}.wedding-day .small-icon{color:#cbb080}.event-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:25px;max-width:940px;margin:auto}.event-card{position:relative;text-align:center;padding:35px 24px;background:#faf5ea;color:var(--ink);border:7px solid #f1e9d8;outline:1px solid #b99f72;outline-offset:-15px;border-radius:120px 120px 6px 6px;box-shadow:0 15px 35px #142e242b}.event-card .kicker{font-size:9px;letter-spacing:1.3px;color:var(--rose);margin:14px 0 15px}.event-card h3{font-size:24px;color:#7d896e}.event-date{font:500 57px/1.1 var(--serif);color:var(--ink);margin:12px 0}.event-time{display:inline-block;background:#e7dfca;padding:4px 24px;border-radius:30px;font:500 24px var(--serif);color:var(--rose);margin:6px 0 15px}.event-lunar{font:italic 15px var(--serif);color:#8d835d;margin:6px 0 20px}.event-venue{font:500 25px var(--serif);margin:6px 0}.event-address{font-size:10px;max-width:240px;margin:0 auto 18px;line-height:1.8}.event-map-link{display:inline-flex;gap:8px;align-items:center;font-size:10px;border-bottom:1px solid #aa8b5e75;padding-bottom:4px}.event-map-link svg{width:16px;height:16px}.calendar-button{display:flex;width:max-content;max-width:100%;margin:45px auto 0;background:#ebdbc0;color:var(--ink)}.calendar-button:hover{background:#fcf1da}.countdown-wrap{text-align:center;margin-top:65px}.countdown-wrap .script-label{color:#d6bba1;font-size:39px}.countdown{display:flex;justify-content:center;align-items:center;gap:20px;margin:25px 0}.countdown strong{font:500 55px var(--serif);display:block;min-width:66px}.countdown span{font-size:8px;letter-spacing:2px;color:#d7ceba}.countdown b{font:28px var(--serif);color:#bc9d71;margin-top:-16px}#countdown-message{font:22px var(--serif)}
.album{background:url("/assets/floral-corner.svg") left bottom/400px no-repeat,radial-gradient(ellipse at 100% 10%,#dce4d56b,transparent 55%)}.album-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:30px;align-items:start}.album-photo{grid-column:span 2;background:#fffdf6;padding:9px 9px 44px;border:1px solid #c8bda050;box-shadow:0 14px 26px #294e4015;overflow:visible;transform:rotate(var(--tilt,-2deg));transition:transform .5s}.album-photo:nth-child(2n){--tilt:2deg}.album-photo:nth-child(3n){--tilt:-1deg;margin-top:30px}.album-photo img{aspect-ratio:2/3;height:auto;object-fit:cover;animation:photo-breathe 12s ease-in-out infinite alternate;animation-delay:var(--wait,0s)}.album-photo.landscape{grid-column:span 4;align-self:center;margin-top:25px}.album-photo.landscape img{aspect-ratio:3/2}.album-photo:nth-last-child(-n+2){grid-column:span 3}.album-photo:nth-last-child(-n+2) img{aspect-ratio:4/5;object-position:50% 25%}.album-photo:hover{transform:rotate(0deg) translateY(-6px)}.photo-caption{position:absolute;bottom:12px;left:12px;right:12px;font:italic 15px/1.3 var(--serif);color:var(--rose)}.album-signature{text-align:center;font:42px var(--script);color:var(--gold);margin-top:60px}
.location{background:linear-gradient(135deg,#e9eddf,#f7eedf)}.location-layout{display:grid;grid-template-columns:.85fr 1.15fr;border:1px solid #baac8a;background:#faf6eb;padding:10px;box-shadow:0 20px 50px #294e400d}.location-info{text-align:center;padding:30px 20px 40px}.venue-tabs{display:inline-flex;background:#e9e5d7;border-radius:40px;padding:5px;gap:5px}.venue-tabs button{border-radius:30px;background:none;font-size:11px;padding:10px 22px}.venue-tabs button[aria-pressed=true]{background:var(--green);color:#faf6eb}.location-bouquet{width:80px;height:95px;margin:25px auto 5px;animation:sway 7s infinite}.location-info h3{font-size:33px}.location-info>p{font-size:12px;max-width:270px;margin:12px auto 24px}.map-frame-wrap{min-height:410px;overflow:hidden;border:1px solid #c7bda8}.map-frame-wrap iframe{width:100%;height:100%;min-height:410px;border:0;display:block}
.closing{background:url("/assets/floral-corner.svg") left top/340px no-repeat,url("/assets/floral-corner.svg") right bottom/300px no-repeat,radial-gradient(ellipse at 50% 50%,#fffdf5,transparent 65%);text-align:center}.closing .kicker{max-width:450px;margin:20px auto;line-height:2}.closing-rings{width:80px;height:68px;margin:auto;color:var(--gold)}.closing h2{margin:22px 0 34px}.closing .signature{font-size:46px;margin:35px 0 15px}.closing-hearts{display:flex;justify-content:center;gap:5px;align-items:center;color:var(--rose);height:42px}.closing-hearts svg{width:23px;height:23px;animation:float 4s infinite}.closing-hearts svg:nth-child(2){width:35px;height:35px;animation-delay:-1s}.closing-hearts svg:nth-child(3){animation-delay:-2s}footer{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:28px max(28px,calc((100vw - 1100px)/2));border-top:1px solid #aa986751;background:#ecebdc}footer>span{font:17px var(--serif);letter-spacing:3px;color:var(--gold)}.footer-actions{display:flex;gap:12px}.footer-actions button{width:40px;height:40px;background:none;border:1px solid #99a18265;border-radius:50%;display:grid;place-items:center}.footer-actions svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.25}.footer-actions #music-toggle[aria-pressed=true]{background:var(--green);color:var(--paper)}
#petals{position:fixed;inset:0;pointer-events:none;z-index:6;overflow:hidden}.petal{position:absolute;left:var(--left);top:-30px;width:var(--size);height:calc(var(--size)*1.6);border-radius:70% 0 70% 0;background:#dabeb260;animation:petal-fall var(--duration) linear infinite;animation-delay:var(--delay)}.toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,25px);z-index:80;max-width:calc(100vw - 40px);padding:12px 20px;background:var(--green);color:var(--paper);border-radius:4px;box-shadow:0 5px 20px #0002;opacity:0;pointer-events:none;transition:.3s;font-size:12px}.toast.show{opacity:1;transform:translate(-50%,0)}
dialog{padding:0;border:0;color:var(--ink)}dialog::backdrop{background:#142c25c9;backdrop-filter:blur(5px)}.lightbox{background:transparent;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;color:#fff8eb;overflow:hidden}.lightbox-content{height:100%;padding:45px 80px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center}.lightbox img{height:auto;max-height:calc(100dvh - 140px);max-width:100%;object-fit:contain;box-shadow:0 10px 40px #0003}.lightbox-info{text-align:center;margin-top:15px;display:flex;align-items:center;gap:30px}.lightbox-info span{font-size:10px;letter-spacing:2px;color:#d3ba96}.lightbox-info p{font:italic 21px var(--serif)}.lightbox button{position:absolute;background:#fff1;color:#fff8eb;border:1px solid #fff3;z-index:1;width:44px;height:44px;font:34px/1 var(--serif);border-radius:50%}.lightbox-close{right:20px;top:20px}.lightbox-prev{left:15px;top:48%}.lightbox-next{right:15px;top:48%}.rsvp-dialog{width:520px;max-width:calc(100vw - 30px);max-height:90dvh;padding:32px 35px 35px;background:var(--paper);border:1px solid var(--gold);overflow:auto}.dialog-close{position:absolute;right:14px;top:8px;background:none;font-size:30px;color:var(--rose)}.rsvp-rings{width:55px;height:45px;margin:0 auto 10px;color:var(--gold)}.rsvp-dialog h2{text-align:center;font:48px var(--script);color:var(--rose);margin-bottom:22px}.rsvp-dialog label{display:block;font-size:11px;margin:13px 0 5px;font-weight:400}.rsvp-dialog input,.rsvp-dialog select,.rsvp-dialog textarea{width:100%;background:#fffaf3;border:1px solid #c3bea9;min-height:42px;border-radius:2px;padding:10px;font:12px var(--sans);color:var(--ink)}.rsvp-row{display:grid;grid-template-columns:1fr 90px;gap:12px}.rsvp-dialog .button{margin-top:18px;width:100%}.rsvp-privacy{display:block;font-size:9px;line-height:1.8;color:#7d856f;margin-top:15px}.rsvp-dialog #rsvp-status{font-size:11px;margin-top:8px}#rsvp-success{text-align:center}.honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.noscript-note{position:fixed;inset:20%;z-index:100;background:var(--paper);padding:30px} [hidden]{display:none!important}
.js .reveal,.js .animated-heading{opacity:0;transform:translateY(28px);transition:opacity 1s,transform 1s}.js .is-visible{opacity:1;transform:translateY(0)}.names.is-visible>span{animation:name-in 1.2s both}.names.is-visible>span:last-child{animation-delay:.2s}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.04) translateY(-.6%)}}@keyframes photo-breathe{from{filter:brightness(1)}to{filter:brightness(1.035)}}@keyframes float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-9px) rotate(2deg)}}@keyframes sway{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(-3deg)}}@keyframes heartbeat{0%,80%,100%{transform:scale(1)}85%,95%{transform:scale(1.12)}90%{transform:scale(1.03)}}@keyframes marquee{to{transform:translateX(-50%)}}@keyframes petal-fall{0%{transform:translate3d(0,-50px,0) rotate(0deg);opacity:0}10%{opacity:.6}100%{transform:translate3d(100px,110vh,0) rotate(280deg);opacity:0}}@keyframes name-in{from{opacity:0;transform:translateY(30px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@media(min-width:1400px){.hero{min-height:880px}.hero-art{max-width:485px}}
@media(max-width:900px){.hero{gap:30px;padding:75px 45px 90px;min-height:690px}.names{font-size:78px}.hero-art{margin-right:12px}.photo-bouquet{width:135px;height:165px;left:-50px}.love-stamp{width:85px;height:85px;right:-20px}.love-stamp span{font-size:6px}.section{padding:85px 35px}.family-grid{grid-template-columns:1fr 70px 1fr}.family-copy{padding-left:0;padding-right:0}.family-copy p{font-size:11px}.family-photo{border-width:7px}.album-grid{gap:22px}.location-layout{grid-template-columns:1fr 1fr}.location-info{padding:25px 12px}.venue-tabs button{padding:9px 18px}}
@media(max-width:600px){body{font-size:12px}.kicker{font-size:9px;letter-spacing:1.8px}h2{font-size:47px;letter-spacing:-.9px}.section{padding:75px 23px}.section-heading{margin-bottom:38px}.section-heading .kicker{font-size:8px;margin-bottom:16px}.hero{display:flex;flex-direction:column;gap:40px;padding:60px 28px 75px;min-height:0;background-size:270px,auto,auto}.hero::after{inset:13px;border-radius:190px 190px 0 0}.hero-rings{width:57px;height:44px;margin-bottom:15px}.names{font-size:76px;margin:22px 0 18px;line-height:1.03}.names>i{font-size:32px;margin:5px 0 8px}.hero-quote{font-size:25px}.hero-date{margin-top:22px}.hero-date strong{font-size:25px}.hero-art{width:82%;max-width:335px;margin:0}.hero-photo{border-width:6px;border-radius:180px 180px 6px 6px}.portrait-outline{inset:-11px 11px 11px -11px}.photo-bouquet{width:125px;height:145px;left:-47px;bottom:-33px}.love-stamp{width:81px;height:81px;right:-25px;top:69%}.love-stamp svg{width:24px;height:24px}.love-ribbon{padding:14px 0}.love-ribbon>div{font-size:10px;gap:30px;letter-spacing:2px}.invitation{background-size:190px,auto}.dove-sticker{width:112px;height:64px}.script-label{font-size:36px}.guest-name{font-size:37px;line-height:1.18;margin:13px auto}.invitation-copy{font-size:11px;line-height:2.2}.signature{font-size:37px}.ornament{font-size:23px;margin:20px 0;letter-spacing:12px}.family-grid{grid-template-columns:1fr;gap:35px}.family-photo{max-width:270px}.family-heart{transform:none}.family-heart svg{width:30px;height:30px}.family-heart span{font-size:24px}.family-copy{padding-top:25px}.family-copy h3{font-size:48px;margin:9px 0 12px}.family-copy p{font-size:12px}.family-address{font-size:11px!important}.event-grid{grid-template-columns:1fr;gap:25px;max-width:380px}.event-card{padding:31px 20px;border-width:6px;max-width:340px;width:100%;margin:auto;border-radius:110px 110px 5px 5px}.event-card .kicker{font-size:9px;margin-top:15px}.event-date{font-size:53px}.event-time{font-size:25px}.event-address{font-size:10px}.event-venue{font-size:27px}.event-lunar{font-size:14px}.countdown-wrap{margin-top:45px}.countdown{gap:10px;margin:20px auto}.countdown strong{font-size:41px;min-width:43px}.countdown b{font-size:23px}.countdown span{font-size:7px;letter-spacing:1px}.countdown-wrap .script-label{font-size:37px}.calendar-button{font-size:10px;padding:13px 20px;gap:16px;min-height:48px}.album-grid{grid-template-columns:repeat(2,1fr);gap:26px 16px;grid-auto-flow:dense}.album-photo,.album-photo:nth-last-child(-n+2){grid-column:span 1;padding:6px 6px 40px}.album-photo:nth-child(3n){margin-top:0}.album-photo.landscape{grid-column:span 2;margin:3px 0}.album-photo:nth-last-child(-n+2) img{aspect-ratio:2/3;object-position:center}.album-photo:last-child{grid-column:span 2;max-width:270px;width:85%;justify-self:center;margin:12px 0 0}.photo-caption{font-size:12px;line-height:1.1;bottom:10px;left:8px;right:8px}.album-signature{font-size:33px;margin-top:40px}.location-layout{display:flex;flex-direction:column;gap:15px;padding:8px}.location-info{padding:20px 20px 15px}.location-info h3{font-size:31px}.location-info>p{font-size:11px}.location-bouquet{width:70px;height:85px}.map-frame-wrap,.map-frame-wrap iframe{min-height:320px;height:320px}.closing{background-size:190px,170px,auto}.closing .kicker{font-size:8px;max-width:270px}.closing h2{font-size:48px}.closing-rings{width:66px;height:57px}.closing .signature{font-size:38px}.closing .button{font-size:11px}footer{padding:20px 23px;gap:10px}footer>span{font-size:15px;letter-spacing:1.6px}.footer-actions{gap:8px}.footer-actions button{width:35px;height:35px}.footer-actions svg{width:17px;height:17px}.cover{padding:30px 25px;background-size:250px,220px,auto,auto,auto}.cover-border{inset:14px}.cover h2{font-size:29px;margin:12px 0 31px;max-width:310px}.cover-doves{width:94px;height:50px}.envelope{width:min(290px,77vw);height:176px}.envelope-card{height:140px;font-size:28px;padding-top:20px}.wax-seal{top:71px;width:50px;height:50px;left:calc(50% - 25px)}.wax-seal svg{width:35px;height:29px}.envelope-bouquet{width:98px;height:123px;right:-26px;bottom:-30px}.cover-date{font-size:16px;letter-spacing:3px;margin:31px 0 20px}.cover .button{min-height:48px;padding:12px 26px}.lightbox-content{padding:55px 38px 20px}.lightbox img{max-height:calc(100dvh - 170px)}.lightbox button{width:33px;height:33px;font-size:29px}.lightbox-prev{left:3px}.lightbox-next{right:3px}.lightbox-close{right:14px;top:14px}.lightbox-info{gap:8px;flex-direction:column}.lightbox-info p{font-size:18px}.rsvp-dialog{padding:27px 23px;max-height:92dvh}.rsvp-row{grid-template-columns:1fr 70px}.rsvp-dialog input,.rsvp-dialog select,.rsvp-dialog textarea{font-size:12px}.rsvp-dialog h2{font-size:43px}}
@media(max-width:350px){.names{font-size:66px}.hero{padding-left:22px;padding-right:22px}.hero-art{width:87%}.section{padding-left:20px;padding-right:20px}.guest-name{font-size:31px}.countdown{gap:6px}.countdown strong{min-width:41px}.closing h2{font-size:41px}.cover h2{font-size:26px}.cover-doves{width:77px;height:44px}.envelope{height:157px}.envelope-card{font-size:25px}.wax-seal{top:64px}.envelope-bouquet{width:87px;height:105px}.cover-date{margin-top:27px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js .reveal,.js .animated-heading{opacity:1;transform:none}#petals{display:none}}


.names:focus{outline:none}.cover-couple{font:34px/1.3 var(--script);color:var(--green);margin:32px 0 0}.cover-date{margin-top:7px}.js .album-photo.is-visible{transform:rotate(var(--tilt,-2deg))}.js .album-photo.is-visible:hover{transform:rotate(0deg) translateY(-6px)}@keyframes photo-breathe{from{transform:scale(1);filter:brightness(1)}to{transform:scale(1.018) translateY(-2px);filter:brightness(1.035)}}@media(max-width:600px){.cover-couple{font-size:31px;margin-top:29px}.cover-date{margin-top:7px}}

@media(max-width:600px){.names{font-size:clamp(50px,15.4vw,62px);line-height:1.15}.album-photo:last-child{grid-column:span 1;max-width:none;width:auto;justify-self:stretch;margin:0}.cover{background-position:left top,right bottom;background-size:220px,160px,auto,auto,auto}}
