/* Progressive enhancement: the complete page is readable without JavaScript. */
.scroll-progress{position:fixed;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,#9c7149,#e4c495,#b89262);z-index:1000;pointer-events:none;transform:scaleX(0);transform-origin:left center}
.fx-enabled .fx-reveal{opacity:0;translate:0 24px;transition:opacity .85s cubic-bezier(.2,.65,.25,1),translate .9s cubic-bezier(.2,.65,.25,1);transition-delay:var(--reveal-delay,0ms)}
.fx-enabled .fx-reveal.fx-visible{opacity:1;translate:0 0}
.fx-enabled .hero-image{transform:translate3d(0,var(--hero-drift,0px),0) scale(1.06);transform-origin:56% 44%}
.fx-enabled .scroll-cue span:last-child{animation:cueDrift 2.8s ease-in-out infinite}
@keyframes cueDrift{0%,100%{translate:0 0}50%{translate:0 5px}}

/* A single restrained light pass follows the cutout's real alpha silhouette. */
.silver-visual{--metal-mask:url('/new-york/assets/invitation-silver.webp')}
.gold-visual{--metal-mask:url('/new-york/assets/invitation-gold.webp')}
.fx-enabled .brand-visual:after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(110deg,transparent 36%,#fff9 48%,#edc89c55 51%,transparent 64%);background-size:280% 100%;background-position:120% 0;mask-image:var(--metal-mask);mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-image:var(--metal-mask);-webkit-mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mix-blend-mode:screen;opacity:0}
.fx-enabled .brand-visual.fx-visible:after{animation:metalGleam 2.7s .45s cubic-bezier(.25,.1,.25,1) both}
@keyframes metalGleam{0%{background-position:125% 0;opacity:0}15%{opacity:.35}70%{opacity:.25}100%{background-position:-20% 0;opacity:0}}

.fx-photo{cursor:zoom-in;outline-offset:9px;touch-action:pan-x pan-y}
.fx-photo:focus-visible{outline:2px solid var(--gold)}
.fx-photo img{-webkit-user-drag:none;user-select:none}
.fx-enabled .polaroid,.fx-enabled .community-photo,.fx-enabled .style-portrait{transition:transform .55s cubic-bezier(.2,.7,.25,1),box-shadow .55s,opacity .85s,translate .9s;transition-delay:0s,0s,var(--reveal-delay,0ms),var(--reveal-delay,0ms);transform-style:preserve-3d}
.fx-enabled .polaroid.fx-pointer-active,.fx-enabled .community-photo.fx-pointer-active,.fx-enabled .style-portrait.fx-pointer-active{transform:perspective(1000px) translateY(-12px) rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) scale(1.025);box-shadow:0 28px 52px #09030366;z-index:4}
.fx-enabled .fx-photo img{transition:filter .55s}
.fx-enabled .fx-photo.fx-pointer-active img{filter:brightness(1.035)}

.fx-enabled a.invitation{position:relative;isolation:isolate;overflow:hidden;translate:var(--button-x,0px) var(--button-y,0px);transition:background .3s,color .3s,box-shadow .3s,translate .35s cubic-bezier(.2,.7,.25,1),scale .2s,transform .25s}
.fx-enabled a.invitation:after{content:'';position:absolute;inset:-60% -40%;pointer-events:none;z-index:0;background:linear-gradient(105deg,transparent 35%,#fff7 49%,transparent 62%);translate:-100% 0;transition:translate .85s cubic-bezier(.2,.6,.25,1)}
.fx-enabled a.invitation:hover:after,.fx-enabled a.invitation:focus-visible:after{translate:100% 0}
.fx-enabled a.invitation:active{scale:.98}
.invitation>.wa-icon,.invitation>.invitation-label{position:relative;z-index:1}
.fx-enabled .choice h3,.fx-enabled .choice-symbol{transition:translate .35s,color .35s,rotate .35s}
.fx-enabled .choice:hover h3{translate:4px 0;color:#e3c79e}
.fx-enabled .choice:hover .choice-symbol{rotate:45deg;color:#f4ead9}

/* The enlarged photograph is a native dialog, including Escape and focus trapping. */
.photo-is-open{overflow:hidden}
.photo-lightbox{border:0;padding:32px 32px 20px;border-radius:4px;background:#f4eee3;color:#321319;max-width:min(92vw,1200px);max-height:93svh;overflow:auto;box-shadow:0 30px 100px #0008}
.photo-lightbox::backdrop{background:#10070ae8;backdrop-filter:blur(8px)}
.photo-lightbox[open]{animation:photoOpen .3s cubic-bezier(.2,.65,.25,1)}
.photo-lightbox .lightbox-image{width:auto;height:auto;display:block;max-width:calc(92vw - 64px);max-height:calc(90svh - 115px);object-fit:contain;margin:0 auto}
.lightbox-close{position:absolute;right:10px;top:10px;z-index:2;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid #bca88c;background:#f4eee3;color:#321319;font:30px/1 Arial,sans-serif;cursor:pointer;box-shadow:0 2px 15px #0002}
.lightbox-close:hover{background:#e4d4b9}
.lightbox-close:focus-visible{outline:2px solid #321319;outline-offset:4px}
.lightbox-caption{text-align:center;font:italic 21px/1.35 var(--serif);margin:17px auto 0;max-width:650px}
@keyframes photoOpen{from{opacity:0;translate:0 12px;scale:.985}to{opacity:1;translate:0 0;scale:1}}

@media(max-width:780px){.fx-enabled .hero-image{transform:none}.fx-enabled .fx-reveal{translate:0 16px;transition-duration:.65s,.7s}.fx-enabled .fx-reveal.fx-visible{translate:0 0}.fx-enabled .scroll-cue span:last-child{animation:none}.photo-lightbox{padding:22px 12px 16px;max-width:94vw;max-height:94svh}.photo-lightbox .lightbox-image{max-width:calc(94vw - 24px);max-height:calc(88svh - 90px)}.lightbox-close{width:36px;height:36px;right:6px;top:6px;font-size:27px}.lightbox-caption{font-size:18px;max-width:90%;margin-top:14px}}
@media(prefers-reduced-motion:reduce){.scroll-progress{transition:none}.fx-reveal{opacity:1!important;translate:none!important}.hero-image{transform:none!important}.photo-lightbox[open]{animation:none}.fx-enabled .brand-visual:after{display:none}}
.fx-reduced .fx-reveal{opacity:1!important;translate:none!important}
.fx-reduced .hero-image{transform:none!important}

/* Cream fabric: softly lit folds and a nearly invisible weave. */
.fabric-surface{isolation:isolate;overflow:hidden;overflow:clip}
.intro.fabric-surface,.community.fabric-surface,.faq.fabric-surface,.footer.fabric-surface{position:relative}
.fabric-surface::before,.fabric-surface::after{content:'';position:absolute;pointer-events:none;z-index:-1;inset:-16% -12%;opacity:.52}
.fabric-surface::before{background-image:url('/new-york/assets/fabric-waves.svg');background-size:max(1200px,115%) auto;background-position:50% 50%;background-repeat:repeat-y;transform-origin:center}
.fabric-surface::after{inset:-24px;background-image:repeating-linear-gradient(110deg,#967c5710 0 .5px,transparent .5px 4px),repeating-linear-gradient(20deg,#fff9 0 .5px,transparent .5px 5px);opacity:.16}
.header.fabric-surface::before{opacity:.36}
.footer.fabric-surface::before{opacity:.46}
.community.fabric-surface::before{background-position:35% 62%}
.faq.fabric-surface::before{background-position:68% 38%}
.fx-enabled .fabric-surface::before{animation:fabricFlow 32s ease-in-out infinite alternate;animation-play-state:paused}
.fx-enabled .fabric-surface::after{animation:fabricWeave 42s ease-in-out infinite alternate-reverse;animation-play-state:paused}
.fx-enabled .community.fabric-surface::before{animation-delay:-13s;animation-duration:38s}
.fx-enabled .faq.fabric-surface::before{animation-delay:-22s;animation-duration:44s}
.fx-enabled .fabric-surface.fabric-in-view::before,.fx-enabled .fabric-surface.fabric-in-view::after{animation-play-state:running}
.fx-enabled.fabric-paused .fabric-surface::before,.fx-enabled.fabric-paused .fabric-surface::after{animation-play-state:paused}
@keyframes fabricFlow{0%{transform:translate3d(-1.8%,-2%,0) rotate(-.5deg) scale(1.025)}50%{transform:translate3d(1%,1%,0) rotate(.2deg) scale(1.045)}100%{transform:translate3d(3%,3.5%,0) rotate(.65deg) scale(1.025)}}
@keyframes fabricWeave{from{transform:translate3d(-5px,-3px,0)}to{transform:translate3d(7px,5px,0)}}
@media(max-width:780px){.fabric-surface::before{opacity:.43;background-size:1200px auto}.header.fabric-surface::before{opacity:.3}}
@media(prefers-reduced-motion:reduce){.fabric-surface::before,.fabric-surface::after{animation:none!important;transform:none!important}}
