:root{--entrance-duration:9s;--entrance-reveal-delay:6.8s;--entrance-chapter-duration:6.3s}
/* Keep layout for scrolling, but never expose chapter text before its reveal. */
body.entrance-running:not(.entrance-reveal) #invitation-content{visibility:hidden;pointer-events:none}
body.entrance-running:not(.entrance-reveal) #invitation-content *{visibility:hidden!important}
/* Shared slow entrance standard for existing and future themes. Entrance choreography; all decoration is outside the reading and focus order. */
.entrance-transition{position:fixed;inset:0;z-index:30;pointer-events:none;visibility:hidden;overflow:hidden;display:grid;grid-template-columns:1fr 1fr}.entrance-transition>span{background:var(--paper);position:relative}.entrance-transition>span:after{content:'';position:absolute;inset:22px;border:1px solid color-mix(in srgb,var(--color) 35%,transparent)}.entrance-transition>i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:70px/1 'Great Vibes',cursive;color:var(--color);font-style:normal}.entrance-transition i b{font-weight:400}.entrance-transition i em{font:italic 24px 'Cormorant Garamond',serif}.entrance-running .entrance-transition{visibility:visible}.entrance-running .entrance-transition>span:first-of-type{animation:entrance-door-left var(--entrance-duration) cubic-bezier(.45,0,.2,1) both}.entrance-running .entrance-transition>span:nth-of-type(2){animation:entrance-door-right var(--entrance-duration) cubic-bezier(.45,0,.2,1) both}.entrance-running .entrance-transition>i{animation:entrance-seal var(--entrance-duration) cubic-bezier(.33,0,.2,1) both}.cover .couple-monogram{animation:monogram-arrive 3.2s .3s cubic-bezier(.33,0,.2,1) both}.cover .kicker{animation:entrance-letter 2.5s 1.1s both}.cover h1{animation:entrance-letter 3s 1.6s both}.cover-date{animation:entrance-letter 1.2s var(--entrance-duration) both}.guest-block{animation:entrance-letter 2.8s 2.6s both}.cover #open-invitation{animation:entrance-letter 2.6s 3.1s both}.cover .cover-photo{animation:entrance-photo 6s cubic-bezier(.33,0,.2,1) both}.cover>.theme-scene{animation:entrance-art 5.4s cubic-bezier(.33,0,.2,1) both}.theme-heritage .cover>.theme-scene{animation:java-stage 6s cubic-bezier(.33,0,.2,1) both}.theme-heritage .entrance-transition>span{background:#f5ead8 url('/static/assets/java-landscape-v2.webp') center/cover}.theme-heritage .entrance-transition>span:after{inset:15px;border:double 4px #b39261;background:#fff3dfb0}.theme-heritage .entrance-transition>i{color:#783d3f}.theme-blush .entrance-transition>span{background:#f3e1e8 url('/static/assets/blush-botanicals-v2.webp') left bottom/85% auto no-repeat}.theme-blush .entrance-transition>span:nth-of-type(2){background-position:right bottom}.theme-blush .entrance-transition>span:after{border-radius:200px 200px 5px 5px}.theme-midnight .entrance-transition>span{background:radial-gradient(ellipse at 50% 30%,#3b5067,#142538)}.theme-midnight .entrance-transition>span:after{border-color:#c5ad79}.theme-midnight .entrance-transition>i{color:#f1deb1}.theme-midnight.entrance-running .entrance-transition{animation:night-unveil var(--entrance-duration) cubic-bezier(.33,0,.2,1) both}.theme-midnight.entrance-running .entrance-transition>span{animation:none}.theme-ivory.entrance-running .entrance-transition>span:first-of-type{animation:paper-lift-left var(--entrance-duration) cubic-bezier(.33,0,.2,1) both;transform-origin:left center}.theme-ivory.entrance-running .entrance-transition>span:nth-of-type(2){animation:paper-lift-right var(--entrance-duration) cubic-bezier(.33,0,.2,1) both;transform-origin:right center}.theme-portrait.entrance-running .entrance-transition>span:first-of-type{animation:editorial-slide-up var(--entrance-duration) cubic-bezier(.45,0,.2,1) both}.theme-portrait.entrance-running .entrance-transition>span:nth-of-type(2){animation:editorial-slide-down var(--entrance-duration) cubic-bezier(.45,0,.2,1) both}.theme-botanical .entrance-transition>span{background:#e5ebdf}.entrance-reveal .overture-copy{animation:chapter-arrive 3.8s cubic-bezier(.33,0,.2,1) both}.entrance-reveal .overture-photo{animation:portrait-unveil 4.6s cubic-bezier(.33,0,.2,1) both}.entrance-reveal .overture-copy h2{animation:entrance-letter 3s .8s both}.entrance-reveal .overture-date{animation:entrance-letter 2.8s 1.5s both}.entrance-reveal .scroll-invitation{animation:entrance-letter 2.6s 2.2s both}
@keyframes entrance-door-left{0%,20%{transform:translateX(0)}100%{transform:translateX(-105%)}}@keyframes entrance-door-right{0%,20%{transform:translateX(0)}100%{transform:translateX(105%)}}@keyframes entrance-seal{0%,15%{opacity:1;transform:translate(-50%,-50%) scale(1)}55%,100%{opacity:0;transform:translate(-50%,-50%) scale(1.3)}}@keyframes monogram-arrive{from{opacity:0;transform:translateY(14px) scale(.94) rotate(-3deg);filter:none}to{opacity:1;transform:translateY(0) scale(1) rotate(0);filter:blur(0)}}@keyframes entrance-letter{from{opacity:0;transform:translateY(14px);filter:none}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes entrance-photo{from{transform:scale(1.14);opacity:.25}to{transform:scale(1);opacity:1}}@keyframes entrance-art{from{opacity:0;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}@keyframes java-stage{from{opacity:0;transform:translateY(24px) scale(1.025);filter:none}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes night-unveil{0%,25%{clip-path:circle(100% at 50% 50%)}100%{clip-path:circle(0 at 50% 50%)}}@keyframes paper-lift-left{0%,20%{transform:perspective(900px) rotateY(0)}100%{transform:perspective(900px) rotateY(-100deg);opacity:0}}@keyframes paper-lift-right{0%,20%{transform:perspective(900px) rotateY(0)}100%{transform:perspective(900px) rotateY(100deg);opacity:0}}@keyframes editorial-slide-up{0%,20%{transform:translateY(0)}100%{transform:translateY(-105%)}}@keyframes editorial-slide-down{0%,20%{transform:translateY(0)}100%{transform:translateY(105%)}}@keyframes chapter-arrive{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}@keyframes portrait-unveil{from{opacity:0;transform:translate3d(0,18px,0) scale(1.025)}to{opacity:1;transform:translate3d(0,0,0) scale(1)}}
@media(prefers-reduced-motion:reduce){.entrance-transition{display:none!important}.cover *, .cover>.theme-scene,.entrance-reveal *{animation:none!important;filter:none!important}}

.entrance-running .entrance-transition>span,.entrance-running .entrance-transition>i{will-change:transform,opacity;backface-visibility:hidden}.entrance-reveal .overture-copy,.entrance-reveal .overture-photo{will-change:transform,opacity;backface-visibility:hidden}.cover .couple-monogram,.cover h1,.cover .kicker,.cover-date,.guest-block,.cover #open-invitation{animation-timing-function:cubic-bezier(.33,0,.2,1)}

/* Scenic entrance: reveal foreground, drift through the scene, introduce the monogram. */
.cinematic-stage{position:absolute;inset:0;overflow:hidden;background:var(--paper)}.cinematic-stage .theme-scene{z-index:0;opacity:1}.cinematic-stage .grand-scenery{height:100%;object-fit:cover}.cinematic-veil{position:absolute;top:0;bottom:0;width:52%;background:var(--paper);z-index:5}.veil-left{left:0}.veil-right{right:0}.cinematic-arch{position:absolute;inset:8% 12%;border:1px solid color-mix(in srgb,var(--color) 50%,transparent);border-radius:200px 200px 15px 15px;z-index:3}.entrance-running .entrance-transition>span{display:none}.entrance-running .entrance-transition{animation:none;clip-path:none}.entrance-running .veil-left{animation:scenic-left 3.8s cubic-bezier(.45,0,.2,1) both}.entrance-running .veil-right{animation:scenic-right 3.8s cubic-bezier(.45,0,.2,1) both}.entrance-running .cinematic-stage .grand-scenery,.entrance-running .cinematic-stage .java-landscape{animation:scenic-depth 9s cubic-bezier(.33,0,.2,1) both}.entrance-running .cinematic-stage .painted-floral,.entrance-running .cinematic-stage .grand-bouquet,.entrance-running .cinematic-stage .java-botanical{animation:scenic-bloom 7s cubic-bezier(.33,0,.2,1) both}.entrance-running .cinematic-stage .upper-floral{animation:scenic-upper 7.5s cubic-bezier(.33,0,.2,1) both}.entrance-running .cinematic-arch{animation:scenic-frame 9s ease both}.entrance-running .entrance-transition>i{z-index:6;animation:scenic-initial 9s ease both}.entrance-running .cinematic-stage{animation:scenic-fade 9s linear both}.theme-midnight .cinematic-stage{background:#142538}.theme-midnight .cinematic-arch{border-color:#c4ac76}.theme-midnight .cinematic-veil{background:#142538}
@keyframes scenic-left{0%,15%{transform:translate3d(0,0,0)}100%{transform:translate3d(-105%,0,0)}}@keyframes scenic-right{0%,15%{transform:translate3d(0,0,0)}100%{transform:translate3d(105%,0,0)}}@keyframes scenic-depth{from{transform:scale(1.15) translate3d(0,20px,0)}to{transform:scale(1) translate3d(0,0,0)}}@keyframes scenic-bloom{0%{transform:translate3d(0,65px,0) scale(1.08);opacity:.1}35%{opacity:1}100%{transform:translate3d(0,0,0) scale(1);opacity:1}}@keyframes scenic-upper{from{transform:translate3d(0,-45px,0);opacity:.2}to{transform:translate3d(0,0,0);opacity:1}}@keyframes scenic-frame{0%,45%{opacity:0;transform:scale(.94)}65%,90%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1)}}@keyframes scenic-initial{0%,58%{opacity:0;transform:translate(-50%,-50%) scale(.95)}74%,88%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}@keyframes scenic-fade{0%,88%{opacity:1}100%{opacity:0}}
@media(min-width:1200px){.cinematic-stage{inset:0 0 0 auto;width:520px}.entrance-transition>i{left:auto;right:260px;translate:50% 0}}
@media(prefers-reduced-motion:reduce){.cinematic-stage{display:none}}
body.entrance-running .entrance-transition{animation:none!important;clip-path:none!important}

/* Package motion: Standard keeps a light background reveal; Premium uses separate scene layers. */
body.tier-standard{--entrance-duration:5s;--entrance-reveal-delay:2.8s;--entrance-chapter-duration:4.6s}
.tier-standard .cinematic-stage{display:block}
.tier-standard.entrance-running .entrance-transition>span{display:none}
.tier-standard .cinematic-veil,.tier-standard .cinematic-arch{display:none}
.tier-standard.entrance-running .cinematic-stage{animation:scenic-fade 5s linear both}
.tier-standard.entrance-running .entrance-transition>i{animation:entrance-seal var(--entrance-duration) cubic-bezier(.33,0,.2,1) both}
.tier-standard .living-layer,.tier-standard .palace-lantern,.tier-standard .rose-petal,.tier-standard .night-star{display:none}
.tier-standard .upper-floral{animation:none}
.tier-standard.theme-midnight.entrance-running .entrance-transition>span:first-of-type{animation:entrance-door-left var(--entrance-duration) ease both}
.tier-standard.theme-midnight.entrance-running .entrance-transition>span:nth-of-type(2){animation:entrance-door-right var(--entrance-duration) ease both}

.gate-art{position:absolute;inset:5% 8%;width:84%;height:90%;color:var(--color);opacity:.55}.theme-midnight .gate-art{color:#c4ac76}.veil-right .gate-art{transform:scaleX(-1)}
