@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&family=DM+Sans:wght@400;500;600&display=swap";@font-face{font-family:Noto Serif;font-style:italic;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/noto-serif-0.ttf)format("truetype")}@font-face{font-family:Noto Serif;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/noto-serif-1.ttf)format("truetype")}@font-face{font-family:Noto Serif;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/noto-serif-2.ttf)format("truetype")}@font-face{font-family:Noto Serif;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/noto-serif-3.ttf)format("truetype")}:root{--cream:#fffaf3;--paper:#f8f0e7;--rose:#b95460;--red:#913e4c;--ink:#5b3039;--muted:#85696b;--line:#ddc5bf;--serif:"Cormorant Garamond",Georgia,serif;--sans:"DM Sans",Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:88px}body{background:var(--cream);color:var(--ink);font-family:var(--sans);margin:0;font-size:14px;line-height:1.7}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.6;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--red);outline-offset:5px}h1,h2,h3,h4,p,figure{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.05}h2{letter-spacing:-1.5px;font-size:clamp(42px,4.5vw,66px)}h2 em{color:var(--rose);font-weight:400}p{color:var(--muted)}.nav{border-bottom:1px solid var(--line);background:var(--cream);z-index:10;justify-content:space-between;align-items:center;height:86px;padding:0 6%;display:flex;position:relative}.monogram{font:32px var(--serif);letter-spacing:-2px}.monogram span{color:var(--rose);margin:0 3px;font-size:22px;font-style:italic}nav{gap:38px;font-size:12px;display:flex}nav a:hover{color:var(--rose)}.nav-rsvp{letter-spacing:2px;border-bottom:1px solid var(--rose);padding:7px 0;font-size:11px}.nav-rsvp span{margin-left:25px}.hero{background:radial-gradient(at 85%,#efd4ce88,#0000 55%);grid-template-columns:1fr 1.05fr;align-items:center;gap:20px;min-height:700px;padding:70px 8% 65px;display:grid;position:relative;overflow:hidden}.hero-copy{z-index:1}.eyebrow,.small-caps{letter-spacing:2.6px;font-size:10px;font-weight:500}.hero h1{letter-spacing:-3px;margin-top:30px;font-size:clamp(65px,6.9vw,102px);line-height:.94}.amp{color:var(--rose);margin:12px 0 7px 95px;font-size:.48em;font-style:italic;display:block}.hero-date{letter-spacing:6px;margin:30px 0 22px;font-size:14px}.hero-date span{color:var(--rose);margin:0 5px}.intro{font-family:var(--serif);font-size:21px;line-height:1.5}.primary{background:var(--rose);color:#fff;border:1px solid var(--rose);border-radius:2px;justify-content:space-between;align-items:center;gap:40px;padding:15px 25px;font-size:12px;transition:background .2s,transform .2s;display:inline-flex}.primary:hover{background:var(--red);transform:translateY(-2px)}.hero .primary{margin-top:28px}.hero-location{letter-spacing:2px;margin-top:28px;font-size:8px}.hero-location span{color:var(--rose);padding:0 12px}.botanical{pointer-events:none;color:var(--rose);opacity:.45;position:absolute}.hero-flower{opacity:.24;width:230px;height:360px;top:-108px;right:-55px;transform:rotate(155deg)}.envelope-scene{perspective:1200px;align-self:center;padding-top:80px;position:relative}.envelope-hint{text-align:center;font:italic 20px var(--serif);color:var(--rose);margin-bottom:42px;transform:rotate(-6deg)}.envelope{aspect-ratio:1.55;filter:drop-shadow(0 25px 25px #8f424321);width:100%;max-width:490px;margin:auto;transition:transform 1.5s cubic-bezier(.2,.8,.2,1);position:relative;transform:rotate(-5deg)}.envelope-back{background:#a44b58;border-radius:4px;position:absolute;inset:0}.letter{background:var(--cream);z-index:1;transition:transform 1.4s cubic-bezier(.22,.7,.1,1) .45s,height 1.4s .45s;position:absolute;inset:8% 7% 3%;overflow:hidden;box-shadow:0 2px 8px #65323625}.letter-border{text-align:center;border:1px solid #d6bfa7;height:calc(100% - 24px);margin:12px;padding:17px 15px}.letter .small-caps{letter-spacing:2px;font-size:7px}.letter img{object-fit:cover;object-position:50% 24%;width:100%;height:135px;margin:12px 0;display:block}.letter-names{font:30px var(--serif)}.letter p{letter-spacing:3px;margin-top:7px;font-size:9px}.envelope-front{clip-path:polygon(0 0,50% 55%,100% 0,100% 100%,0 100%);z-index:3;background:linear-gradient(115deg,#d5888e,#c8717c);border-radius:3px;position:absolute;inset:0}.envelope-front:after{content:"";clip-path:polygon(0 100%,50% 43%,100% 100%);background:#cc7b84;position:absolute;inset:0}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 58%);z-index:4;transform-origin:top;backface-visibility:visible;background:linear-gradient(#d79097,#d0808a);transition:transform 1.1s cubic-bezier(.4,0,.2,1),filter 1s;position:absolute;inset:0}.seal{z-index:5;color:#ffedcd;background:radial-gradient(circle at 35% 28%,#c59070,#a56c52);border:3px double #e0b69b;border-radius:48% 51% 46% 53%;width:62px;height:62px;font:29px Georgia;transition:opacity .35s,transform .6s;position:absolute;top:43%;left:calc(50% - 31px);box-shadow:0 4px 9px #75344440}.seal:hover{transform:scale(1.08)}.envelope-label{text-align:center;z-index:4;color:#fff0e6;letter-spacing:2px;width:100%;font-size:7px;position:absolute;bottom:12%}.seal-caption{text-align:center;letter-spacing:1px;margin-top:40px;font-size:10px}.seal-caption span{color:var(--rose);margin-top:7px;font-size:23px;display:block}.opened .envelope{transform:rotate(0)translateY(30px)}.opened .envelope-flap{z-index:0;filter:brightness(.93);transform:rotateX(180deg)}.opened .letter{z-index:2;height:125%;transform:translateY(-55%)}.opened .seal{opacity:0;pointer-events:none;transform:translateY(20px)}.opened .envelope-hint{opacity:0;transition:opacity .4s}.ribbon{background:var(--rose);color:#fff6ec;font:italic 20px var(--serif);justify-content:center;align-items:center;gap:55px;padding:23px;display:flex}.ribbon i{opacity:.7;font-size:12px;font-style:normal}.section{padding:90px max(7%,50vw - 580px)}.section-label{letter-spacing:2px;color:var(--muted);margin-bottom:45px;font-size:9px}.invitation-grid{grid-template-columns:.85fr 1.15fr;align-items:center;gap:100px;display:grid}.portrait{background:#fff;max-width:400px;padding:13px 13px 25px;position:relative;transform:rotate(-3deg);box-shadow:0 15px 45px #794e4413}.portrait img{aspect-ratio:.72;object-fit:cover;object-position:center;width:100%;display:block}.portrait figcaption{font:italic 19px var(--serif);text-align:center;margin-top:18px}.photo-stamp{outline:4px solid var(--cream);background:var(--cream);width:90px;height:90px;font:24px var(--serif);border:1px solid #af7d65;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;bottom:70px;right:-30px;transform:rotate(12deg)}.photo-stamp small{font:7px var(--sans);letter-spacing:1px;margin-top:8px}.invitation-copy{text-align:center}.double-happiness{color:var(--rose);font-size:38px}.invitation-copy .eyebrow{margin:18px 0}.invitation-copy h2{font-size:44px}.invitation-copy>p:not(.eyebrow){max-width:420px;margin:24px auto 0;font-size:13px}.invitation-copy h3{margin:28px 0;font-size:35px}.invitation-copy h3 span{color:var(--rose);margin:5px;font-size:24px;font-style:italic;display:block}.families{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:20px;padding-top:26px;display:grid}.families span{letter-spacing:1.7px;font-size:8px}.families p{font:18px/1.6 var(--serif);margin-top:10px}.vietnamese{font-style:italic;font-size:11px!important}.celebration{background:#f2dfd9;position:relative;overflow:hidden}.celebration>h2,.celebration>.eyebrow{text-align:center}.celebration h2{margin-top:20px}.celebration-flower{opacity:.2;width:260px;height:400px;top:60px;right:-80px;transform:rotate(-20deg)}.event-grid{grid-template-columns:1fr 1.35fr;gap:70px;max-width:900px;margin:60px auto;display:grid}.date-panel{text-align:center;border-right:1px solid #caa5a0;padding-right:65px}.date-panel>p:first-child{letter-spacing:2px;font-size:10px}.large-date{font:120px/.95 var(--serif);color:var(--red);margin-top:12px}.month{font:italic 34px var(--serif);color:var(--ink);margin:8px 0 20px}.event-time{letter-spacing:1.5px;font-size:10px}.event-time span{padding:0 7px}.outline{border:1px solid var(--rose);color:var(--red);background:0 0;margin-top:24px;padding:12px 24px;font-size:11px}.outline span{margin-left:25px}.outline:hover{background:#ffffff60}.venue-panel{padding-top:20px}.venue-panel h3{margin:22px 0;font-size:42px}.venue-panel>p{max-width:330px;font-size:13px}.text-link{border:0;border-bottom:1px solid var(--rose);color:var(--red);background:0 0;padding:0 0 5px;font-size:12px;display:inline-block}.venue-panel .text-link{margin-top:20px}.text-link span{margin-left:30px}.venue-note{align-items:center;gap:20px;margin-top:35px;display:flex}.venue-note>span{font:35px var(--serif)}.venue-note p{font:italic 18px/1.5 var(--serif)}.countdown-wrap{text-align:center;border-top:1px solid #d4b5af;max-width:900px;margin:auto;padding-top:35px}.script-label{font:italic 23px var(--serif)}.countdown{justify-content:center;gap:60px;margin-top:20px;display:flex}.countdown div{flex-direction:column;display:flex}.countdown strong{font:48px var(--serif);font-weight:400}.countdown span{text-transform:uppercase;letter-spacing:2px;color:var(--muted);font-size:8px}.calendar-section{grid-template-columns:1fr 1fr;align-items:center;gap:100px;display:grid}.calendar-section h2{margin:25px 0}.calendar-section p:not(.eyebrow){font-size:13px}.calendar-section .text-link{margin-top:25px}.calendar{border:1px solid var(--line);background:#fffdf8;width:100%;max-width:430px;padding:34px;transform:rotate(3deg);box-shadow:0 12px 35px #7c42420b}.calendar-top{border-bottom:1px solid var(--line);font:italic 35px var(--serif);justify-content:space-between;align-items:baseline;padding-bottom:20px;display:flex}.calendar-top span:last-child{font:12px var(--sans);letter-spacing:2px}.calendar-grid{text-align:center;font:16px var(--serif);grid-template-columns:repeat(7,1fr);gap:8px;margin:20px 0;display:grid}.calendar-grid>span{place-items:center;height:34px;display:grid}.calendar-grid .day-label{font:9px var(--sans);color:var(--muted)}.chosen{background:var(--rose);color:#fff;border-radius:50%}.calendar>p{text-align:center;letter-spacing:1px;margin-top:25px;font-size:8px!important}.calendar>p span{color:var(--rose);padding:0 10px}.rsvp-section{background:#f4e9e1}.rsvp-grid{grid-template-columns:1fr 1fr;gap:100px;display:grid}.rsvp-grid>div{position:relative}.rsvp-grid h2{margin:25px 0;font-size:80px}.rsvp-flower{opacity:.55;width:125px;height:190px;bottom:0;right:30px;transform:rotate(12deg)}form label{margin-bottom:19px;font-size:11px;font-weight:500;display:block}input:not([type=radio]),select,textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fffaf380;border-radius:0;margin-top:8px;padding:13px 15px;font-size:13px;display:block}input::placeholder,textarea::placeholder{color:#9b8080}textarea{resize:vertical}fieldset{border:0;margin:0 0 20px;padding:0}legend{margin-bottom:12px;font-size:11px;font-weight:500}.radio{align-items:center;gap:8px;margin:0 18px 4px 0;font-weight:400;display:inline-flex}.radio input{accent-color:var(--rose)}.optional{color:var(--muted);font-weight:400}form>.primary{width:100%}.form-status{margin:12px 0;font-size:12px}form>small{color:var(--muted);font-size:10px}.wishes-heading{justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:45px;display:flex}.wishes-heading h2{margin-top:20px}.wishes-heading>p{font-size:12px}.wishes-grid{grid-template-columns:1fr 1fr;gap:80px;display:grid}.wishes-grid form{background:var(--paper);padding:30px}.wishes-grid form .primary{margin-top:20px}.guestbook{overflow-wrap:anywhere;max-height:450px;padding:0 10px;overflow-y:auto}.empty-wishes{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:330px;display:flex}.empty-wishes>span{font-size:52px;font-family:var(--serif);color:var(--rose);margin-bottom:20px}.empty-wishes h3{margin-bottom:12px;font-size:30px}.empty-wishes p{font-size:12px}.wish{border-bottom:1px solid var(--line);margin-bottom:20px;padding:10px 10px 25px}.wish>span{font:45px var(--serif);color:var(--rose)}.wish p{font:italic 23px/1.5 var(--serif);white-space:pre-wrap}.wish h4{letter-spacing:1px;margin-top:18px;font-size:10px;font-weight:400}footer{text-align:center;background:var(--rose);color:var(--cream);padding:85px 25px 30px;position:relative;overflow:hidden}footer p{color:#ffe9df}footer h2{margin:25px 0;font-size:70px}footer h2 em{color:#ecd1bb}footer>p:not(.eyebrow){letter-spacing:3px;font-size:10px}footer p span{padding:0 15px}footer a{border-bottom:1px solid #ffffff50;margin-top:35px;padding-bottom:5px;font-size:11px;display:inline-block}footer small{font:italic 16px var(--serif);color:#f4d8cf;border-top:1px solid #ffffff30;margin-top:50px;padding-top:25px;display:block}.footer-flower{color:#f7e2cd;opacity:.3;width:180px;top:-60px;left:20px;transform:rotate(145deg)}@media (width>=1600px){.hero{padding-left:max(8%,50vw - 600px);padding-right:max(8%,50vw - 600px)}}@media (width<=900px){.hero{min-height:650px;padding:60px 6%}.hero h1{font-size:75px}.eyebrow{letter-spacing:2px;font-size:8px}.hero-location{font-size:7px}.envelope-hint{font-size:17px}.section{padding:65px 6%}.invitation-grid,.calendar-section,.rsvp-grid{gap:45px}.invitation-copy h2{font-size:36px}.invitation-copy h3{font-size:29px}.families p{font-size:16px}.event-grid{gap:35px}.date-panel{padding-right:35px}.wishes-grid{gap:35px}.rsvp-grid h2{font-size:65px}.ribbon{gap:30px;font-size:18px}}@media (width<=640px){.nav{height:70px;padding:0 6%}nav{gap:18px}nav a{font-size:10px}nav a:nth-child(2){display:none}.nav-rsvp{font-size:10px}.nav-rsvp span{margin-left:10px}.hero{flex-direction:column;gap:0;min-height:auto;padding:52px 25px 38px;display:flex;overflow:hidden}.hero-copy{text-align:center;width:100%}.hero h1{letter-spacing:-2px;margin-top:26px;font-size:72px}.amp{margin:8px 0;font-size:36px}.hero-date{margin-top:26px;font-size:12px}.intro{font-size:20px}.hero .primary{margin-top:24px}.hero-location{margin-top:20px}.hero-flower{width:170px;top:-50px;right:-70px}.envelope-scene{width:100%;max-width:350px;margin-top:20px;padding-top:0}.envelope-hint{margin:15px 0 25px;font-size:16px}.seal-caption{margin-top:28px}.envelope{max-width:340px}.letter-border{padding:10px}.letter img{height:110px;margin:8px 0}.letter-names{font-size:25px}.opened.envelope-scene{margin-top:110px;transition:margin-top 1.3s}.ribbon{gap:15px;padding:20px 10px;font-size:16px}.ribbon span:last-child,.ribbon i:last-of-type{display:none}.section{padding:55px 25px}.section-label{margin-bottom:32px;font-size:8px}.invitation-grid{grid-template-columns:1fr;gap:50px}.portrait{max-width:300px;margin:auto}.photo-stamp{right:-20px}.invitation-copy h2{font-size:38px}.invitation-copy h3{font-size:34px}.families p{font-size:17px}.families span{font-size:7px}.event-grid{grid-template-columns:1fr;gap:35px;margin:35px auto}.date-panel{border-bottom:1px solid #caa5a0;border-right:0;padding:0 0 35px}.large-date{font-size:104px}.venue-panel{text-align:center;padding-top:0}.venue-panel h3{font-size:38px}.venue-panel>p{margin:auto}.venue-note{justify-content:center}.countdown{gap:25px}.countdown strong{font-size:40px}.countdown span{letter-spacing:1px;font-size:7px}.calendar-section{grid-template-columns:1fr;gap:35px}.calendar{max-width:350px;margin:auto;padding:25px;transform:rotate(2deg)}.calendar-section h2{font-size:46px}.rsvp-grid{grid-template-columns:1fr;gap:35px}.rsvp-grid h2{font-size:64px}.rsvp-grid>div>p:last-of-type{max-width:250px;font-size:12px}.rsvp-flower{opacity:.3;width:100px;bottom:10px;right:-10px}.wishes-heading{margin-bottom:25px;display:block}.wishes-heading>p{margin-top:20px}.wishes-grid{grid-template-columns:1fr;gap:20px}.wishes-grid form{padding:22px}.guestbook{padding:0}.empty-wishes{min-height:220px}footer{padding:65px 20px 25px}footer h2{font-size:47px}footer>p:not(.eyebrow){letter-spacing:1.5px;font-size:8px}.footer-flower{left:-60px}footer .eyebrow{font-size:7px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}:root{--serif:"Noto Serif",Georgia,serif}h1,h2,h3{letter-spacing:0;line-height:1.45}h2{font-size:38px}.envelope-page{perspective:1500px;background:radial-gradient(at 45% 35%,#efd3cd 0%,#dfb0af 60%,#ce969b 100%);place-items:center;height:100svh;min-height:500px;transition:opacity .65s,filter .65s;display:grid;overflow:hidden}.invitation-envelope{aspect-ratio:1.5;width:min(580px,82vw);color:var(--cream);perspective:1500px;isolation:isolate;filter:drop-shadow(0 22px 30px #66323930);background:0 0;border:0;padding:0;transition:transform 2.3s cubic-bezier(.22,.7,.18,1);display:block;position:relative;transform:translateY(7%)}.pocket-back{z-index:0;background:#b15b66;border-radius:5px;position:absolute;inset:0}.invitation-letter{z-index:1;color:#88434c;background:#fff9ee;border-radius:3px;transition:transform 1.6s cubic-bezier(.2,.7,.15,1) .75s;display:block;position:absolute;inset:6% 6% 7%;transform:translateY(0);box-shadow:0 2px 12px #6b354020}.paper-inset{border:1px solid #cbb18c;flex-direction:column;justify-content:center;align-items:center;padding:10px;display:flex;position:absolute;inset:13px}.letter-heading{font:9px var(--serif);letter-spacing:2px}.letter-couple{font:clamp(22px,3.2vw,35px)/1.55 var(--serif);margin:15px 0 12px}.letter-couple>span{font:italic 23px/1.2 var(--serif);display:block}.letter-day{font:11px var(--serif);letter-spacing:3px}.letter-invite{font:italic 13px var(--serif);margin-top:15px}.pocket-front{z-index:3;clip-path:polygon(0 0,50% 53%,100% 0,100% 100%,0 100%);background:linear-gradient(115deg,#d1858d,#c5737e);border-radius:4px;position:absolute;inset:0}.pocket-front:after{content:"";clip-path:polygon(0 100%,50% 45%,100% 100%);background:linear-gradient(#d88e95,#c67983);position:absolute;inset:0}.pocket-flap{z-index:4;clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:50% 0;backface-visibility:visible;background:linear-gradient(165deg,#e1a0a5,#cf828c);transition:transform 1.15s cubic-bezier(.42,0,.16,1) .2s;position:absolute;inset:0;transform:rotateX(0)}.wax-seal{z-index:5;color:#fff0d4;background:radial-gradient(circle at 32% 25%,#d5ad7d,#b27e55);border:4px double #e8cba4;border-radius:46% 50% 48% 51%;place-items:center;width:66px;height:66px;font:30px Georgia;transition:transform .45s,opacity .35s;display:grid;position:absolute;top:45%;left:calc(50% - 33px);box-shadow:0 5px 10px #743d4a35}.invitation-envelope:hover .wax-seal{box-shadow:0 6px 18px #743d4a60}.envelope-inscription{z-index:4;flex-direction:column;align-items:center;gap:8px;width:100%;display:flex;position:absolute;bottom:6%;left:0}.envelope-inscription>span:first-child{font:19px var(--serif)}.envelope-inscription>span:nth-child(2){font:9px var(--serif);letter-spacing:3px}.envelope-inscription>span:last-child{font:7px var(--sans);letter-spacing:2px;opacity:.8;margin-top:3px}.opening .wax-seal,.leaving .wax-seal{opacity:0;transform:translateY(12px)scale(.85)}@keyframes flap-layer{0%,49%{z-index:4}50%,to{z-index:0}}.invitation-page{background:#fbf4e9;max-width:890px;margin:0 auto;padding:60px 24px 0;animation:.8s both invitation-arrive;box-shadow:0 0 60px #70404a0a}.invitation-page .section{max-width:600px;margin:0 auto 45px;padding:45px 35px}.invitation-cover{text-align:center;color:#fff8ee;background:#bd6b77;border-radius:5px;max-width:600px;margin:0 auto 45px;padding:50px 35px;position:relative;overflow:hidden}.invitation-cover h1{margin:25px 0;font-size:48px;line-height:1.5;position:relative}.invitation-cover h1>span{font-size:30px;font-style:italic;display:block}.invitation-cover .cover-date{letter-spacing:4px;font-size:13px}.invitation-cover img{border:9px solid #fff5e8;width:75%;max-width:320px;margin:35px auto 25px;display:block}.cover-caption{font:italic 20px var(--serif)}.cover-flower{color:#ffe9d3;opacity:.45;width:180px;top:-70px;right:-75px;transform:rotate(155deg)}.invitation-page .section-label{text-align:center;font:17px var(--serif);letter-spacing:1px;margin-bottom:30px}.invitation-page .invitation{color:#fff7ed;background:#c17982;border-radius:5px}.invitation-page .invitation-grid{display:block}.invitation-page .portrait{display:none}.invitation-page .invitation-copy h3{font-size:30px}.invitation-page .invitation p,.invitation-page .invitation .section-label,.invitation-page .invitation em,.invitation-page .invitation h3 span,.invitation-page .double-happiness{color:#fff5e8}.invitation-page .families p{font-size:16px}.invitation-page .celebration{background:#ecd2cc;border-radius:5px}.invitation-page .event-grid{margin:35px 0;display:block}.invitation-page .date-panel{border-bottom:1px solid #caa5a0;border-right:0;padding:0 0 30px}.invitation-page .venue-panel{text-align:center;padding-top:30px}.invitation-page .venue-panel h3{font-size:29px}.invitation-page .venue-panel>p{margin:auto}.invitation-page .venue-note{justify-content:center}.invitation-page .countdown{gap:25px}.invitation-page .countdown strong{font-size:32px}.invitation-page .calendar-section{text-align:center;display:block}.invitation-page .calendar-section>div:first-child{display:none}.invitation-page .calendar{margin:auto;transform:none}.invitation-page .rsvp-grid,.invitation-page .wishes-grid{display:block}.invitation-page .rsvp-grid h2{margin:15px 0;font-size:33px}.invitation-page .rsvp-grid>div{text-align:center;margin-bottom:30px}.invitation-page .rsvp-grid>div>p:last-of-type{max-width:none}.invitation-page .rsvp-flower{display:none}.invitation-page .wishes-heading{text-align:center;display:block}.invitation-page .wishes-heading>p{margin-top:18px}.invitation-page .wishes-heading h2{font-size:33px}.invitation-page .guestbook{margin-top:25px}.invitation-page footer{background:#bd6b77;margin:0 -24px;padding:55px 25px 30px}.invitation-page footer h2{font-size:35px}.invitation-page footer h2 em{font-size:22px;display:block}.invitation-page .eyebrow{line-height:1.8}@keyframes invitation-arrive{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@media (width<=640px){.envelope-page{min-height:360px}.invitation-envelope{width:86vw}.envelope-inscription{gap:5px;bottom:6%}.envelope-inscription>span:first-child{font-size:14px}.envelope-inscription>span:nth-child(2){font-size:8px}.envelope-inscription>span:last-child{margin:0;font-size:6px}.wax-seal{width:46px;height:46px;font-size:23px;top:43%;left:calc(50% - 23px)}.paper-inset{padding:8px;inset:8px}.letter-heading{letter-spacing:1px;font-size:6px}.letter-couple{margin:8px 0;font-size:21px;line-height:1.5}.letter-couple>span{font-size:16px}.letter-day{letter-spacing:2px;font-size:8px}.letter-invite{margin-top:8px;font-size:9px}.invitation-page{padding:25px 16px 0}.invitation-page .section{margin-bottom:25px;padding:30px 20px}.invitation-cover{margin-bottom:25px;padding:35px 20px}.invitation-cover h1{font-size:35px}.invitation-cover img{width:85%}.invitation-page h2{font-size:30px}.invitation-page .invitation-copy h2{font-size:24px}.invitation-page .invitation-copy h3{font-size:25px}.invitation-page .families p{font-size:13px}.invitation-page .families{gap:10px}.invitation-page .venue-panel h3{font-size:25px}.invitation-page .countdown{gap:17px}.invitation-page .countdown strong{font-size:28px}.invitation-page .section-label{font-size:15px}.invitation-page footer{margin:0 -16px}.invitation-page footer h2{font-size:29px}}@media (prefers-reduced-motion:reduce){.invitation-page{animation:none}.envelope-page,.invitation-envelope,.invitation-letter,.pocket-flap,.wax-seal{transition:none!important;animation:none!important}.opening .pocket-flap,.leaving .pocket-flap{z-index:0}}:root{--rose:#a51e2b;--red:#7e1220;--ink:#591d22;--muted:#78554a;--line:#d8c2a4;--paper:#f6ecde;--cream:#fff8ec}body{background:#f9f2e6}.invitation-page{background:#f8f0e2 url(/assets/paper.webp) top/700px}.invitation-page .invitation-cover{color:var(--red);background:0 0;padding:30px 0 35px;overflow:visible}.invitation-cover p{color:var(--red)}.invitation-cover .cover-flower{display:none}.invitation-cover h1{font-size:43px}.invitation-cover h1>span{font-size:25px}.invitation-cover .cover-date{color:#8d332e}.invitation-cover .cover-caption{color:var(--red);margin-top:30px}.keepsake-envelope{aspect-ratio:.95;isolation:isolate;filter:drop-shadow(0 15px 20px #58252020);width:94%;max-width:560px;margin:100px auto 0;position:relative}.invitation-cover .keepsake-envelope>img{object-fit:contain;border:0;max-width:none;margin:0;padding:0;display:block;position:absolute}.invitation-cover .keepsake-back{z-index:0;filter:saturate(1.3);width:100%;bottom:0;left:0}.invitation-cover .keepsake-front{z-index:3;filter:saturate(1.3);width:100%;bottom:0;left:0}.floating-wedding-photo{z-index:1;will-change:transform;background:#fffdf4;width:62%;height:90%;padding:9px;animation:6s ease-in-out infinite wedding-photo-float;position:absolute;top:-15%;left:30%;transform:rotate(11deg);box-shadow:0 7px 14px #48171d25}.invitation-cover .floating-wedding-photo img{object-fit:cover;object-position:50% 30%;border:0;width:100%;max-width:none;height:100%;margin:0;display:block}.invitation-cover .keepsake-flowers{z-index:2;filter:drop-shadow(3px 4px 3px #30101735);width:40%;top:-16%;left:1%;transform:rotate(-15deg)}@keyframes wedding-photo-float{0%,to{transform:translateY(0)rotate(11deg)}50%{transform:translateY(-9px)rotate(10deg)}}.invitation-page .invitation{background:linear-gradient(140deg,#a32730,#891724)}.invitation-page .families{border-color:#f2d7ac66}.invitation-page .celebration{background:#f1e3ce}.invitation-page .celebration-flower{color:#9d202b;opacity:.16}.invitation-page .countdown-wrap,.invitation-page .date-panel{border-color:#c9af90}.invitation-page .rsvp-section,.invitation-page .wishes-grid form{background:#f0e3d1}.invitation-page footer{background:linear-gradient(120deg,#a51e2b,#85121e)}.invitation-page .calendar{background:#fffaee}.invitation-page .calendar-top{font-size:27px}.invitation-page .calendar-grid .day-label{font-size:10px}.envelope-page{filter:none;background:radial-gradient(at 48% 40%,#bc343b 0%,#9f1c28 57%,#7c101c 100%);transition:opacity .75s}.pocket-back{background:#7d1120}.pocket-front{background:linear-gradient(115deg,#bd303a,#a51c2a)}.pocket-front:after{background:linear-gradient(#ba2934,#9e1826)}.pocket-flap{background:linear-gradient(165deg,#cf4247,#ae2431)}.invitation-letter{color:#821824;background:#fff8e8 url(/assets/paper.webp) 50%/cover}.envelope-inscription{color:#fff3dc}.wax-seal{background:radial-gradient(circle at 32% 25%,#dfb575,#ad713c);border-color:#efd0a1}.invitation-envelope{will-change:transform;filter:drop-shadow(0 22px 30px #3f041d40);transition:transform 3.6s cubic-bezier(.25,.65,.2,1);transform:translateY(7%)translateZ(0)}.pocket-flap{will-change:transform;transition:transform 1.65s cubic-bezier(.4,0,.15,1) .25s}.invitation-letter{will-change:transform;transition:transform 2.05s cubic-bezier(.22,.68,.12,1) 1.15s}.wax-seal{transition:opacity .5s,transform .65s cubic-bezier(.22,.68,.12,1)}.opening .pocket-flap,.leaving .pocket-flap{animation:1.9s forwards flap-depth;transform:rotateX(180deg)}.opening .invitation-letter,.leaving .invitation-letter{transform:translateY(-87%)translateZ(0)}.opening .invitation-envelope,.leaving .invitation-envelope{transform:translateY(25%)translateZ(0)}.opening .envelope-inscription,.leaving .envelope-inscription{opacity:.65;transition:opacity 1s}.leaving{opacity:0;filter:none}@keyframes flap-depth{0%,53%{z-index:4}54%,to{z-index:0}}@media (width<=640px){.invitation-page .invitation-cover{padding:15px 0 25px}.invitation-cover h1{font-size:34px}.keepsake-envelope{width:95%;margin-top:70px}.floating-wedding-photo{padding:6px}.invitation-cover .cover-caption{font-size:18px}.invitation-page .calendar-top{font-size:24px}.invitation-page .wishes-grid form{padding:18px}.radio{font-size:11px}.invitation-page .rsvp-grid>div>p:last-of-type{font-size:12px}.invitation-page .countdown{gap:19px}.invitation-page .countdown span{letter-spacing:1px;font-size:9px}}@media (prefers-reduced-motion:reduce){.floating-wedding-photo{will-change:auto;animation:none!important}.invitation-envelope,.pocket-flap,.invitation-letter{will-change:auto}.opening .pocket-flap,.leaving .pocket-flap{z-index:0;animation:none!important}}.invitation-page{background-blend-mode:multiply;background-size:100%}.keepsake-envelope{margin-top:155px}@media (width<=640px){.keepsake-envelope{margin-top:110px}}.heart-fireworks{pointer-events:none;z-index:20;position:absolute;inset:0;overflow:hidden}.firework-heart{font-size:var(--size);color:var(--heart-color);opacity:0;text-shadow:0 0 12px #ffe5af55;animation:heart-burst 2.4s var(--delay) cubic-bezier(.15,.65,.25,1) both;will-change:transform,opacity;line-height:1;position:absolute;top:50%;left:50%}@keyframes heart-burst{0%{opacity:0;transform:translate(-50%,-50%)scale(.15)}10%{opacity:1}65%{opacity:.85}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) rotate(var(--spin)) scale(.85)}}.invitation-cover .keepsake-back,.invitation-cover .keepsake-front{filter:brightness(1.5)saturate(1.3)hue-rotate(12deg)}.calendar-grid .chosen{color:#fffaf0;background:0 0;border-radius:0;position:relative}.calendar-grid .chosen svg{fill:#a51e2b;width:39px;height:36px;position:absolute;top:50%;left:50%;transform:translate(-50%,-46%)}.calendar-grid .chosen>span{z-index:1;font-size:14px;font-weight:600;position:relative}.admin-page{max-width:1100px;min-height:100svh;margin:auto;padding:40px 25px}.admin-page header{margin:35px 0}.admin-page h1{margin:12px 0;font-size:36px}.admin-login{border:1px solid var(--line);background:#f1e4d2;max-width:440px;padding:30px}.admin-login h2{margin-bottom:12px;font-size:25px}.admin-login p{margin-bottom:25px}.admin-stats{grid-template-columns:repeat(4,1fr);gap:15px;display:grid}.admin-stats>div{border:1px solid var(--line);background:#f2e5d3;flex-direction:column;padding:22px;display:flex}.admin-stats strong{font:34px var(--serif);color:var(--red)}.admin-stats span{font-size:12px}.admin-toolbar{flex-wrap:wrap;align-items:end;gap:12px;margin:30px 0 20px;display:flex}.admin-toolbar label{flex:1;min-width:220px;font-size:12px}.admin-toolbar .outline{margin:0;padding:13px 18px}.admin-table{border:1px solid var(--line);background:#fffaf0;overflow:auto}.admin-table table{border-collapse:collapse;text-align:left;width:100%;min-width:700px;font-size:13px}.admin-table th,.admin-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:15px}.admin-table th{background:#f2e5d3;font-weight:500}.admin-table td:nth-child(4){white-space:pre-wrap;overflow-wrap:anywhere;max-width:300px}.admin-empty{text-align:center;padding:30px}.admin-note{margin-top:20px;font-size:11px}@media (width<=640px){.admin-stats{grid-template-columns:1fr 1fr}.admin-page h1{font-size:27px}.admin-login{padding:22px}.admin-toolbar label{flex-basis:100%}}@media (prefers-reduced-motion:reduce){.heart-fireworks{display:none}.firework-heart{animation:none!important}}@font-face{font-family:Playfair Display;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/playfair-display-italic.ttf)format("truetype")}.envelope-page{background-blend-mode:multiply;background:#f8f0e2 url(/assets/paper.webp) top/min(100vw,890px)}.invitation-cover h1,.invitation-page .invitation-copy h3,.invitation-page footer h2,.letter-couple,.envelope-inscription>span:first-child{letter-spacing:.01em;font-synthesis:none;font-family:Playfair Display,Noto Serif,Georgia,serif;font-style:italic;font-weight:500}.invitation-cover h1{font-size:52px;line-height:1.5}.invitation-page footer h2{font-size:42px;line-height:1.5}.envelope-inscription>span:first-child{font-size:23px}.letter-couple{font-size:37px;line-height:1.45}.invitation-cover h1>span,.invitation-page .invitation-copy h3>span,.invitation-page footer h2>em,.letter-couple>span{font-family:Playfair Display,Noto Serif,Georgia,serif;font-style:italic;font-weight:500}@media (width<=640px){.invitation-cover h1{font-size:42px}.invitation-page .invitation-copy h3{font-size:28px}.invitation-page footer h2{font-size:36px}.envelope-inscription>span:first-child{font-size:17px}.letter-couple{font-size:25px;line-height:1.4}}.guest-editor{background:#fffaf2;border:1px solid #d9c7b0;margin:24px 0;padding:24px}.guest-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.guest-actions{flex-wrap:wrap;gap:12px;display:flex}.guest-actions button,.guest-actions a{color:#8d1b26;font-size:14px;text-decoration:underline}.guest-slug{color:#75645a;display:block}.admin-notice{background:#fff7e8;border:1px solid #d9b582;padding:18px}.admin-page .admin-stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.guest-editor label{flex-direction:column;gap:8px;display:flex}.guest-editor input,.guest-editor select,.guest-editor textarea,.admin-toolbar select{background:#fff;border:1px solid #cdbfb1;width:100%;min-width:0;padding:12px}.guest-editor details form{max-width:450px}.admin-page button:disabled{opacity:.5;cursor:not-allowed}@media (width<=640px){.guest-fields{grid-template-columns:1fr}.guest-editor{padding:16px}.admin-toolbar{align-items:stretch}.admin-toolbar>*{max-width:100%}}.personalized-create{background:#fffaf2;border:1px solid #d9c7b0;border-radius:20px;max-width:780px;margin:36px 0;padding:28px}.personalized-create h2{margin:0 0 8px;font-size:26px}.personalized-create form{gap:20px;margin-top:22px;display:grid}.personalized-create label{gap:8px;font-size:14px;display:grid}.personalized-create input:not([type=checkbox]),.personalized-create select{width:100%;color:inherit;background:0 0;border:1px solid #cdbfb1;border-radius:24px;padding:13px 18px}.personalized-create small{color:#78675d;font-size:12px}.personalized-create .custom-url-toggle{align-items:center;gap:10px;display:flex}.personalized-create input[type=checkbox]{accent-color:#941d2a;width:18px;height:18px}.invitation-link-preview{gap:12px;padding:16px 12px;display:grid}.invitation-link-preview strong{overflow-wrap:anywhere;font-size:14px}.invitation-link-preview .outline{border-radius:24px}.letter-recipient{overflow-wrap:anywhere;margin-top:4px;font-family:Playfair Display,Noto Serif,Georgia,serif;font-size:16px;font-style:italic;font-weight:500;line-height:1.35;display:block}@media (width<=640px){.personalized-create{padding:20px}.personalized-create h2{font-size:24px}.letter-recipient{font-size:11px}}.admin-modal-backdrop{z-index:1000;background:#21100db3;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.admin-delete-dialog{color:#572a2a;background:#fffaf2;border-radius:16px;width:min(100%,520px);max-height:90vh;padding:28px;overflow:auto;box-shadow:0 20px 80px #0004}.admin-delete-dialog h2{font-size:28px}.admin-delete-dialog p{margin:14px 0}.admin-delete-dialog label{gap:8px;display:grid}.admin-delete-dialog input{background:#fff;border:1px solid #cdbfb1;width:100%;padding:12px}.admin-delete-dialog [role=alert]{color:#a5222d}@font-face{font-family:Alex Brush;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/alex-brush.ttf)format("truetype")}.invitation-cover h1,.invitation-page .invitation-copy h3,.invitation-page footer h2,.letter-couple,.envelope-inscription>span:first-child,.letter-recipient,.invitation-cover h1>span,.invitation-page .invitation-copy h3>span,.invitation-page footer h2>em,.letter-couple>span{font-synthesis:none;letter-spacing:0;font-family:Alex Brush,Noto Serif,Georgia,serif;font-style:normal;font-weight:400;line-height:1.35}.admin-dialog-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-top:20px;display:flex}.admin-dialog-actions button{min-height:44px;margin:0;padding:12px 20px;text-decoration:none}.admin-dialog-actions .primary{color:#fff;background:#941d2a;border-color:#941d2a}.admin-dialog-actions .primary:hover{background:#75151f}.admin-dialog-actions .outline{color:#572a2a;background:0 0;border:1px solid #cdbfb1}@media (width<=480px){.admin-dialog-actions button{flex:1;justify-content:center}}.invitation-page .venue-note>span{flex:none}.invitation-page .venue-note p{min-width:0}@media (width<=480px){.invitation-page .venue-note{gap:10px}.invitation-page .venue-note>span{font-size:28px}}.calendar-options{margin-top:24px}.calendar-options summary.outline{cursor:pointer;align-items:center;gap:24px;min-height:44px;margin:0;list-style:none;display:inline-flex}.calendar-options summary::-webkit-details-marker{display:none}.calendar-options summary:focus-visible{outline:2px solid var(--red);outline-offset:4px}.calendar-options[open] summary span{transform:rotate(180deg)}.calendar-options-links{border:1px solid var(--line);background:var(--cream);gap:12px;max-width:310px;margin:12px auto 0;padding:18px;font-size:13px;display:grid}.calendar-options-links a{padding:8px;text-decoration:underline}.calendar-options-links small{font-size:11px}.invitation-page .invitation-cover>p.eyebrow{letter-spacing:.16em;font-size:clamp(14px,2.4vw,18px);line-height:1.6}.invitation-page .invitation-copy h3{font-size:clamp(38px,6.5vw,48px);line-height:1.45}.invitation-page .reception-greeting{max-width:440px;font-family:var(--sans);text-align:center;margin:0 auto 28px;font-size:14px;font-style:normal;font-weight:400;line-height:1.7}.reception-recipient{font:inherit;color:#921c28;margin:8px 0;display:inline-block}.ceremony-announcement{margin-top:28px}.invitation-page .ceremony-announcement p{margin:8px auto}.invitation-page .invitation-copy .families{row-gap:20px;margin:20px 0 28px;padding:18px 0}.invitation-page .families .family-address{font-family:var(--sans);margin:10px 0 0;font-size:12px;line-height:1.6}.invitation-page .invitation-copy h2{margin:0 0 24px}.invitation-page .invitation-copy h3{margin:24px 0 28px}.invitation-page .ceremony-announcement{border-top:1px solid #f2d7ac66;margin-top:28px;padding-top:22px}.invitation-page .date-panel .reception-calendar{text-align:center;margin:28px auto 0;transform:none}@media (width<=380px){.invitation-page .date-panel .reception-calendar{padding:16px}}.invitation-page .invitation-copy .double-happiness{font-size:70px;line-height:1.15;display:inline-block}.ceremony-date-card{color:#fff5e8;text-align:center;background:#fff5e808;border:1px solid #e6c89199;border-radius:70px 70px 8px 8px/20px 20px 8px 8px;grid-template-columns:1fr 1.15fr 1fr;align-items:center;max-width:430px;margin:22px auto 18px;padding:20px 10px;display:grid}.ceremony-date-card>span{flex-direction:column;align-items:center;gap:8px;display:flex}.ceremony-date-card>span>span{letter-spacing:.1em;font-size:10px;line-height:1.5}.ceremony-date-card strong{font-family:var(--serif);font-size:clamp(26px,4vw,34px);font-weight:500;line-height:1.1}.ceremony-date-day{border-left:1px solid #e6c89166;border-right:1px solid #e6c89166}.ceremony-date-card .ceremony-date-day strong{color:#f2d7ac;font-size:clamp(54px,8vw,68px)}@media (width<=380px){.ceremony-date-card{padding:16px 6px}.ceremony-date-card>span>span{letter-spacing:.06em;font-size:8px}}.invitation-page .invitation-copy .ceremony-location-heading{margin-bottom:22px}.invitation-page .ceremony-location-heading em{color:#f2d7ac;font-style:italic}#invitation .vu-quy-title{color:#f2d7ac}#invitation>.section-label.vu-quy-title{letter-spacing:.08em;font-size:clamp(28px,4.5vw,36px);line-height:1.35}@media (forced-colors:active){#invitation .vu-quy-title{color:canvastext;background:0 0}}.invitation-page .invitation-copy h2{font-size:26px}@media (width<=640px){.invitation-page .invitation-copy h2{font-size:22px}}.invitation-greeting{z-index:1;text-align:center;overflow-wrap:anywhere;min-width:0;max-width:760px;margin:0 auto 32px;padding:8px clamp(12px,4vw,40px);position:relative}.invitation-greeting .invitation-greeting-header{letter-spacing:0;color:#921c28;white-space:pre-line;margin:0;font-family:Noto Serif,Georgia,serif;font-size:clamp(21px,3vw,28px);font-weight:400;line-height:1.6}.invitation-greeting .invitation-greeting-recipient{letter-spacing:0;color:#921c28;text-wrap:balance;margin:16px 0;font-family:Noto Serif,Georgia,serif;font-size:clamp(32px,5vw,48px);font-weight:500;line-height:1.5}.invitation-greeting .invitation-greeting-closing{font-family:var(--sans);color:var(--ink);text-wrap:balance;margin:16px 0 0;font-size:clamp(13px,2vw,16px);font-weight:400;line-height:1.8}.invitation-page .families>div>span{margin-bottom:4px;font-size:10.8px;display:inline-block}.greeting-customization,.guest-fields>label:nth-child(3){grid-column:1/-1;min-width:0}.guest-editor .greeting-toggle{flex-direction:row;align-items:center;gap:10px;display:flex}.guest-editor .greeting-toggle input{appearance:auto;accent-color:#921c28;width:18px;min-width:18px;height:18px;margin:0;padding:0}.greeting-preview{background:#fffaf3;border:1px solid #d9b582;min-width:0;margin:20px 0 24px;padding:16px 0}.greeting-preview .invitation-greeting{margin-bottom:0}@media (width<=640px){.invitation-page .families>div>span{font-size:9.45px}.invitation-greeting,.greeting-preview{padding-inline:8px}}.celebration .celebration-flower{pointer-events:none;width:clamp(40px,6vw,80px);height:auto;top:12px;right:0}
