/* StillFeeling: one continuous, silent reveal. Keep the seven existing designs. */
.ecard-player.sf-original-card .delivery-scene{transition:opacity 720ms cubic-bezier(.22,.68,.24,1),visibility 720ms}
.ecard-player.sf-original-card .card-world{transition:opacity 720ms cubic-bezier(.22,.68,.24,1),visibility 720ms;background:#fffaf1}
.ecard-player.sf-original-card .delivery-caption{transition:opacity 700ms ease}
.ecard-player.sf-original-card .delivery-scene.is-running .delivery-caption{animation:sf-flow-words 1.6s ease both}
.ecard-player.sf-original-card .delivery-scene.is-finished .delivery-caption{opacity:0;animation:none}
.ecard-player.sf-original-card.sf-flow-landing .card-topbar,
.ecard-player.sf-original-card.sf-flow-landing .card-navigation{animation:sf-flow-controls 720ms ease both}
.ecard-player.sf-original-card .sf-soul-stage::after{content:"";position:absolute;inset:8% -12% 4%;pointer-events:none;z-index:29;background:radial-gradient(ellipse at 50% 48%,#fff5de42,transparent 58%);opacity:0}
.ecard-player.sf-original-card .is-running .sf-soul-stage::after{animation:sf-flow-pearl 12s ease-in-out both}
.ecard-player.sf-original-card[data-sf-delivery=starlight] .sf-soul-stage::after{background:radial-gradient(ellipse at 50% 48%,#e7d6f538,transparent 60%)}
@keyframes sf-flow-words{from{opacity:0;translate:0 7px}to{opacity:1;translate:0 0}}
@keyframes sf-flow-controls{0%,25%{opacity:0;translate:0 8px}100%{opacity:1;translate:0 0}}
@keyframes sf-flow-pearl{0%{opacity:.12;scale:.9}38%{opacity:.65;scale:1.04}72%{opacity:.3;scale:1.13}100%{opacity:.08;scale:1.2}}
/* Lift, unfurl and travel without coming to a complete stop between beats. */
@keyframes sfh-keepsake-lid{0%{opacity:1;transform:translate(-50%,-50%) scale(.94)}16%{opacity:1;transform:translate(-50%,calc(-50% - 1cqh)) scale(1)}64%{opacity:.4;transform:translate(-50%,calc(-50% - 22cqh)) perspective(800px) rotateX(-48deg) scale(.8)}100%{opacity:.12;transform:translate(-50%,calc(-50% - 26cqh)) perspective(800px) rotateX(-54deg) scale(.77)}}
@keyframes sfp-unfurl-back{0%{transform:translate(-50%,-100%) rotate(var(--closed)) scale(.63,1)}64%{transform:translate(-50%,-100%) rotate(var(--a)) scale(.95,.65)}100%{transform:translate(-50%,-99%) rotate(calc(var(--a) + 2deg)) scale(.97,.63)}}
@keyframes sfp-unfurl-inner{0%{transform:translate(-50%,-100%) rotate(var(--closed)) scale(.5,.88)}70%{transform:translate(-50%,-100%) rotate(var(--a)) scale(.8,.45)}100%{transform:translate(-50%,-99%) rotate(calc(var(--a) + 1deg)) scale(.82,.44)}}
@keyframes sfp-unfurl-front{0%{transform:translate(-50%,-100%) rotate(var(--closed)) scale(.67,.97)}68%{transform:translate(-50%,-100%) rotate(var(--a)) scale(.97,.5)}100%{transform:translate(-50%,-99%) rotate(calc(var(--a) + 2deg)) scale(.98,.48)}}
@keyframes sfg-lift-lid{0%{opacity:1;transform:translateX(-50%)}35%{opacity:1;transform:translate(-58%,-48%) rotate(-10deg)}70%{opacity:.18;transform:translate(-94%,-75%) rotate(-18deg)}100%{opacity:0;transform:translate(-100%,-83%) rotate(-22deg)}}
@keyframes sfg-from-cavity{0%,39%{opacity:0;transform:translate(-50%,calc(-50% + var(--sfg-origin))) scale(.56)}48%{opacity:.8;transform:translate(-50%,calc(-50% + 17cqh)) scale(.6)}68%{opacity:1;transform:translate(-50%,calc(-50% + 7cqh)) scale(.76)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes sft-star-unfold{0%{opacity:0;transform:translate(calc(-50% - 100vw),calc(-50% + 46dvh)) rotate(-12deg) scale(.65)}10%{opacity:1}36%{opacity:1;transform:translate(-50%,-50%) rotate(-2deg) scale(1);filter:drop-shadow(0 0 30px #fff1d68c)}48%{opacity:1;transform:translate(calc(-50% + 8vw),calc(-50% - 5dvh)) rotate(2deg) scale(1.02);filter:drop-shadow(0 0 34px #fff1d6)}65%{opacity:1;transform:translate(calc(-50% + 40vw),calc(-50% - 25dvh)) rotate(9deg) scale(.9)}100%{opacity:0;transform:translate(calc(-50% + 125vw),calc(-50% - 72dvh)) rotate(18deg) scale(.6)}}
@keyframes sfl-bunch-arrival{0%{opacity:0;transform:translateY(95dvh) rotate(-3deg)}8%{opacity:1}30%{opacity:1;transform:translateY(1dvh) rotate(1deg)}52%{opacity:1;transform:translateY(-1dvh) rotate(-.6deg)}100%{opacity:1;transform:translateY(-5dvh) rotate(.5deg)}}
@keyframes sfl-fan-left{0%,30%{opacity:1;transform:translate(0,0) rotate(0)}52%{opacity:1;transform:translate(-50px,-25px) rotate(-3deg)}81%{opacity:1;transform:translate(-290px,-100px) rotate(-10deg)}100%{opacity:0;transform:translate(-385px,-360px) rotate(-16deg)}}
@keyframes sfl-fan-right{0%,32%{opacity:1;transform:translate(0,0) rotate(0)}54%{opacity:1;transform:translate(50px,-25px) rotate(3deg)}83%{opacity:1;transform:translate(290px,-100px) rotate(10deg)}100%{opacity:0;transform:translate(385px,-360px) rotate(16deg)}}
@keyframes sfb-flowers-left{0%{opacity:1;transform:translate(0,0) rotate(0)}43%{opacity:1;transform:translate(-10px,4px) rotate(-1deg)}78%{opacity:.95;transform:translate(-430px,95px) rotate(-18deg)}100%{opacity:0;transform:translate(-700px,210px) rotate(-26deg)}}
@keyframes sfb-flowers-right{0%{opacity:1;transform:translate(0,0) rotate(0)}45%{opacity:1;transform:translate(10px,4px) rotate(1deg)}81%{opacity:.95;transform:translate(430px,95px) rotate(18deg)}100%{opacity:0;transform:translate(700px,210px) rotate(26deg)}}
@keyframes sfb-flowers-bottom{0%{opacity:1;transform:translateY(0)}44%{opacity:1;transform:translateY(8px)}83%{opacity:.6;transform:translateY(420px)}100%{opacity:0;transform:translateY(650px)}}
/* One curved card exit replaces the lift / hold / rotate sequence. */
@keyframes sf-slide-through-opening{0%,10%{opacity:0;top:50%;transform:translate(-50%,-50%) rotate(90deg) scale(.48)}18%{opacity:1;top:50%;transform:translate(-50%,-55%) rotate(90deg) scale(.48)}49%{opacity:1;top:50%;transform:translate(-50%,-90%) rotate(85deg) scale(.49)}72%{opacity:1;top:50%;transform:translate(-50%,-78%) rotate(30deg) scale(.75)}100%{opacity:1;top:50%;transform:translate(-50%,-50%) rotate(0) scale(1)}}
@keyframes sf-sleeve-away{0%,48%{opacity:1;transform:translateY(0)}74%{opacity:.6;transform:translateY(18px)}100%{opacity:0;transform:translateY(45px)}}
@media(prefers-reduced-motion:reduce){.ecard-player.sf-original-card:not(.motion-enabled) :is(.delivery-scene,.card-world){transition:none}.ecard-player.sf-original-card:not(.motion-enabled) :is(.delivery-caption,.card-topbar,.card-navigation){animation:none!important}.ecard-player.sf-original-card:not(.motion-enabled) .sf-soul-stage::after{animation:none!important}}

/* Preserve the artwork proportions during the final glide, including wide screens. */
.ecard-player.sf-original-card .journey-card img{object-fit:contain!important}

/* The welcome is a true sealed state: never expose the chosen artwork early. */
.ecard-player.sf-waiting .journey-object,.ecard-player.sf-waiting .card-world{visibility:hidden!important;opacity:0!important;pointer-events:none!important}
.ecard-player.sf-waiting .sealed-screen{padding:2rem;background:radial-gradient(ellipse at 20% 20%,#f6e6ec,transparent 65%),radial-gradient(ellipse at 85% 80%,#dce9e8,transparent 65%),#fff8f1}
