/* Brief velvet opening. The page remains usable behind decorative panels. */
.opening-curtain{position:fixed;inset:0;z-index:900;pointer-events:none;overflow:hidden;contain:strict}
.curtain-panel{position:absolute;top:0;bottom:0;width:50.15%;background:linear-gradient(90deg,#23090f,#461722 18%,#2c0c15 35%,#501b29 54%,#310e18 73%,#41141f 91%,#270910);box-shadow:0 0 38px #08010380;will-change:transform}
.curtain-panel:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#09010344,transparent 28%,#b36b4710 64%,#09010355),repeating-linear-gradient(90deg,transparent 0 11%,#00000013 13%,transparent 17%)}
.curtain-left{left:0;border-right:1px solid #bc8c5659;animation:curtainLeft 1.05s 40ms cubic-bezier(.7,0,.2,1) both}
.curtain-right{right:0;border-left:1px solid #bc8c5659;animation:curtainRight 1.05s 40ms cubic-bezier(.7,0,.2,1) both}
.opening-curtain.awaiting-admission .curtain-panel{animation:none;transform:translateX(0)}
@keyframes curtainLeft{from{transform:translateX(0)}to{transform:translateX(-102%)}}
@keyframes curtainRight{from{transform:translateX(0)}to{transform:translateX(102%)}}

/* The printed invitations reveal after their trays enter the viewport. */
.luxury-motion.fx-enabled .brand-visual .paper-content{opacity:0;clip-path:inset(0 0 100% 0);translate:0 10px}
.luxury-motion.fx-enabled .brand-visual.fx-visible .paper-content{animation:invitationUnveil 1.25s .32s cubic-bezier(.2,.65,.25,1) both}
.luxury-motion.fx-enabled .brand-visual.fx-visible .paper-content>*{animation:invitationInk .9s .55s ease both}
.luxury-motion.fx-enabled .brand-visual.fx-visible .paper-content>h3{animation-delay:.72s}
.luxury-motion.fx-enabled .brand-visual.fx-visible .paper-content>p{animation-delay:.85s}
.luxury-motion.fx-enabled .brand-visual.fx-visible .paper-content>.paper-location{animation-delay:1s}
@keyframes invitationUnveil{from{opacity:0;clip-path:inset(0 0 100% 0);translate:0 10px}to{opacity:1;clip-path:inset(0);translate:0 0}}
@keyframes invitationInk{from{opacity:0}to{opacity:1}}

/* Two matching halves blend adjacent rooms within their existing padding. */
.luxury-scene{position:relative}
.ambience-band{position:absolute;left:0;right:0;height:60px;pointer-events:none;z-index:1;background-image:linear-gradient(180deg,var(--ambience-from) 0%,var(--ambience-from) calc(var(--ambience-stop,50%) - 38%),var(--ambience-to) calc(var(--ambience-stop,50%) + 38%),var(--ambience-to) 100%);background-size:100% 200%;background-repeat:no-repeat}
.ambience-band-out{bottom:0;background-position:0 0}
.ambience-band-in{top:0;background-position:0 100%}

/* A single champagne reflection when each WhatsApp invitation comes into view. */
.luxury-motion a.invitation{position:relative;isolation:isolate;overflow:hidden}
.invitation-glint{position:absolute;inset:-65% -45%;pointer-events:none;z-index:0;background:linear-gradient(108deg,transparent 37%,#d9b4721a 44%,#fff4d1a3 49%,#d6a35a55 53%,transparent 61%);translate:-110% 0;opacity:0}
.luxury-motion .luxury-invited>.invitation-glint{animation:invitationGlint 1.25s var(--glint-delay,120ms) cubic-bezier(.2,.6,.25,1) both}
@keyframes invitationGlint{0%{translate:-110% 0;opacity:0}18%{opacity:.8}75%{opacity:.8}100%{translate:110% 0;opacity:0}}
@media(max-width:780px){.curtain-left,.curtain-right{animation-duration:.9s}.ambience-band{height:42px}.luxury-motion.fx-enabled .brand-visual.fx-visible .paper-content{animation-duration:1.05s}}
@media(prefers-reduced-motion:reduce){.opening-curtain,.invitation-glint{display:none}.luxury-motion.fx-enabled .brand-visual .paper-content{opacity:1;clip-path:none;translate:none}.luxury-motion.fx-enabled .brand-visual .paper-content,.luxury-motion.fx-enabled .brand-visual .paper-content>*{animation:none!important}}

/* Two identical strips make a seamless, slow left-to-right photographic flow. */
.polaroid-stack.polaroid-flow{display:block;max-width:none;width:calc(100% + 2 * var(--gutter));margin:0 calc(-1 * var(--gutter));padding:0;overflow:hidden;scroll-snap-type:none}
.polaroid-conveyor{display:flex;width:max-content;animation:polaroidRight 40s linear infinite;animation-play-state:paused;will-change:transform}
.polaroid-set{display:flex;flex-shrink:0;align-items:center;gap:34px;padding:35px 34px 85px 0}
.polaroid-flow .polaroid{flex:0 0 clamp(245px,23vw,330px);width:clamp(245px,23vw,330px);scroll-snap-align:none}
.polaroid-flow.is-in-view .polaroid-conveyor{animation-play-state:running}
.polaroid-flow.is-paused .polaroid-conveyor,.polaroid-flow.is-interacting .polaroid-conveyor,.photo-is-open .polaroid-conveyor,.fabric-paused .polaroid-conveyor{animation-play-state:paused}
.polaroid-motion-toggle{display:block;margin:0 auto 22px;padding:7px 18px;border:1px solid #c5a27066;border-radius:999px;background:transparent;color:#d7bea0;font:15px/1.3 var(--serif);cursor:pointer}
.polaroid-motion-toggle:hover{background:#ffffff09}
.polaroid-motion-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
@keyframes polaroidRight{from{transform:translate3d(-50%,0,0)}to{transform:translate3d(0,0,0)}}
@media(hover:hover) and (pointer:fine){.polaroid-flow:hover .polaroid-conveyor{animation-play-state:paused}}
.polaroid-flow:focus-within{overflow-x:auto}
.polaroid-flow:focus-within .polaroid-conveyor{animation:none;transform:none}
.polaroid-flow:focus-within .polaroid-copies{display:none}
@media(max-width:780px){.polaroid-set{gap:25px;padding:30px 25px 64px 0}.polaroid-flow .polaroid{flex-basis:min(72vw,300px);width:min(72vw,300px)}.polaroid-motion-toggle{margin-bottom:20px}}
@media(prefers-reduced-motion:reduce){.polaroid-stack.polaroid-flow{overflow-x:auto}.polaroid-conveyor{animation:none;transform:none;will-change:auto}.polaroid-copies,.polaroid-motion-toggle{display:none}}

/* Original photographs remain as the layout and playback fallback. */
.live-photo{display:block;position:relative;width:100%;overflow:hidden}
.live-photo>img{display:block}
.live-photo>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none;transition:opacity .25s}
.live-photo.is-playing>video{opacity:1}
.dining-photo>.live-photo{height:100%}
.dining-photo>.live-photo>img{height:100%;object-fit:cover}
.photo-lightbox .lightbox-video{display:block;width:auto;height:auto;max-width:calc(92vw - 64px);max-height:calc(90svh - 115px);object-fit:contain;margin:0 auto}
.photo-lightbox .lightbox-image[hidden],.photo-lightbox .lightbox-video[hidden]{display:none}
@media(max-width:780px){.photo-lightbox .lightbox-video{max-width:calc(94vw - 24px);max-height:calc(88svh - 90px)}}
@media(prefers-reduced-motion:reduce){.live-photo>video{display:none}}
