@font-face{font-family:Mayra;src:url('fonts/mayra-script.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('fonts/cormorant.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('fonts/cormorant-italic.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:DM;src:url('fonts/dm-sans.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{--plum:#382342;--deep:#21172e;--lavender:#a68ab4;--gold:#b58b48;--light-gold:#f0d5a4;--ivory:#faf3ea;--ink:#4e3759;--muted:#716178;--line:rgba(150,111,58,.35);font-synthesis:none;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:12px}body{margin:0;background:#2c1e36;color:var(--ink);font-family:DM,Arial,sans-serif;-webkit-font-smoothing:antialiased}body::before{content:"";position:fixed;inset:0;z-index:-1;background:radial-gradient(ellipse at 15% 30%,#624970 0,transparent 55%),radial-gradient(ellipse at 95% 85%,#795b74 0,transparent 60%);pointer-events:none}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-weight:400}a{color:inherit}img{display:block;max-width:100%}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible{outline:3px solid #b88b4c;outline-offset:6px}section:focus{outline:none}[hidden]{display:none!important}.svg-defs{position:absolute;width:0;height:0;overflow:hidden}.skip-link{position:fixed;left:12px;top:-150px;z-index:20;padding:15px;background:var(--ivory);color:var(--plum)}.skip-link:focus{top:12px}.invitation{width:100%;max-width:720px;margin:auto;background:var(--ivory);overflow:hidden;box-shadow:0 0 100px #110c1c80}.hero,.welcome,.celebration,.night,.closing{position:relative;isolation:isolate}.scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3}.flourish{width:170px;height:30px;display:block;margin:18px auto;color:var(--gold)}.eyebrow,.small-caps{text-transform:uppercase;letter-spacing:.22em;font-size:10px;line-height:1.8}.eyebrow{color:#796037}.star-icon{width:31px;height:31px;color:var(--gold);margin:0 auto 22px;display:block}h2,h3,h4{font-family:Cormorant,Georgia,serif}h2{font-size:42px;line-height:1.05;letter-spacing:-.025em}h2 em{font-weight:400}p{overflow-wrap:break-word}

/* Full-height portrait; the architecture remains above the typographic foreground. */
.hero{height:100svh;min-height:740px;max-height:1100px;text-align:center;color:#fff5e9;background:#37263f}.hero-image{z-index:0;object-position:52% 45%}.hero-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(38,22,49,.3),transparent 30%,rgba(42,24,49,.1) 43%,rgba(35,20,45,.65) 65%,rgba(34,20,44,.94) 100%)}.hero-border{position:absolute;inset:15px;z-index:2;border:1px solid #efcd9a52;border-radius:170px 170px 0 0;pointer-events:none}.hero-border::after{content:"";position:absolute;inset:7px;border:1px solid #efcd9a26;border-radius:165px 165px 0 0}.hero-top{position:absolute;top:39px;left:0;right:0;z-index:2}.hero-top .small-caps{font-size:9px;letter-spacing:.26em}.tiny-star{display:block;font-size:24px;color:var(--light-gold);margin-top:7px}.hero-copy{position:absolute;z-index:2;left:24px;right:24px;bottom:124px}.hero-copy .eyebrow{color:var(--light-gold);font-size:11px;letter-spacing:.36em}.hero h1{font-family:Mayra,"Brush Script MT",cursive;font-size:clamp(96px,28vw,145px);line-height:1.24;margin:11px 0 -12px;text-shadow:0 4px 24px #22152880}.hero .flourish{color:var(--light-gold);margin:5px auto 20px;width:188px}.hero-date{font-family:Cormorant,Georgia,serif;text-transform:uppercase;font-size:19px;letter-spacing:.07em}.hero-date span{margin:0 7px;color:var(--light-gold)}.hero-note{font-family:Cormorant,Georgia,serif;font-style:italic;font-size:21px;line-height:1.35;margin:17px auto 0;max-width:280px;color:#f6e6ec}.scroll-cue{position:absolute;bottom:35px;left:50%;transform:translateX(-50%);z-index:3;text-decoration:none;min-height:52px;width:230px;display:flex;align-items:center;flex-direction:column;gap:9px;font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:#f2dfc5}.scroll-cue svg{animation:arrow-drift 3s ease-in-out infinite}

.welcome{padding:154px 27px 176px;text-align:center;min-height:850px;background:#e9d6ca}.garden-image{z-index:0;object-position:center}.welcome-vignette{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#25182c 0%,transparent 15%,transparent 80%,#f5eaf0 100%)}.welcome-letter{position:relative;z-index:2;margin:auto;max-width:420px;padding:34px 24px 29px;background:linear-gradient(180deg,rgba(255,248,235,.91),rgba(255,247,236,.94) 70%,rgba(255,248,238,.89));border:1px solid #d4b9898f;outline:1px solid #fff8ea7a;outline-offset:6px;border-radius:180px 180px 3px 3px;box-shadow:0 15px 60px #543d4e21}.welcome-letter .star-icon{margin-top:9px;margin-bottom:14px;width:24px;height:24px}.welcome-letter .eyebrow{font-size:8px;letter-spacing:.2em;margin-bottom:16px}.welcome h2{font-size:37px;line-height:1.08}.welcome h2 em{color:#825e88}.welcome-letter>p:not(.eyebrow):not(.signature){font-size:12px;line-height:1.9;margin:14px auto 0;max-width:280px;color:#59495e}.welcome-letter .flourish{width:145px;margin:19px auto}.signature{font-family:Mayra,cursive;font-size:29px;line-height:1.6;color:#805f89;margin-top:22px}

.celebration{text-align:center;padding:142px 26px 85px;background:radial-gradient(ellipse at 0% 20%,#e6d5e7 0,transparent 50%),radial-gradient(ellipse at 100% 85%,#e6d8ea 0,transparent 50%),linear-gradient(#f5eaf0,#faf3ea 50%,#f0e5ed);border-bottom:1px solid var(--line)}.floral-garland{pointer-events:none;user-select:none;position:relative;z-index:2;height:auto}.celebration-flowers{position:absolute;width:100%;max-width:620px;left:50%;top:-88px;transform:translateX(-50%)}.section-inner{position:relative;z-index:3;max-width:480px;margin:auto}.section-heading .eyebrow{margin-bottom:15px}.section-heading h2 em{color:#8b6896}.date-keepsake{position:relative;margin:38px auto 66px;padding:32px 18px 25px;border:1px solid var(--line);max-width:340px;background:linear-gradient(135deg,#fffbf470,#fff5eb70);box-shadow:0 14px 32px #63436b09}.date-keepsake::before{position:absolute;content:"";inset:6px;border:1px solid #b99a662e;pointer-events:none}.date-month{font-family:Cormorant,Georgia,serif;font-size:31px;font-style:italic}.date-row{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:center;max-width:260px;margin:12px auto 0}.date-row strong{font-family:Cormorant,Georgia,serif;font-weight:400;font-size:94px;line-height:1.02;color:#795185}.date-row>span{text-transform:uppercase;font-size:10px;letter-spacing:.16em;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 0}.date-keepsake .flourish{margin:10px auto 13px;width:145px}.date-caption{font-family:Cormorant,Georgia,serif;font-style:italic;font-size:19px;line-height:1.35;max-width:210px;margin:auto}.button{position:relative;display:inline-flex;justify-content:center;align-items:center;gap:10px;min-height:48px;max-width:100%;padding:13px 23px;border:1px solid #9d7d54;background:var(--plum);color:var(--ivory);text-decoration:none;font-size:11px;line-height:1.5;letter-spacing:.055em;transition:background .2s,transform .2s;box-shadow:0 4px 15px #3823420d}.button:hover{background:#5d3e68;transform:translateY(-1px)}.button svg{width:19px;height:19px;flex:none}.calendar-button{margin:25px auto 0}.calendar-note{font-size:9px;color:#776777;line-height:1.6;max-width:230px;margin:12px auto 0}.event-heading .eyebrow{font-size:9px}.event-heading h3,.rsvp h3{font-size:36px;line-height:1.2;margin:10px 0 17px}.body-copy{font-size:12px;line-height:1.9;max-width:310px;margin:auto;color:#65536c}.event-details{margin:35px auto 0;padding:33px 18px 38px;border:1px solid var(--line);border-radius:160px 160px 0 0;background:#fff8f34f;position:relative}.event-details::before{content:"";position:absolute;inset:7px;border:1px solid #b99a6629;border-radius:155px 155px 0 0;pointer-events:none}.event-place{position:relative;padding:20px 8px 6px}.event-icon{width:43px;height:43px;color:#a27b42;display:block;margin:0 auto 19px}.event-index{font-size:8px;letter-spacing:.13em;text-transform:uppercase;color:#7c687d}.event-place h4{font-size:39px;line-height:1.2;margin:9px 0 18px}.place-name{font-size:13px;line-height:1.6;color:#5c4665}.place-time{font-family:Cormorant,Georgia,serif;font-size:22px;line-height:1.4;font-style:italic;color:#866390;margin-top:5px}.place-address{font-size:11px;line-height:1.8;color:#78667c;max-width:240px;margin:12px auto 0}.map-link{margin-top:20px}.event-divider{display:flex;align-items:center;gap:18px;margin:27px 20px 9px}.event-divider::before,.event-divider::after{content:"";height:1px;background:var(--line);flex:1}.event-divider svg{width:24px;height:24px;color:var(--gold)}.rsvp{padding:45px 10px 0}.rsvp .flourish{margin:0 auto 20px}.rsvp .button{margin-top:23px}.pending-note{display:inline-block;margin-top:24px;font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:#765a7e;padding:11px 13px;border-bottom:1px solid var(--line)}

.night{height:940px;color:#fff3e5;text-align:center;background:#23182f}.night-image{z-index:0;object-position:center}.night-shade{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,#32233d 0,rgba(33,18,50,.12) 14%,rgba(33,18,50,.28) 41%,transparent 61%,rgba(25,16,36,.62) 90%,#24192f 100%)}.night-copy{position:relative;padding:137px 29px 0;z-index:2;max-width:520px;margin:auto}.night-copy .eyebrow{color:var(--light-gold);font-size:9px}.night-copy .star-icon{color:var(--light-gold);margin-bottom:24px}.night h2{font-size:43px;line-height:1.07;margin-top:20px;text-shadow:0 2px 20px #21142d}.night h2 em{display:block;color:#edcda0;font-size:44px}.night .flourish{color:var(--light-gold);width:150px}.night-copy>p:last-child{font-family:Cormorant,Georgia,serif;font-size:20px;line-height:1.4;color:#f3e5ed}.night-caption{position:absolute;left:25px;right:25px;bottom:43px;z-index:2;text-transform:uppercase;font-size:8px;letter-spacing:.17em;line-height:1.8;color:#e2cfb6}.fireflies{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}.fireflies i{position:absolute;width:3px;height:3px;border-radius:100%;background:#ffdf9b;box-shadow:0 0 12px 3px #e9ad5466;left:14%;top:66%;animation:firefly 9s ease-in-out infinite}.fireflies i:nth-child(2){left:82%;top:59%;animation-delay:-4s}.fireflies i:nth-child(3){left:61%;top:89%;animation-delay:-7s}.fireflies i:nth-child(4){left:40%;top:79%;animation-delay:-2s}.fireflies i:nth-child(5){left:9%;top:46%;animation-delay:-6s}.fireflies i:nth-child(6){left:92%;top:83%;animation-delay:-3s}

.closing{text-align:center;padding:84px 29px 20px;color:#f5e9d9;background:radial-gradient(ellipse at 50% 25%,#513558 0,#2c1e38 66%,#24192f 100%);min-height:660px}.closing-frame{position:absolute;inset:25px 22px 130px;border:1px solid #d5b78459;border-radius:160px 160px 0 0;pointer-events:none;z-index:0}.closing-frame::after{content:"";position:absolute;inset:7px;border:1px solid #d5b78421;border-radius:155px 155px 0 0}.closing-copy{position:relative;z-index:3}.closing .eyebrow{color:#dbc6a2;font-size:8px;max-width:220px;margin:0 auto 24px;line-height:2;letter-spacing:.2em}.closing h2{font-size:36px;line-height:1.15}.closing h2 em{color:#dfc2e5}.closing-name{font-family:Mayra,cursive;font-size:88px;line-height:1.3;margin:12px 0 -8px;color:#fff1da}.closing .flourish{color:#d8b67c;margin:0 auto 14px;width:160px}.closing-date{font-family:Cormorant,Georgia,serif;font-size:19px;letter-spacing:.03em}.closing-flowers{width:calc(100% + 58px);max-width:620px;margin:-10px -29px -6px}footer{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;gap:24px;padding:0 0 7px}.back-top{font-size:9px;letter-spacing:.12em;text-decoration:none;min-height:44px;display:flex;align-items:center;gap:10px;color:#e4cfae}.brand-credit{font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:#dfcba8}.brand-credit>span{display:block;font-family:Cormorant,Georgia,serif;font-style:italic;text-transform:none;letter-spacing:.04em;color:#c5b4cd;font-size:14px;margin-top:7px}

.revealed{animation:reveal .9s both}@keyframes reveal{from{opacity:.55;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes arrow-drift{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}@keyframes firefly{0%,100%{opacity:.1;transform:translate(0,0)}50%{opacity:.9;transform:translate(9px,-22px)}}
@media(max-width:359px){.hero{min-height:690px}.hero-copy{left:20px;right:20px;bottom:112px}.hero h1{font-size:96px}.hero-date{font-size:17px}.hero-note{font-size:19px}.welcome{padding:135px 22px 140px}.welcome-letter{padding:28px 18px}.welcome h2{font-size:33px}.celebration{padding:120px 21px 70px}h2{font-size:38px}.night h2{font-size:38px}.night h2 em{font-size:39px}.night-copy{padding-left:23px;padding-right:23px}.closing .eyebrow{font-size:7px}}
@media(min-width:480px){.hero{min-height:880px}.hero-copy{bottom:132px}.hero h1{font-size:150px}.hero-date{font-size:23px}.welcome{padding:190px 65px 200px;min-height:1050px}.welcome-letter{padding:38px 32px}.welcome h2{font-size:45px}.welcome-letter>p:not(.eyebrow):not(.signature){font-size:14px}.welcome-letter .eyebrow{font-size:10px}.celebration{padding:190px 48px 100px}.celebration-flowers{top:-112px}.section-heading h2{font-size:52px}.body-copy{font-size:14px}.event-place{padding:25px}.night{height:1080px}.night-copy{padding-top:160px}.night h2{font-size:53px}.night h2 em{font-size:55px}.night-copy>p:last-child{font-size:23px}.closing{padding-top:104px}.closing h2{font-size:44px}.closing-name{font-size:110px}.closing-flowers{margin:-35px auto -12px;width:100%}.closing-frame{inset:30px 45px 160px}.closing .eyebrow{font-size:10px;max-width:280px}}
@media(min-width:720px){.invitation{border-inline:1px solid #dfbf8a40}.hero{height:1080px}.hero-border{inset:23px;border-radius:260px 260px 0 0}.hero-border::after{border-radius:255px 255px 0 0}.hero-top{top:54px}.hero-copy{bottom:142px}.hero h1{font-size:165px}.hero-image{object-position:center}.welcome{min-height:1110px}.welcome-letter{margin-top:30px}.celebration{padding-top:205px}.night{height:1120px}.night-copy{padding-top:180px}.closing-flowers{max-width:570px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.fireflies{display:none}}
@media print{body{background:white}.invitation{max-width:100%;box-shadow:none}.hero{height:950px}.scene{print-color-adjust:exact;-webkit-print-color-adjust:exact}.button,.scroll-cue,.back-top{display:none}.reveal{animation:none}.night,.welcome,.closing{break-inside:avoid}}
