html{scroll-behavior:smooth;background:#fef6f8}body{margin:0;color:#565733}main{width:min(100%,620px);margin:auto;overflow:hidden;background:#fef6f8}.design-page{position:relative;overflow:hidden;width:100%;aspect-ratio:396.85/559.37}.scaled-design{width:396.85px;height:559.37px;transform:scale(var(--design-scale,1));transform-origin:top left}.map-hotspot{position:absolute;z-index:100;display:block;border-radius:30px}.map-hotspot:focus-visible{outline:2px solid #565733;outline-offset:2px}.album-section{position:absolute;top:45px;left:0;width:396.85px;z-index:20;text-align:center}.album-section h2,.wedding-calendar h2{margin:0 0 12px;font:600 15px Georgia,serif;letter-spacing:1.4px;color:#565733}.coverflow{position:relative;perspective:850px;height:239px;touch-action:pan-y;outline-offset:-2px}.photo-track{position:absolute;inset:0;transform-style:preserve-3d}.photo-card{position:absolute;left:50%;top:50%;padding:0;border:0;background:transparent;border-radius:9px;overflow:hidden;box-shadow:0 9px 15px #25281c28;transition:transform .55s cubic-bezier(.2,.7,.2,1),opacity .55s,filter .55s;backface-visibility:hidden;cursor:pointer;width:258px;height:214px}.photo-card.portrait{width:164px;height:235px}.photo-card img{display:block;width:100%;height:100%;object-fit:cover}.photo-prev,.photo-next{position:absolute;z-index:30;top:calc(50% - 12px);width:25px;height:25px;border:0;border-radius:50%;background:#fefcf7b8;color:#565733;font:25px/20px Georgia;cursor:pointer;box-shadow:0 1px 6px #0001}.photo-prev{left:37px}.photo-next{right:37px}.photo-prev:hover,.photo-next:hover{background:#fff}.photo-dots{display:flex;gap:6px;justify-content:center;margin:12px 0 8px}.photo-dots button{width:5px;height:5px;padding:0;border:0;border-radius:50%;background:#56573340;cursor:pointer}.photo-dots button[aria-current=true]{background:#565733;width:16px;border-radius:5px}.sample-note{margin:0!important;font:7px/1.4 Georgia,serif!important;color:#737254}.wedding-calendar{position:absolute;top:354px;left:110px;width:177px;z-index:20;text-align:center}.wedding-calendar h2{font-size:10px;letter-spacing:1px;margin-bottom:9px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px 3px;font:8px/15px Georgia,serif}.calendar-grid span{display:grid;place-items:center;width:18px;height:16px}.week-label{opacity:.6;font-size:7px}.wedding-day{background:#72764b;color:#fff;border-radius:50%;position:relative;font-weight:bold}.wedding-day:after{content:'♡';position:absolute;right:-4px;top:-8px;color:#72764b;font-size:12px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.photo-card{transition:none}}

.photo-prev,.photo-next{display:grid;place-items:center;padding:0;line-height:1}.photo-prev{left:calc(50% - var(--active-half,129px) + 10px)}.photo-next{right:calc(50% - var(--active-half,129px) + 10px)}.photo-prev svg,.photo-next svg{display:block;width:15px;height:15px}.album-section h2,.wedding-calendar h2,.calendar-grid,.sample-note{font-family:YAFdJtfMD6Y_0,serif!important}

.wedding-calendar{left:77px;width:243px;top:356px}.wedding-calendar h2{font-size:14px;margin-bottom:14px}.calendar-grid{font-size:12px;line-height:23px;gap:4px 3px}.calendar-grid span{width:32px;height:23px}.calendar-grid .week-label{font-size:10px}.wedding-day:after{font-size:15px;top:-9px;right:-3px}

.photo-prev{left:34px}.photo-next{right:34px}

.closing-thanks{position:absolute;top:568px;left:30px;width:336.85px;margin:0;text-align:center;font:12px/1.7 YAEfHs2OkUI_0,serif;color:#60613a;z-index:20}

.wedding-day:after{content:none}

/* Share the lily across the invitation/event seam without clipping or duplication. */
#invitation{overflow:visible;z-index:1}#celebration{overflow:visible}#invitation .design-canvas{overflow:hidden!important}
#invitation .design-canvas{height:440px!important}


#invitation{z-index:auto}#celebration{z-index:1}

#celebration .design-canvas{z-index:1}#memories{z-index:2}

.event-frame-backing{position:absolute;inset:0;background:#fef6f8;mask:url(assets/asset-b99125cf0d7e9e48.png) center/100% 100% no-repeat;-webkit-mask:url(assets/asset-b99125cf0d7e9e48.png) center/100% 100% no-repeat}
#celebration .design-canvas{z-index:1!important}

.event-frame-backing-lower{mask-image:url(assets/asset-0a11df3d21610945.png);-webkit-mask-image:url(assets/asset-0a11df3d21610945.png)}

.map-hotspot{box-sizing:border-box;display:flex;align-items:center;justify-content:center;border:0.6px solid #929668;color:#80854f;text-decoration:none;font:14px/1 YAEfHs2OkUI_0,serif;white-space:nowrap}.petal-overlap{position:absolute;inset:0;z-index:2;pointer-events:none;clip-path:polygon(25px 250px,65px 250px,65px 370px,25px 370px);opacity:.55}
.petal-overlap{clip-path:none;mask-image:linear-gradient(90deg,transparent 15px,#000 28px,#000 45px,transparent 70px);-webkit-mask-image:linear-gradient(90deg,transparent 15px,#000 28px,#000 45px,transparent 70px)}

.petal-overlap-right{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.55;mask-image:linear-gradient(90deg,transparent 325px,#000 355px,#000 380px,transparent 396.85px);-webkit-mask-image:linear-gradient(90deg,transparent 325px,#000 355px,#000 380px,transparent 396.85px)}

#invitation .design-canvas{overflow:visible!important}

.music-disc{position:fixed;left:max(16px,env(safe-area-inset-left));bottom:calc(18px + env(safe-area-inset-bottom));z-index:200;width:54px;height:54px;padding:0;border:1px solid #a6a47e;border-radius:50%;background:#f5e4e8;box-shadow:0 3px 14px #56573330;cursor:pointer;color:#60613a}.music-vinyl{position:absolute;inset:4px;display:block;border-radius:50%;background:repeating-radial-gradient(circle,#d9bcc5 0 1px,#efdae0 2px 4px);animation:disc-spin 12s linear infinite;animation-play-state:paused;overflow:hidden}.music-flower{position:absolute;inset:8px;border-radius:50%;background:#fef6f8 url(assets/asset-8113f15511d3575a.png) 70% 20%/180% auto no-repeat;border:1px solid #b0ad86}.music-flower:after{content:'';position:absolute;width:5px;height:5px;left:50%;top:50%;transform:translate(-50%,-50%);background:#767a50;border-radius:50%}.music-disc[aria-pressed=true] .music-vinyl{animation-play-state:running}.music-state{position:absolute;right:-2px;bottom:-2px;width:19px;height:19px;display:grid;place-items:center;border-radius:50%;background:#75794f;color:#fff;font:12px/1 Georgia}.music-disc:focus-visible{outline:2px solid #75794f;outline-offset:4px}@keyframes disc-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.music-vinyl{animation:none}}

.music-disc .music-vinyl{animation:disc-spin 8s linear infinite!important;animation-play-state:paused!important}.music-disc[aria-pressed="true"] .music-vinyl{animation-play-state:running!important}
.petal-overlap-right{opacity:1;mask-image:linear-gradient(90deg,transparent 260px,#000 300px);-webkit-mask-image:linear-gradient(90deg,transparent 260px,#000 300px)}
.closing-thanks{top:auto;bottom:10px}

/* Floral decoration stays behind every invitation card and text. */
.petal-overlap,.petal-overlap-right{display:none!important}#invitation .scaled-design>.design-canvas~div{z-index:0!important}#invitation .design-canvas{z-index:1!important}#celebration .design-canvas{z-index:1!important}

.photo-card{transition:transform .85s cubic-bezier(.22,.61,.36,1),opacity .7s ease,filter .7s ease;will-change:transform,opacity}.photo-track{transform:translateZ(0)}@media(prefers-reduced-motion:reduce){.photo-card{transition:none}}

/* Motion is interpolated as one continuous coverflow, including depth and rotation. */
.photo-card{transition:none!important}

.coverflow .photo-prev,.coverflow .photo-next{z-index:200!important;pointer-events:auto}

#album-2{top:380px}.wedding-calendar{top:691px}

.event-fade{position:absolute;inset:0;pointer-events:none;will-change:opacity}.event-fade .map-hotspot{pointer-events:auto}

/* Optical alignment of event text within the ornate frames. */
.event-fade p,.event-fade .map-hotspot{translate:-4px 0}

/* All original album photos are cached before the invitation opens. */
body.wedding-loading{overflow:hidden}body.wedding-loading main{visibility:hidden}
#wedding-loading{position:fixed;inset:0;z-index:10000;background:#fef6f8;display:grid;place-items:center;padding:24px;box-sizing:border-box;color:#565733}
#wedding-loading[hidden]{display:none}.wedding-loading-card{width:min(100%,340px);text-align:center;font-family:Georgia,serif}
.wedding-loading-card>img{object-fit:contain;margin-bottom:12px}.wedding-loading-names{font-size:26px;margin:8px 0 22px}.wedding-loading-card h1{font-size:19px;font-weight:400;margin:0 0 14px}
#wedding-loading-text{font:14px/1.6 Georgia,serif;min-height:44px;margin:0 0 18px}
#wedding-loading-progress{display:block;width:100%;height:7px;appearance:none;border:0;border-radius:8px;overflow:hidden;background:#e6e4d8}
#wedding-loading-progress::-webkit-progress-bar{background:#e6e4d8;border-radius:8px}#wedding-loading-progress::-webkit-progress-value{background:#8c8451;border-radius:8px}#wedding-loading-progress::-moz-progress-bar{background:#8c8451}
#wedding-loading-percent{font-size:14px;margin:12px 0}#wedding-loading-retry{border:1px solid #8c8451;border-radius:4px;padding:10px 22px;background:transparent;color:inherit;font:14px Georgia,serif;cursor:pointer}

/* Stable full-size gallery layers: no perspective or scale raster changes. */
.coverflow{perspective:none}.photo-track{transform:none;transform-style:flat}.photo-card{will-change:transform,opacity;backface-visibility:visible}

.coverflow{perspective:850px}.photo-track{transform:none;transform-style:preserve-3d}.photo-card{will-change:transform,opacity;backface-visibility:hidden}

/* Desktop invitation enlarged 25%; mobile keeps its existing dimensions. */
@media(min-width:1024px){main{width:min(100%,775px)}}

.photo-card img[hidden]{display:none}.photo-card canvas{display:block;width:100%;height:100%;object-fit:cover}.coverflow{perspective:850px}.photo-track{transform-style:preserve-3d}.photo-card{will-change:transform,opacity;backface-visibility:hidden}

/* Size the design before rasterization, rather than magnifying an animated layer. */
.scaled-design{transform:none;zoom:var(--design-scale,1)}
