@font-face{font-family:AliceScript;src:url('assets/alice-script.otf') format('opentype');font-display:swap}@font-face{font-family:Editorial;src:url('assets/editorial.otf') format('opentype');font-display:swap}@font-face{font-family:Editorial;src:url('assets/editorial-italic.otf') format('opentype');font-style:italic;font-display:swap}
:root{--paper:#fffaf7;--blush:#f3dadd;--rose:#a56875;--ink:#66444c;--muted:#896d70;--gold:#ac884e;--line:#dcc3c4;--serif:Editorial,Georgia,serif;--sans:'Avenir Next',Avenir,'Segoe UI',sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}body:not(.opened){overflow:hidden}body.no-js{overflow:auto}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #9e5c75;outline-offset:5px}button{color:inherit}p,h1,h2{margin:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.12;letter-spacing:-.035em}svg{height:22px;width:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icons{position:absolute;height:0;width:0;overflow:hidden}.eyebrow{font-size:10px;font-weight:600;letter-spacing:.25em;line-height:1.8}.primary,.button-outline{min-height:54px;display:inline-flex;align-items:center;justify-content:center;gap:12px;border:1px solid var(--rose);border-radius:100px;padding:14px 27px;letter-spacing:.035em;font-size:13px;font-weight:600;transition:transform .25s,background .25s,box-shadow .25s}.primary{background:var(--rose);color:#fffaf7;box-shadow:0 6px 0 #9c626c18}.primary:hover{background:#925563;transform:translateY(-2px);box-shadow:0 10px 18px #9c626c20}.button-outline{background:transparent}.button-outline:hover{background:#f3e6e2;transform:translateY(-2px)}.section-pad{padding:95px 24px}.section-copy{color:var(--muted);font-size:15px;line-height:1.9}.reveal{opacity:1;transform:none}.opened .reveal:not(.visible){opacity:0;transform:translateY(20px)}.reveal{transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:none}
.cover{position:fixed;inset:0;z-index:100;height:100svh;min-height:560px;background:#f5e1e0;isolation:isolate;display:flex;align-items:center;flex-direction:column;overflow:hidden;transition:opacity .9s,visibility .9s,transform 1.4s}.cover-art{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;object-position:center 47%;z-index:-3}.cover-wash{position:absolute;inset:0;background:linear-gradient(180deg,#f9eae77a 0%,#f9eae700 38%,#f9eae700 56%,#f8e7e7 94%);z-index:-2}.cover-heading{text-align:center;padding-top:clamp(35px,7svh,80px);width:100%;text-shadow:0 1px 20px #fff9f5a0}.cover-heading .eyebrow{font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:#7a5760}.cover-name{font-family:AliceScript,cursive;font-size:clamp(95px,18svh,156px);line-height:1.07;margin:9px 0 -6px;letter-spacing:-.045em;color:#8d5666}.cover-subtitle{font-size:9px;letter-spacing:.3em;color:#805e63}.cover-bottom{text-align:center;margin-top:auto;padding:24px 24px max(29px,env(safe-area-inset-bottom));width:100%}.cover-bottom>p{font-family:var(--serif);font-size:18px;line-height:1.5;color:#76535a;margin-bottom:20px}.open-button{min-width:231px;background:#9e6170;border-color:#9e6170}.open-button svg{width:19px}.cover-date{display:block;font-size:9px;letter-spacing:.27em;margin-top:23px;color:#86626a}.cover-stars span{position:absolute;font-size:22px;color:#af8b53;animation:twinkle 3s ease-in-out infinite}.cover-stars span:nth-child(1){top:25%;left:14%}.cover-stars span:nth-child(2){top:47%;left:10%;font-size:30px;animation-delay:.5s}.cover-stars span:nth-child(3){top:32%;right:13%;font-size:18px;animation-delay:1.4s}.cover-stars span:nth-child(4){top:64%;right:8%;animation-delay:2s}.cover.is-open{opacity:0;visibility:hidden;pointer-events:none;transform:scale(1.04)}
.invitation{visibility:hidden;opacity:0;transition:opacity 1.2s ease .25s}.opened .invitation{visibility:visible;opacity:1}.topbar{height:82px;max-width:1500px;margin:auto;padding:0 6%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dac2c142;position:relative;z-index:5}.brand{font-family:AliceScript,cursive;font-size:37px;line-height:.8;display:block;padding-top:10px}.brand span{font-family:var(--sans);display:block;font-size:7px;letter-spacing:.2em;margin-top:9px}.nav-actions{display:flex;align-items:center;gap:27px}.nav-link{font-size:12px;color:var(--muted)}.nav-link:hover{color:var(--ink);text-decoration:underline}.music-button{border:1px solid #d9c1c3;background:#fffaf77d;border-radius:50px;padding:9px 13px;display:flex;align-items:center;gap:8px;font-size:11px;min-height:42px}.music-button svg{width:17px;height:17px}.sound-wave{height:14px;display:none;align-items:center;gap:2px}.sound-wave i{height:7px;width:2px;background:var(--rose);animation:wave 1s ease-in-out infinite}.sound-wave i:nth-child(2){animation-delay:.3s;height:13px}.sound-wave i:nth-child(3){animation-delay:.5s;height:9px}.music-button[aria-pressed=true] .sound-wave{display:flex}.music-button[aria-pressed=true] svg{display:none}.hero{max-width:1320px;margin:auto;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding:55px 8% 80px;gap:40px;min-height:min(780px,calc(100svh - 82px))}.hero-copy{padding-bottom:15px}.hero .eyebrow{color:#a2767c}.hero h1{font-size:clamp(44px,4.6vw,70px);margin:22px 0 25px}.hero h1 em{display:inline-block;font-family:AliceScript,cursive;font-weight:400;font-size:1.8em;line-height:.95;letter-spacing:-.04em;padding:10px 12px 0 0;color:#a36878}.hero-description{font-size:14px;color:var(--muted);line-height:1.85}.hero-meta{font-size:10px;letter-spacing:.18em;display:flex;align-items:center;gap:17px;margin:28px 0 23px}.meta-dot{font-size:18px;color:#c9a9a3}.text-link{font-size:11px;letter-spacing:.03em;display:inline-flex;align-items:center;gap:10px;color:#8f646d;border-bottom:1px solid #d6b6bb;padding-bottom:5px}.text-link svg{width:15px;height:15px}.hero-visual{position:relative;max-width:425px;width:100%;margin:auto}.image-arch{border-radius:230px 230px 8px 8px;overflow:hidden;position:relative;box-shadow:0 0 0 1px #e4cdca,0 0 0 10px var(--paper),0 0 0 11px #e4cdca;padding:0;background:#f6dedb;aspect-ratio:2/2.7}.image-arch img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 55%}.visual-note{position:absolute;bottom:29px;right:-37px;transform:rotate(-7deg);font-family:var(--serif);font-style:italic;background:#fffaf7ed;font-size:17px;padding:12px 21px;line-height:1.3;box-shadow:0 5px 20px #b49a8e12}.floating-star{position:absolute;color:var(--gold);animation:twinkle 4s ease-in-out infinite}.s-one{top:12%;left:-32px;font-size:34px}.s-two{right:-26px;top:42%;font-size:27px;animation-delay:2s}.welcome{text-align:center;background:linear-gradient(#fbefec,#fff7f2);position:relative}.welcome:before{content:'';position:absolute;inset:12px;border:1px solid #e9d6cf;pointer-events:none}.welcome h2{font-size:clamp(38px,4.2vw,58px);margin:20px 0}.little-bow{display:flex;justify-content:center;align-items:center;margin-bottom:25px;height:40px;position:relative}.little-bow span{width:40px;height:23px;border:1.5px solid #b28b8c;border-radius:50% 50% 15% 50%;transform:rotate(25deg);background:#f0d7d559}.little-bow span:last-child{transform:scaleX(-1) rotate(25deg)}.little-bow i{width:9px;height:12px;border:1px solid #b28b8c;border-radius:40%;background:#f7e7df;margin:0 -3px;z-index:1}.little-bow:after,.little-bow:before{content:'';position:absolute;top:25px;left:calc(50% - 5px);height:24px;width:11px;border-left:1px solid #b28b8c;transform:rotate(22deg)}.little-bow:before{transform:rotate(-25deg);left:calc(50% + 5px)}.event-date{display:flex;align-items:center;justify-content:center;gap:30px;margin:32px auto 0;max-width:420px}.date-number{font-size:90px;font-family:var(--serif);line-height:1;color:#a76c79;letter-spacing:-.08em;padding-right:7px}.date-side{font-size:10px;letter-spacing:.12em;min-width:94px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 0;line-height:1.8}.date-side span{display:block}.time-note{font-size:10px;color:#8c7173;margin:19px 0 25px}.countdown-section{text-align:center;background:#ecd3d6;padding-top:65px;padding-bottom:55px}.countdown-section .eyebrow{color:#855b65}.countdown{display:flex;align-items:center;justify-content:center;gap:30px;max-width:500px;margin:18px auto 14px}.countdown div{min-width:64px}.countdown span{font-family:var(--serif);font-size:56px;font-variant-numeric:tabular-nums;letter-spacing:-.04em;line-height:1.25}.countdown small{display:block;letter-spacing:.16em;font-size:8px;color:#88636d}.countdown b{font-size:22px;font-weight:400;opacity:.35;margin-top:-13px}.countdown-caption{font-family:var(--serif);font-size:18px;font-style:italic;margin-top:19px;color:#89636b}.location{max-width:1100px;margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:95px;align-items:center}.location-art{display:flex;justify-content:center}.garden-arch{border-radius:200px 200px 0 0;width:320px;height:360px;background:#f5e8df;position:relative;display:flex;align-items:flex-end;justify-content:center;padding:30px;border:1px solid #e6cfc3;box-shadow:inset 0 0 0 9px var(--paper),inset 0 0 0 10px #e5cfc3}.garden-drawing{width:100%;height:270px;stroke:#b4917a;stroke-width:1.5}.garden-star{position:absolute;top:43px;left:calc(50% - 13px);font-size:29px;color:#b89a64}.location h2{font-size:48px;margin:21px 0 14px}.location .section-copy{font-size:15px}.location-divider{width:47px;height:1px;background:#d7b4b9;margin:27px 0 21px}.location-time{font-size:13px;line-height:1.9;color:#97717a;margin-bottom:27px}.location-time strong{font-weight:500;color:#654b51}.location .primary{min-width:205px}.location .primary .arrow{width:17px;margin-left:12px}.wishes{text-align:center;background:radial-gradient(ellipse at 50% 90%,#f1dddd,#f8eeea 70%);position:relative;overflow:hidden}.wishes h2{font-size:clamp(35px,4vw,50px);margin:21px 0}.star-instruction{font-size:12px;color:#926e76}.wish-stars{display:flex;justify-content:center;gap:16px;margin:33px auto 15px;max-width:470px}.wish-star{border:0;background:transparent;position:relative;display:flex;align-items:center;justify-content:center;width:60px;height:68px;border-radius:50%;transition:transform .25s}.wish-star svg{width:43px;height:43px;fill:#dbc499;stroke:#bba06c;stroke-width:1;filter:drop-shadow(0 4px 4px #bca47828);transition:transform .25s,fill .25s}.wish-star:nth-child(2),.wish-star:nth-child(4){transform:translateY(-9px)}.wish-star:nth-child(3){transform:translateY(-17px)}.wish-star:hover svg,.wish-star.selected svg{transform:scale(1.18) rotate(10deg);fill:#cba66b;stroke:#a9834e}.wish-message{font-family:var(--serif);font-style:italic;font-size:23px;max-width:440px;min-height:66px;margin:auto;line-height:1.5;color:#8c5c68;transition:opacity .2s}.wish-message.changing{opacity:0}.closing{text-align:center;padding-bottom:75px}.closing-heart{width:26px;height:26px;stroke:#b9848b;margin-bottom:25px}.closing h2{font-size:clamp(38px,4vw,53px);margin:22px 0}.closing .section-copy{font-size:13px;max-width:500px;margin:auto}.signature{font-family:AliceScript,cursive;font-size:53px;line-height:1.3;margin-top:32px;color:#a26b7b}.closing-date{font-size:10px;letter-spacing:.25em;color:#ad858c;margin-top:15px}footer{display:flex;align-items:center;justify-content:space-between;margin:0 6%;padding:22px 0 27px;border-top:1px solid #e6d8d2;color:#9b8182;font-size:10px;gap:25px}footer button{background:transparent;border:0;font-size:10px;display:flex;align-items:center;gap:8px;padding:8px 0}footer svg{height:15px;width:15px}#sparkleLayer{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:120}.sparkle{position:absolute;color:#b99055;font-size:15px;animation:sparkle-out 1.1s ease-out forwards}.noscript-note{position:fixed;bottom:0;background:#fff;padding:10px;z-index:9;font-size:12px}
@keyframes twinkle{0%,100%{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.06)}}@keyframes wave{50%{transform:scaleY(.4)}}@keyframes sparkle-out{0%{opacity:0;transform:translate(0,0) scale(.4)}15%{opacity:1}100%{opacity:0;transform:translate(var(--x),var(--y)) rotate(100deg) scale(.5)}}
@media(min-width:800px){.cover-art{left:50%;width:50%;object-position:center 46%}.cover-wash{background:linear-gradient(90deg,#f9ede9 0%,#f9ede9 42%,#f9ede900 65%)}.cover-heading{position:absolute;top:15%;left:6%;width:42%;padding-top:0}.cover-name{font-size:clamp(140px,13vw,200px);line-height:1.15;margin-top:20px}.cover-heading .eyebrow{font-size:11px}.cover-subtitle{font-size:11px;letter-spacing:.4em}.cover-bottom{position:absolute;top:57%;left:6%;width:42%;padding:0}.cover-bottom>p{font-size:23px;margin-bottom:25px}.cover-stars span:nth-child(1){left:8%;top:40%}.cover-stars span:nth-child(2){left:45%;top:20%}.cover-stars span:nth-child(3){right:5%;top:20%}.cover-stars span:nth-child(4){right:46%;top:76%}}
@media(max-width:799px){.topbar{height:74px;padding:0 7%}.nav-actions{gap:15px}.nav-link{display:none}.brand{font-size:34px}.hero{grid-template-columns:1fr;padding:47px 27px 64px;gap:43px;min-height:auto;text-align:center;max-width:560px}.hero-copy{padding-bottom:0}.hero h1{font-size:40px;line-height:1.15;margin:17px 0 19px}.hero h1 em{font-size:91px;line-height:.9;padding-top:10px}.hero-description{font-size:13px;line-height:1.8}.hero .eyebrow{font-size:9px;letter-spacing:.23em}.hero-meta{justify-content:center;margin:22px 0 17px}.hero-visual{max-width:318px;width:87%;margin-bottom:5px}.image-arch{aspect-ratio:1/1.15;box-shadow:0 0 0 1px #e4cdca,0 0 0 7px var(--paper),0 0 0 8px #e4cdca}.image-arch img{object-position:50% 48%}.visual-note{font-size:15px;right:-27px;bottom:22px;padding:10px 17px}.s-one{font-size:25px;left:-26px;top:18%}.s-two{font-size:23px;right:-25px;top:37%}.section-pad{padding:68px 23px}.welcome h2{font-size:39px}.welcome .section-copy{font-size:14px}.event-date{gap:18px;max-width:340px;margin-top:29px}.date-side{font-size:9px;min-width:80px;letter-spacing:.1em}.date-number{font-size:79px}.countdown-section{padding:46px 20px 42px}.countdown{gap:12px;margin:22px auto 10px}.countdown div{min-width:48px}.countdown span{font-size:45px}.countdown b{font-size:17px}.countdown small{font-size:7px;letter-spacing:.1em}.countdown-caption{font-size:17px;margin-top:18px}.location{grid-template-columns:1fr;gap:38px;text-align:center}.garden-arch{width:236px;height:263px;padding:22px}.garden-drawing{height:199px}.garden-star{top:28px;font-size:22px;left:calc(50% - 10px)}.location .eyebrow{font-size:9px}.location h2{font-size:42px;margin:17px 0 10px}.location-divider{margin:21px auto 18px}.location-time{margin-bottom:23px}.wish-stars{gap:4px;margin-top:33px}.wish-star{width:53px;height:60px}.wish-star svg{width:36px;height:36px}.wishes h2{font-size:36px}.wish-message{font-size:21px;max-width:300px;min-height:70px}.star-instruction{font-size:11px}.closing h2{font-size:39px}.closing .section-copy{font-size:12px}.signature{font-size:48px}.desktop-break{display:none}footer{margin:0 23px;padding:18px 0 25px;flex-direction:column;gap:9px}.cover-art{object-position:50% 47%}.cover-heading{padding-top:37px}.cover-name{font-size:clamp(102px,16svh,143px)}.cover-subtitle{font-size:8px}.cover-bottom>p{font-size:18px}.cover-bottom{padding-bottom:max(29px,env(safe-area-inset-bottom))}}
@media(max-width:360px){.cover-heading{padding-top:25px}.cover-name{font-size:110px}.cover-bottom>p{font-size:16px}.cover-date{margin-top:17px}.hero{padding-left:20px;padding-right:20px}.hero h1{font-size:36px}.date-side{min-width:72px}.event-date{gap:14px}.countdown{gap:8px}.countdown span{font-size:39px}.countdown div{min-width:44px}.wish-star{width:47px}.wish-message{font-size:20px}}
@media(max-height:700px) and (max-width:799px){.cover-heading{padding-top:24px}.cover-name{font-size:96px;margin:3px 0 -8px}.cover-bottom>p{font-size:15px;margin-bottom:14px}.cover-date{margin-top:17px}.cover-bottom{padding-bottom:21px}.open-button{min-height:49px}.cover-art{object-position:center 48%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.opened .reveal:not(.visible){opacity:1;transform:none}.sparkle{display:none}}
[hidden]{display:none!important}.rsvp-section{text-align:center;background:#fbf1ed;border-top:1px solid #ead9d3}.rsvp-section h2{font-size:clamp(39px,4.2vw,55px);margin:20px 0}.rsvp-section>.section-copy{font-size:13px}.rsvp-card{max-width:550px;margin:34px auto 0;background:#fffcf9;border:1px solid #e4ccca;border-radius:8px;padding:31px;text-align:left;box-shadow:0 14px 40px #8e627609}.rsvp-card form{display:flex;flex-direction:column;gap:24px}.field label,.attendance-field legend{display:block;font-size:12px;font-weight:600;letter-spacing:.015em;margin-bottom:10px}.field input{font:inherit;color:var(--ink);border:1px solid #d9bec3;background:#fffdfb;border-radius:8px;min-height:49px;padding:11px 14px;width:100%;font-size:16px}.field input:focus{outline:2px solid #ae7a87;outline-offset:2px}.field input::placeholder{color:#ad969b;font-size:14px}.attendance-field{border:0;padding:0;margin:0;min-width:0}.attendance-options{display:flex;gap:8px}.attendance-options label{flex:1;position:relative;cursor:pointer}.attendance-options input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.attendance-options span{display:flex;align-items:center;justify-content:center;border:1px solid #e1c9cb;border-radius:8px;padding:12px 4px;min-height:48px;font-size:11px;text-align:center;transition:background .2s,border-color .2s}.attendance-options input:checked+span{background:#efdadd;border-color:#b67e8b;color:#754651;font-weight:600}.attendance-options input:focus-visible+span{outline:2px solid #955c6e;outline-offset:3px}.party-input{display:flex;align-items:center;gap:15px}.party-input input{width:90px;flex-shrink:0}.party-input span{font-size:11px;color:#98747d}.rsvp-card .primary{width:100%;font-size:12px}.rsvp-card .primary:disabled{opacity:.65;cursor:wait;transform:none}.rsvp-privacy{font-size:10px;color:#967b81;line-height:1.7;text-align:center;margin-top:-8px}.form-notice{padding:14px 16px;border-radius:8px;background:#f7ebe7;color:#82616c;line-height:1.7;font-size:12px;margin-bottom:20px}.form-notice.success{border:1px solid #c9d8c5;background:#edf3e9;color:#52694b}.form-notice.error{border:1px solid #dab5b7;background:#fae8e7;color:#8e404e}.rsvp-card>#rsvpRetry{margin:auto;font-size:12px;min-height:47px}.admin-access:hover{text-decoration:underline}@media(max-width:799px){.rsvp-card{padding:23px 19px;margin-top:28px}.attendance-options{gap:6px}.attendance-options span{font-size:10px}.rsvp-section>.section-copy{font-size:12px}.rsvp-card form{gap:22px}}
