@font-face{font-family:'1FTV VIP Hastegi';src:url('assets/hastegi.otf') format('opentype');font-display:swap}
html.invitation-closed{overflow:hidden}html.invitation-closed #paper,html.invitation-closed .desktop-intro,html.invitation-closed .toolbar{visibility:hidden}
#invitation-cover{position:fixed;inset:0;width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;background:#424b3b;display:none;align-items:center;justify-content:center;transition:opacity .5s ease .25s}
#invitation-cover[open]{display:flex}
#invitation-cover::backdrop{background:#424b3b}
#invitation-cover::before{content:'';position:absolute;inset:-25px;background:linear-gradient(#29352666,#29352666),url('assets/opening-new/f2147.webp') center/cover;filter:blur(16px);opacity:.6}
.figma-cover-scene{position:absolute;left:50%;top:50%;width:420px;height:765px;overflow:hidden;transform:translate(-50%,-50%) scale(var(--cover-scale,1));box-shadow:0 0 65px #16201744;isolation:isolate;transition:filter .6s,opacity .6s}
.cover-art-background{position:absolute;left:0;top:-4.48px;width:420px;height:769.67px;overflow:hidden;z-index:-1}
.cover-art-background>img{position:absolute;left:-1.58%;top:0;width:103.16%;height:100%;max-width:none}
.cover-art-background>div{position:absolute;inset:0;background:#919191;mix-blend-mode:multiply}
#invitation-cover .cover-eyebrow{position:absolute;left:212.09px;top:111.5px;translate:-50% -50%;width:300px;height:23px;display:flex;align-items:center;justify-content:center;font:20px/41.6px '1FTV VIP Hastegi',Georgia,serif;font-weight:400;text-transform:uppercase;color:white;text-align:center;margin:0;white-space:nowrap}
#invitation-cover .cover-guest{position:absolute;left:205.7px;top:149.26px;translate:-50% -50%;width:340px;height:60.8px;display:flex;align-items:center;justify-content:center;font:38px/60.8px 'UVN Hoa Tay 1',cursive;font-weight:400;color:white;text-align:center;margin:0}
.cover-envelope{position:absolute;left:42.31px;top:237.22px;width:347px;height:226.09px;filter:drop-shadow(2px 7px 6px #0006);overflow:hidden;transform-origin:50% 65%;transition:transform .75s cubic-bezier(.22,.61,.36,1),opacity .6s}
.cover-envelope img{position:absolute;left:0;top:0;width:100%;height:100.85%;max-width:none}
.cover-flower-left{position:absolute;left:-5px;top:173.86px;width:133.14px;height:255.36px;overflow:hidden;filter:drop-shadow(-1px 3px 4px #0005);transition:transform .7s ease,opacity .7s}
.cover-flower-left img{position:absolute;top:0;left:0;width:100.01%;height:100%;max-width:none}
.cover-flower-right{position:absolute;left:275.39px;top:327.69px;width:144.59px;height:310.59px;overflow:hidden;filter:drop-shadow(0 5px 3px #0003);transition:transform .7s ease,opacity .7s}
.cover-flower-right img{position:absolute;top:0;left:0;width:100%;height:100.08%;max-width:none}
.wax-open,.cover-hand{position:absolute;padding:0;background:transparent;border:0;border-radius:0;cursor:pointer;transition:opacity .2s,transform .4s}
.wax-open{left:184.06px;top:358.05px;width:53.86px;height:63.94px;filter:drop-shadow(0 3px 3px #0006)}
.wax-open>span{position:relative;display:block;width:100%;height:100%;overflow:hidden;animation:coverSealPulse 1.7s ease-in-out infinite}
.wax-open img{position:absolute;top:0;left:0;width:102.47%;height:100%;max-width:none}
.cover-hand{left:204.84px;top:382.34px;width:60.03px;height:60.69px;filter:drop-shadow(0 4px 1px #0005)}
.cover-hand>span{display:block;position:relative;width:100%;height:100%;overflow:hidden;animation:coverHandHint 1.7s ease-in-out infinite}
.cover-hand img{position:absolute;left:0;top:0;width:100.01%;height:100%;max-width:none}
.wax-open:focus-visible,.cover-hand:focus-visible{outline:1px solid #faf9ee;outline-offset:7px;border-radius:12px}
#invitation-cover .cover-date{position:absolute;left:215.91px;top:535.64px;translate:-50% -50%;width:200px;height:26px;display:flex;align-items:center;justify-content:center;font:19.9px/37.7px '1FTV VIP Hastegi',Georgia,serif;letter-spacing:3px;color:white;text-align:center;white-space:nowrap;margin:0}
@keyframes coverSealPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.075)}}
@keyframes coverHandHint{0%,100%{transform:translate(0,0) scale(1);opacity:.85}45%{transform:translate(-3px,-4px) scale(.96);opacity:1}65%{transform:translate(0,0) scale(1.03)}}
#invitation-cover.cover-opening{opacity:0}
.cover-opening .wax-open,.cover-opening .cover-hand{opacity:0;transform:scale(.86)}
.cover-opening .cover-envelope{transform:translateY(-18px) scale(1.05);opacity:.3}
.cover-opening .cover-flower-left{transform:translate(-15px,-8px);opacity:.3}
.cover-opening .cover-flower-right{transform:translate(15px,8px);opacity:.3}
.cover-opening .wax-open>span,.cover-opening .cover-hand>span{animation:none}
.hero-staged{opacity:0}
.hero-revealing{animation:heroAssemble .75s cubic-bezier(.22,.61,.36,1) var(--hero-delay,0ms) both}
@keyframes heroAssemble{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.reopen-invitation{background:transparent;color:#6e835d;text-decoration:underline;text-underline-offset:4px;font:10px/1.7 'Lora',Georgia,serif;padding:8px 12px;min-height:36px;display:block;margin:15px auto 0}
@media(prefers-reduced-motion:reduce){#invitation-cover,.cover-envelope,.cover-flower-left,.cover-flower-right,.wax-open,.cover-hand{transition:none!important}.wax-open>span,.cover-hand>span,.hero-revealing{animation:none!important}.hero-staged{opacity:1}}
