#wedding-sparkles{position:fixed;inset:0;z-index:6;pointer-events:none;overflow:hidden}.wedding-star{position:absolute;left:var(--x);top:var(--y);font-size:var(--size);line-height:1;color:var(--gold);text-shadow:0 0 8px #fff9ce,0 0 18px #dfbc7e88;animation:starlight var(--duration) ease-in-out var(--delay) infinite;will-change:opacity,transform}
@keyframes starlight{0%,100%{opacity:.12;transform:scale(.55) rotate(-15deg)}45%{opacity:.85;transform:scale(1.22) rotate(15deg)}65%{opacity:.3;transform:scale(.85)}}
.hero-art.is-visible{animation:portrait-drift 9s ease-in-out 1s infinite}.hero-photo img{animation:kenburns 15s ease-in-out infinite alternate}.hero-photo::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(115deg,transparent 35%,#fff6dc35 50%,transparent 65%);transform:translateX(-130%);animation:portrait-glint 9s ease-in-out 3s infinite}.love-stamp{animation:stamp-sway 8s ease-in-out infinite}.album-photo.is-visible:nth-child(2n) img{animation:photo-breathe 9s ease-in-out -4s infinite alternate}.animated-heading.is-visible em{display:inline-block;animation:em-bloom 1.4s cubic-bezier(.2,.7,.2,1) both}.gift-qr-viewport img{animation:none!important}.gift-intro{white-space:pre-line}
@keyframes kenburns{from{transform:scale(1)}to{transform:scale(1.065) translateY(-1%)}}@keyframes photo-breathe{from{transform:scale(1);filter:brightness(1)}to{transform:scale(1.035);filter:brightness(1.04)}}@keyframes portrait-drift{0%,100%{translate:0 0}50%{translate:0 -10px}}@keyframes portrait-glint{0%,45%{transform:translateX(-130%)}75%,100%{transform:translateX(130%)}}@keyframes stamp-sway{0%,100%{rotate:-4deg}50%{rotate:5deg}}@keyframes em-bloom{from{opacity:0;transform:translateY(12px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
.month-calendar{position:relative;max-width:500px;margin:55px auto 38px;padding:36px 36px 29px;background:linear-gradient(150deg,#fffdf8,#f5eddf);border:1px solid #b08b5e70;border-radius:7px;box-shadow:0 20px 45px #294e4014;transform:rotate(-1.5deg);isolation:isolate}.month-calendar::before{content:"";position:absolute;inset:8px;border:1px solid #b08b5e30;border-radius:3px;z-index:-1}.month-calendar::after{content:"";position:absolute;top:-12px;left:calc(50% - 35px);width:70px;height:23px;background:#d7bb9388;rotate:4deg;backdrop-filter:blur(2px);clip-path:polygon(3% 0,100% 4%,98% 100%,0 97%)}.calendar-bouquet{position:absolute;width:90px;height:105px;right:-30px;top:-26px;rotate:18deg;animation:sway 8s ease-in-out infinite;pointer-events:none}.month-calendar .kicker{font-size:8px;letter-spacing:1.5px;color:var(--gold);text-align:center}.month-calendar h3{font:italic 500 36px/1.3 var(--name-font);text-align:center;color:var(--ink);margin:14px 0 23px}.month-weekdays,.month-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.month-weekdays{padding-bottom:9px;border-bottom:1px solid #b08b5e30;font:500 10px var(--sans);color:var(--gold)}.month-cell,.month-empty{position:relative;display:grid;place-items:center;aspect-ratio:1.15;font:500 19px var(--serif);color:var(--ink)}.month-cell:nth-child(7n){color:var(--rose)}.marked-day{font-weight:600;color:var(--rose)!important}.marked-day>span{position:relative;z-index:1}.marked-day svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;color:var(--rose);transform:rotate(-12deg);animation:calendar-heart 4s ease-in-out infinite}.marked-day svg path{fill:#ad727b0b;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:230;animation:heart-draw 2.4s ease both}.marked-day:nth-child(2n) svg{transform:rotate(12deg);animation-delay:-2s}.month-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:5px 19px;border-top:1px solid #b08b5e30;margin-top:15px;padding-top:16px;font:400 10px/1.8 var(--sans)}.month-legend-item{display:flex;align-items:center;gap:5px}.legend-heart{color:var(--rose);font-size:19px}@keyframes calendar-heart{0%,100%{scale:1}50%{scale:1.07}}@keyframes heart-draw{from{stroke-dashoffset:230}to{stroke-dashoffset:0}}
.name-font-sans .names,.name-font-sans .signature,.name-font-sans .cover-couple,.name-font-sans .family-copy h3{font-style:normal;font-weight:500}.photo-button img{object-position:var(--photo-position,50% 50%)}
.motion-disabled *,.motion-disabled *::before,.motion-disabled *::after{animation:none!important;transition:none!important}.motion-disabled .wedding-star{opacity:.3}.motion-disabled .js .reveal,.motion-disabled .js .animated-heading{opacity:1;transform:none}
@media(max-width:600px){.month-calendar{padding:31px 20px 23px;margin-top:44px;max-width:340px}.month-calendar h3{font-size:30px}.month-calendar .kicker{font-size:7px;letter-spacing:1px}.calendar-bouquet{width:69px;height:83px;right:-14px;top:-28px}.month-cell,.month-empty{font-size:19px;aspect-ratio:.95}.month-legend{font-size:9px;gap:3px 12px}.wedding-star{font-size:calc(var(--size)*.85)}}
@media(prefers-reduced-motion:reduce){.wedding-star,.hero-art.is-visible,.hero-photo::before,.marked-day svg,.marked-day svg path{animation:none!important}.wedding-star{opacity:.25}}
/* Editable typography uses separate phone and desktop sizes. */
:root{--guest-font:"Cormorant Garamond",Georgia,serif;--couple-mobile:41px;--couple-desktop:72px;--guest-mobile:27px;--guest-desktop:35px;--heading-mobile:47px;--heading-desktop:74px;--body-mobile:12px;--body-desktop:14px;--label-mobile:36px;--label-desktop:42px}
body{font-size:var(--body-desktop)}.names{font-size:var(--couple-desktop)}.names>span{white-space:normal;overflow-wrap:anywhere}.guest-name{font-family:var(--guest-font);font-size:var(--guest-desktop)}.cover h2{font-family:var(--guest-font);font-size:calc(var(--guest-desktop)*.8)}main h2,.closing h2,.wedding-gifts h2{font-family:var(--serif);font-size:var(--heading-desktop)}.script-label{font-size:var(--label-desktop)}.invitation-copy,.family-copy p,.location-info>p,.gift-intro{font-size:var(--body-desktop)}.family-copy h3{font-size:calc(var(--couple-desktop)*.58)}.cover-couple,.signature,.closing .signature{font-size:calc(var(--couple-desktop)*.41)}
.family-section{background:linear-gradient(0deg,color-mix(in srgb,var(--green) 9%,var(--paper)),var(--paper))}.wedding-day{background:color-mix(in srgb,var(--paper) 94%,var(--gold))}.wedding-gifts{background:url('/assets/floral-corner.svg') left top/350px no-repeat,url('/assets/floral-corner.svg') right bottom/310px no-repeat,radial-gradient(ellipse at 80% 15%,color-mix(in srgb,var(--rose) 14%,transparent),transparent 60%),linear-gradient(145deg,color-mix(in srgb,var(--green) 8%,var(--paper)),var(--paper) 55%,color-mix(in srgb,var(--gold) 12%,var(--paper)))}.gift-card,.month-calendar{background:linear-gradient(150deg,color-mix(in srgb,var(--paper) 65%,white),var(--paper));border-color:color-mix(in srgb,var(--gold) 60%,transparent)}.button{color:var(--paper)}.button:hover{background:color-mix(in srgb,var(--green) 85%,black)}.gift-copy{background:color-mix(in srgb,var(--green) 10%,var(--paper));color:var(--ink)}.gift-account-number,.gift-card h3{color:var(--ink)}.gift-bank,.month-weekdays{color:var(--gold)}
@media(max-width:900px) and (min-width:601px){.names{font-size:min(var(--couple-desktop),6.2vw)}}
@media(max-width:600px){body{font-size:var(--body-mobile)}.names{font-size:var(--couple-mobile)}.guest-name{font-size:var(--guest-mobile)}.cover h2{font-size:calc(var(--guest-mobile)*.85)}main h2,.closing h2,.wedding-gifts h2{font-size:var(--heading-mobile)}.script-label{font-size:var(--label-mobile)}.invitation-copy,.family-copy p,.location-info>p,.gift-intro{font-size:var(--body-mobile)}.family-copy h3{font-size:calc(var(--couple-mobile)*.83)}.cover-couple,.signature,.closing .signature{font-size:calc(var(--couple-mobile)*.54)}.wedding-gifts{background-size:210px,180px,auto,auto}}
.js .month-calendar.is-visible{transform:rotate(-1.5deg)}.wedding-gifts{z-index:7}.editor-navlinks{display:flex;flex-wrap:wrap;gap:8px;margin:25px 0}.editor-navlinks a{font:400 11px/1.5 Arial;border:1px solid #c6cdbb;border-radius:20px;padding:9px 13px;background:#f5f6ee} .editor-navlinks a:hover{background:#e4ead9}
.wedding-day{overflow:clip}.calendar-button{max-width:100%}
.wedding-day{background:radial-gradient(ellipse at top right,color-mix(in srgb,var(--gold) 18%,transparent),transparent 55%),var(--green);color:var(--paper)}.wedding-day h2 em{color:color-mix(in srgb,var(--rose) 55%,var(--paper))}.month-calendar{color:var(--ink)}.month-legend{color:var(--ink)}.calendar-button{background:var(--paper);color:var(--ink)}.calendar-button:hover{background:color-mix(in srgb,var(--paper) 85%,var(--gold));color:var(--ink)}.countdown-wrap .script-label{font-size:var(--label-desktop);color:color-mix(in srgb,var(--rose) 40%,var(--paper))}.countdown span{color:var(--paper)}.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%,color-mix(in srgb,var(--paper) 80%,white),transparent 65%)}
@media(max-width:600px){.countdown-wrap .script-label{font-size:var(--label-mobile)}.closing{background-size:190px,170px,auto}}
