@font-face{font-family:Cormorant;src:url("/assets/cormorant-garamond.woff2") format("woff2");font-style:normal;font-weight:400 500;font-display:swap}
@font-face{font-family:"DM Sans";src:url("/assets/dm-sans.woff2") format("woff2");font-style:normal;font-weight:400 600;font-display:swap}
:root{color-scheme:light;--ink:#2f2b2b;--muted:#706467;--gold:#a47825;--pink:#bd126c;--paper:#fffefa;--serif:Cormorant,Baskerville,"Times New Roman",serif;--sans:"DM Sans",Arial,sans-serif;--foil:linear-gradient(115deg,#805319 0%,#c69935 19%,#f6e2a2 32%,#a87820 45%,#e3bc59 61%,#fff0ad 68%,#bb8b2c 82%,#805319 100%)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;position:relative;min-height:100svh;background:#ece3d8;color:var(--ink);font-family:var(--sans);font-weight:400;-webkit-font-smoothing:antialiased}button,input{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:inherit}button,input,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #ad125f;outline-offset:5px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.scene-backdrop{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none;background:linear-gradient(110deg,#d1b78f,#f7f2ea 38%,#fff9f0 64%,#cdb99b)}
.scene-backdrop img{width:100%;height:100%;object-fit:cover;object-position:center center;display:block}
.scene-backdrop::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#ffffff10 0%,transparent 50%,#fffdf52b 100%)}
.site-header{position:absolute;top:0;left:0;width:100%;z-index:20;padding:20px 30px;display:flex;align-items:center;justify-content:flex-end;gap:20px}
.wordmark{font-family:var(--serif);font-size:23px;font-weight:500;letter-spacing:.02em;text-decoration:none;color:#3e3331;text-shadow:0 1px 8px #ffffffd9}
.header-actions{display:flex;align-items:center;gap:8px}.quiet-button{display:inline-flex;gap:7px;align-items:center;min-height:36px;border:1px solid #a58d6029;border-radius:20px;background:#fffdf4db;padding:8px 12px;color:#655441;font-size:10px}.quiet-button:hover{background:#ffffff}.quiet-button svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.3}.replay-button{display:none}.invitation-ready .replay-button{display:inline-flex}.invitation-ready .skip-intro{display:none}
.invitation-experience{position:relative;z-index:1}
.invitation-scene{--scene-top:78px;--scene-bottom:190px;--envelope-height:620px;--closed-envelope-top:180px;--open-envelope-top:430px;--card-start-y:120px;position:relative;width:100%;max-width:1500px;margin:0 auto;padding:var(--scene-top) 0 var(--scene-bottom);isolation:isolate}
.intro-copy{position:absolute;top:calc(var(--closed-envelope-top) - 55px);left:0;right:0;text-align:center;font-family:var(--serif);font-size:30px;color:#685239;text-shadow:0 1px 12px #ffffff;pointer-events:none}
.envelope-piece{position:absolute;left:50%;top:var(--closed-envelope-top);width:min(810px,calc(100vw - 22px));height:var(--envelope-height);transform:translateX(-50%);pointer-events:none}
.envelope-back{z-index:1;filter:drop-shadow(0 18px 23px #4c351d35)}
.envelope-body{position:absolute;inset:0;border:1px solid #baa475;border-radius:2px;background:linear-gradient(135deg,#f6f1e6,#ffffff 47%,#e9e2d6);box-shadow:inset 0 0 20px #8e71390a}
.envelope-lining{position:absolute;inset:1px;background:var(--foil);clip-path:polygon(0 0,100% 0,100% 48%,50% 96%,0 48%)}
.envelope-lid{z-index:5;perspective:1600px}
.envelope-flap{position:absolute;top:0;left:0;width:100%;height:57%;transform-origin:50% 0;transform-style:preserve-3d;transform:rotateX(0deg)}
.flap-front,.flap-lining{position:absolute;inset:0;width:100%;height:100%;backface-visibility:hidden;-webkit-backface-visibility:hidden}.flap-lining{transform:rotateY(180deg)}
.envelope-seal{position:absolute;left:50%;top:48%;width:59px;height:59px;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-50%);border-radius:50%;background:var(--foil);border:1px solid #c5a257;color:#6d4817;box-shadow:0 4px 10px #62451e40,inset 0 0 0 4px #e4c76f;z-index:1}.envelope-seal span{font-family:var(--serif);font-size:20px;font-weight:500;letter-spacing:-.05em}
.envelope-front{z-index:4;filter:drop-shadow(0 5px 5px #59432b14)}.envelope-folds{display:block;width:100%;height:100%;overflow:visible}
.invitation-card{position:relative;z-index:3;width:min(680px,calc(100vw - 44px));margin:0 auto;background:#fffefa;box-shadow:0 16px 42px #3d281b29,0 3px 7px #3d281b14,0 0 0 1px #f4ede1;transform-origin:50% 0}
.invitation-card::before{content:"";position:absolute;inset:16px;z-index:2;border:1px solid #bd9438;border-image:var(--foil) 1;pointer-events:none}
.invitation-card::after{content:"";position:absolute;inset:0;z-index:0;opacity:.025;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%237b7d78' filter='url(%23n)' opacity='.5' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}
.card-inner{position:relative;z-index:1;padding:43px 46px 35px;text-align:center}.card-brand{font-size:11px;letter-spacing:.30em;font-weight:500;line-height:1.5;padding-left:.3em}
h1{font-family:var(--serif);font-weight:400;font-size:clamp(52px,6.3vw,94px);line-height:.96;letter-spacing:-.045em;margin:27px -10px 20px;color:#a47728;background-image:linear-gradient(110deg,#765019 0%,#aa7825 23%,#bd913e 39%,#895b19 53%,#af8030 72%,#805419 100%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}
h1 em{font-style:normal;font-weight:400;white-space:nowrap}.invitation-message{font-family:var(--serif);font-size:25px;line-height:1.2;margin:0;color:#352d2d}
.ornamental-rule{height:1px;width:61px;margin:20px auto;background:linear-gradient(90deg,#f1ddb0,#a57827,#edd6a0)}
.event-date,.event-location{display:flex;flex-direction:column;align-items:center;gap:9px}.date-main{font-size:15px;letter-spacing:.095em;line-height:1.5}.date-time{font-size:15px;letter-spacing:.08em;line-height:1.5}.date-time>span{padding:0 4px}.venue{font-size:18px;letter-spacing:.08em}.street-address{font-size:15px;line-height:1.5;letter-spacing:.04em;text-decoration:none;text-underline-offset:4px}.street-address:hover{text-decoration:underline}.neighborhood{font-size:8px;letter-spacing:.14em;color:#887b6a}.event-note{font-family:var(--serif);font-size:16px;font-style:italic;color:#857968;margin:12px 0 0}.rsvp-deadline{font-size:14px;line-height:1.5;letter-spacing:.045em;margin:0 0 18px;color:#4c4144}
.rsvp-choices{display:flex;flex-direction:column;align-items:center;gap:8px}.interest-button{position:relative;isolation:isolate;overflow:hidden;width:min(330px,100%);min-height:62px;border:2px solid #c69939;border-radius:4px;background:linear-gradient(115deg,#a80c5d 0%,#c60d6d 46%,#e12180 78%,#b30a5d 100%);box-shadow:inset 0 0 0 1px #f9db8e,0 3px 5px #492d2426;color:#fff;font-size:21px;line-height:1.25;font-weight:600;letter-spacing:-.025em;text-shadow:0 1px 1px #710c3c60;padding:14px 20px;transition:box-shadow .2s,filter .2s}
.interest-button::after{content:"";position:absolute;inset:-100% -30%;z-index:-1;background:linear-gradient(110deg,transparent 45%,#ffe3ad45 49%,#ffffff70 50%,#ffe3ad45 51%,transparent 55%);transform:translateX(-110%);pointer-events:none}.interest-button:hover{filter:brightness(1.06);box-shadow:inset 0 0 0 1px #ffe4a8,0 5px 13px #76123b29}.interest-button[aria-pressed="true"]{box-shadow:inset 0 0 0 2px #fff1ba,0 3px 7px #76123b29}
.decline-button{min-height:37px;border:0;background:transparent;padding:7px 9px;color:#4f4147;font-size:13px;line-height:1.5;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#9e8b78}.decline-button:hover,.decline-button[aria-pressed="true"]{color:#a41161;text-decoration-color:#b11c6a}
.js .invitation-scene:not(.is-open) .invitation-card{opacity:0;clip-path:inset(0 0 100%);transform:translateY(var(--card-start-y)) scale(.76)}
.no-js .intro-copy,.is-open .intro-copy{opacity:0}.no-js .envelope-piece,.is-open .envelope-piece{top:var(--open-envelope-top)}.no-js .envelope-lid,.is-open .envelope-lid{z-index:2}.no-js .envelope-flap,.is-open .envelope-flap{transform:rotateX(180deg)}.no-js .envelope-seal,.is-open .envelope-seal{opacity:0;visibility:hidden}.no-js .invitation-card,.is-open .invitation-card{z-index:6;opacity:1;clip-path:inset(0);transform:none}.no-js .skip-intro{display:none}
.is-opening .intro-copy{animation:intro-away .3s .35s both}.is-opening .envelope-seal{animation:seal-release .22s .3s both}.is-opening .envelope-flap{animation:flap-open .85s .4s cubic-bezier(.35,.05,.35,1) both}.is-opening .envelope-lid{animation:envelope-settle 1.45s 1.2s cubic-bezier(.22,.68,.26,1) both,lid-behind 1ms .84s forwards}.is-opening .envelope-back,.is-opening .envelope-front{animation:envelope-settle 1.45s 1.2s cubic-bezier(.22,.68,.26,1) both}.is-opening .invitation-card{animation:card-emerge 1.5s 1.2s cubic-bezier(.22,.68,.26,1) both}.is-open .interest-button::after{animation:button-catch 1.4s .15s both}
@keyframes intro-away{to{opacity:0;transform:translateY(-8px)}}
@keyframes seal-release{to{opacity:0;transform:translate(-50%,-50%) scale(.9);visibility:hidden}}
@keyframes flap-open{from{transform:rotateX(0)}to{transform:rotateX(180deg)}}
@keyframes lid-behind{to{z-index:2}}
@keyframes card-emerge{0%{opacity:0;clip-path:inset(0 0 100%);transform:translateY(var(--card-start-y)) scale(.76);z-index:3}8%{opacity:1;clip-path:inset(0 0 85%);z-index:3}48%{clip-path:inset(0 0 28%);transform:translateY(38px) scale(.94);z-index:3}74%{clip-path:inset(0);transform:translateY(-9px) scale(1);z-index:3}78%{z-index:6}100%{opacity:1;clip-path:inset(0);transform:translateY(0) scale(1);z-index:6}}
@keyframes envelope-settle{from{top:var(--closed-envelope-top)}to{top:var(--open-envelope-top)}}
@keyframes button-catch{to{transform:translateX(115%)}}
.rsvp-panel{position:relative;width:min(620px,calc(100vw - 36px));margin:0 auto 30px;padding:36px 40px;border:1px solid #c8aa6a;background:#fffefa;box-shadow:0 14px 50px #49342628;scroll-margin-top:24px;animation:panel-reveal .35s ease-out}
.rsvp-heading{text-align:center;margin-bottom:28px}h2{font-family:var(--serif);font-size:39px;font-weight:500;line-height:1.1;margin:0;color:#74384f}#rsvp-preview-form{display:grid;grid-template-columns:1fr 1fr;gap:22px 20px}.full-width{grid-column:1/-1}.form-field{display:flex;flex-direction:column;gap:8px;min-width:0}.form-field label{font-size:12px;color:#5d4b50}.form-field input{width:100%;min-width:0;min-height:46px;border:0;border-bottom:1px solid #c9b48e;border-radius:0;background:#fffefa;color:#332d30;padding:10px 3px;font-size:16px}.form-field input::placeholder{color:#9c8e92;font-size:13px}.form-field input:focus{border-color:#b21669}.guest-count-field{flex-direction:row;align-items:center;justify-content:space-between;gap:15px;padding-top:5px}.guest-count-field>div{display:flex;flex-direction:column;gap:6px}.field-hint{font-size:11px;line-height:1.5;color:#8c7b80}.guest-count-field input{width:74px;flex-shrink:0;border:1px solid #c9b48e;text-align:center;padding-left:12px}.website-field{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.submit-placeholder{display:flex;align-items:center;justify-content:center;gap:15px;min-height:49px;margin-top:5px;border:1px solid #bd9343;border-radius:3px;background:#b41264;color:#fff;font-size:13px;font-weight:600;padding:12px 20px}.submit-placeholder:hover{background:#980c53}.submit-placeholder:disabled{opacity:.6;cursor:wait}.form-feedback{margin:0;padding:12px;background:#fff0ed;color:#8e403c;font-size:12px;line-height:1.6}.rsvp-receipt{padding:20px 0;margin:0;text-align:center;color:#744257;font-size:15px;line-height:1.7}
@keyframes panel-reveal{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
.site-footer{position:relative;z-index:2;width:100%;padding:15px 20px 12px;text-align:center;background:linear-gradient(180deg,#fffaf000,#fffaf0d9 42%,#fffaf0e8)}.footer-contact{font-size:11px;line-height:1.9;color:#5e4c45;margin:0 0 17px;text-shadow:0 1px 5px #fff8ee}.footer-contact a{text-decoration:none;text-underline-offset:3px}.footer-contact a:hover{text-decoration:underline}.footer-bottom{color:#897256;font-size:8px;letter-spacing:.18em}.admin-access{position:relative;z-index:2;display:flex;justify-content:flex-end;padding:0 22px max(12px,env(safe-area-inset-bottom));background:#fffaf0e8}.admin-link{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:8px;font-size:9px;letter-spacing:.16em;color:#736453;line-height:1.4;text-decoration:none}.admin-link:hover{text-decoration:underline;text-underline-offset:4px}.noscript-notice{text-align:center;font-size:12px;background:#fffefa;padding:15px;margin:0}
@media(min-width:1800px){.invitation-scene{--scene-top:82px}.invitation-card{width:720px}.card-inner{padding:48px 51px 39px}.envelope-piece{width:850px}.invitation-message{font-size:27px}.ornamental-rule{margin:22px auto}.date-main,.date-time{font-size:16px}}
@media(min-width:701px) and (max-height:900px){.invitation-scene{--scene-top:57px}.invitation-card{width:min(600px,calc(100vw - 44px))}.card-inner{padding:31px 40px 27px}.card-brand{font-size:10px}h1{font-size:77px;margin:21px -8px 16px}.invitation-message{font-size:23px}.ornamental-rule{margin:16px auto}.date-main,.date-time{font-size:13px}.venue{font-size:17px}.street-address{font-size:14px}.event-note{font-size:15px;margin-top:10px}.rsvp-deadline{font-size:12px;margin-bottom:15px}.interest-button{min-height:54px;font-size:19px}.decline-button{min-height:33px;font-size:12px}}
@media(max-width:700px){.site-header{padding:15px 17px}.wordmark{font-size:19px}.quiet-button{font-size:9px;min-height:33px;padding:7px 9px}.header-actions{gap:5px}.invitation-scene{--scene-top:70px}.scene-backdrop img{object-position:23% center}.invitation-card{width:calc(100vw - 36px)}.card-inner{padding:33px 25px 27px}.card-brand{font-size:9px;letter-spacing:.23em}h1{font-size:clamp(48px,8.8vw,64px);margin:25px -6px 18px}.invitation-message{font-size:22px;line-height:1.22}.ornamental-rule{margin:18px auto}.date-main,.date-time{font-size:12px;letter-spacing:.045em}.venue{font-size:17px}.street-address{font-size:13px}.neighborhood{font-size:7px}.event-note{font-size:15px}.rsvp-deadline{font-size:12px;margin-bottom:16px}.interest-button{min-height:55px;width:min(300px,100%);font-size:18px}.decline-button{font-size:12px}.envelope-seal{width:49px;height:49px}.envelope-seal span{font-size:18px}.intro-copy{font-size:27px}.rsvp-panel{padding:31px 25px}.footer-contact{font-size:11px}}
@media(max-width:380px){.wordmark{font-size:17px}.site-header{gap:10px}.quiet-button{font-size:8px;padding:7px 8px}.invitation-card{width:calc(100vw - 26px)}.invitation-card::before{inset:11px}.card-inner{padding:29px 21px 24px}h1{font-size:46px}.invitation-message{font-size:21px}.date-main,.date-time{font-size:11px}.rsvp-deadline{font-size:11px}.event-note{font-size:14px}.rsvp-panel{width:calc(100vw - 26px);padding:28px 22px}#rsvp-preview-form{grid-template-columns:1fr}.guest-count-field{grid-column:1/-1}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.js .invitation-scene:not(.is-open) .invitation-card{opacity:1;clip-path:inset(0);transform:none;z-index:6}.envelope-piece{top:var(--open-envelope-top)!important}.envelope-lid{z-index:2!important}.envelope-flap{transform:rotateX(180deg)!important}.envelope-seal,.intro-copy,.skip-intro,.replay-button{display:none!important}}
