/* ================= v6d: motion library v2 — 34 presets, each = signature overlay + camera + text entrance ================= */
.is-video .stage{--cyc:9s}
.is-video .petals{font-size:calc(var(--sw,310px) / 31);z-index:2}
.petals .fx,.petals i,.petals b,.petals u{position:absolute;display:block;pointer-events:none}
.is-video .stage[class*="cam-"] .vbg{animation:none;transform:none;transform-origin:0 0;will-change:transform,opacity}
.is-video .stage[class*="cam-"] .art{will-change:transform}
@keyframes cam-push{0%{scale:1.24;translate:calc(var(--sw,310px) * -0.1200) calc(var(--sh,551px) * -0.1080);animation-timing-function:cubic-bezier(.22,.61,.36,1)}42%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.035;translate:calc(var(--sw,310px) * -0.0175) calc(var(--sh,551px) * -0.0157)}}
.is-video .mo-play.cam-push .vbg,.is-video .mo-play.cam-push .art{animation:cam-push var(--cyc) linear both}
@keyframes cam-pull{0%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.15;translate:calc(var(--sw,310px) * -0.0750) calc(var(--sh,551px) * -0.0630)}}
.is-video .mo-play.cam-pull .vbg,.is-video .mo-play.cam-pull .art{animation:cam-pull var(--cyc) linear both}
@keyframes cam-lift{0%{scale:0.86;translate:calc(var(--sw,310px) * 0.0700) calc(var(--sh,551px) * 0.1200);animation-timing-function:cubic-bezier(.65,0,.35,1)}14%{scale:0.86;translate:calc(var(--sw,310px) * 0.0700) calc(var(--sh,551px) * 0.1200);animation-timing-function:cubic-bezier(.65,0,.35,1)}32%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.04;translate:calc(var(--sw,310px) * -0.0200) calc(var(--sh,551px) * -0.0180)}}
.is-video .mo-play.cam-lift .vbg,.is-video .mo-play.cam-lift .art{animation:cam-lift var(--cyc) linear both}
@keyframes cam-detail{0%{scale:1.9;translate:calc(var(--sw,310px) * -0.4500) calc(var(--sh,551px) * -0.3600);animation-timing-function:cubic-bezier(.65,0,.35,1)}6%{scale:1.9;translate:calc(var(--sw,310px) * -0.4500) calc(var(--sh,551px) * -0.3600);animation-timing-function:cubic-bezier(.65,0,.35,1)}46%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.03;translate:calc(var(--sw,310px) * -0.0150) calc(var(--sh,551px) * -0.0135)}}
.is-video .mo-play.cam-detail .vbg,.is-video .mo-play.cam-detail .art{animation:cam-detail var(--cyc) linear both}
@keyframes cam-drift{0%{scale:1.15;translate:calc(var(--sw,310px) * -0.0250) calc(var(--sh,551px) * -0.0675);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.15;translate:calc(var(--sw,310px) * -0.1250) calc(var(--sh,551px) * -0.0675)}}
.is-video .mo-play.cam-drift .vbg,.is-video .mo-play.cam-drift .art{animation:cam-drift var(--cyc) linear both}
@keyframes cam-rise{0%{scale:1.2;translate:calc(var(--sw,310px) * -0.1000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}85%{scale:1.2;translate:calc(var(--sw,310px) * -0.1000) calc(var(--sh,551px) * -0.2000);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.1;translate:calc(var(--sw,310px) * -0.0500) calc(var(--sh,551px) * -0.0600)}}
.is-video .mo-play.cam-rise .vbg,.is-video .mo-play.cam-rise .art{animation:cam-rise var(--cyc) linear both}
@keyframes cam-focus{0%{scale:1.12;translate:calc(var(--sw,310px) * -0.0600) calc(var(--sh,551px) * -0.0540);animation-timing-function:cubic-bezier(.22,.61,.36,1)}24%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.04;translate:calc(var(--sw,310px) * -0.0200) calc(var(--sh,551px) * -0.0180)}}
.is-video .mo-play.cam-focus .vbg,.is-video .mo-play.cam-focus .art{animation:cam-focus var(--cyc) linear both}
@keyframes cam-breathe{0%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000);animation-timing-function:cubic-bezier(.45,0,.55,1)}50%{scale:1.08;translate:calc(var(--sw,310px) * -0.0400) calc(var(--sh,551px) * -0.0360);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000)}}
.is-video .mo-play.cam-breathe .vbg,.is-video .mo-play.cam-breathe .art{animation:cam-breathe var(--cyc) linear both}
@keyframes cam-none{0%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000)}100%{scale:1.0;translate:calc(var(--sw,310px) * 0.0000) calc(var(--sh,551px) * 0.0000)}}
.is-video .mo-play.cam-none .vbg,.is-video .mo-play.cam-none .art{animation:cam-none var(--cyc) linear both}
@keyframes vdip{0%{opacity:0}5%,95%{opacity:1}100%{opacity:0}}
@keyframes vfocus{0%{opacity:0;filter:blur(16px)}5%{opacity:1}24%{filter:blur(0)}95%{opacity:1;filter:blur(0)}100%{opacity:0}}
.is-video .mo-play[class*="cam-"] .vbg{animation-name:var(--camk),vdip;animation-duration:var(--cyc);animation-timing-function:linear;animation-fill-mode:both}
.is-video .stage.cam-push{--camk:cam-push}
.is-video .stage.cam-pull{--camk:cam-pull}
.is-video .stage.cam-lift{--camk:cam-lift}
.is-video .stage.cam-detail{--camk:cam-detail}
.is-video .stage.cam-drift{--camk:cam-drift}
.is-video .stage.cam-rise{--camk:cam-rise}
.is-video .stage.cam-focus{--camk:cam-focus}
.is-video .stage.cam-breathe{--camk:cam-breathe}
.is-video .stage.cam-none{--camk:cam-none}
.is-video .mo-play.cam-focus .vbg{animation-name:cam-focus,vfocus}
.is-video .stage.cam-tilt{--camk:cam-tiltbg}
@keyframes cam-tilt{0%{transform:perspective(900px) rotateY(20deg) rotateX(7deg) scale(.94)}30%{transform:perspective(900px) rotateY(-9deg) rotateX(-3deg) scale(1)}62%{transform:perspective(900px) rotateY(8deg) rotateX(3deg) scale(1)}100%{transform:perspective(900px) rotateY(-4deg) rotateX(-1deg) scale(1)}}
.is-video .mo-play.cam-tilt{animation:cam-tilt var(--cyc) cubic-bezier(.45,0,.55,1) both}
@keyframes cam-tiltbg{0%{scale:1.12;translate:calc(var(--sw,310px) * -.02) calc(var(--sh,551px) * -.06)}30%{scale:1.12;translate:calc(var(--sw,310px) * -.1) calc(var(--sh,551px) * -.05)}62%{scale:1.12;translate:calc(var(--sw,310px) * -.02) calc(var(--sh,551px) * -.07)}100%{scale:1.12;translate:calc(var(--sw,310px) * -.07) calc(var(--sh,551px) * -.06)}}
@keyframes cam-tiltfg{0%{translate:calc(var(--sw,310px) * -.035) 0}30%{translate:calc(var(--sw,310px) * .03) 0}62%{translate:calc(var(--sw,310px) * -.025) 0}100%{translate:calc(var(--sw,310px) * .015) 0}}
.is-video .mo-play.cam-tilt .art{animation:cam-tiltfg var(--cyc) cubic-bezier(.45,0,.55,1) both}
.is-video .tx-rise .art .ln{opacity:0;transform:translateY(64px);filter:none;transition:opacity 1s ease,transform 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-rise .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-rise .art .ln.out{opacity:0;transform:translateY(-30px);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-blur .art .ln{opacity:0;transform:scale(1.08);filter:blur(16px);transition:opacity 1.2s ease,transform 1.6s cubic-bezier(.22,.61,.36,1),filter 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-blur .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-blur .art .ln.out{opacity:0;filter:blur(10px);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-settle .art .ln{opacity:0;transform:scale(1.38);filter:blur(6px);transition:opacity 1s ease,transform 1.6s cubic-bezier(.22,.61,.36,1),filter 1.2s ease}
.is-video .tx-settle .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-settle .art .ln.out{opacity:0;transform:scale(.94);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-zoomin .art .ln{opacity:0;transform:scale(.62);filter:none;transition:opacity 1s ease,transform 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-zoomin .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-zoomin .art .ln.out{opacity:0;transform:scale(1.08);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-drop .art .ln{opacity:0;transform:translateY(-70px);filter:none;transition:opacity 1s ease,transform 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-drop .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-drop .art .ln.out{opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-slide .art .ln{opacity:0;transform:translateX(var(--dx,90px));filter:none;transition:opacity 1s ease,transform 1.5s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-slide .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-slide .art .ln.out{opacity:0;transform:translateX(calc(var(--dx,90px) * -.5));transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-flip .art .ln{opacity:0;transform:perspective(700px) rotateX(-88deg);transform-origin:50% 0;filter:none;transition:opacity .9s ease,transform 1.5s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-flip .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-flip .art .ln.out{opacity:0;transform:perspective(700px) rotateX(70deg);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-glow .art .ln{opacity:0;transform:scale(1.04);filter:blur(10px) brightness(1.9);transition:opacity 1.1s ease,transform 1.6s cubic-bezier(.22,.61,.36,1),filter 1.8s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-glow .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-glow .art .ln.out{opacity:0;filter:blur(8px) brightness(1.6);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-mask .art .ln{opacity:1;transform:translateX(-14px);filter:none;-webkit-clip-path:inset(-30% -4% -30% 104%);clip-path:inset(-30% -4% -30% 104%);transition:clip-path 1.5s cubic-bezier(.65,0,.35,1),-webkit-clip-path 1.5s cubic-bezier(.65,0,.35,1),transform 1.6s cubic-bezier(.22,.61,.36,1),opacity .2s linear}
.is-video .tx-mask .art .ln.in{opacity:1;transform:none;filter:none;-webkit-clip-path:inset(-30% -4% -30% -4%);clip-path:inset(-30% -4% -30% -4%)}
.is-video .tx-mask .art .ln.out{opacity:0;transform:none;transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-center .art .ln{opacity:1;transform:scaleX(1.06);filter:none;-webkit-clip-path:inset(-30% 50% -30% 50%);clip-path:inset(-30% 50% -30% 50%);transition:clip-path 1.3s cubic-bezier(.65,0,.35,1),-webkit-clip-path 1.3s cubic-bezier(.65,0,.35,1),transform 1.5s cubic-bezier(.22,.61,.36,1),opacity .2s linear}
.is-video .tx-center .art .ln.in{opacity:1;transform:none;filter:none;-webkit-clip-path:inset(-30% -4% -30% -4%);clip-path:inset(-30% -4% -30% -4%)}
.is-video .tx-center .art .ln.out{opacity:0;transform:none;transition:opacity .8s ease,transform .9s ease,filter .8s ease}

/* ---------- reveals ---------- */
/* curtain: velvet drapes gather to the sides, gold edge, soft spotlight */
.mo-curtain .petals .cur{top:0;bottom:0;width:51%;background:repeating-linear-gradient(90deg,rgba(0,0,0,.22) 0,rgba(255,255,255,.08) 1.1em,rgba(0,0,0,.14) 2.2em,rgba(0,0,0,0) 3em),linear-gradient(180deg,var(--c1),var(--c2));box-shadow:inset 0 -5em 5em rgba(0,0,0,.25),0 0 2em rgba(0,0,0,.35)}
.mo-curtain .petals .cur.l{left:0;transform-origin:0 50%}
.mo-curtain .petals .cur.r{right:0;transform-origin:100% 50%}
.mo-curtain .petals .cur b{top:0;bottom:0;width:.35em;background:linear-gradient(var(--g),#8E6A22 50%,var(--g))}
.mo-curtain .petals .cur.l b{right:0}.mo-curtain .petals .cur.r b{left:0}
.mo-curtain .petals .val{top:0;left:0;right:0;height:2.6em;background:radial-gradient(circle at 50% 0,var(--c2) 0 1.4em,transparent 1.45em) 0 0/2.8em 2.6em repeat-x,linear-gradient(var(--c2),var(--c2)) 0 0/100% 1em no-repeat;filter:drop-shadow(0 .2em .25em rgba(0,0,0,.25));border-top:.25em solid var(--g)}
.mo-curtain .petals .spot{inset:0;background:radial-gradient(ellipse 60% 45% at 50% 40%,rgba(255,240,200,.5),rgba(255,240,200,0) 70%);opacity:0}
.mo-play.mo-curtain .petals .cur{animation:curt var(--cyc) both}
.mo-play.mo-curtain .petals .spot{animation:spot var(--cyc) ease both}
@keyframes curt{0%,4%{transform:scaleX(1) skewY(0);animation-timing-function:cubic-bezier(.65,0,.35,1)}22%,90%{transform:scaleX(.1) skewY(0);animation-timing-function:cubic-bezier(.65,0,.35,1)}100%{transform:scaleX(1)}}
@keyframes spot{0%,8%{opacity:0}22%{opacity:1}60%,100%{opacity:0}}

/* envelope: the flap opens, the envelope glides down, the card lifts out */
.mo-envelope .petals .env{inset:0}
.mo-envelope .petals .env-in{inset:0;background:linear-gradient(180deg,var(--e2),var(--e1))}
.mo-envelope .petals .env-body{left:0;right:0;top:34%;bottom:0;background:linear-gradient(170deg,var(--e1),var(--e2));-webkit-clip-path:polygon(0 0,50% 42%,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,50% 42%,100% 0,100% 100%,0 100%);box-shadow:inset 0 0 0 .2em rgba(184,145,74,.25)}
.mo-envelope .petals .env-flap{left:0;right:0;top:0;height:56%;transform-origin:50% 0;background:linear-gradient(180deg,var(--e1),var(--e3));-webkit-clip-path:polygon(0 0,100% 0,50% 100%);clip-path:polygon(0 0,100% 0,50% 100%);filter:drop-shadow(0 .3em .4em rgba(0,0,0,.18))}
.mo-envelope .petals .seal{left:50%;top:56%;width:5em;height:5em;margin:-2.5em 0 0 -2.5em;border-radius:50%;background:radial-gradient(circle at 38% 34%,#C9545A,#8E1F28 70%);box-shadow:0 .2em .6em rgba(80,10,15,.45),inset 0 0 0 .45em rgba(255,255,255,.08)}
.mo-envelope .petals .seal::after{content:"";position:absolute;inset:1.25em;border-radius:50%;border:.15em solid rgba(246,221,156,.85)}
.mo-play.mo-envelope .petals .env{animation:envslide var(--cyc) cubic-bezier(.65,0,.35,1) both}
.mo-play.mo-envelope .petals .env-flap{animation:envflap var(--cyc) cubic-bezier(.65,0,.35,1) both}
.mo-play.mo-envelope .petals .seal{animation:envseal var(--cyc) ease both}
@keyframes envslide{0%,15%{transform:translateY(0)}30%,91%{transform:translateY(165%)}100%{transform:translateY(0)}}
@keyframes envflap{0%,5%{transform:perspective(600px) rotateX(0)}15%,92%{transform:perspective(600px) rotateX(178deg)}100%{transform:perspective(600px) rotateX(0)}}
@keyframes envseal{0%,4%{opacity:1;transform:scale(1)}9%,93%{opacity:0;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}

/* book: a cloth cover with a gold frame swings open on its spine (right edge) */
.mo-book .petals{perspective:110em}
.mo-book .petals .bk{inset:0;transform-origin:100% 50%;transform-style:preserve-3d}
.mo-book .petals .bk-f,.mo-book .petals .bk-b{inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.mo-book .petals .bk-f{background:radial-gradient(ellipse at 50% 40%,rgba(255,255,255,.1),rgba(0,0,0,.18)),linear-gradient(160deg,var(--c1),var(--c2));box-shadow:inset 0 0 0 1.1em var(--c2),inset 0 0 0 1.25em var(--g),inset 0 0 0 1.7em var(--c2),inset 0 0 0 1.8em var(--g)}
.mo-book .petals .bk-f b{left:50%;top:44%;width:7em;height:7em;margin:-3.5em 0 0 -3.5em;border-radius:50%;border:.2em solid var(--g);box-shadow:0 0 0 .5em var(--c2),0 0 0 .62em var(--g)}
.mo-book .petals .bk-f b::after{content:"";position:absolute;left:50%;top:50%;width:2.6em;height:2.6em;margin:-1.3em;background:var(--g);transform:rotate(45deg);opacity:.9}
.mo-book .petals .bk-b{transform:rotateY(180deg);background:linear-gradient(90deg,#EFE6D4,#FBF7EE)}
.mo-book .petals .bk-sh{inset:0;background:linear-gradient(90deg,rgba(0,0,0,0) 40%,rgba(40,25,10,.35));opacity:0}
.mo-play.mo-book .petals .bk{animation:bkopen var(--cyc) both}
.mo-play.mo-book .petals .bk-sh{animation:bksh var(--cyc) ease both}
@keyframes bkopen{0%,6%{transform:rotateY(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}26%,90%{transform:rotateY(-178deg);animation-timing-function:cubic-bezier(.6,0,.3,1)}100%{transform:rotateY(0)}}
@keyframes bksh{0%,6%{opacity:0}14%{opacity:1}26%,100%{opacity:0}}

/* flip: the whole card turns over from its embossed back */
@keyframes cardflip{0%,4%{transform:perspective(1100px) rotateY(180deg) scale(.9);animation-timing-function:cubic-bezier(.6,0,.3,1)}22%{transform:perspective(1100px) rotateY(0) scale(1)}92%{transform:perspective(1100px) rotateY(0) scale(1);animation-timing-function:cubic-bezier(.6,0,.3,1)}100%{transform:perspective(1100px) rotateY(-180deg) scale(.9)}}
.is-video .mo-play.mo-flip{animation:cardflip var(--cyc) both}
.mo-flip .petals .fb{inset:0;opacity:0;background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.18),rgba(0,0,0,.2)),linear-gradient(150deg,var(--c1),var(--c2));box-shadow:inset 0 0 0 1em var(--c2),inset 0 0 0 1.12em var(--g)}
.mo-flip .petals .fb::before{content:"";position:absolute;inset:2.2em;border:.12em solid var(--g);border-radius:.4em;opacity:.8;background:repeating-linear-gradient(45deg,rgba(255,255,255,.05) 0 .6em,rgba(255,255,255,0) .6em 1.2em)}
.mo-flip .petals .fb b{left:50%;top:45%;width:6em;height:6em;margin:-3em;border:.2em solid var(--g);transform:rotate(45deg);box-shadow:0 0 0 .6em rgba(0,0,0,.08),inset 0 0 0 .7em rgba(0,0,0,.1)}
.mo-play.mo-flip .petals .fb{animation:fbface var(--cyc) linear both}
@keyframes fbface{0%,13%{opacity:1}13.01%,96%{opacity:0}96.01%,100%{opacity:1}}

/* iris: a spotlight circle opens on the card, a gold ring rides its edge */
.is-video .stage.mo-iris{background:radial-gradient(circle at 50% 45%,#3A2C1E,#120D08)}
@keyframes irisclip{0%,4%{-webkit-clip-path:circle(0% at 50% 45%);clip-path:circle(0% at 50% 45%);animation-timing-function:cubic-bezier(.6,0,.3,1)}24%,93%{-webkit-clip-path:circle(75% at 50% 45%);clip-path:circle(75% at 50% 45%);animation-timing-function:cubic-bezier(.6,0,.3,1)}100%{-webkit-clip-path:circle(0% at 50% 45%);clip-path:circle(0% at 50% 45%)}}
.is-video .mo-play.mo-iris .vbg,.is-video .mo-play.mo-iris .art{animation:irisclip var(--cyc) both}
.mo-iris .petals .iring{left:50%;top:45%;width:288%;aspect-ratio:1;border-radius:50%;translate:-50% -50%;border:.25em solid #E9C878;box-shadow:0 0 1.2em .2em rgba(233,200,120,.6),inset 0 0 1.2em .2em rgba(233,200,120,.5);scale:0}
.mo-play.mo-iris .petals .iring{animation:iring var(--cyc) both}
@keyframes iring{0%,4%{scale:0;opacity:1;animation-timing-function:cubic-bezier(.6,0,.3,1)}24%{scale:.75;opacity:.9}30%,93%{scale:.75;opacity:0;animation-timing-function:cubic-bezier(.6,0,.3,1)}100%{scale:0;opacity:1}}

/* shutter: ivory blinds turn open from top to bottom */
.mo-shutter .petals{perspective:80em}
.mo-shutter .petals .sl{left:0;right:0;height:11.6%;background:linear-gradient(180deg,var(--c1),var(--c2));box-shadow:inset 0 -.12em 0 rgba(184,145,74,.75),0 .2em .4em rgba(60,40,10,.12);transform-origin:50% 50%}
.mo-play.mo-shutter .petals .sl{animation:slat var(--cyc) both}
@keyframes slat{0%,5%{transform:rotateX(0);opacity:1;animation-timing-function:cubic-bezier(.6,0,.3,1)}17%{transform:rotateX(90deg);opacity:0}91%{transform:rotateX(90deg);opacity:0;animation-timing-function:cubic-bezier(.6,0,.3,1)}97%,100%{transform:rotateX(0);opacity:1}}

/* mosaic: paper tiles turn away from the centre outwards */
.mo-mosaic .petals{perspective:60em}
.mo-mosaic .petals .ms{width:16.8%;height:10.2%;background:linear-gradient(135deg,var(--c1),var(--c2));box-shadow:inset 0 0 0 .08em rgba(184,145,74,.55)}
.mo-play.mo-mosaic .petals .ms{animation:tile var(--cyc) both}
@keyframes tile{0%,4%{transform:rotateY(0) scale(1);opacity:1;animation-timing-function:cubic-bezier(.6,0,.3,1)}13%{transform:rotateY(90deg) scale(.7);opacity:0}91%{transform:rotateY(90deg) scale(.7);opacity:0;animation-timing-function:cubic-bezier(.6,0,.3,1)}96%,100%{transform:rotateY(0) scale(1);opacity:1}}

/* seal: a wax seal stamps down on a gatefold, cracks, and the doors open */
.mo-seal .petals{perspective:90em}
.mo-seal .petals .dr{top:0;bottom:0;width:50%;background:linear-gradient(160deg,var(--c1),var(--c2));box-shadow:inset 0 0 0 1em var(--c1),inset 0 0 0 1.1em rgba(184,145,74,.7)}
.mo-seal .petals .dr.l{left:0;transform-origin:0 50%;box-shadow:inset 0 0 0 1em var(--c1),inset 0 0 0 1.1em rgba(184,145,74,.7),inset -1.2em 0 1.5em -1em rgba(0,0,0,.25)}
.mo-seal .petals .dr.r{right:0;transform-origin:100% 50%}
.mo-seal .petals .sh{top:45%;width:3.6em;height:7.2em;margin-top:-3.6em;background:radial-gradient(circle at 70% 40%,var(--w1),var(--w2) 75%);filter:drop-shadow(0 .25em .35em rgba(40,10,10,.45))}
.mo-seal .petals .dr.l .sh{right:0;border-radius:3.6em 0 0 3.6em;transform-origin:100% 50%}
.mo-seal .petals .dr.r .sh{left:0;border-radius:0 3.6em 3.6em 0;transform-origin:0 50%;background:radial-gradient(circle at 10% 40%,var(--w1),var(--w2) 75%)}
.mo-seal .petals .sh::after{content:"";position:absolute;top:1.3em;bottom:1.3em;width:2.3em;border:.14em solid rgba(246,221,156,.8)}
.mo-seal .petals .dr.l .sh::after{right:0;border-right:0;border-radius:2.3em 0 0 2.3em}
.mo-seal .petals .dr.r .sh::after{left:0;border-left:0;border-radius:0 2.3em 2.3em 0}
.mo-play.mo-seal .petals .sh{animation:stamp var(--cyc) both}
.mo-play.mo-seal .petals .dr.l{animation:doorl var(--cyc) both}
.mo-play.mo-seal .petals .dr.r{animation:doorr var(--cyc) both}
@keyframes stamp{0%{transform:scale(2.6);opacity:0;animation-timing-function:cubic-bezier(.5,0,.75,0)}7%{transform:scale(1);opacity:1;animation-timing-function:ease-out}9%{transform:scale(1.06)}11%,100%{transform:scale(1);opacity:1}}
@keyframes doorl{0%,15%{transform:rotateY(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}32%,91%{transform:rotateY(-112deg);animation-timing-function:cubic-bezier(.6,0,.3,1)}99%,100%{transform:rotateY(0)}}
@keyframes doorr{0%,15%{transform:rotateY(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}32%,91%{transform:rotateY(112deg);animation-timing-function:cubic-bezier(.6,0,.3,1)}99%,100%{transform:rotateY(0)}}

/* ribbon: a satin bow unties, the ribbons slide away and a vellum veil lifts */
.mo-ribbon .petals .veil{inset:0;background:rgba(255,252,246,.62);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.mo-ribbon .petals .rb{background:linear-gradient(180deg,var(--r1),var(--r2) 55%,var(--r1));box-shadow:0 .2em .5em rgba(60,30,20,.25)}
.mo-ribbon .petals .rb.hl,.mo-ribbon .petals .rb.hr{top:41%;height:3.2em;width:50.5%}
.mo-ribbon .petals .rb.hl{left:0}.mo-ribbon .petals .rb.hr{right:0}
.mo-ribbon .petals .rb.vt,.mo-ribbon .petals .rb.vb{left:50%;width:3.2em;margin-left:-1.6em;height:46%;background:linear-gradient(90deg,var(--r1),var(--r2) 55%,var(--r1))}
.mo-ribbon .petals .rb.vt{top:0}.mo-ribbon .petals .rb.vb{bottom:0;height:56%}
.mo-ribbon .petals .bow{left:50%;top:calc(41% + 1.6em);width:0;height:0}
.mo-ribbon .petals .bow b,.mo-ribbon .petals .bow i{top:-2.6em;width:5.4em;height:5.2em;background:radial-gradient(ellipse at 50% 50%,var(--r1) 0 35%,var(--r2) 70%);filter:drop-shadow(0 .2em .3em rgba(60,30,20,.3))}
.mo-ribbon .petals .bow b{right:.4em;border-radius:60% 20% 20% 60%/60% 30% 30% 60%}
.mo-ribbon .petals .bow i{left:.4em;border-radius:20% 60% 60% 20%/30% 60% 60% 30%}
.mo-ribbon .petals .bow u{left:-1.3em;top:-1.4em;width:2.6em;height:2.8em;border-radius:.8em;background:linear-gradient(180deg,var(--r1),var(--r2))}
.mo-play.mo-ribbon .petals .bow{animation:bow var(--cyc) both}
.mo-play.mo-ribbon .petals .rb.hl{animation:rbl var(--cyc) both}
.mo-play.mo-ribbon .petals .rb.hr{animation:rbr var(--cyc) both}
.mo-play.mo-ribbon .petals .rb.vt{animation:rbt var(--cyc) both}
.mo-play.mo-ribbon .petals .rb.vb{animation:rbb var(--cyc) both}
.mo-play.mo-ribbon .petals .veil{animation:veil var(--cyc) ease both}
@keyframes bow{0%,5%{transform:scale(1) rotate(0);opacity:1;animation-timing-function:cubic-bezier(.6,0,.4,1)}14%{transform:scale(.2) rotate(-35deg);opacity:0}92%{transform:scale(.2);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes rbl{0%,10%{transform:translateX(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}26%,92%{transform:translateX(-105%)}100%{transform:translateX(0)}}
@keyframes rbr{0%,10%{transform:translateX(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}26%,92%{transform:translateX(105%)}100%{transform:translateX(0)}}
@keyframes rbt{0%,12%{transform:translateY(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}28%,92%{transform:translateY(-105%)}100%{transform:translateY(0)}}
@keyframes rbb{0%,12%{transform:translateY(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}28%,92%{transform:translateY(105%)}100%{transform:translateY(0)}}
@keyframes veil{0%,14%{opacity:1}32%,92%{opacity:0}100%{opacity:1}}

/* stack: three sheets of paper lift away one after another */
.mo-stack .petals .pn{inset:0;background:var(--c);box-shadow:0 .4em 1.4em rgba(60,40,10,.3),inset 0 0 0 .9em var(--c),inset 0 0 0 1em rgba(184,145,74,.55)}
.mo-stack .petals .pn b{left:50%;top:45%;width:4em;height:4em;margin:-2em;border:.15em solid rgba(184,145,74,.8);transform:rotate(45deg)}
.mo-play.mo-stack .petals .p3{animation:pn3 var(--cyc) both}
.mo-play.mo-stack .petals .p2{animation:pn2 var(--cyc) both}
.mo-play.mo-stack .petals .p1{animation:pn1 var(--cyc) both}
@keyframes pn3{0%,4%{transform:translateY(0) rotate(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}14%,90%{transform:translateY(-112%) rotate(-5deg)}100%{transform:translateY(0)}}
@keyframes pn2{0%,10%{transform:translateY(0) rotate(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}20%,92%{transform:translateY(-112%) rotate(4deg)}100%{transform:translateY(0)}}
@keyframes pn1{0%,16%{transform:translateY(0) rotate(0);animation-timing-function:cubic-bezier(.6,0,.3,1)}26%,94%{transform:translateY(-112%) rotate(-3deg)}100%{transform:translateY(0)}}

/* frame: a double gold frame draws itself around the card, corners bloom */
.mo-frame .petals .frm{inset:0;width:100%;height:100%;overflow:visible}
.mo-frame .petals .frm rect{fill:none;vector-effect:non-scaling-stroke;stroke-dasharray:100 100;stroke-dashoffset:100}
.mo-frame .petals .frm{filter:drop-shadow(0 0 .12em rgba(255,236,190,.9)) drop-shadow(0 .05em .1em rgba(90,60,20,.35))}.mo-frame .petals .frm .f1{stroke-width:3}.mo-frame .petals .frm .f2{stroke-width:1.4}
.mo-play.mo-frame .petals .frm .f1{animation:fdraw var(--cyc) both}
.mo-play.mo-frame .petals .frm .f2{animation:fdraw var(--cyc) both;animation-delay:.35s}
@keyframes fdraw{0%,3%{stroke-dashoffset:100;opacity:1;animation-timing-function:cubic-bezier(.55,0,.35,1)}26%,90%{stroke-dashoffset:0;opacity:1}97%,100%{stroke-dashoffset:0;opacity:0}}
.mo-frame .petals .fc{width:3em;height:3em;margin:-1.5em;background:linear-gradient(135deg,#F6E3B0,#C99A3B);transform:rotate(45deg) scale(0);box-shadow:0 0 1em rgba(233,200,120,.8)}
.mo-play.mo-frame .petals .fc{animation:fcorner var(--cyc) both}
@keyframes fcorner{0%,24%{transform:rotate(45deg) scale(0);animation-timing-function:cubic-bezier(.3,0,.2,1)}32%,90%{transform:rotate(45deg) scale(.6)}97%,100%{transform:rotate(45deg) scale(0)}}
.mo-frame .petals .fglow{inset:0;box-shadow:inset 0 0 3em rgba(240,210,140,.55);opacity:0}
.mo-play.mo-frame .petals .fglow{animation:fglow var(--cyc) ease-in-out both}
@keyframes fglow{0%,24%{opacity:0}34%{opacity:1}60%{opacity:.35}80%{opacity:.8}100%{opacity:0}}

/* tatreez: cross-stitch borders are stitched around the card */
.mo-tatreez .petals .ts{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='8' viewBox='0 0 16 8'%3E%3Cpath d='M1 1l6 6M7 1L1 7' stroke='%23A3262A' stroke-width='1.6' stroke-linecap='round'/%3E%3Cpath d='M9 1l6 6M15 1l-6 6' stroke='%233F6B45' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");background-size:2.2em 1.1em;opacity:1;filter:drop-shadow(0 0 .1em rgba(255,255,255,.9))}
.mo-tatreez .petals .ts.t,.mo-tatreez .petals .ts.b{left:2.5%;right:2.5%;height:1.1em;background-repeat:repeat-x}
.mo-tatreez .petals .ts.l,.mo-tatreez .petals .ts.r{top:calc(1.6% + 1.1em);bottom:calc(1.6% + 1.1em);width:1.1em;background-size:1.1em 2.2em;background-repeat:repeat-y;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='16' viewBox='0 0 8 16'%3E%3Cpath d='M1 1l6 6M7 1L1 7' stroke='%23A3262A' stroke-width='1.6' stroke-linecap='round'/%3E%3Cpath d='M1 9l6 6M7 9l-6 6' stroke='%233F6B45' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E")}
.mo-tatreez .petals .ts.t{top:1.6%;transform-origin:100% 50%}
.mo-tatreez .petals .ts.b{bottom:1.6%;transform-origin:0 50%}
.mo-tatreez .petals .ts.l{left:2.5%;transform-origin:50% 0}
.mo-tatreez .petals .ts.r{right:2.5%;transform-origin:50% 100%}
.mo-play.mo-tatreez .petals .ts.t{animation:tzx var(--cyc) steps(16,end) both}
.mo-play.mo-tatreez .petals .ts.l{animation:tzy var(--cyc) steps(24,end) both;animation-delay:calc(var(--cyc) * .05)}
.mo-play.mo-tatreez .petals .ts.b{animation:tzx var(--cyc) steps(16,end) both;animation-delay:calc(var(--cyc) * .1)}
.mo-play.mo-tatreez .petals .ts.r{animation:tzy var(--cyc) steps(24,end) both;animation-delay:calc(var(--cyc) * .15)}
@keyframes tzx{0%{transform:scaleX(0);opacity:1}10%,74%{transform:scaleX(1);opacity:1}80%,100%{transform:scaleX(1);opacity:0}}
@keyframes tzy{0%{transform:scaleY(0);opacity:1}10%,68%{transform:scaleY(1);opacity:1}74%,100%{transform:scaleY(1);opacity:0}}
.mo-tatreez .petals i.st{width:1em;height:1em;opacity:0;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath d='M1 1l6 6M7 1L1 7' stroke='%23A3262A' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");animation:tw var(--d,3s) ease-in-out infinite}
.mo-tatreez .petals i.st.g{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath d='M1 1l6 6M7 1L1 7' stroke='%233F6B45' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E")}


/* ---------- light ---------- */
.petals i.tw{width:1em;height:1em;background:radial-gradient(circle,#FFFBEA 0,#F4D27C 60%);filter:drop-shadow(0 0 .25em rgba(255,240,200,.95));-webkit-clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);opacity:0;animation:tw var(--d,2.6s) ease-in-out infinite}
@keyframes tw{0%,100%{opacity:0;transform:scale(.3) rotate(0)}50%{opacity:1;transform:scale(1.15) rotate(45deg)}}

/* golddust: soft gold glitter snowing, a shimmer sweeps the card twice */
.mo-golddust .petals i.gd{top:-4%;border-radius:50%;background:radial-gradient(circle,#FFFDF2 0,#F3D27E 30%,#D9A93E 52%,rgba(217,169,62,0) 72%);filter:drop-shadow(0 0 .2em rgba(255,226,150,.9));opacity:0;animation:gfall var(--d,9s) linear infinite}
.mo-golddust .petals i.gd.far{filter:blur(.1em)}
@keyframes gfall{0%{opacity:0;transform:translate(0,0)}10%{opacity:1}50%{transform:translate(var(--sx),calc(var(--sh,551px) * .55))}90%{opacity:.9}100%{opacity:0;transform:translate(calc(var(--sx) * -.4),calc(var(--sh,551px) * 1.1))}}
.mo-golddust .petals .sweep,.mo-shine .petals .gloss{top:-30%;bottom:-30%;left:0;width:55%;opacity:0;background:linear-gradient(100deg,rgba(255,240,200,0) 15%,rgba(255,247,222,.75) 50%,rgba(255,240,200,0) 85%);mix-blend-mode:screen}
.mo-play.mo-golddust .petals .sweep{animation:sweep var(--cyc) cubic-bezier(.45,0,.55,1) both}
@keyframes sweep{0%,8%{opacity:1;transform:translateX(230%) skewX(-16deg)}28%{opacity:1;transform:translateX(-140%) skewX(-16deg)}29%,59%{opacity:0;transform:translateX(230%) skewX(-16deg)}60%{opacity:1;transform:translateX(230%) skewX(-16deg)}80%,100%{opacity:1;transform:translateX(-140%) skewX(-16deg)}}

/* shine: a wide mirror-gloss band sweeps across the card, glints catch the corners */
.mo-shine .petals .gloss{width:62%;mix-blend-mode:normal;background:linear-gradient(105deg,rgba(255,255,255,0) 18%,rgba(255,255,255,.18) 38%,rgba(255,255,255,.7) 49%,rgba(255,255,255,.9) 50%,rgba(255,255,255,.7) 51%,rgba(255,255,255,.18) 62%,rgba(255,255,255,0) 82%)}
.mo-shine .petals .gloss.b{width:14%;background:linear-gradient(105deg,rgba(255,255,255,0),rgba(255,255,255,.55) 50%,rgba(255,255,255,0))}
.mo-play.mo-shine .petals .gloss{animation:gloss var(--cyc) cubic-bezier(.55,0,.35,1) both}
.mo-play.mo-shine .petals .gloss.b{animation-delay:.35s}
@keyframes gloss{0%,4%{opacity:1;transform:translateX(200%) skewX(-18deg)}22%{opacity:1;transform:translateX(-160%) skewX(-18deg)}23%,57%{opacity:0;transform:translateX(200%) skewX(-18deg)}58%{opacity:1;transform:translateX(200%) skewX(-18deg)}74%,100%{opacity:1;transform:translateX(-160%) skewX(-18deg)}}
.mo-shine .petals i.gl{width:2.4em;height:2.4em;margin:-1.2em;background:radial-gradient(circle,#fff 0,#FFF3D0 35%,rgba(255,240,200,0) 70%);-webkit-clip-path:polygon(50% 0,56% 44%,100% 50%,56% 56%,50% 100%,44% 56%,0 50%,44% 44%);clip-path:polygon(50% 0,56% 44%,100% 50%,56% 56%,50% 100%,44% 56%,0 50%,44% 44%);opacity:0;animation:glint 3.2s ease-in-out infinite}
@keyframes glint{0%,100%{opacity:0;transform:scale(.2) rotate(0)}45%{opacity:1;transform:scale(1) rotate(30deg)}70%{opacity:0;transform:scale(.4) rotate(60deg)}}

/* lightrays: god-rays fan out from behind the top of the card */
.mo-lightrays .petals .rays{left:50%;top:-12%;width:240%;aspect-ratio:1;margin-left:-120%;margin-top:-120%;border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(255,226,160,0) 0deg 5deg,rgba(255,215,135,.7) 7.5deg,rgba(255,226,160,0) 10deg 16deg);-webkit-mask:radial-gradient(circle,#000 8%,rgba(0,0,0,.6) 30%,rgba(0,0,0,0) 52%);mask:radial-gradient(circle,#000 8%,rgba(0,0,0,.6) 30%,rgba(0,0,0,0) 52%);opacity:0}
.mo-play.mo-lightrays .petals .rays{animation:rays var(--cyc) cubic-bezier(.45,0,.55,1) both}
@keyframes rays{0%{opacity:0;transform:rotate(-14deg) scale(.6)}20%{opacity:1;transform:rotate(-4deg) scale(1)}100%{opacity:.75;transform:rotate(14deg) scale(1.05)}}
.mo-lightrays .petals .rayglow{left:50%;top:-14%;width:120%;aspect-ratio:1;margin-left:-60%;border-radius:50%;background:radial-gradient(circle,rgba(255,240,200,.85),rgba(255,224,160,.35) 35%,rgba(255,224,160,0) 65%);opacity:0}
.mo-play.mo-lightrays .petals .rayglow{animation:rayglow var(--cyc) ease both}
@keyframes rayglow{0%{opacity:0}18%{opacity:1}60%{opacity:.6}100%{opacity:.85}}
.mo-lightrays .petals i.mote{border-radius:50%;background:radial-gradient(circle,#FFFDF2 0,#F2CF7A 40%,rgba(242,207,122,0) 70%);opacity:0;animation:mote var(--d,6s) ease-in-out infinite}
@keyframes mote{0%,100%{opacity:0;transform:translate(0,0)}50%{opacity:1;transform:translate(1.5em,-3em)}}

/* lightleak: warm flares stream across while the picture pulls into focus */
.mo-lightleak .petals .lk{left:-40%;top:-20%;width:170%;height:80%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,180,110,.75),rgba(255,150,130,.3) 55%,rgba(255,160,140,0) 100%);mix-blend-mode:screen;animation:leak var(--d,7s) ease-in-out infinite alternate}
.mo-lightleak .petals .lk.b{left:-20%;top:50%;background:radial-gradient(closest-side,rgba(255,236,190,.7),rgba(255,214,160,.25) 55%,rgba(255,214,160,0) 100%)}
@keyframes leak{0%{opacity:.35;transform:translate(-35%,-10%) rotate(-10deg)}100%{opacity:.95;transform:translate(25%,14%) rotate(8deg)}}
.mo-lightleak .petals .lkflash{inset:0;background:linear-gradient(120deg,rgba(255,200,140,.85),rgba(255,240,210,.4) 50%,rgba(255,170,150,.7));mix-blend-mode:screen;opacity:0}
.mo-play.mo-lightleak .petals .lkflash{animation:lkflash var(--cyc) ease-out both}
@keyframes lkflash{0%{opacity:1}22%,100%{opacity:0}}

/* kenburns: from a close detail the camera pulls back to the whole card, bokeh drifts */
.mo-kenburns .petals i.bok{border-radius:50%;background:radial-gradient(circle,rgba(255,236,190,.55),rgba(250,220,160,.25) 55%,rgba(250,220,160,0) 72%);box-shadow:inset 0 0 0 .08em rgba(255,240,205,.5);animation:bok var(--d,9s) ease-in-out infinite alternate}
@keyframes bok{0%{opacity:.2;transform:translate(0,0) scale(.85)}100%{opacity:.9;transform:translate(-1.6em,-2.6em) scale(1.2)}}
.mo-kenburns .petals .vig{inset:0;background:radial-gradient(ellipse at 50% 45%,rgba(0,0,0,0) 50%,rgba(40,25,10,.32) 100%);opacity:0}
.mo-play.mo-kenburns .petals .vig{animation:vig var(--cyc) ease both}
@keyframes vig{0%{opacity:1}40%,100%{opacity:.35}}

/* ripple: soft rings of light spread from the centre like water */
.mo-ripple .petals i.rp{left:50%;top:45%;width:30em;height:30em;margin:-15em;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,0) 54%,rgba(255,255,255,.85) 61%,rgba(230,205,150,.45) 64%,rgba(255,255,255,.3) 68%,rgba(255,255,255,0) 72%);opacity:0;transform:scale(.05);animation:ripple 4.4s cubic-bezier(.2,.6,.35,1) infinite}
@keyframes ripple{0%{opacity:0;transform:scale(.05)}12%{opacity:1}100%{opacity:0;transform:scale(1.5)}}
.mo-ripple .petals .rpglow{left:50%;top:45%;width:16em;height:16em;margin:-8em;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.85),rgba(255,248,228,0) 70%);opacity:0}
.mo-play.mo-ripple .petals .rpglow{animation:rpglow var(--cyc) ease both}
@keyframes rpglow{0%{opacity:0;transform:scale(.3)}12%{opacity:1;transform:scale(1)}40%,100%{opacity:0;transform:scale(2.2)}}

/* parallax: a glossy reflection slides as the card tilts */
.mo-parallax .petals .refl{top:-20%;bottom:-20%;left:-60%;width:60%;background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.45) 50%,rgba(255,255,255,0));mix-blend-mode:soft-light}
.mo-play.mo-parallax .petals .refl{animation:refl var(--cyc) cubic-bezier(.45,0,.55,1) both}
@keyframes refl{0%{transform:translateX(0) skewX(-12deg)}30%{transform:translateX(260%) skewX(-12deg)}62%{transform:translateX(60%) skewX(-12deg)}100%{transform:translateX(230%) skewX(-12deg)}}

/* stars: a night veil with twinkling stars and two shooting stars */
.mo-stars .petals .night{inset:0;background:linear-gradient(180deg,rgba(20,24,52,.55),rgba(20,24,52,0) 55%);opacity:0}
.mo-play.mo-stars .petals .night{animation:night var(--cyc) ease both}
@keyframes night{0%{opacity:1}30%,100%{opacity:.25}}
.mo-stars .petals .shoot{top:10%;right:-30%;width:9em;height:.2em;border-radius:.2em;background:linear-gradient(90deg,rgba(255,250,230,0),#FFF6D8);box-shadow:0 0 .6em rgba(255,246,216,.9);opacity:0}
.mo-stars .petals .shoot.b{top:30%}
.mo-play.mo-stars .petals .shoot{animation:shoot var(--cyc) cubic-bezier(.4,0,.8,.6) both}
.mo-play.mo-stars .petals .shoot.b{animation-delay:calc(var(--cyc) * .32)}
@keyframes shoot{0%,6%{opacity:0;transform:translate(0,0) rotate(-26deg)}8%{opacity:1}20%,100%{opacity:0;transform:translate(-46em,22em) rotate(-26deg)}}

/* moon: a glowing crescent rises over the card */
.mo-moon .petals .crs{left:64%;top:9%;width:7.5em;height:7.5em;border-radius:50%;box-shadow:-1.9em 1em 0 0 #F6DFA2;filter:drop-shadow(0 0 1.1em rgba(246,223,162,.9))}
.mo-moon .petals .mhalo{left:52%;top:4%;width:16em;height:16em;border-radius:50%;background:radial-gradient(circle,rgba(255,236,180,.55),rgba(255,236,180,0) 65%)}
.mo-play.mo-moon .petals .crs,.mo-play.mo-moon .petals .mhalo{animation:moonrise var(--cyc) both}
@keyframes moonrise{0%{opacity:0;transform:translate(-9em,22em) rotate(-25deg);animation-timing-function:cubic-bezier(.3,0,.2,1)}30%{opacity:1;transform:translate(0,0) rotate(0)}100%{opacity:1;transform:translate(.6em,-.8em) rotate(4deg)}}

/* lanterns: hanging lanterns lower in and swing gently, glowing */
.mo-lanterns .petals .lw{top:0;width:3.2em;height:calc(var(--len) + 5em);margin-left:-1.6em}
.mo-play.mo-lanterns .petals .lw{animation:landrop var(--cyc) both}
@keyframes landrop{0%{transform:translateY(-110%);animation-timing-function:cubic-bezier(.3,0,.2,1)}16%,92%{transform:translateY(0)}100%{transform:translateY(-110%)}}
.mo-lanterns .petals .lan{left:0;top:0;width:3.2em;height:100%;transform-origin:50% 0;animation:swing var(--d,3.2s) cubic-bezier(.45,0,.55,1) infinite alternate}
@keyframes swing{from{transform:rotate(-7deg)}to{transform:rotate(7deg)}}
.mo-lanterns .petals .lan::before{content:"";position:absolute;left:1.55em;top:0;width:.1em;height:var(--len);background:linear-gradient(rgba(184,145,74,.2),#B8914A)}
.mo-lanterns .petals .lan b{left:.3em;top:calc(var(--len) + .6em);width:2.6em;height:3.9em;border-radius:1em 1em .7em .7em;background:radial-gradient(ellipse at 50% 55%,#FFF4C9 0,#F5C969 35%,#B8782E 100%);box-shadow:0 0 1.6em .5em rgba(255,200,100,.5);animation:glow 1.9s ease-in-out infinite alternate}
.mo-lanterns .petals .lan b::before{content:"";position:absolute;left:.45em;right:.45em;top:-.7em;height:.8em;border-radius:.3em .3em 0 0;background:#9C7A3C}
.mo-lanterns .petals .lan b::after{content:"";position:absolute;left:.55em;right:.55em;bottom:-.45em;height:.45em;border-radius:0 0 .3em .3em;background:#9C7A3C}
@keyframes glow{from{opacity:.8;filter:brightness(.95)}to{opacity:1;filter:brightness(1.12)}}

/* ---------- particles ---------- */
/* petals: rose petals tumble down in 3D */
.mo-petals .petals i.pt{top:-6%;width:calc(1.5em * var(--k,1));height:calc(1.05em * var(--k,1));border-radius:80% 0 80% 0;background:linear-gradient(135deg,#F6E3B0,#D4A852 60%,#A9823E);box-shadow:0 .1em .3em rgba(120,80,40,.2);opacity:0;animation:ptfall var(--d,9s) linear infinite}
.mo-petals .petals i.pt.rose{background:linear-gradient(135deg,#FDEBEB,#EBA9B1 55%,#C4707C)}
.mo-petals .petals i.pt.ivory{background:linear-gradient(135deg,#FFFEF9,#F3E8D3 60%,#D8C49C)}
@keyframes ptfall{0%{opacity:0;transform:translate(0,0) rotate3d(1,var(--rx),.3,0deg)}8%{opacity:1}33%{transform:translate(calc(var(--sx) * .6),calc(var(--sh,551px) * .4)) rotate3d(1,var(--rx),.3,200deg)}66%{transform:translate(calc(var(--sx) * -.3),calc(var(--sh,551px) * .8)) rotate3d(1,var(--rx),.3,400deg)}92%{opacity:1}100%{opacity:0;transform:translate(var(--sx),calc(var(--sh,551px) * 1.15)) rotate3d(1,var(--rx),.3,600deg)}}

/* jasmine: white jasmine blossoms drift diagonally, slowly turning */
.mo-jasmine .petals i.js{top:-8%;width:calc(2.4em * var(--k,1));height:calc(2.4em * var(--k,1));background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-12 -12 24 24'%3E%3Cg fill='%23FFFFFF' stroke='%23E8DCC4' stroke-width='.4'%3E%3Cellipse cx='0' cy='-6' rx='3' ry='5.6'/%3E%3Cellipse cx='0' cy='-6' rx='3' ry='5.6' transform='rotate(72)'/%3E%3Cellipse cx='0' cy='-6' rx='3' ry='5.6' transform='rotate(144)'/%3E%3Cellipse cx='0' cy='-6' rx='3' ry='5.6' transform='rotate(216)'/%3E%3Cellipse cx='0' cy='-6' rx='3' ry='5.6' transform='rotate(288)'/%3E%3C/g%3E%3Ccircle r='1.8' fill='%23E9D58A'/%3E%3C/svg%3E");filter:drop-shadow(0 .15em .25em rgba(100,80,50,.25));opacity:0;animation:jfall var(--d,10s) linear infinite}
.mo-jasmine .petals i.js.far{filter:blur(.08em) drop-shadow(0 .1em .2em rgba(100,80,50,.2));opacity:.7}
@keyframes jfall{0%{opacity:0;transform:translate(0,0) rotate(0)}10%{opacity:.95}50%{transform:translate(var(--sx),calc(var(--sh,551px) * .55)) rotate(160deg)}90%{opacity:.95}100%{opacity:0;transform:translate(calc(var(--sx) * 1.6),calc(var(--sh,551px) * 1.15)) rotate(320deg)}}

/* bubbles: iridescent soap bubbles float up */
.mo-bubbles .petals i.bb{bottom:-10%;border-radius:50%;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.95) 0 7%,rgba(255,255,255,0) 16%),radial-gradient(circle,rgba(255,255,255,.12) 50%,rgba(170,205,245,.6) 66%,rgba(245,175,215,.75) 76%,rgba(255,240,190,.7) 81%,rgba(255,255,255,0) 84%);box-shadow:0 .1em .4em rgba(120,110,150,.18);opacity:0;animation:bubble var(--d,9s) cubic-bezier(.45,0,.55,1) infinite}
@keyframes bubble{0%{opacity:0;transform:translate(0,0) scale(.7)}10%{opacity:1}35%{transform:translate(var(--sx),calc(var(--sh,551px) * -.4)) scale(.9)}70%{transform:translate(calc(var(--sx) * -1),calc(var(--sh,551px) * -.8)) scale(1)}90%{opacity:1}100%{opacity:0;transform:translate(0,calc(var(--sh,551px) * -1.15)) scale(1.05)}}

/* dandelion: seeds lift and sail on the breeze */
.mo-dandelion .petals i.dd{width:calc(3.2em * var(--k,1));height:calc(4.2em * var(--k,1));background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-13 -13 26 34'%3E%3Cg stroke='%23B59C6E' stroke-width='.6' stroke-linecap='round' opacity='.95'%3E%3Cpath d='M0 0L0-11M0 0L5.5-9.5M0 0L9.5-5.5M0 0L11 0M0 0L-5.5-9.5M0 0L-9.5-5.5M0 0L-11 0M0 0L3-10.6M0 0L-3-10.6M0 0L8-7.8M0 0L-8-7.8'/%3E%3C/g%3E%3Cpath d='M0 0L0 18' stroke='%23A88E5F' stroke-width='.7'/%3E%3Cellipse cx='0' cy='19' rx='.9' ry='1.6' fill='%23B8A27A'/%3E%3C/svg%3E");filter:drop-shadow(0 0 .15em rgba(255,255,255,.9));opacity:0;animation:seed var(--d,10s) cubic-bezier(.45,0,.55,1) infinite}
@keyframes seed{0%{opacity:0;transform:translate(0,0) rotate(-10deg)}12%{opacity:1}50%{transform:translate(9em,calc(var(--sh,551px) * -.35)) rotate(12deg)}88%{opacity:1}100%{opacity:0;transform:translate(17em,calc(var(--sh,551px) * -.7)) rotate(-8deg)}}

/* doves: white doves glide across, a few feathers drift down */
.mo-doves .petals .dvw{right:0;width:6em;height:4em;animation:dove var(--d,9s) linear infinite}
@keyframes dove{0%{opacity:0;transform:translate(6em,1em) scale(var(--k,1))}8%{opacity:1}92%{opacity:1}100%{opacity:0;transform:translate(calc(-1 * var(--sw,310px) - 2em),-3em) scale(var(--k,1))}}
.mo-doves .petals .dvw b{inset:0;background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 40'%3E%3Cpath d='M2 22c10-2 18 0 24 6 2-10-2-20-12-26 12 2 20 12 21 24 6-8 15-12 24-10-8 3-14 9-16 17-2 5-8 7-15 6-9-1-17-7-26-17z' fill='%23FFFFFF' stroke='%23C9B48A' stroke-width='1'/%3E%3C/svg%3E");filter:drop-shadow(0 .3em .4em rgba(80,60,30,.25));transform-origin:50% 70%;animation:flap .55s ease-in-out infinite alternate}
@keyframes flap{from{transform:scaleY(1)}to{transform:scaleY(.5) translateY(.2em)}}
.mo-doves .petals i.fe{top:-6%;width:1.1em;height:2.4em;border-radius:50% 50% 50% 50%/80% 80% 20% 20%;background:linear-gradient(90deg,#FFFFFF,#EFE8DC);box-shadow:0 .1em .2em rgba(100,80,50,.2);opacity:0;animation:feather var(--d,9s) ease-in-out infinite}
@keyframes feather{0%{opacity:0;transform:translate(0,0) rotate(-30deg)}10%{opacity:.95}30%{transform:translate(var(--sx),calc(var(--sh,551px) * .3)) rotate(30deg)}60%{transform:translate(calc(var(--sx) * -1),calc(var(--sh,551px) * .65)) rotate(-25deg)}90%{opacity:.9}100%{opacity:0;transform:translate(0,calc(var(--sh,551px) * 1.1)) rotate(20deg)}}

/* balloons: glossy balloons rise and sway */
.mo-balloons .petals .bl{bottom:-18%;width:calc(3em * var(--k,1));height:calc(3.7em * var(--k,1));animation:rise var(--d,10s) linear infinite}
.mo-balloons .petals .bl b{inset:0;border-radius:50% 50% 48% 48%/55% 55% 45% 45%;background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.8) 0 7%,var(--c) 38%,var(--c2) 100%);box-shadow:inset -.2em -.3em .6em rgba(0,0,0,.08),0 .3em .6em rgba(80,60,40,.15)}
.mo-balloons .petals .bl b::after{content:"";position:absolute;left:50%;top:100%;width:.1em;height:3.2em;background:rgba(120,100,80,.55)}
@keyframes rise{0%{transform:translate(0,0) rotate(-4deg)}25%{transform:translate(1em,calc(var(--sh,551px) * -.3)) rotate(4deg)}50%{transform:translate(-.6em,calc(var(--sh,551px) * -.6)) rotate(-3deg)}75%{transform:translate(.8em,calc(var(--sh,551px) * -.9)) rotate(3deg)}100%{transform:translate(-.4em,calc(var(--sh,551px) * -1.25)) rotate(-2deg)}}

/* confetti: paper confetti tumbling in 3D */
.petals i.cf{top:-6%;width:.8em;height:1.3em;border-radius:.08em;opacity:0;animation:cf var(--d,6s) linear infinite}
.petals i.cf.o{width:1em;height:1em;border-radius:50%}
@keyframes cf{0%{opacity:0;transform:translate(0,0) rotate3d(1,var(--rx,.5),0,0deg)}8%{opacity:1}50%{transform:translate(var(--sx),calc(var(--sh,551px) * .55)) rotate3d(1,var(--rx,.5),.4,540deg)}92%{opacity:1}100%{opacity:0;transform:translate(calc(var(--sx) * .5),calc(var(--sh,551px) * 1.12)) rotate3d(1,var(--rx,.5),.4,1080deg)}}

/* fireworks: gold bursts bloom over the card */
.mo-fireworks .petals .fw{width:0;height:0;animation:fwcyc 3.6s linear infinite both}
.mo-fireworks .petals .fw i{left:0;top:0;width:1.8em;height:.3em;margin:-.15em 0 0 0;border-radius:.3em;transform-origin:0 50%;box-shadow:0 0 .45em .05em rgba(255,214,140,.9);opacity:0;animation:spark 3.6s cubic-bezier(.15,.7,.3,1) infinite;animation-delay:inherit}
@keyframes spark{0%{opacity:0;transform:rotate(var(--a)) translateX(0) scaleX(.3)}4%{opacity:1}30%{opacity:1;transform:rotate(var(--a)) translateX(var(--rr)) translateY(.4em) scaleX(1)}55%,100%{opacity:0;transform:rotate(var(--a)) translateX(calc(var(--rr) * 1.12)) translateY(1.6em) scaleX(.2)}}
@keyframes fwcyc{0%,100%{opacity:1}}
.mo-fireworks .petals .fw::before{content:"";position:absolute;left:-4em;top:-4em;width:8em;height:8em;border-radius:50%;background:radial-gradient(circle,rgba(255,236,180,.9),rgba(255,214,140,.35) 40%,rgba(255,214,140,0) 70%);opacity:0;animation:fwflash 3.6s ease-out infinite;animation-delay:inherit}
@keyframes fwflash{0%{opacity:0;transform:scale(.2)}5%{opacity:1;transform:scale(.6)}30%,100%{opacity:0;transform:scale(1.4)}}

/* caps: graduation caps tossed up */
.mo-caps .petals .cw{bottom:-10%;width:5.2em;height:4em;animation:toss var(--d,4.4s) cubic-bezier(.3,.5,.5,1) infinite}
.mo-caps .petals .cw b{left:.8em;top:-1em;width:3.6em;height:3.6em;background:linear-gradient(135deg,#34334A,#14131D);transform:scaleY(.45) rotate(45deg);box-shadow:0 0 0 .17em #D9B562;z-index:1}
.mo-caps .petals .cw b::after{content:"";position:absolute;left:1.5em;top:1.5em;width:.65em;height:.65em;border-radius:50%;background:#E9C878}
.mo-caps .petals .cw i{left:1.45em;top:.9em;width:2.3em;height:1.35em;border-radius:0 0 .9em .9em;background:#1C1B27}
.mo-caps .petals .cw u{position:absolute;left:2.5em;top:.8em;width:.2em;height:2em;background:#E9C878;transform-origin:50% 0;transform:rotate(28deg);z-index:2}
@keyframes toss{0%{opacity:0;transform:translate(0,0) rotate(0)}6%{opacity:1}48%{transform:translate(var(--tx),calc(-1 * var(--h))) rotate(var(--r))}92%{opacity:1}100%{opacity:0;transform:translate(calc(var(--tx) * 1.7),2em) rotate(calc(var(--r) * 2))}}

/* sparkle: a comet of light traces the name (right to left), leaving a sparkling trail */
.mo-sparkle .petals .cmt{right:-10%;top:var(--ny,38%);width:5em;height:5em;margin:-2.5em -2.5em 0 0;border-radius:50%;background:radial-gradient(circle,#FFFFFF 0,#FFF4D2 12%,rgba(240,196,100,.75) 28%,rgba(240,196,100,.25) 48%,rgba(240,196,100,0) 70%);opacity:0}
.mo-play.mo-sparkle .petals .cmt{animation:comet var(--cyc) both}
@keyframes comet{0%,3%{opacity:0;transform:translate(0,.8em);animation-timing-function:cubic-bezier(.45,0,.55,1)}6%{opacity:1}12%{transform:translate(calc(var(--sw,310px) * -.38),-1.2em)}18%{transform:translate(calc(var(--sw,310px) * -.72),1em)}24%{opacity:1;transform:translate(calc(var(--sw,310px) * -1.15),-.4em)}25%,100%{opacity:0;transform:translate(calc(var(--sw,310px) * -1.15),-.4em)}}
.mo-sparkle .petals i.trl{top:var(--ny,38%);background:radial-gradient(circle,#FFF8E0 0,#E7B858 55%,#C9962E);filter:drop-shadow(0 0 .3em rgba(240,200,110,.95));-webkit-clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);opacity:0}
.mo-play.mo-sparkle .petals i.trl{animation:trail 2.6s ease-out both,trailtw 2.2s ease-in-out 3s infinite}
@keyframes trail{0%{opacity:0;transform:scale(0) rotate(0)}15%{opacity:1;transform:scale(1.6) rotate(30deg)}100%{opacity:.35;transform:scale(.6) rotate(90deg)}}
@keyframes trailtw{0%,100%{opacity:.15;transform:scale(.4)}50%{opacity:.9;transform:scale(1) rotate(45deg)}}

/* write: a gold nib glides along as each line is inked right to left */
.mo-write .petals .nib{right:6%;top:var(--ny,38%);width:3.4em;height:3.4em;margin-top:-1.7em;border-radius:50%;background:radial-gradient(circle,#FFFFFF 0,#F7DC92 25%,rgba(226,180,80,.55) 45%,rgba(226,180,80,0) 70%);opacity:0}
.mo-play.mo-write .petals .nib{animation:nib var(--cyc) both}
@keyframes nib{0%,8%{opacity:0;transform:translateX(0)}10%{opacity:1}26%{opacity:1;transform:translateX(calc(var(--sw,310px) * -.86))}28%,100%{opacity:0;transform:translateX(calc(var(--sw,310px) * -.86))}}
.mo-write .petals i.ink{width:.45em;height:.45em;border-radius:50%;background:#E9C878;box-shadow:0 0 .5em .1em rgba(233,200,120,.85);opacity:0;animation:ink var(--d,5s) ease-in-out infinite}
@keyframes ink{0%,100%{opacity:0;transform:scale(.3)}50%{opacity:.95;transform:scale(1.3)}}

/* hearts: small translucent hearts float up through a soft glow */
.mo-hearts .petals i.ht{bottom:-6%;width:calc(1.7em * var(--k,1));height:calc(1.55em * var(--k,1));background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 29'%3E%3Cpath d='M16 29S0 18.6 0 8.5A8.3 8.3 0 0 1 16 5a8.3 8.3 0 0 1 16 3.5C32 18.6 16 29 16 29z' fill='%23E3A0A9'/%3E%3C/svg%3E");opacity:0;animation:hrise var(--d,8s) cubic-bezier(.45,0,.55,1) infinite}
.mo-hearts .petals i.ht.g{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 29'%3E%3Cpath d='M16 29S0 18.6 0 8.5A8.3 8.3 0 0 1 16 5a8.3 8.3 0 0 1 16 3.5C32 18.6 16 29 16 29z' fill='%23DDB86A'/%3E%3C/svg%3E")}
@keyframes hrise{0%{opacity:0;transform:translate(0,0) scale(.8)}12%{opacity:.85}50%{transform:translate(var(--sx),calc(var(--sh,551px) * -.55)) scale(1)}88%{opacity:.6}100%{opacity:0;transform:translate(calc(var(--sx) * -.5),calc(var(--sh,551px) * -1.1)) scale(.9)}}
.mo-hearts .petals .hglow{inset:0;background:radial-gradient(ellipse at 50% 100%,rgba(240,170,185,.4),rgba(240,170,185,0) 60%);opacity:0}
.mo-play.mo-hearts .petals .hglow{animation:hglow var(--cyc) ease-in-out both}
@keyframes hglow{0%{opacity:0}25%{opacity:1}70%{opacity:.5}100%{opacity:.8}}

@media (prefers-reduced-motion:reduce){.is-video .petals *{animation-duration:0s!important;animation-iteration-count:1!important}}
#home{overflow-x:hidden;overflow-x:clip}

/* ================= v6e: 11 wedding presets (fixed-second reveals, then the lines) ================= */
/* cameras */
@keyframes cam-glide{0%{scale:1.5;translate:calc(var(--sw,310px) * 0) calc(var(--sh,551px) * -0.22);animation-timing-function:cubic-bezier(.45,0,.55,1)}62%{scale:1.5;translate:calc(var(--sw,310px) * -0.5) calc(var(--sh,551px) * -0.2);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1;translate:0 0}}
.is-video .mo-play.cam-glide .vbg{animation:cam-glide 2.5s both}
@keyframes cam-easel{0%,58%{scale:.9;translate:calc(var(--sw,310px) * 1.15) calc(var(--sh,551px) * .04);opacity:0;animation-timing-function:cubic-bezier(.22,.61,.36,1)}66%{opacity:1}100%{scale:1;translate:0 0;opacity:1}}
.is-video .mo-play.cam-glide .art{animation:cam-easel 2.6s both}
@keyframes cam-stairs{0%{scale:1.7;translate:calc(var(--sw,310px) * -0.35) calc(var(--sh,551px) * -0.7);animation-timing-function:cubic-bezier(.45,0,.55,1)}66%{scale:1.7;translate:calc(var(--sw,310px) * -0.35) calc(var(--sh,551px) * -0.05);animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{scale:1;translate:0 0}}
.is-video .mo-play.cam-stairs .vbg,.is-video .mo-play.cam-stairs .art{animation:cam-stairs 3.3s both}

/* doors: tall white panelled double doors unlatch, light spills through the seam, and they swing open */
.mo-doors .petals{perspective:70em}
.mo-doors .petals .dd{top:0;bottom:0;width:50%;background:linear-gradient(90deg,#FFFFFF,#F4F0E8 70%,#EAE3D6);box-shadow:inset 0 0 0 .35em #FFFFFF,inset 0 0 0 .45em rgba(201,165,92,.55)}
.mo-doors .petals .dd.l{left:0;transform-origin:0 50%}
.mo-doors .petals .dd.r{right:0;transform-origin:100% 50%;background:linear-gradient(270deg,#FFFFFF,#F4F0E8 70%,#EAE3D6)}
.mo-doors .petals .dd b,.mo-doors .petals .dd u{left:15%;right:15%;border:.14em solid rgba(201,165,92,.6);box-shadow:inset 0 0 0 .45em #FFFFFF,inset 0 0 0 .55em rgba(214,196,160,.55),0 .1em .4em rgba(120,95,55,.12);border-radius:.25em}
.mo-doors .petals .dd b.p1{top:6%;height:40%}
.mo-doors .petals .dd b.p2{top:49%;height:7%}
.mo-doors .petals .dd u{top:59%;bottom:5%}
.mo-doors .petals .dd.l::after,.mo-doors .petals .dd.r::after{content:"";position:absolute;top:47%;width:.55em;height:3.4em;border-radius:.3em;background:linear-gradient(90deg,#9C7430,#F1D891,#B8893A);box-shadow:0 .15em .3em rgba(80,55,20,.35)}
.mo-doors .petals .dd.l::after{right:7%}
.mo-doors .petals .dd.r::after{left:7%}
.mo-doors .petals .dglow{left:50%;top:0;bottom:0;width:1em;margin-left:-.5em;background:#FFFDF6;box-shadow:0 0 3em 2em rgba(255,248,226,.95);opacity:0}
.mo-play.mo-doors .petals .dd.l{animation:dd-l 2.4s both}
.mo-play.mo-doors .petals .dd.r{animation:dd-r 2.4s both}
.mo-play.mo-doors .petals .dglow{animation:dd-glow 2.8s ease both}
@keyframes dd-l{0%,12%{transform:rotateY(0)}17%{transform:rotateY(-4deg);animation-timing-function:cubic-bezier(.55,0,.25,1)}100%{transform:rotateY(-104deg)}}
@keyframes dd-r{0%,12%{transform:rotateY(0)}17%{transform:rotateY(4deg);animation-timing-function:cubic-bezier(.55,0,.25,1)}100%{transform:rotateY(104deg)}}
@keyframes dd-glow{0%{opacity:0}15%{opacity:1;width:1em;margin-left:-.5em}55%{opacity:.85;width:60%;margin-left:-30%}100%{opacity:0;width:100%;margin-left:-50%}}

/* archdoors: white arched doors in an ivory wall open outwards, then we walk through the doorway */
.mo-archdoors .petals .awrap{inset:0;perspective:60em;transform-origin:50% 62%}
.mo-archdoors .petals .awall{inset:0;width:100%;height:100%;filter:drop-shadow(0 0 .6em rgba(120,95,55,.18))}
.mo-archdoors .petals .ad{top:9.375%;bottom:0;width:38.9%;background:linear-gradient(180deg,#FFFFFF,#F3EEE5);box-shadow:inset 0 0 0 .3em #FFFFFF,inset 0 0 0 .42em rgba(201,165,92,.6)}
.mo-archdoors .petals .ad.l{left:11.1%;transform-origin:0 50%;border-top-left-radius:100% 24.1%}
.mo-archdoors .petals .ad.r{right:11.1%;transform-origin:100% 50%;border-top-right-radius:100% 24.1%}
.mo-archdoors .petals .ad b{left:16%;right:16%;top:24%;bottom:6%;border:.13em solid rgba(201,165,92,.55);border-radius:.3em;box-shadow:inset 0 0 0 .5em #FFFFFF,inset 0 0 0 .6em rgba(214,196,160,.5)}
.mo-archdoors .petals .ad b::after{content:"";position:absolute;top:34%;width:.6em;height:.6em;border-radius:50%;background:radial-gradient(circle at 35% 35%,#FBE7AE,#B8893A 70%)}
.mo-archdoors .petals .ad.l b::after{right:-1.5em}
.mo-archdoors .petals .ad.r b::after{left:-1.5em}
.mo-archdoors .petals .aglow{left:50%;top:30%;width:140%;aspect-ratio:1;margin-left:-70%;border-radius:50%;background:radial-gradient(circle,rgba(255,250,232,.95),rgba(255,244,214,.4) 40%,rgba(255,244,214,0) 66%);opacity:0}
.mo-play.mo-archdoors .petals .ad.l{animation:ad-l 1.9s both}
.mo-play.mo-archdoors .petals .ad.r{animation:ad-r 1.9s both}
.mo-play.mo-archdoors .petals .awrap{animation:ad-walk 2.7s both}
.mo-play.mo-archdoors .petals .aglow{animation:ad-glow 2.9s ease both}
@keyframes ad-l{0%,16%{transform:rotateY(0);animation-timing-function:cubic-bezier(.55,0,.3,1)}100%{transform:rotateY(98deg)}}
@keyframes ad-r{0%,16%{transform:rotateY(0);animation-timing-function:cubic-bezier(.55,0,.3,1)}100%{transform:rotateY(-98deg)}}
@keyframes ad-walk{0%,52%{transform:scale(1);opacity:1;animation-timing-function:cubic-bezier(.5,0,.6,1)}100%{transform:scale(1.9);opacity:0}}
@keyframes ad-glow{0%,12%{opacity:0}45%{opacity:1}100%{opacity:0}}

/* easel: the camera glides along the white hall, then the card slides onto its easel */
.mo-easel .petals .esweep{top:0;bottom:0;left:-60%;width:45%;background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,250,236,.55),rgba(255,255,255,0));opacity:0}
.mo-play.mo-easel .petals .esweep{animation:e-sweep 4.2s ease-in-out both}
@keyframes e-sweep{0%,60%{transform:translateX(0);opacity:0}70%{opacity:1}100%{transform:translateX(330%);opacity:0}}
.mo-easel .petals i.em,.mo-stairglide .petals i.em{border-radius:50%;background:radial-gradient(circle,#FFFDF2 0,#F2D58E 40%,rgba(242,213,142,0) 70%);opacity:0;animation:em-f var(--d,6s) ease-in-out infinite}
@keyframes em-f{0%,100%{opacity:0;transform:translate(0,0)}50%{opacity:.95;transform:translate(1em,-2.4em)}}

/* veil: a sheer tulle veil with a scalloped lace hem lifts away; crystal glints from the chandelier */
.mo-veil .petals{perspective:60em}
.mo-veil .petals .vlw{inset:0;transform-origin:50% 0}
.mo-veil .petals .vl{left:-8%;right:-8%;top:-2%;bottom:3%;background:radial-gradient(rgba(214,200,172,.4) 18%,rgba(255,255,255,0) 22%) 0 0/.55em .55em,linear-gradient(90deg,rgba(255,255,255,.62),rgba(255,255,255,.86) 18%,rgba(250,246,240,.6) 36%,rgba(255,255,255,.88) 56%,rgba(250,246,240,.62) 76%,rgba(255,255,255,.85));-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.mo-veil .petals .vl b{left:0;right:0;bottom:-1.1em;height:1.2em;background:radial-gradient(circle at 50% 0,rgba(255,255,255,.92) .5em,rgba(255,255,255,0) .56em) 0 0/1.2em 1.2em repeat-x}
.mo-play.mo-veil .petals .vlw{animation:vl-lift 2.4s both}
@keyframes vl-lift{0%,14%{transform:translateY(0) rotateX(0) scaleX(1);opacity:1;animation-timing-function:cubic-bezier(.5,0,.3,1)}100%{transform:translateY(-118%) rotateX(32deg) scaleX(1.12);opacity:.25}}
.mo-veil .petals i.vg{background:radial-gradient(circle,#FFFFFF 0,rgba(255,255,255,.9) 14%,rgba(220,232,255,0) 46%);opacity:0;animation:vg-tw var(--d,2.4s) ease-in-out infinite}
.mo-veil .petals i.vg::before,.mo-veil .petals i.vg::after{content:"";position:absolute;left:50%;top:-30%;width:.08em;height:160%;margin-left:-.04em;background:linear-gradient(180deg,rgba(255,255,255,0),#FFFFFF,rgba(255,255,255,0))}
.mo-veil .petals i.vg::after{transform:rotate(90deg)}
@keyframes vg-tw{0%,100%{opacity:0;transform:scale(.4) rotate(0)}50%{opacity:1;transform:scale(1) rotate(45deg)}}

/* windowlight: soft sun through a paned window drifts across the card while a sheer curtain sways */
.mo-windowlight .petals .wls{left:-35%;top:-25%;width:150%;height:130%;background:linear-gradient(90deg,rgba(110,80,40,.22),rgba(110,80,40,0) 16%,rgba(110,80,40,0) 84%,rgba(110,80,40,.22)),repeating-linear-gradient(90deg,rgba(110,80,40,0) 0 21%,rgba(110,80,40,.22) 21% 24%),repeating-linear-gradient(0deg,rgba(110,80,40,0) 0 29%,rgba(110,80,40,.2) 29% 32%);filter:blur(7px);mix-blend-mode:multiply;opacity:0;transform:skewX(-16deg) rotate(-7deg)}
.mo-windowlight .petals .wlw{left:-20%;top:-10%;width:120%;height:90%;background:radial-gradient(ellipse at 35% 35%,rgba(255,232,182,.55),rgba(255,232,182,0) 62%);mix-blend-mode:screen;opacity:0}
.mo-windowlight .petals .wlc{left:-10%;right:-10%;top:0;bottom:0;background:repeating-linear-gradient(90deg,rgba(120,92,58,0) 0 2.5em,rgba(120,92,58,.10) 3.6em,rgba(120,92,58,0) 4.8em);filter:blur(4px);mix-blend-mode:multiply;opacity:0}
.mo-play.mo-windowlight .petals .wls{animation:wl-drift var(--cyc) linear both}
.mo-play.mo-windowlight .petals .wlw{animation:wl-glow var(--cyc) ease-in-out both}
.mo-play.mo-windowlight .petals .wlc{animation:wl-sway var(--cyc) ease-in-out both}
@keyframes wl-drift{0%{opacity:0;transform:translate(-4%,-2%) skewX(-16deg) rotate(-7deg)}10%{opacity:1}92%{opacity:1}100%{opacity:0;transform:translate(9%,4%) skewX(-12deg) rotate(-5deg)}}
@keyframes wl-glow{0%{opacity:0;transform:translate(0,0)}12%{opacity:1}92%{opacity:.85}100%{opacity:0;transform:translate(14%,8%)}}
@keyframes wl-sway{0%{opacity:0;transform:translateX(0)}12%{opacity:1}50%{transform:translateX(2.5em)}92%{opacity:1}100%{opacity:0;transform:translateX(-1em)}}

/* palmshade: palm fronds' shadows sway softly across the card in warm sun */
.mo-palmshade .petals .pf{inset:0;width:100%;height:100%;filter:blur(3.5px);mix-blend-mode:multiply;opacity:0}
.mo-palmshade .petals .pf.a{transform-origin:100% 0}
.mo-palmshade .petals .pf.b{transform-origin:0 100%}
.mo-palmshade .petals .psun{right:-30%;top:-20%;width:110%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(255,236,190,.6),rgba(255,236,190,0) 65%);mix-blend-mode:screen;opacity:0}
.mo-play.mo-palmshade .petals .pf.a{animation:pf-a var(--cyc) ease-in-out both}
.mo-play.mo-palmshade .petals .pf.b{animation:pf-b var(--cyc) ease-in-out both}
.mo-play.mo-palmshade .petals .psun{animation:wl-glow var(--cyc) ease-in-out both}
@keyframes pf-a{0%{opacity:0;transform:rotate(-3deg)}12%{opacity:.3}35%{transform:rotate(2.5deg)}62%{transform:rotate(-2deg)}88%{opacity:.3;transform:rotate(2deg)}100%{opacity:0;transform:rotate(0)}}
@keyframes pf-b{0%{opacity:0;transform:rotate(2deg)}12%{opacity:.26}40%{transform:rotate(-3deg)}70%{transform:rotate(1.5deg)}88%{opacity:.26}100%{opacity:0;transform:rotate(-1deg)}}

/* sealcrack: the pearl wax seal cracks and falls away, the envelope opens and the card rises out */
.mo-sealcrack .petals .scb{inset:0;background:radial-gradient(ellipse at 50% 40%,#F6F0E6,#E4D8C4 80%)}
.mo-sealcrack .petals .scw{left:10%;right:10%;top:24%;bottom:12%;perspective:50em}
.mo-sealcrack .petals .eb{inset:0;background:linear-gradient(180deg,#E9DFCB,#DCCDB1);box-shadow:0 .6em 1.6em rgba(90,70,40,.28);z-index:0}
.mo-sealcrack .petals .ecard{left:-12.5%;top:-37.5%;width:125%;height:156.25%;background-size:100% 100%;z-index:1;box-shadow:0 .4em 1.4em rgba(60,40,15,.3);transform:translateY(8%) scale(.56);transform-origin:50% 50%}
.mo-sealcrack .petals .ep{inset:0;z-index:2;background:radial-gradient(rgba(201,165,92,.16) 20%,rgba(201,165,92,0) 24%) 0 0/1.1em 1.1em,linear-gradient(170deg,#FBF7EF,#EFE6D5);-webkit-clip-path:polygon(0 0,50% 44%,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,50% 44%,100% 0,100% 100%,0 100%)}
.mo-sealcrack .petals .ef{left:0;right:0;top:0;height:58%;z-index:3;transform-origin:50% 0;background:radial-gradient(rgba(201,165,92,.16) 20%,rgba(201,165,92,0) 24%) 0 0/1.1em 1.1em,linear-gradient(180deg,#FFFBF4,#F1E8D8);-webkit-clip-path:polygon(0 0,100% 0,50% 100%);clip-path:polygon(0 0,100% 0,50% 100%)}
.mo-sealcrack .petals .wx{left:50%;top:58%;width:5.4em;height:5.4em;margin:-2.7em 0 0 -2.7em;z-index:4}
.mo-sealcrack .petals .w1,.mo-sealcrack .petals .w2{top:0;bottom:0;width:50%;background:radial-gradient(circle at 70% 35%,#FFFFFF,#EEE6DA 45%,#CFC2AE 100%);box-shadow:0 .2em .5em rgba(70,50,20,.35),inset 0 0 0 .32em rgba(201,165,92,.75)}
.mo-sealcrack .petals .w1{left:0;border-radius:2.7em 0 0 2.7em}
.mo-sealcrack .petals .w2{right:0;border-radius:0 2.7em 2.7em 0;background:radial-gradient(circle at 10% 35%,#FFFFFF,#EEE6DA 45%,#CFC2AE 100%)}
.mo-sealcrack .petals .wc{inset:0;width:100%;height:100%}
.mo-sealcrack .petals .wc path{stroke-dasharray:100;stroke-dashoffset:100}
.mo-play.mo-sealcrack .petals .wc path{animation:sc-crack 3.8s both}
.mo-play.mo-sealcrack .petals .w1{animation:sc-w1 3.8s both}
.mo-play.mo-sealcrack .petals .w2{animation:sc-w2 3.8s both}
.mo-play.mo-sealcrack .petals .wc{animation:sc-wc 3.8s both}
.mo-play.mo-sealcrack .petals .ef{animation:sc-flap 3.8s both}
.mo-play.mo-sealcrack .petals .ecard{animation:sc-card 3.8s both}
.mo-play.mo-sealcrack .petals .eb,.mo-play.mo-sealcrack .petals .ep{animation:sc-env 3.8s both}
.mo-play.mo-sealcrack .petals .scb{animation:sc-bg 3.8s both}
@keyframes sc-crack{0%,9%{stroke-dashoffset:100}17%,100%{stroke-dashoffset:0}}
@keyframes sc-wc{0%,22%{opacity:1}26%,100%{opacity:0}}
@keyframes sc-w1{0%,18%{transform:none;opacity:1;animation-timing-function:cubic-bezier(.5,0,.8,.4)}34%,100%{transform:translate(-1.6em,5em) rotate(-38deg);opacity:0}}
@keyframes sc-w2{0%,18%{transform:none;opacity:1;animation-timing-function:cubic-bezier(.5,0,.8,.4)}34%,100%{transform:translate(1.6em,5.4em) rotate(34deg);opacity:0}}
@keyframes sc-flap{0%,22%{transform:rotateX(0);z-index:3;opacity:1;animation-timing-function:cubic-bezier(.5,0,.4,1)}31%{z-index:3}32%{z-index:0}42%,60%{transform:rotateX(180deg);z-index:0;opacity:1}74%,100%{transform:rotateX(180deg);z-index:0;opacity:0}}
@keyframes sc-card{0%,40%{transform:translateY(8%) scale(.56);z-index:1;animation-timing-function:cubic-bezier(.4,0,.3,1)}62%{transform:translateY(-22%) scale(.56);z-index:1;animation-timing-function:cubic-bezier(.5,0,.3,1)}63%{z-index:5}82%{transform:translateY(0) scale(1);z-index:5;opacity:1}90%,100%{transform:none;z-index:5;opacity:0}}
@keyframes sc-env{0%,60%{opacity:1}74%,100%{opacity:0}}
@keyframes sc-bg{0%,76%{opacity:1}86%,100%{opacity:0}}

/* gatefold: the belly band slides off and two damask side panels fold open */
.mo-gatefold .petals{perspective:55em}
.mo-gatefold .petals .gf{top:0;bottom:0;width:50%;transform-style:preserve-3d}
.mo-gatefold .petals .gf.l{left:0;transform-origin:0 50%}
.mo-gatefold .petals .gf.r{right:0;transform-origin:100% 50%}
.mo-gatefold .petals .gf b{inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.mo-gatefold .petals .gf b.o{background:radial-gradient(circle at 50% 50%,rgba(176,132,70,.28) 0 14%,rgba(176,132,70,0) 15%) 0 0/2.2em 2.2em,radial-gradient(circle at 50% 50%,rgba(176,132,70,.2) 0 8%,rgba(176,132,70,0) 9%) 1.1em 1.1em/2.2em 2.2em,linear-gradient(160deg,#F4ECDD,#E3D3B6);box-shadow:inset 0 0 0 .5em #F4ECDD,inset 0 0 0 .62em #B08446}
.mo-gatefold .petals .gf.l b.o{box-shadow:inset 0 0 0 .5em #F4ECDD,inset 0 0 0 .62em #B08446,inset -.8em 0 1em -.6em rgba(70,45,15,.3)}
.mo-gatefold .petals .gf b.i{transform:rotateY(180deg);background:linear-gradient(90deg,#FBF8F1,#EFE7D8)}
.mo-gatefold .petals .gband{left:0;right:0;top:44%;height:12%;background:linear-gradient(180deg,#C79B5A,#9E7436 50%,#C79B5A);box-shadow:0 .2em .6em rgba(70,45,15,.35)}
.mo-gatefold .petals .gband b{left:50%;top:50%;width:4.6em;height:4.6em;margin:-2.3em;border-radius:50%;background:radial-gradient(circle at 38% 34%,#C99A56,#7E5420 72%);box-shadow:0 .2em .5em rgba(60,35,10,.5),inset 0 0 0 .4em rgba(255,235,190,.25)}
.mo-gatefold .petals .gshade{inset:0;background:rgba(60,40,15,.25);opacity:0}
.mo-play.mo-gatefold .petals .gband{animation:gf-band 2.2s both}
.mo-play.mo-gatefold .petals .gf.l{animation:gf-l 2.2s both}
.mo-play.mo-gatefold .petals .gf.r{animation:gf-r 2.2s both}
.mo-play.mo-gatefold .petals .gshade{animation:gf-sh 2.2s both}
@keyframes gf-band{0%,10%{transform:translateY(0);opacity:1;animation-timing-function:cubic-bezier(.5,0,.6,1)}34%,100%{transform:translateY(260%) scaleX(1.04);opacity:0}}
@keyframes gf-l{0%,26%{transform:rotateY(0);opacity:1;animation-timing-function:cubic-bezier(.42,0,.5,1)}88%{transform:rotateY(-96deg);opacity:1}100%{transform:rotateY(-100deg);opacity:0}}
@keyframes gf-r{0%,26%{transform:rotateY(0);opacity:1;animation-timing-function:cubic-bezier(.42,0,.5,1)}88%{transform:rotateY(96deg);opacity:1}100%{transform:rotateY(100deg);opacity:0}}
@keyframes gf-sh{0%,30%{opacity:0}55%{opacity:1}100%{opacity:0}}

/* scroll: an ivory scroll unrolls down over emerald velvet */
.mo-scroll .petals .scv{left:0;right:0;bottom:0;top:5%;background:radial-gradient(ellipse at 50% 15%,#2F5D4C,#173328 75%);box-shadow:inset 0 1.2em 1.4em -1em rgba(0,0,0,.6)}
.mo-scroll .petals .srod{left:7%;right:7%;height:2.6em;margin-top:-1.3em;border-radius:1.3em;background:linear-gradient(180deg,#E9DEC6,#FFFBF2 35%,#D8C8A6 80%,#BCA77E);box-shadow:0 .35em .7em rgba(0,0,0,.35)}
.mo-scroll .petals .srod::before,.mo-scroll .petals .srod::after{content:"";position:absolute;top:-.35em;width:1.5em;height:3.3em;border-radius:.6em;background:linear-gradient(90deg,#8E6A22,#F1D891 45%,#9C7430)}
.mo-scroll .petals .srod::before{left:-1.2em}
.mo-scroll .petals .srod::after{right:-1.2em}
.mo-scroll .petals .srod.top{top:5%}
.mo-scroll .petals .srod.mv{top:5%}
.mo-play.mo-scroll .petals .scv{animation:sv-cov 3.5s both}
.mo-play.mo-scroll .petals .srod.mv{animation:sv-rod 3.5s both}
.mo-play.mo-scroll .petals .srod.top{animation:sv-top 4.2s both}
@keyframes sv-cov{0%,8%{top:5%;animation-timing-function:cubic-bezier(.45,0,.5,1)}100%{top:101%}}
@keyframes sv-rod{0%,8%{top:5%;opacity:1;animation-timing-function:cubic-bezier(.45,0,.5,1)}92%{top:96%;opacity:1}100%{top:101%;opacity:0}}
@keyframes sv-top{0%,80%{opacity:1}100%{opacity:0}}

/* trifold: a letter folded in three lies on marble; the top fold then the bottom fold open out into the card */
.mo-trifold .petals .tfbg{inset:0;background:linear-gradient(118deg,rgba(150,140,128,0) 30%,rgba(150,140,128,.22) 31%,rgba(150,140,128,0) 33%),linear-gradient(64deg,rgba(150,140,128,0) 55%,rgba(150,140,128,.18) 56%,rgba(150,140,128,0) 58%),radial-gradient(ellipse at 40% 30%,#FBFAF7,#E6E2DB 85%)}
.mo-trifold .petals .tfw{inset:0;transform-origin:50% 50%}
.mo-trifold .petals .tfm{left:0;right:0;top:33.333%;height:33.334%;background-size:100% 300%;background-position:0 50%;box-shadow:0 .5em 1.4em rgba(60,45,25,.3)}
.mo-trifold .petals .tff{left:0;right:0;height:33.334%;transform-style:preserve-3d}
.mo-trifold .petals .tff.t{top:0;transform-origin:50% 100%}
.mo-trifold .petals .tff.b{top:66.666%;transform-origin:50% 0}
.mo-trifold .petals .tff b{inset:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}
.mo-trifold .petals .tff b.f{background-size:100% 300%}
.mo-trifold .petals .tff.t b.f{background-position:0 0}
.mo-trifold .petals .tff.b b.f{background-position:0 100%}
.mo-trifold .petals .tff b.k{transform:rotateX(180deg);background:linear-gradient(180deg,#FFFDF8,#F1EADC);box-shadow:inset 0 0 0 .55em #FFFDF8,inset 0 0 0 .66em rgba(201,165,92,.7)}
.mo-trifold .petals .tff.t b.k::after{content:"";position:absolute;left:50%;top:50%;width:3.2em;height:3.2em;margin:-1.6em;border-radius:50%;border:.14em solid #C9A55C;box-shadow:0 0 0 .3em #FFFDF8,0 0 0 .42em rgba(201,165,92,.5)}
.mo-play.mo-trifold .petals .tff.t{animation:tf-t 2.8s both}
.mo-play.mo-trifold .petals .tff.b{animation:tf-b 2.8s both}
.mo-play.mo-trifold .petals .tfw{animation:tf-w 2.8s both}
.mo-play.mo-trifold .petals .tfbg{animation:tf-bg 3s both}
@keyframes tf-t{0%,14%{transform:perspective(40em) rotateX(-180deg);animation-timing-function:cubic-bezier(.5,0,.3,1)}48%,100%{transform:perspective(40em) rotateX(0)}}
@keyframes tf-b{0%,40%{transform:perspective(40em) rotateX(180deg);animation-timing-function:cubic-bezier(.5,0,.3,1)}74%,100%{transform:perspective(40em) rotateX(0)}}
@keyframes tf-w{0%{transform:scale(.8);opacity:1;animation-timing-function:cubic-bezier(.45,0,.55,1)}80%{transform:scale(1);opacity:1}96%{transform:scale(1);opacity:1}100%{transform:scale(1);opacity:0}}
@keyframes tf-bg{0%,76%{opacity:1}90%,100%{opacity:0}}

/* stairglide: the camera glides up the palace staircase toward the chandelier, then steps back to the card */
.mo-stairglide .petals .chg{left:50%;top:-6%;width:90%;aspect-ratio:1;margin-left:-45%;border-radius:50%;background:radial-gradient(circle,rgba(255,246,220,.85),rgba(255,236,190,.3) 40%,rgba(255,236,190,0) 66%);opacity:0;mix-blend-mode:screen}
.mo-play.mo-stairglide .petals .chg{animation:ch-glow var(--cyc) ease-in-out both}
@keyframes ch-glow{0%,18%{opacity:0}36%{opacity:1}60%{opacity:.6}80%{opacity:.95}100%{opacity:.5}}

/* ================= v6e: +10 creative presets and 3 more text entrances ================= */
.is-video .tx-swing .art .ln{opacity:0;transform:perspective(900px) rotateY(-78deg);transform-origin:100% 50%;filter:none;transition:opacity 1s ease,transform 1.7s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-swing .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-swing .art .ln.out{opacity:0;transform:perspective(900px) rotateY(40deg);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-unfold .art .ln{opacity:0;transform:scaleY(0.05);transform-origin:50% 0;filter:brightness(1.4);transition:opacity .7s ease,transform 1.4s cubic-bezier(.22,.61,.36,1),filter 1.6s ease}
.is-video .tx-unfold .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-unfold .art .ln.out{opacity:0;transform:scaleY(.4);transition:opacity .8s ease,transform .9s ease,filter .8s ease}
.is-video .tx-dust .art .ln{opacity:0;transform:scale(1.18);filter:blur(9px) sepia(1) saturate(3) brightness(1.5);transition:opacity 1.2s ease,transform 1.8s cubic-bezier(.22,.61,.36,1),filter 2s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-dust .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-dust .art .ln.out{opacity:0;filter:blur(8px) sepia(1) brightness(1.4);transition:opacity .8s ease,transform .9s ease,filter .8s ease}

/* silk: a satin cloth ripples, then slides off the card diagonally */
.mo-silk .petals .slk{left:-15%;top:-10%;width:130%;height:120%;background:repeating-linear-gradient(115deg,rgba(255,255,255,0) 0 2.2em,rgba(255,255,255,.38) 3.4em,rgba(255,255,255,0) 4.6em,rgba(90,60,30,.10) 6em,rgba(255,255,255,0) 7.2em),linear-gradient(135deg,var(--s1),var(--s2) 55%,var(--s1));box-shadow:0 0 2em rgba(60,40,20,.35);transform-origin:0 100%}
.mo-silk .petals .slk b{inset:0;background:linear-gradient(105deg,rgba(255,255,255,0) 35%,rgba(255,255,255,.55) 48%,rgba(255,255,255,0) 60%);background-size:250% 100%}
.mo-play.mo-silk .petals .slk{animation:slk-off 3s both}
.mo-play.mo-silk .petals .slk b{animation:slk-sheen 2s ease-in-out both}
@keyframes slk-off{0%{transform:none}10%{transform:skewY(-1.5deg) translateY(-1%)}20%{transform:skewY(1deg);animation-timing-function:cubic-bezier(.45,0,.55,1)}92%{transform:translate(-104%,30%) rotate(-9deg) skewX(6deg);opacity:1}100%{transform:translate(-112%,34%) rotate(-10deg) skewX(6deg);opacity:0}}
@keyframes slk-sheen{0%{background-position:120% 0}100%{background-position:-40% 0}}

/* bloom: roses open from the four corners */
.mo-bloom .petals .blm{inset:0;width:100%;height:100%}
.mo-bloom .petals .blm .bl{transform:scale(0) rotate(-60deg);transform-box:fill-box;transform-origin:center}
.mo-bloom .petals .blm .lf{transform-box:fill-box;opacity:0}
.mo-play.mo-bloom .petals .blm .bl{animation:bl-open 1.7s cubic-bezier(.3,1.25,.5,1) both}
.mo-play.mo-bloom .petals .blm .lf{animation:lf-in 1.2s ease both}
.mo-play.mo-bloom .petals .blm{animation:blm-fade var(--cyc) linear both}
@keyframes bl-open{0%{transform:scale(0) rotate(-70deg)}100%{transform:scale(1) rotate(0)}}
@keyframes lf-in{0%{opacity:0}100%{opacity:.85}}
@keyframes blm-fade{0%,90%{opacity:1}100%{opacity:0}}

/* foil: a gold foil plate presses onto the card, flashes and lifts away, glints linger */
.mo-foil .petals .fplate{left:8%;right:8%;top:22%;height:34%;border-radius:.5em;background:linear-gradient(120deg,#9C7430,#F3DC97 30%,#B8893A 52%,#F7E4A8 70%,#8E6A22);box-shadow:0 2em 3em rgba(60,40,10,.45),inset 0 0 0 .5em rgba(255,240,200,.35),inset 0 0 0 .62em rgba(120,85,25,.6);opacity:0}
.mo-foil .petals .fplate b{inset:16%;border:.18em solid rgba(255,245,215,.7);border-radius:.4em}
.mo-foil .petals .fflash{left:-10%;right:-10%;top:15%;height:48%;background:radial-gradient(ellipse,rgba(255,240,190,.95),rgba(255,226,150,.4) 40%,rgba(255,226,150,0) 70%);opacity:0;mix-blend-mode:screen}
.mo-play.mo-foil .petals .fplate{animation:fp-press 2.2s both}
.mo-play.mo-foil .petals .fflash{animation:fp-flash 2.4s ease both}
@keyframes fp-press{0%{transform:translateY(-60%) scale(1.5);opacity:0;animation-timing-function:cubic-bezier(.6,0,.9,.5)}18%{opacity:1}36%{transform:none;opacity:1}40%{transform:scale(.97)}52%{transform:none;opacity:1;animation-timing-function:cubic-bezier(.4,0,.2,1)}100%{transform:translateY(-140%) scale(1.25);opacity:0}}
@keyframes fp-flash{0%,30%{opacity:0;transform:scaleX(.4)}42%{opacity:1;transform:scaleX(1.1)}100%{opacity:0;transform:scaleX(1.3)}}
.mo-foil .petals i.fg{opacity:0;background:radial-gradient(circle,#FFFBEA 0,#F6D98A 30%,rgba(246,217,138,0) 65%);animation:fg-tw var(--d,2s) ease-in-out infinite}
@keyframes fg-tw{0%,100%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1) rotate(45deg)}}

/* pearls: strings of pearls drop from the top and sway */
.mo-pearls .petals .prl{top:0;width:.9em;margin-left:-.45em;transform-origin:50% 0;transform:translateY(-105%)}
.mo-pearls .petals .prl b{inset:0;background:radial-gradient(circle at 38% 32%,#FFFFFF 0,#F4EFE6 28%,#D9CFBF 58%,rgba(190,175,150,.9) 66%,rgba(0,0,0,0) 70%) 0 0/.9em .95em repeat-y;filter:drop-shadow(0 .15em .15em rgba(90,70,40,.3))}
.mo-pearls .petals .prl b::after{content:"";position:absolute;left:50%;bottom:-1.2em;width:1.4em;height:1.4em;margin-left:-.7em;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:radial-gradient(circle at 38% 32%,#FFFFFF,#EDE6DA 45%,#C9BCA7 85%)}
.mo-play.mo-pearls .petals .prl{animation:prl-drop 1.5s cubic-bezier(.3,1.35,.55,1) both,prl-sway var(--d,3.6s) ease-in-out infinite alternate}
.mo-pearls .petals .pswag{left:0;right:0;top:-2.2em;height:4.4em;border-radius:0 0 50% 50%;border-bottom:.5em dotted rgba(244,238,228,.95);filter:drop-shadow(0 .15em .1em rgba(90,70,40,.3));opacity:0}
.mo-play.mo-pearls .petals .pswag{animation:psw 1.2s ease both}
@keyframes prl-drop{0%{transform:translateY(-105%)}100%{transform:none}}
@keyframes prl-sway{0%{rotate:-3deg}100%{rotate:3deg}}
@keyframes psw{0%{opacity:0;transform:translateY(-100%)}100%{opacity:1;transform:none}}

/* candle: the room is dark, three candles flicker and their warm light spreads over the card */
.mo-candle .petals .cdark{left:50%;top:78%;width:340%;aspect-ratio:1;margin:-170% 0 0 -170%;border-radius:50%;background:radial-gradient(circle,rgba(30,18,6,0) 0,rgba(30,18,6,0) 7%,rgba(30,18,6,.55) 13%,rgba(22,13,4,.9) 20%);transform:scale(.4)}
.mo-play.mo-candle .petals .cdark{animation:cd-open 2.6s both,cd-flk .23s steps(2) 8}
@keyframes cd-open{0%,12%{transform:scale(.4);animation-timing-function:cubic-bezier(.5,0,.3,1)}100%{transform:scale(3.4)}}
@keyframes cd-flk{0%{opacity:1}50%{opacity:.92}100%{opacity:1}}
.mo-candle .petals .cnd{bottom:3%;width:calc(1.6em * var(--k,1));height:calc(4.2em * var(--k,1));margin-left:calc(-.8em * var(--k,1));border-radius:.25em;background:linear-gradient(90deg,#E8DCC6,#FFFBF2 45%,#D9CBB1)}
.mo-candle .petals .cnd b{left:50%;bottom:100%;width:.9em;height:1.8em;margin-left:-.45em;border-radius:50% 50% 50% 50%/62% 62% 38% 38%;background:radial-gradient(ellipse at 50% 72%,#FFFDF0 0,#FFE08A 35%,#F59B2B 70%,rgba(245,155,43,0) 76%);box-shadow:0 0 1.2em .6em rgba(255,190,90,.55);transform-origin:50% 100%;animation:fl .9s ease-in-out infinite alternate}
@keyframes fl{0%{transform:scale(1,1) rotate(-2deg)}50%{transform:scale(.92,1.08) rotate(2deg)}100%{transform:scale(1.05,.95) rotate(-1deg)}}

/* giftbox: the lid lifts off a ribboned box and the card rises out */
.mo-giftbox .petals .gbg{inset:0;background:radial-gradient(ellipse at 50% 45%,#FBF6EE,#E9DECB 85%)}
.mo-giftbox .petals .gbw{left:16%;right:16%;top:40%;bottom:8%;perspective:40em}
.mo-giftbox .petals .gcard{left:-23.53%;top:-76.92%;width:147.06%;height:192.31%;background-size:100% 100%;transform:translateY(16%) scale(.5);box-shadow:0 .4em 1.2em rgba(60,40,15,.3);z-index:1}
.mo-giftbox .petals .gbox{inset:0;z-index:2;background:linear-gradient(90deg,rgba(0,0,0,0) 44%,var(--rb) 44% 56%,rgba(0,0,0,0) 56%),linear-gradient(180deg,var(--b1),var(--b2));box-shadow:0 .8em 1.6em rgba(70,45,20,.3)}
.mo-giftbox .petals .glid{left:-5%;right:-5%;top:-11%;height:16%;z-index:3;border-radius:.2em;background:linear-gradient(90deg,rgba(0,0,0,0) 44%,var(--rb) 44% 56%,rgba(0,0,0,0) 56%),linear-gradient(180deg,var(--b1),var(--b2));box-shadow:0 .3em .6em rgba(70,45,20,.3)}
.mo-giftbox .petals .glid b,.mo-giftbox .petals .glid i{bottom:85%;left:50%;width:3.4em;height:2.2em;border:.5em solid var(--rb);border-radius:50% 50% 50% 50%}
.mo-giftbox .petals .glid b{margin-left:-3.3em;transform:rotate(-18deg)}
.mo-giftbox .petals .glid i{margin-left:-.1em;transform:rotate(18deg)}
.mo-play.mo-giftbox .petals .glid{animation:gl-off 3.4s both}
.mo-play.mo-giftbox .petals .gcard{animation:gc-up 3.4s both}
.mo-play.mo-giftbox .petals .gbox{animation:gb-out 3.4s both}
.mo-play.mo-giftbox .petals .gbg{animation:sc-bg 3.4s both}
@keyframes gl-off{0%,10%{transform:none;animation-timing-function:cubic-bezier(.5,0,.3,1)}14%{transform:translateY(-.5em) rotate(-2deg)}38%,100%{transform:translate(70%,-260%) rotate(24deg);opacity:0}}
@keyframes gc-up{0%,24%{transform:translateY(16%) scale(.5);z-index:1;animation-timing-function:cubic-bezier(.4,0,.3,1)}54%{transform:translateY(-20%) scale(.5);z-index:1;animation-timing-function:cubic-bezier(.5,0,.3,1)}55%{z-index:4}80%{transform:none;z-index:4;opacity:1}90%,100%{transform:none;z-index:4;opacity:0}}
@keyframes gb-out{0%,56%{opacity:1;transform:none}74%,100%{opacity:0;transform:translateY(40%)}}

/* origami: four paper folds open one by one from the centre */
.mo-origami .petals{perspective:60em}
.mo-origami .petals .ori{inset:0;background:linear-gradient(135deg,var(--o1),var(--o2));filter:drop-shadow(0 0 .3em rgba(80,60,30,.35))}
.mo-origami .petals .ori.l{-webkit-clip-path:polygon(0 0,50% 50%,0 100%);clip-path:polygon(0 0,50% 50%,0 100%);transform-origin:0 50%}
.mo-origami .petals .ori.r{-webkit-clip-path:polygon(100% 0,50% 50%,100% 100%);clip-path:polygon(100% 0,50% 50%,100% 100%);transform-origin:100% 50%;background:linear-gradient(225deg,var(--o1),var(--o2))}
.mo-origami .petals .ori.b{-webkit-clip-path:polygon(0 100%,50% 50%,100% 100%);clip-path:polygon(0 100%,50% 50%,100% 100%);transform-origin:50% 100%;background:linear-gradient(0deg,var(--o2),var(--o1))}
.mo-origami .petals .ori.t{-webkit-clip-path:polygon(0 0,100% 0,50% 50%);clip-path:polygon(0 0,100% 0,50% 50%);transform-origin:50% 0;background:linear-gradient(180deg,var(--o1),var(--o2))}
.mo-origami .petals .odot{left:50%;top:50%;width:2.6em;height:2.6em;margin:-1.3em;border-radius:50%;background:radial-gradient(circle at 38% 34%,#F1D891,#B8893A 70%);box-shadow:0 .15em .4em rgba(80,55,20,.4)}
.mo-play.mo-origami .petals .ori.t{animation:or-t 2.6s both}
.mo-play.mo-origami .petals .ori.b{animation:or-b 2.6s both}
.mo-play.mo-origami .petals .ori.l{animation:or-l 2.6s both}
.mo-play.mo-origami .petals .ori.r{animation:or-r 2.6s both}
.mo-play.mo-origami .petals .odot{animation:or-dot 2.6s both}
@keyframes or-dot{0%,8%{transform:scale(1);opacity:1}18%,100%{transform:scale(0);opacity:0}}
@keyframes or-t{0%,12%{transform:rotateX(0);opacity:1;animation-timing-function:cubic-bezier(.42,0,.5,1)}40%{transform:rotateX(96deg);opacity:1}46%,100%{transform:rotateX(100deg);opacity:0}}
@keyframes or-b{0%,30%{transform:rotateX(0);opacity:1;animation-timing-function:cubic-bezier(.42,0,.5,1)}58%{transform:rotateX(-96deg);opacity:1}64%,100%{transform:rotateX(-100deg);opacity:0}}
@keyframes or-l{0%,48%{transform:rotateY(0);opacity:1;animation-timing-function:cubic-bezier(.42,0,.5,1)}76%{transform:rotateY(-96deg);opacity:1}82%,100%{transform:rotateY(-100deg);opacity:0}}
@keyframes or-r{0%,62%{transform:rotateY(0);opacity:1;animation-timing-function:cubic-bezier(.42,0,.5,1)}90%{transform:rotateY(96deg);opacity:1}96%,100%{transform:rotateY(100deg);opacity:0}}

/* papercut: three layers of cut-paper arches part towards the viewer at different speeds */
.mo-papercut .petals .pcl{inset:0;width:100%;height:100%;filter:drop-shadow(0 .3em .5em rgba(80,60,30,.35));transform-origin:50% 55%}
.mo-play.mo-papercut .petals .pcl.l0{animation:pc0 2.4s both}
.mo-play.mo-papercut .petals .pcl.l1{animation:pc1 2.4s both}
.mo-play.mo-papercut .petals .pcl.l2{animation:pc2 2.4s both}
@keyframes pc0{0%,16%{transform:scale(1);opacity:1;animation-timing-function:cubic-bezier(.5,0,.4,1)}100%{transform:scale(3.4);opacity:0}}
@keyframes pc1{0%,10%{transform:scale(1);opacity:1;animation-timing-function:cubic-bezier(.5,0,.4,1)}84%{transform:scale(3);opacity:0}100%{opacity:0}}
@keyframes pc2{0%,4%{transform:scale(1);opacity:1;animation-timing-function:cubic-bezier(.5,0,.4,1)}68%{transform:scale(2.6);opacity:0}100%{opacity:0}}

/* skylant: glowing paper sky lanterns float up past the card */
.mo-skylant .petals i.sl{bottom:-12%;width:calc(2.2em * var(--k,1));height:calc(2.9em * var(--k,1));border-radius:.5em .5em .9em .9em/.4em .4em 1.2em 1.2em;background:radial-gradient(ellipse at 50% 85%,#FFF6D6 0,#FFC766 35%,#E9893A 80%);box-shadow:0 0 1.4em .5em rgba(255,186,90,.55);opacity:0;animation:sl-up var(--d,10s) linear infinite}
.mo-skylant .petals i.sl.far{filter:blur(1px);--k:.6}
@keyframes sl-up{0%{opacity:0;transform:translate(0,0)}8%{opacity:1}85%{opacity:.9}100%{opacity:0;transform:translate(var(--sx,1em),-68em)}}

/* sanddust: gold dust streams in from everywhere and gathers into the names */
.mo-sanddust .petals i.sd{width:.35em;height:.35em;border-radius:50%;background:radial-gradient(circle,#FFF7DA,#E7C46E 55%,rgba(231,196,110,0) 72%);opacity:0}
.mo-sanddust .petals i.sd.big{width:.6em;height:.6em}
.mo-play.mo-sanddust .petals i.sd{animation:sd-in 2.4s cubic-bezier(.3,0,.2,1) both}
@keyframes sd-in{0%{opacity:0;transform:translate(var(--fx),var(--fy)) scale(1.6)}12%{opacity:1}70%{opacity:1;transform:none}100%{opacity:0;transform:scale(.4)}}
.mo-sanddust .petals .sdglow{left:10%;right:10%;top:calc(var(--ny,40%) - 9%);height:18%;background:radial-gradient(ellipse,rgba(255,236,180,.8),rgba(255,236,180,0) 68%);opacity:0;mix-blend-mode:screen}
.mo-play.mo-sanddust .petals .sdglow{animation:sdg 3s ease both}
@keyframes sdg{0%,45%{opacity:0}65%{opacity:1}100%{opacity:0}}

/* sealrise (ref @lav.card): a blush wax seal appears low in the centre and glides up to the top, the names write themselves, then the lines fade in */
.mo-sealrise .petals .srs{left:50%;top:60%;width:4.4em;height:5.2em;margin-left:-2.2em;border-radius:50%;background:radial-gradient(ellipse at 40% 34%,#D3A9A2,#A97C76 55%,#875C57 100%);box-shadow:0 .35em .8em rgba(80,45,40,.35),inset 0 0 0 .38em rgba(255,235,230,.18),inset 0 -.3em .5em rgba(60,30,25,.3);opacity:0}
.mo-sealrise .petals .srs b{inset:.75em;border-radius:50%;border:.12em solid rgba(255,236,226,.55);box-shadow:inset 0 .1em .25em rgba(60,30,25,.35)}
.mo-sealrise .petals .srglow{left:50%;top:62%;width:16em;height:16em;margin:-8em 0 0 -8em;border-radius:50%;background:radial-gradient(circle,rgba(255,244,236,.9),rgba(255,244,236,0) 62%);opacity:0}
.mo-play.mo-sealrise .petals .srs{animation:sr-rise 4.6s both}
.mo-play.mo-sealrise .petals .srglow{animation:sr-glow 2s ease both}
@keyframes sr-rise{0%{top:60%;opacity:0;transform:scale(.55)}16%{top:60%;opacity:1;transform:scale(1);animation-timing-function:cubic-bezier(.55,0,.35,1)}52%{top:5%;opacity:1;transform:scale(.82)}80%{top:5%;opacity:1;transform:scale(.82)}100%{top:4%;opacity:0;transform:scale(.7)}}
@keyframes sr-glow{0%{opacity:0}30%{opacity:.8}100%{opacity:0}}
.is-video .tx-pen .art .ln{opacity:0;transform:translateY(14px);filter:none;transition:opacity 1.1s ease,transform 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-pen .art .ln.in{opacity:1;transform:none;filter:none}
.is-video .tx-pen .art .ln.out{opacity:0;transition:opacity .8s ease}
.is-video .tx-pen .art .ln[data-k^="name"],.is-video .tx-pen .art .ln[data-k="amp"]{opacity:1;transform:none;-webkit-clip-path:inset(-25% -3% -25% 103%);clip-path:inset(-25% -3% -25% 103%);transition:clip-path 2s cubic-bezier(.45,.05,.4,1),-webkit-clip-path 2s cubic-bezier(.45,.05,.4,1),opacity .2s linear}
.is-video .tx-pen .art .ln[data-k^="name"].in,.is-video .tx-pen .art .ln[data-k="amp"].in{-webkit-clip-path:inset(-25% -3% -25% -3%);clip-path:inset(-25% -3% -25% -3%)}
.is-video .tx-pen .art .ln[data-k^="name"].out,.is-video .tx-pen .art .ln[data-k="amp"].out{opacity:0;transition:opacity .8s ease}

/* crossfade (ref): the hero flower fills the frame, dissolves into the whole card, a small gold bloom settles in the corner */
.mo-crossfade .petals .cfz{inset:0;background-size:260% 260%;background-repeat:no-repeat}
.mo-play.mo-crossfade .petals .cfz{animation:cf-z 2.4s both}
@keyframes cf-z{0%{opacity:1;transform:scale(1)}30%{opacity:1;animation-timing-function:cubic-bezier(.45,0,.55,1)}100%{opacity:0;transform:scale(1.12)}}
.mo-crossfade .petals .cfo{left:5%;bottom:4%;width:4.2em;height:4.2em;opacity:0;filter:drop-shadow(0 .1em .2em rgba(90,60,20,.35))}
.mo-play.mo-crossfade .petals .cfo{animation:cf-o var(--cyc) both}
@keyframes cf-o{0%,18%{opacity:0;transform:scale(.2) rotate(-90deg)}28%{opacity:1;transform:scale(1.1) rotate(8deg)}32%{transform:scale(1) rotate(0)}90%{opacity:1;transform:scale(1) rotate(20deg)}100%{opacity:0;transform:scale(.9) rotate(24deg)}}

/* poem (ref): sheer curtains sway at the sides while petals drift down and the verses appear one by one */
.mo-poem .petals .shr{top:-2%;bottom:-2%;width:24%;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 .9em,rgba(255,255,255,.62) 1.6em,rgba(255,255,255,.2) 2.4em),linear-gradient(90deg,rgba(255,255,255,.75),rgba(255,255,255,0));-webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);opacity:0}
.mo-poem .petals .shr.l{left:-2%;transform-origin:0 0}
.mo-poem .petals .shr.r{right:-2%;transform-origin:100% 0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 .9em,rgba(255,255,255,.62) 1.6em,rgba(255,255,255,.2) 2.4em),linear-gradient(270deg,rgba(255,255,255,.75),rgba(255,255,255,0))}
.mo-play.mo-poem .petals .shr.l{animation:shr-l var(--cyc) ease-in-out both}
.mo-play.mo-poem .petals .shr.r{animation:shr-r var(--cyc) ease-in-out both}
@keyframes shr-l{0%{opacity:0;transform:skewX(0) scaleX(1.6)}12%{opacity:1;transform:skewX(3deg) scaleX(1)}40%{transform:skewX(-2deg) scaleX(1.05)}70%{transform:skewX(2.5deg) scaleX(.95)}92%{opacity:1}100%{opacity:0;transform:skewX(0)}}
@keyframes shr-r{0%{opacity:0;transform:skewX(0) scaleX(1.6)}12%{opacity:1;transform:skewX(-3deg) scaleX(1)}45%{transform:skewX(2deg) scaleX(1.05)}75%{transform:skewX(-2.5deg) scaleX(.95)}92%{opacity:1}100%{opacity:0;transform:skewX(0)}}
.mo-poem .petals i.pp{top:-6%;width:calc(1.1em * var(--k,1));height:calc(.8em * var(--k,1));border-radius:80% 10% 80% 10%;background:linear-gradient(135deg,#F2C1C4,#D98E96);opacity:0;animation:pp-f var(--d,10s) linear infinite}
.mo-poem .petals i.pp.w{background:linear-gradient(135deg,#FFFFFF,#EADFCF)}
@keyframes pp-f{0%{opacity:0;transform:translate(0,0) rotate(0)}8%{opacity:.95}50%{transform:translate(var(--sx,2em),30em) rotate(200deg)}92%{opacity:.9}100%{opacity:0;transform:translate(calc(var(--sx,2em) * -.5),62em) rotate(400deg)}}

/* namepop (ref): the names write in and a small gold heart pops between them with a burst of sparks */
.is-video .mo-namepop .art .ln[data-k="amp"]{opacity:0!important}
.mo-namepop .petals .npo{left:var(--ax,50%);top:var(--ay,45%);width:2.6em;height:2.6em;margin:-1.3em 0 0 -1.3em;opacity:0;filter:drop-shadow(0 .12em .25em rgba(90,60,20,.35))}
.mo-namepop .petals .npo svg{width:100%;height:100%;display:block}
.mo-play.mo-namepop .petals .npo{animation:np-pop var(--cyc) both}
@keyframes np-pop{0%,20%{opacity:0;transform:scale(0)}25%{opacity:1;transform:scale(1.35)}29%{transform:scale(.92)}32%{transform:scale(1)}90%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}
.mo-namepop .petals i.nps{left:var(--ax,50%);top:var(--ay,45%);width:.45em;height:.45em;margin:-.225em;border-radius:50%;background:radial-gradient(circle,#FFF8DC,#E8C46A 60%,rgba(232,196,106,0) 72%);opacity:0}
.mo-play.mo-namepop .petals i.nps{animation:np-sp var(--cyc) ease-out both}
@keyframes np-sp{0%,22%{opacity:0;transform:translate(0,0) scale(.4)}26%{opacity:1}36%{opacity:0;transform:translate(var(--px),var(--py)) scale(1)}100%{opacity:0}}

/* ================= v6f: engagement set (82–101) — 12 new presets from Reham's TikTok refs ================= */
/* shared: crop machine (a piece of the card's own art travels into place over a patch that hides its real spot) */
.petals .cpw{inset:0}
.mo-play .petals .cpw{animation:cpw-k var(--cyc) linear both}
@keyframes cpw-k{0%,95%{opacity:1}100%{opacity:0}}
@keyframes cpw-o{0%{opacity:0}4%{opacity:1}95%{opacity:1}100%{opacity:0}}
.petals .cpc,.petals .cpp{background-repeat:no-repeat}
.petals .cpc{-webkit-mask-image:radial-gradient(closest-side,#000 72%,transparent 88%);mask-image:radial-gradient(closest-side,#000 72%,transparent 88%);opacity:0}
.petals .cpp{-webkit-mask-image:radial-gradient(closest-side,#000 88%,transparent 100%);mask-image:radial-gradient(closest-side,#000 88%,transparent 100%);opacity:0}
.mo-play .petals .cpp{animation:cp-hide 3s linear both}
@keyframes cp-hide{0%,82%{opacity:1}100%{opacity:0}}
.is-video .stage.cam-corner{--camk:cam-corner}
.is-video .stage.cam-sketch{--camk:cam-sketch}
.is-video .stage.cam-hall{--camk:cam-hall}
/* tx-ttl: the big title («خطوبتي»…) writes itself right-to-left first, then each line rises in */
.is-video .tx-ttl .art .ln{opacity:0;transform:translateY(18px);filter:none;transition:opacity 1.1s ease,transform 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-ttl .art .ln.in{opacity:1;transform:none}
.is-video .tx-ttl .art .ln.out{opacity:0;transition:opacity .8s ease}
.is-video .tx-ttl .art .ln[data-k="title"]{opacity:1;transform:none;-webkit-clip-path:inset(-30% -4% -30% 104%);clip-path:inset(-30% -4% -30% 104%);transition:clip-path 2.4s cubic-bezier(.45,.05,.4,1),-webkit-clip-path 2.4s cubic-bezier(.45,.05,.4,1),opacity .2s linear}
.is-video .tx-ttl .art .ln[data-k="title"].in{-webkit-clip-path:inset(-30% -4% -30% -4%);clip-path:inset(-30% -4% -30% -4%)}
.is-video .tx-ttl .art .ln[data-k="title"].out{opacity:0;transition:opacity .8s ease}
/* tx-line: every line — including each line of a poem or dua — fades in on its own */
.is-video .tx-line .art .ln{opacity:0;filter:blur(6px);transform:translateY(12px);transition:opacity 1.2s ease,filter 1.3s ease,transform 1.4s cubic-bezier(.22,.61,.36,1)}
.is-video .tx-line .art .ln.in{opacity:1;filter:none;transform:none}
.is-video .tx-line .art .ln.out{opacity:0;transition:opacity .8s ease}
.is-video .tx-line .art .ln.lsp{opacity:1;filter:none;transform:none}
.is-video .tx-line .art .ln.lsp>span{opacity:0;filter:blur(6px);transition:opacity 1.2s ease,filter 1.3s ease}
.is-video .tx-line .art .ln.lsp>span.in{opacity:1;filter:none}
.is-video .tx-line .art .ln.lsp>span.out{opacity:0;transition:opacity .8s ease}
/* glints (jewels) */
.petals i.jg{margin:-.5em 0 0 -.5em;background:radial-gradient(circle,#fff 0,rgba(255,252,240,.95) 7%,rgba(255,248,225,0) 24%),linear-gradient(90deg,rgba(255,250,235,0),rgba(255,250,235,.95) 50%,rgba(255,250,235,0)) center/100% 7% no-repeat,linear-gradient(0deg,rgba(255,250,235,0),rgba(255,250,235,.95) 50%,rgba(255,250,235,0)) center/7% 100% no-repeat;filter:drop-shadow(0 0 .25em rgba(255,236,190,.9));opacity:0;animation:jg-t var(--d,2.4s) ease-in-out infinite}
@keyframes jg-t{0%,100%{opacity:0;transform:scale(.3) rotate(0deg)}45%{opacity:1;transform:scale(1) rotate(45deg)}75%{opacity:0;transform:scale(.4) rotate(90deg)}}

/* sealglide (97, ref @lav.card): the mauve seal starts low in the centre and glides up to its place at the top, then «خطوبتي» writes itself */
.mo-play.mo-sealglide .petals .sgc{animation:sg-c 4s both}
.mo-play.mo-sealglide .petals .sgp{animation:cp-hide 3.5s linear both}
@keyframes sg-c{0%{opacity:0;transform:translateY(calc(var(--sh,551px) * .5)) scale(.72)}12%{opacity:1;transform:translateY(calc(var(--sh,551px) * .5)) scale(1.04);animation-timing-function:cubic-bezier(.55,0,.3,1)}84%{opacity:1;transform:none}93%{opacity:1;transform:none}100%{opacity:0;transform:none}}
/* sealsettle (82): the sage seal rises from below the card and settles onto its ribbon with a small turn */
.mo-play.mo-sealsettle .petals .ssc{animation:ss-c 3.6s both}
.mo-play.mo-sealsettle .petals .ssp{animation:cp-hide 3s linear both}
@keyframes ss-c{0%{opacity:0;transform:translateY(calc(var(--sh,551px) * .26)) rotate(-18deg) scale(.92);animation-timing-function:linear}8%{opacity:1;transform:translateY(calc(var(--sh,551px) * .24)) rotate(-16deg) scale(.92);animation-timing-function:cubic-bezier(.4,.15,.35,1)}66%{opacity:1;transform:translateY(calc(var(--sh,551px) * -.012)) rotate(2.5deg) scale(1.02);animation-timing-function:ease-in-out}82%{opacity:1;transform:none}92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
/* sealpress (100): the champagne seal rises and presses onto the ribbon like a stamp, a gold ring pulses, light runs along the satin */
.mo-play.mo-sealpress .petals .spc{animation:sp-c 3.4s both}
.mo-play.mo-sealpress .petals .spp{animation:cp-hide 2.8s linear both}
@keyframes sp-c{0%{opacity:0;transform:translateY(calc(var(--sh,551px) * .2)) scale(1.7)}14%{opacity:1;transform:translateY(calc(var(--sh,551px) * .2)) scale(1.7);animation-timing-function:cubic-bezier(.45,.05,.35,1)}66%{opacity:1;transform:scale(.94)}74%{opacity:1;transform:scale(1.02)}82%{opacity:1;transform:none}92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
.mo-sealpress .petals .spring{left:50%;top:15.75%;width:9em;height:9em;margin:-4.5em 0 0 -4.5em;border-radius:50%;border:.14em solid rgba(240,214,150,.95);box-shadow:0 0 1em rgba(240,214,150,.7),inset 0 0 .8em rgba(240,214,150,.5);opacity:0}
.mo-play.mo-sealpress .petals .spring{animation:sp-r 1.5s 2.2s ease-out both}
@keyframes sp-r{0%{opacity:0;transform:scale(.55)}30%{opacity:.95}100%{opacity:0;transform:scale(1.7)}}
.mo-sealpress .petals .sprib{left:-45%;top:9.2%;width:45%;height:9.5%;background:linear-gradient(90deg,rgba(255,250,235,0),rgba(255,250,235,.7) 50%,rgba(255,250,235,0));mix-blend-mode:screen;opacity:0}
.mo-play.mo-sealpress .petals .sprib{animation:sp-s 2.2s 2.5s ease-in-out both}
@keyframes sp-s{0%{opacity:0;transform:translateX(0)}15%{opacity:1}85%{opacity:1}100%{opacity:0;transform:translateX(320%)}}

/* jewelzoom (83, ref @daawat85): opens on a close-up of the jewelled flower, which shrinks back into its corner; glints play on the jewel; text crossfades in */
@keyframes cam-corner{0%{scale:2.7;translate:calc(var(--sw,310px) * var(--fx,.5) * -1.7) calc(var(--sh,551px) * var(--fy,.4) * -1.7)}14%{scale:2.7;translate:calc(var(--sw,310px) * var(--fx,.5) * -1.7) calc(var(--sh,551px) * var(--fy,.4) * -1.7);animation-timing-function:cubic-bezier(.6,0,.25,1)}100%{scale:1;translate:0 0}}
.is-video .mo-play.cam-corner .vbg{animation:cam-corner 3s linear both,vdip var(--cyc) linear both}
.is-video .mo-play.cam-corner .art{animation:cam-corner 3s linear both}

/* jewelsettle (95, ref @daawat85): the lavender iris jewel opens large in the middle of a lilac mist, then glides down and settles into its place */
.mo-jewelsettle .petals .jsv{inset:0;background-size:100% 100%;transform:scale(1.15);filter:blur(1.3em) brightness(1.04);opacity:0}
.mo-play.mo-jewelsettle .petals .jsv{animation:js-v 3.1s linear both}
@keyframes js-v{0%{opacity:0}6%,55%{opacity:1}100%{opacity:0}}
.mo-jewelsettle .petals .jsc{-webkit-mask-image:radial-gradient(closest-side,#000 80%,transparent 98%);mask-image:radial-gradient(closest-side,#000 80%,transparent 98%)}
.mo-play.mo-jewelsettle .petals .jsc{animation:js-c 3.5s both}
@keyframes js-c{0%{opacity:0;transform:translateY(calc(var(--sh,551px) * -.27)) scale(1.38)}14%{opacity:1;transform:translateY(calc(var(--sh,551px) * -.27)) scale(1.38);animation-timing-function:cubic-bezier(.6,0,.3,1)}84%{opacity:1;transform:none}92%{opacity:1;transform:none}100%{opacity:0;transform:none}}

/* jewelglint (88, ref @ly.foru): light runs across the jewelled brooch, glints sparkle, the names write themselves, then the lines fade */
.mo-jewelglint .petals .jgs{left:-4%;top:-2%;width:58%;height:34%;background:linear-gradient(120deg,rgba(255,240,235,0) 42%,rgba(255,246,240,.55) 50%,rgba(255,240,235,0) 58%) no-repeat;background-size:300% 100%;background-position:110% 0;-webkit-mask-image:radial-gradient(closest-side,#000 55%,transparent 100%);mask-image:radial-gradient(closest-side,#000 55%,transparent 100%);opacity:0}
.mo-play.mo-jewelglint .petals .jgs{animation:jg-s 2.4s .2s ease-in-out both}
@keyframes jg-s{0%{opacity:0;background-position:110% 0}15%{opacity:1}85%{opacity:1}100%{opacity:0;background-position:-10% 0}}

/* handsrise (84, ref @dreamzdesign): the painted hands rise from the bottom, a ring outline draws itself around the monogram, then the lines fade in */
.petals .hrc,.petals .hrp{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 16%);mask-image:linear-gradient(to bottom,transparent 0,#000 16%)}
.mo-play.mo-handsrise .petals .hrc{animation:hr-c 3.2s both}
.mo-play.mo-handsrise .petals .hrp{animation:cp-hide 2.7s linear both}
@keyframes hr-c{0%{opacity:0;transform:translateY(calc(var(--sh,551px) * .3))}18%{opacity:1;animation-timing-function:cubic-bezier(.25,.6,.3,1)}82%{opacity:1;transform:none}92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
.mo-handsrise .petals .hring{aspect-ratio:1;height:auto;overflow:visible;opacity:0}
.mo-handsrise .petals .hring circle{fill:none;stroke:rgba(110,78,54,.9);stroke-width:.55;stroke-dasharray:300;stroke-dashoffset:300;transform:rotate(-90deg);transform-origin:50% 50%}
.mo-play.mo-handsrise .petals .hring{animation:hr-o 2.6s 1.7s linear both}
.mo-play.mo-handsrise .petals .hring circle{animation:hr-d 1.7s 1.7s cubic-bezier(.45,.05,.4,1) both}
.mo-play.mo-handsrise .petals .hring circle+circle{animation-delay:1.95s}
@keyframes hr-d{0%{stroke-dashoffset:300}100%{stroke-dashoffset:0}}
@keyframes hr-o{0%{opacity:1}70%{opacity:1}100%{opacity:0}}
.mo-handsrise .petals .hrb{-webkit-mask-image:radial-gradient(closest-side,#000 80%,transparent 100%);mask-image:radial-gradient(closest-side,#000 80%,transparent 100%);filter:blur(.3em);opacity:0}
.mo-play.mo-handsrise .petals .hrb{animation:hr-b 3.3s linear both}
@keyframes hr-b{0%,60%{opacity:1}100%{opacity:0}}

/* couplerise (85, ref @toottouch): the couple glides up from the bottom into focus, gold motes drift, then «حفل خطوبة» and the lines glow in */
.petals .crc,.petals .crp{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 14%,#000 86%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent 0,#000 14%,#000 86%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 12%);mask-composite:intersect}
.petals .crp.blur{filter:blur(1.9em) brightness(1.06) saturate(.9)}
.mo-play.mo-couplerise .petals .crc{animation:cr-c 3.1s both}
.mo-play.mo-couplerise .petals .crp{animation:cp-hide 2.6s linear both}
@keyframes cr-c{0%{opacity:0;transform:translateY(calc(var(--sh,551px) * .14))}20%{opacity:.6;animation-timing-function:cubic-bezier(.25,.6,.3,1)}82%{opacity:1;transform:none}92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
.mo-couplerise .petals i.crm{border-radius:50%;background:radial-gradient(circle,#FFFDF2 0,#F2D58E 40%,rgba(242,213,142,0) 70%);opacity:0;animation:em-f var(--d,6s) ease-in-out infinite}

/* sketch (86, ref @noon14151): the pencil drawing shades itself in out of white paper, then every line of the poem appears one by one, in monochrome */
@keyframes cam-sketch{0%{scale:1.05;translate:calc(var(--sw,310px) * -.025) calc(var(--sh,551px) * -.02);filter:grayscale(1) contrast(.28) brightness(1.4) blur(1.4px)}55%{filter:grayscale(1) contrast(.8) brightness(1.08) blur(.2px)}100%{scale:1;translate:0 0;filter:grayscale(1) contrast(1) brightness(1) blur(0)}}
.is-video .mo-play.cam-sketch .vbg{animation:cam-sketch 3.4s cubic-bezier(.3,.2,.3,1) both,vdip var(--cyc) linear both}
.is-video .mo-play.cam-sketch .art{animation:none}
.mo-sketch .petals .skg{inset:0;background:radial-gradient(ellipse at 50% 45%,rgba(255,255,255,0) 55%,rgba(60,60,60,.10) 100%);opacity:0}
.mo-play.mo-sketch .petals .skg{animation:cpw-o var(--cyc) linear both}

/* sheer (89, ref @rahaf_invites): white sheer curtains sway at both sides, petals drift down, the poem appears line by line */
.mo-sheer .petals .shc{top:-3%;height:106%;width:34%;transform-origin:50% 0;opacity:0}
.mo-sheer .petals .shc.l{left:-6%;-webkit-mask-image:linear-gradient(to right,#000 30%,transparent);mask-image:linear-gradient(to right,#000 30%,transparent)}
.mo-sheer .petals .shc.r{right:-6%;-webkit-mask-image:linear-gradient(to left,#000 30%,transparent);mask-image:linear-gradient(to left,#000 30%,transparent)}
.mo-sheer .petals .shc b{position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0,rgba(255,255,255,.6) 1.1em,rgba(255,255,255,.18) 2.3em,rgba(255,255,255,.05) 3.2em)}
.mo-play.mo-sheer .petals .shc{animation:sh-in 1.6s ease-out both,sh-sw 5.5s 1.6s ease-in-out infinite alternate}
.mo-play.mo-sheer .petals .shc.r{animation:sh-in 1.6s ease-out both,sh-sw2 6.2s 1.6s ease-in-out infinite alternate}
@keyframes sh-in{0%{opacity:0;transform:skewX(0deg) scaleX(1.5)}100%{opacity:1;transform:skewX(0deg) scaleX(1)}}
@keyframes sh-sw{0%{opacity:1;transform:skewX(0deg) scaleX(1)}100%{opacity:1;transform:skewX(3.2deg) scaleX(1.06)}}
@keyframes sh-sw2{0%{opacity:1;transform:skewX(0deg) scaleX(1)}100%{opacity:1;transform:skewX(-3.2deg) scaleX(1.06)}}
.mo-sheer .petals i.spt{top:-6%;width:calc(1.2em * var(--k,1));height:calc(.85em * var(--k,1));border-radius:80% 0 80% 0;background:linear-gradient(135deg,#FFFFFF,#F7E9E6 55%,#E8CEC9);box-shadow:0 .1em .25em rgba(120,90,80,.18);opacity:0;animation:ptfall var(--d,10s) linear infinite}
.mo-sheer .petals i.spt.w{background:linear-gradient(135deg,#FFFEFA,#F4ECDF 60%,#E2D3BD)}

/* acrylic (99, ref @rotella.design «3D»): a 3D camera glide through the white hall, then the frosted acrylic sign lights up and the details appear on it */
@keyframes cam-hall{0%{scale:1.8;translate:calc(var(--sw,310px) * -.4) calc(var(--sh,551px) * -.016);rotate:x 12deg}20%{scale:1.72;translate:calc(var(--sw,310px) * -.36) calc(var(--sh,551px) * -.02);rotate:x 10deg}100%{scale:1;translate:0 0;rotate:x 0deg}}
.is-video .mo-play.cam-hall .vbg{animation:cam-hall 3.1s cubic-bezier(.45,0,.2,1) both,vdip var(--cyc) linear both}
.is-video .mo-play.cam-hall .art{animation:cam-hall 3.1s cubic-bezier(.45,0,.2,1) both}
.is-video .stage.cam-hall{perspective:1200px}
.mo-acrylic .petals .acf,.mo-acrylic .petals .acg{left:16.5%;top:20.5%;width:61%;height:66%;border-radius:2.2em;opacity:0}
.mo-acrylic .petals .acf{background:rgba(255,255,255,.7);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);-webkit-mask-image:radial-gradient(ellipse closest-side,#000 72%,transparent 100%);mask-image:radial-gradient(ellipse closest-side,#000 72%,transparent 100%)}
.mo-play.mo-acrylic .petals .acf{animation:ac-f 1.7s 2.5s ease-in-out both}
@keyframes ac-f{0%{opacity:0}35%{opacity:.9}100%{opacity:0}}
.mo-acrylic .petals .acg{background:linear-gradient(115deg,rgba(255,255,255,0) 38%,rgba(255,255,255,.85) 50%,rgba(255,255,255,0) 62%) no-repeat;background-size:300% 100%;background-position:115% 0;-webkit-mask-image:radial-gradient(closest-side,#000 70%,transparent 100%);mask-image:radial-gradient(closest-side,#000 70%,transparent 100%)}
.mo-play.mo-acrylic .petals .acg{animation:ac-g 1.9s 3.2s ease-in-out both}
@keyframes ac-g{0%{opacity:0;background-position:115% 0}15%{opacity:1}85%{opacity:1}100%{opacity:0;background-position:-15% 0}}
.mo-acrylic .petals i.em{border-radius:50%;background:radial-gradient(circle,#FFFDF2 0,#F2D58E 40%,rgba(242,213,142,0) 70%);opacity:0;animation:em-f var(--d,6s) ease-in-out infinite}

/* steam (101, ref @zcards): a slow push-in on the coffee table, gentle steam rises from the dallah and the finjans, the two family columns slide in together */
.mo-steam .petals i.stw{width:4.2em;height:7.5em;margin:-7em 0 0 -2.1em;border-radius:50%;background:radial-gradient(ellipse at 50% 62%,rgba(255,255,255,.95),rgba(255,255,255,.55) 38%,rgba(236,228,216,.25) 58%,rgba(255,255,255,0) 72%);filter:blur(.45em);opacity:0;animation:st-r var(--d,5.5s) ease-out infinite}
@keyframes st-r{0%{opacity:0;transform:translate(0,1.5em) scale(.3,.4)}18%{opacity:.9}55%{opacity:.6;transform:translate(calc(var(--sx,0em) * .6),-2.6em) scale(.75,1)}100%{opacity:0;transform:translate(var(--sx,0em),-6em) scale(1.25,1.45)}}
.mo-steam .petals .stwarm{inset:0;background:radial-gradient(ellipse at 25% 70%,rgba(255,236,200,.35),rgba(255,236,200,0) 60%);opacity:0}
.mo-play.mo-steam .petals .stwarm{animation:cpw-o var(--cyc) linear both}

/* couplerise camera: the whole scene glides up into focus, so the couple arrives from below without any doubling */
.is-video .stage.cam-glideup{--camk:cam-glideup}
@keyframes cam-glideup{0%{scale:1.14;translate:calc(var(--sw,310px) * -.07) calc(var(--sh,551px) * -.028);filter:blur(7px) brightness(1.06)}55%{filter:blur(0) brightness(1)}100%{scale:1;translate:0 0;filter:none}}
.is-video .mo-play.cam-glideup .vbg{animation:cam-glideup 2.8s cubic-bezier(.3,.3,.25,1) both,vdip var(--cyc) linear both}
.is-video .mo-play.cam-glideup .art{animation:none}
.mo-couplerise .petals .crv{left:0;right:0;bottom:0;height:50%;background:linear-gradient(to top,rgba(255,252,248,.9),rgba(255,252,248,0));opacity:0}
.mo-play.mo-couplerise .petals .crv{animation:cr-v 2.6s ease-out both}
@keyframes cr-v{0%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-40%)}}
