/* Three finite, silent reveal scenes around each selected card's own envelope. */
.sf-idea-silk,.sf-idea-garden,.sf-idea-gift{display:none;pointer-events:none;position:absolute;inset:0}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-object.sf-emerging-envelope{top:44%;animation:sf-starlight-envelope 14s cubic-bezier(.22,.7,.28,1) both;z-index:31;filter:drop-shadow(0 20px 24px #906e9133)}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-object.is-opening{animation:none;opacity:1;transform:translate(-50%,-50%);clip-path:none;overflow:visible}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-object.is-opening .journey-envelope-back{animation:sf-starlight-envelope-release 4.3s ease both;overflow:visible;isolation:isolate}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-envelope-back::before,.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-envelope-back::after{content:"";position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 58%);pointer-events:none}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-envelope-back::before{background-image:var(--sf-envelope-art);background-size:100% 100%;transform-origin:50% 0;z-index:2;backface-visibility:hidden}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-envelope-back::after{background:linear-gradient(#eee3dc,#fff9ed);opacity:0;z-index:1}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .is-opening .journey-envelope-back::before{animation:sf-starlight-flap 4.3s ease both}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .is-opening .journey-envelope-back::after{animation:sf-starlight-pocket 4.3s ease both}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .journey-object.is-opening .journey-card{animation:sf-starlight-card-release 4.3s ease both}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .delivery-caption{color:#65506c;font-style:italic;bottom:8%;z-index:40}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .delivery-scene.is-revealing .sf-soul-stage{transition:opacity 4.3s;opacity:.22}
.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .sf-soul-heart,.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .sf-soul-halo,.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .sf-soul-water,.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .sf-soul-dust,.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .sf-soul-petals,.sf-soul-reveal:is([data-sf-delivery=silk],[data-sf-delivery=butterfly],[data-sf-delivery=gift]) .sf-soul-veil{display:none}

.sf-soul-reveal[data-sf-delivery=silk] .sf-soul-stage{background:radial-gradient(ellipse at 50% 40%,#fffdf7,#f3e6e8 65%,#e6dfef)}
[data-sf-delivery=silk] .sf-idea-silk{display:block;z-index:32;overflow:hidden}
.sf-organza{position:absolute;inset:-15% 48% -15% -28%;background:repeating-linear-gradient(105deg,#fffaf2dd 0%,#f1d9e5dd 13%,#fff9f1f2 22%,#e3d9ebee 30%);border-radius:0 50% 40% 0;box-shadow:18px 0 45px #d9bcb955;transform:rotate(-8deg)}
.sf-organza-right{inset:-15% -28% -15% 48%;border-radius:50% 0 0 40%;transform:rotate(8deg)}
[data-sf-delivery=silk] .is-running .sf-organza-left{animation:sf-organza-left 14s ease-in-out both}
[data-sf-delivery=silk] .is-running .sf-organza-right{animation:sf-organza-right 14s ease-in-out both}
.sf-pearl-strand{position:absolute;top:32%;left:27%;width:25%;display:flex;flex-direction:column;align-items:center;gap:8px;transform:rotate(-25deg);filter:drop-shadow(2px 4px 3px #947e8b44)}
.sf-pearl-strand i{display:block;width:clamp(8px,1.5vw,15px);height:clamp(8px,1.5vw,15px);border-radius:50%;background:radial-gradient(circle at 32% 25%,#fff,#fff9e9 30%,#d7c6bd 75%,#f6ede8);border:1px solid #fff8ed}
.sf-pearl-right{left:48%;transform:rotate(25deg)}
[data-sf-delivery=silk] .is-running .sf-pearl-left{animation:sf-pearls-left 14s ease-in-out both}
[data-sf-delivery=silk] .is-running .sf-pearl-right{animation:sf-pearls-right 14s ease-in-out both}
@keyframes sf-organza-left{0%,22%{transform:translateX(15%) rotate(-8deg)}65%{transform:translateX(-45%) rotate(-20deg)}100%{transform:translateX(-90%) rotate(-28deg);opacity:.15}}
@keyframes sf-organza-right{0%,22%{transform:translateX(-15%) rotate(8deg)}65%{transform:translateX(45%) rotate(20deg)}100%{transform:translateX(90%) rotate(28deg);opacity:.15}}
@keyframes sf-pearls-left{0%,22%{opacity:1;transform:translate(0,0) rotate(-25deg)}75%,100%{opacity:.2;transform:translate(-150%,15%) rotate(-50deg)}}
@keyframes sf-pearls-right{0%,22%{opacity:1;transform:translate(0,0) rotate(25deg)}75%,100%{opacity:.2;transform:translate(150%,15%) rotate(50deg)}}
.sf-soul-reveal[data-sf-delivery=butterfly] .sf-soul-stage{background:radial-gradient(ellipse at 50% 35%,#fffff8,#f1f0e6 50%,#e6ede8)}
[data-sf-delivery=butterfly] .sf-idea-garden{display:block;z-index:32}
.sf-idea-garden>svg:first-child{width:100%;height:100%;position:absolute;inset:0}
.sf-garden-branch{transform-box:view-box;transform-origin:center}
[data-sf-delivery=butterfly] .is-running .sf-garden-left{animation:sf-garden-left 14s ease-in-out both}
[data-sf-delivery=butterfly] .is-running .sf-garden-right{animation:sf-garden-right 14s ease-in-out both}
.sf-idea-butterfly{position:absolute;left:var(--bx);top:var(--by);width:clamp(45px,9vw,90px);overflow:visible;filter:drop-shadow(0 5px 5px #8a738b33);opacity:0}
[data-sf-delivery=butterfly] .is-running .sf-idea-butterfly{animation:sf-butterfly-flight 12s ease-in-out both;animation-delay:var(--bd)}
.sf-butterfly-wing{transform-origin:0 0}
[data-sf-delivery=butterfly] .is-running .sf-wing-left{animation:sf-wing-left 1.4s ease-in-out 9 alternate}
[data-sf-delivery=butterfly] .is-running .sf-wing-right{animation:sf-wing-right 1.4s ease-in-out 9 alternate}
@keyframes sf-garden-left{0%,20%{transform:translateX(22%)}72%,100%{transform:translateX(-12%)}}
@keyframes sf-garden-right{0%,20%{transform:translate(78%,0) scale(-1,1)}72%,100%{transform:translate(112%,0) scale(-1,1)}}
@keyframes sf-butterfly-flight{0%{opacity:0;transform:translate(-30px,100px) rotate(-12deg) scale(.7)}15%{opacity:1}45%{transform:translate(35px,0) rotate(12deg) scale(1)}75%{opacity:1;transform:translate(-20px,-110px) rotate(-8deg)}100%{opacity:0;transform:translate(70px,-250px) rotate(20deg) scale(.6)}}
@keyframes sf-wing-left{from{transform:scaleX(1)}to{transform:scaleX(.3)}}
@keyframes sf-wing-right{from{transform:scaleX(-1)}to{transform:scaleX(-.3)}}
.sf-soul-reveal[data-sf-delivery=gift] .sf-soul-stage{background:radial-gradient(ellipse at 50% 40%,#fffdf4,#efe4eb 65%,#dedde9)}
[data-sf-delivery=gift] .sf-idea-gift{display:block;z-index:32;perspective:1000px}
.sf-gift-box{position:absolute;left:50%;top:57%;width:min(72vw,29rem);height:23%;transform:translateX(-50%);filter:drop-shadow(0 25px 24px #88708b33)}
.sf-gift-front{position:absolute;inset:0;background:linear-gradient(110deg,#fbf4ed,#e7d7dd 60%,#fff5ed);border:1px solid #d1bfa6;border-radius:3px 3px 12px 12px;overflow:hidden}
.sf-gift-front:after{content:"";position:absolute;inset:14px;border:1px solid #bda47766;border-radius:4px}
.sf-gift-front>span,.sf-gift-lid>span{position:absolute;inset:0 43%;background:linear-gradient(90deg,#b89865,#f4e2b5 45%,#c6a674);box-shadow:0 0 4px #b69a5d33}
.sf-gift-lining{position:absolute;inset:-15% 0 65%;background:radial-gradient(ellipse,#fef2d4,#b59b86);border:5px solid #f3e5df;border-radius:50%}
.sf-gift-lid{position:absolute;inset:-14% -3% 82%;background:linear-gradient(110deg,#fff8ed,#ead7df);border:1px solid #c7af8b;border-radius:5px;transform-origin:50% 0;box-shadow:0 5px 8px #937c8333}
.sf-gift-loop{position:absolute;width:32%;height:135%;bottom:70%;left:20%;border:12px solid #dfc28c;border-radius:80% 80% 15% 80%;transform:rotate(20deg);box-shadow:inset 0 2px 4px #fff9e2,0 2px 3px #af906544}
.sf-gift-loop-right{left:48%;transform:scaleX(-1) rotate(20deg)}
.sf-gift-glow{position:absolute;inset:15% 10% 25%;background:radial-gradient(ellipse,#fffbe4bb,transparent 65%);opacity:0}
[data-sf-delivery=gift] .is-running .sf-gift-lid{animation:sf-gift-open 14s ease-in-out both}
[data-sf-delivery=gift] .is-running .sf-gift-box{animation:sf-gift-away 14s ease-in-out both}
[data-sf-delivery=gift] .is-running .sf-gift-loop-left{animation:sf-gift-ribbon-left 14s ease-in-out both}
[data-sf-delivery=gift] .is-running .sf-gift-loop-right{animation:sf-gift-ribbon-right 14s ease-in-out both}
[data-sf-delivery=gift] .is-running .sf-gift-glow{animation:sf-gift-light 14s ease both}
@keyframes sf-gift-open{0%,22%{transform:translateY(0) rotateX(0);opacity:1}48%{transform:translateY(-150%) rotateX(60deg);opacity:1}72%,100%{transform:translateY(-350%) rotateX(85deg);opacity:0}}
@keyframes sf-gift-away{0%,50%{transform:translateX(-50%);opacity:1}85%,100%{transform:translate(-50%,65%);opacity:0}}
@keyframes sf-gift-ribbon-left{0%,15%{transform:rotate(20deg);opacity:1}45%,100%{transform:translateX(-90%) rotate(-30deg);opacity:0}}
@keyframes sf-gift-ribbon-right{0%,15%{transform:scaleX(-1) rotate(20deg);opacity:1}45%,100%{transform:translateX(90%) scaleX(-1) rotate(-30deg);opacity:0}}
@keyframes sf-gift-light{0%,20%{opacity:0}50%,75%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.sf-soul-reveal:not(.motion-enabled) .sf-idea-silk,.sf-soul-reveal:not(.motion-enabled) .sf-idea-garden,.sf-soul-reveal:not(.motion-enabled) .sf-idea-gift{display:none!important}}

/* Shared, approved landscape stationery. Each scene has its own arrival story. */
.ecard-player.sf-soul-reveal{--sf-arrival:5.8s}
.ecard-player.sf-soul-reveal[data-sf-delivery=heart],.ecard-player.sf-soul-reveal[data-sf-delivery=light]{--sf-arrival:5.2s}
.ecard-player.sf-soul-reveal[data-sf-delivery=starlight]{--sf-arrival:4.6s}
.ecard-player.sf-soul-reveal[data-sf-delivery=silk]{--sf-arrival:5.6s}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.sf-emerging-envelope{top:46%;width:min(70vw,calc(29dvh * var(--sf-envelope-ratio,1.48)),23rem);animation:sf-focus-envelope 12s cubic-bezier(.22,.65,.3,1) both;z-index:31;filter:none;transform-style:flat}
.ecard-player.sf-soul-reveal[data-sf-delivery=envelope] .journey-object.sf-emerging-envelope{animation-duration:8s}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back{border-radius:2px;box-shadow:0 2px 3px #65515a22,0 10px 22px #65515a16;background-color:transparent;overflow:visible;isolation:isolate}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening{animation:none;top:46%;width:min(70vw,calc(29dvh * var(--sf-envelope-ratio,1.48)),23rem);opacity:1;transform:translate(-50%,-50%);clip-path:none;overflow:visible;filter:none;transform-style:flat}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-envelope-back{animation:sf-focus-envelope-away 6s ease both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back::before,.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back::after{content:"";position:absolute;inset:0;clip-path:polygon(0 0,100% 0,50% 58%);pointer-events:none}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back::before{background-image:var(--sf-envelope-art);background-size:100% 100%;transform-origin:50% 0;z-index:2;backface-visibility:hidden}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back::after{background:linear-gradient(175deg,#ece2dc,#fffaf0);opacity:0;z-index:1}
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .journey-envelope-back::before{animation:sf-focus-flap 6s cubic-bezier(.3,.1,.25,1) both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .journey-envelope-back::after{animation:sf-focus-lining 6s ease both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-card{width:min(48dvh,80vw);height:72dvh;background:transparent;border-radius:1px;animation:sf-focus-card 6s cubic-bezier(.22,.65,.3,1) both;overflow:visible;z-index:3}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-card img{object-fit:contain;filter:drop-shadow(0 3px 6px #63536820)}
.ecard-player.sf-soul-reveal[data-sf-delivery] .delivery-caption{color:#695568;font-family:Georgia,serif;font-style:italic;font-size:clamp(.85rem,3vw,1.05rem);letter-spacing:.01em;bottom:12%;z-index:40}
.ecard-player.sf-soul-reveal[data-sf-delivery] .delivery-scene.is-revealing .sf-soul-stage{transition:opacity 6s ease;opacity:.45}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.sf-emerging-envelope{animation-duration:4.6s}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back{z-index:1;background-size:cover;background-position:center;border-radius:2px}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back::before{background-size:cover;background-position:center}
.ecard-player.sf-soul-reveal[data-sf-delivery] .sf-refined-pocket{display:block;position:absolute;inset:0;z-index:4;border-radius:2px;background-image:var(--sf-envelope-art);background-size:cover;background-position:center;clip-path:polygon(0 0,50% 58%,100% 0,100% 100%,0 100%);filter:drop-shadow(0 -1px 1px #67556520)}
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .sf-refined-pocket{animation:sf-sleeve-away 6s ease both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-envelope-back{animation:sf-sleeve-away 6s ease both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-card{animation:sf-slide-through-opening 6s cubic-bezier(.25,.55,.3,1) both;transform-origin:50% 50%;z-index:3;clip-path:none;overflow:visible}
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .journey-envelope-back::before{animation:sf-sleeve-flap 6s ease both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .journey-envelope-back::after{animation:sf-sleeve-lining 6s ease both}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.sf-emerging-envelope,
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening{width:min(76vw,46dvh,25rem);aspect-ratio:1.6;height:auto;top:46%;transform-style:flat;filter:none}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.sf-emerging-envelope{animation:sf-focus-envelope var(--sf-arrival) cubic-bezier(.22,.65,.3,1) both;z-index:31}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening{animation:none;opacity:1;clip-path:none;overflow:visible;transform:translate(-50%,-50%)}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back{z-index:1;background-size:cover;background-position:center;border-radius:2px;box-shadow:0 2px 3px #65515a22,0 10px 22px #65515a16}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-envelope-back::before{background-size:cover;background-position:center}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-card{animation:sf-slide-through-opening 6s cubic-bezier(.25,.55,.3,1) both;transform-origin:50% 50%;z-index:3;clip-path:none;overflow:visible}
.ecard-player.sf-soul-reveal .sf-soul-dust{display:none}
/* Light: narrow rays gather into a warm glow, without any curtain. */
.sf-light-paths{display:none;position:absolute;inset:0;z-index:28;pointer-events:none}
.sf-light-paths svg{width:100%;height:100%}
.ecard-player[data-sf-delivery=light] .sf-light-paths{display:block}
.ecard-player[data-sf-delivery=light] .sf-soul-veil,.ecard-player[data-sf-delivery=light] .sf-soul-water{display:none!important}
.ecard-player[data-sf-delivery=light] .sf-soul-stage{background:radial-gradient(ellipse at 50% 46%,#fffdf2,#f6efe8 50%,#e4e8ed)}
.ecard-player[data-sf-delivery=light] .sf-soul-halo{inset:20% 5% 28%;background:radial-gradient(ellipse,#fffce9,#e9d4a840 45%,transparent 70%);filter:blur(14px)}
.ecard-player[data-sf-delivery=light] .is-running .sf-soul-halo{animation:sf-light-gather var(--sf-arrival) ease both}
.sf-light-paths path{fill:none;stroke:#bea572;stroke-width:1.2;stroke-dasharray:1200;stroke-dashoffset:1200;opacity:0}
.sf-light-paths path:nth-child(2){stroke:#fffdf0;stroke-width:5;filter:blur(3px)}
.ecard-player[data-sf-delivery=light] .is-running .sf-light-paths path{animation:sf-light-trace var(--sf-arrival) ease both}
@keyframes sf-light-trace{0%{stroke-dashoffset:1200;opacity:0}22%{opacity:.7}65%{stroke-dashoffset:0;opacity:.65}100%{stroke-dashoffset:-900;opacity:0}}
@keyframes sf-light-gather{0%{opacity:0;transform:scale(.45)}45%{opacity:.9;transform:scale(.95)}100%{opacity:.25;transform:scale(1.15)}}
/* Silk: a narrow champagne ribbon loosens around the stationery. */
.ecard-player[data-sf-delivery=silk] .sf-organza{display:none}
.ecard-player[data-sf-delivery=silk] .sf-idea-silk{z-index:32}
.sf-silk-wrap{position:absolute;left:50%;top:46%;width:min(76vw,46dvh,25rem);aspect-ratio:1.6;transform:translate(-50%,-50%)}
.sf-silk-band{position:absolute;inset:-4% 47%;background:linear-gradient(90deg,#c9ad7d,#fff3d6 45%,#d4b78b);border-radius:2px;box-shadow:1px 1px 2px #755f6720}
.sf-silk-loop{position:absolute;top:28%;left:18%;width:32%;height:32%;border:5px solid #e3c89c;border-radius:70% 65% 15% 65%;box-shadow:inset 0 1px 2px #fff8e7;transform:rotate(14deg);transform-origin:100% 90%}
.sf-silk-loop-right{left:50%;transform:scaleX(-1) rotate(14deg);transform-origin:0% 90%}
.ecard-player[data-sf-delivery=silk] .is-running .sf-silk-band{animation:sf-silk-loosen var(--sf-arrival) ease-in-out both}
.ecard-player[data-sf-delivery=silk] .is-running .sf-silk-loop-left{animation:sf-silk-bow-left var(--sf-arrival) ease-in-out both}
.ecard-player[data-sf-delivery=silk] .is-running .sf-silk-loop-right{animation:sf-silk-bow-right var(--sf-arrival) ease-in-out both}
.ecard-player[data-sf-delivery=silk] .sf-pearl-strand{top:59%;left:32%;width:38%;flex-direction:row;gap:4px;transform:rotate(-8deg);filter:drop-shadow(1px 2px 2px #947e8b33)}
.ecard-player[data-sf-delivery=silk] .sf-pearl-strand i{width:clamp(4px,1vw,7px);height:clamp(4px,1vw,7px);flex-shrink:0}
.ecard-player[data-sf-delivery=silk] .sf-pearl-right{display:none}
.ecard-player[data-sf-delivery=silk] .is-running .sf-pearl-left{animation:sf-pearl-unstring var(--sf-arrival) ease-in-out both}
@keyframes sf-silk-loosen{0%,15%{opacity:0;transform:scaleY(.7)}28%{opacity:1;transform:scaleY(1)}65%{opacity:.8;transform:translateY(40%) rotate(18deg) scaleY(1.15)}100%{opacity:0;transform:translate(80%,120%) rotate(35deg)}}
@keyframes sf-silk-bow-left{0%,15%{opacity:0;transform:rotate(14deg) scale(.8)}28%{opacity:1;transform:rotate(14deg) scale(1)}65%{opacity:.8;transform:translate(-35%,10%) rotate(-25deg) scale(.65)}100%{opacity:0;transform:translate(-110%,50%) rotate(-55deg) scale(.2)}}
@keyframes sf-silk-bow-right{0%,15%{opacity:0;transform:scaleX(-1) rotate(14deg) scale(.8)}28%{opacity:1;transform:scaleX(-1) rotate(14deg) scale(1)}65%{opacity:.8;transform:translate(35%,10%) scaleX(-1) rotate(-25deg) scale(.65)}100%{opacity:0;transform:translate(110%,50%) scaleX(-1) rotate(-55deg) scale(.2)}}
@keyframes sf-pearl-unstring{0%,18%{opacity:0;transform:translateY(0) rotate(-8deg)}32%{opacity:.9}70%{opacity:.7;transform:translate(35%,30%) rotate(12deg)}100%{opacity:0;transform:translate(110%,100%) rotate(25deg)}}
/* The remaining scenes share the new pacing and lighter materials. */
.ecard-player[data-sf-delivery=heart] .sf-soul-heart{width:min(58vw,32dvh);height:32dvh;top:46%}
.ecard-player[data-sf-delivery=heart] .is-running .sf-soul-heart path{animation-duration:var(--sf-arrival);stroke-width:.6;filter:drop-shadow(0 0 3px #e4c990)}
.ecard-player[data-sf-delivery=heart] .is-running .sf-soul-halo{animation-duration:var(--sf-arrival);filter:blur(18px)}
.ecard-player[data-sf-delivery=flower] .sf-soul-petals i{background:radial-gradient(ellipse at 50% 12%,#fffcf5,#efdbe5 58%,#d4c4df);border:1px solid #fff8ed;box-shadow:inset 2px 2px 8px #fff6,1px 3px 8px #6c487b16}
.ecard-player[data-sf-delivery=flower]:has(.is-running) .sf-soul-petals,
.ecard-player[data-sf-delivery=flower]:has(.is-running) .sf-soul-petals i,
.ecard-player[data-sf-delivery=flower]:has(.is-running) .sf-soul-water,
.ecard-player[data-sf-delivery=flower] .is-running .sf-soul-halo{animation-duration:var(--sf-arrival)}
.ecard-player[data-sf-delivery=flower] .journey-object.sf-emerging-envelope{animation:sf-flower-present var(--sf-arrival) cubic-bezier(.22,.65,.3,1) both}
@keyframes sf-flower-present{0%,32%{opacity:0;transform:translate(-50%,20%) scale(.55)}52%{opacity:1;transform:translate(-50%,-5%) scale(.75)}88%,100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.ecard-player[data-sf-delivery=butterfly] .is-running .sf-garden-branch{animation-duration:var(--sf-arrival)}
.ecard-player[data-sf-delivery=butterfly] .is-running .sf-idea-butterfly{animation-duration:4.6s;animation-delay:var(--bd)}
.ecard-player[data-sf-delivery=butterfly] .is-running .sf-butterfly-wing{animation-duration:1.2s;animation-iteration-count:4}
.ecard-player[data-sf-delivery=gift] .sf-gift-loop{border-width:6px;box-shadow:inset 0 1px 2px #fff9e2}
.ecard-player[data-sf-delivery=gift] .sf-gift-box{filter:drop-shadow(0 8px 12px #88708b24)}
.ecard-player[data-sf-delivery=gift] .is-running :is(.sf-gift-lid,.sf-gift-box,.sf-gift-loop,.sf-gift-glow){animation-duration:var(--sf-arrival)}
@media(prefers-reduced-motion:reduce){.ecard-player.sf-soul-reveal:not(.motion-enabled) .sf-light-paths{display:none}.ecard-player.sf-soul-reveal:not(.motion-enabled) .journey-object,.ecard-player.sf-soul-reveal:not(.motion-enabled) .journey-object *{animation:none!important}}

/* Keep the ribbon, flowers and butterflies in a normal foreground plane. */
.ecard-player.sf-soul-reveal .sf-soul-stage{perspective:none;isolation:isolate}

/* The setting remains alive through the envelope opening, rather than ending first. */
.ecard-player.sf-soul-reveal{--sf-arrival:7.6s;--sf-story:calc(var(--sf-arrival) + 8s)}
.ecard-player.sf-soul-reveal[data-sf-delivery=heart]{--sf-arrival:6.8s}
.ecard-player.sf-soul-reveal[data-sf-delivery=light]{--sf-arrival:7s}
.ecard-player.sf-soul-reveal[data-sf-delivery=starlight]{--sf-arrival:6.6s}
.ecard-player.sf-soul-reveal[data-sf-delivery=silk]{--sf-arrival:7.4s}
.ecard-player.sf-soul-reveal[data-sf-delivery] .delivery-scene.is-revealing .sf-soul-stage{opacity:1;transition:none}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-card{animation-duration:8s}
.ecard-player.sf-soul-reveal[data-sf-delivery] .journey-object.is-opening .journey-envelope-back,
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .sf-refined-pocket,
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .journey-envelope-back::before,
.ecard-player.sf-soul-reveal[data-sf-delivery] .is-opening .journey-envelope-back::after{animation-duration:8s}
.ecard-player.sf-soul-reveal .sf-soul-stage{perspective:none;isolation:isolate}
.ecard-player.sf-soul-reveal[data-sf-delivery=heart] .is-running .sf-soul-heart path,
.ecard-player.sf-soul-reveal[data-sf-delivery=heart] .is-running .sf-soul-halo{animation-duration:var(--sf-story)}
.ecard-player.sf-soul-reveal[data-sf-delivery=flower]:has(.is-running) .sf-soul-petals,
.ecard-player.sf-soul-reveal[data-sf-delivery=flower]:has(.is-running) .sf-soul-petals i,
.ecard-player.sf-soul-reveal[data-sf-delivery=flower]:has(.is-running) .sf-soul-water,
.ecard-player.sf-soul-reveal[data-sf-delivery=flower] .is-running .sf-soul-halo{animation-duration:var(--sf-story)}
.ecard-player.sf-soul-reveal[data-sf-delivery=light] .is-running .sf-soul-halo,
.ecard-player.sf-soul-reveal[data-sf-delivery=light] .is-running .sf-light-paths path{animation-duration:var(--sf-story)}
.ecard-player.sf-soul-reveal[data-sf-delivery=silk] .is-running :is(.sf-silk-band,.sf-silk-loop,.sf-pearl-left){animation-duration:var(--sf-story)}
.ecard-player.sf-soul-reveal[data-sf-delivery=butterfly] .is-running .sf-idea-butterfly{animation-duration:calc(var(--sf-story) - 1.2s)}
.ecard-player.sf-soul-reveal[data-sf-delivery=butterfly] .is-running .sf-butterfly-wing{animation-duration:1.2s;animation-iteration-count:12}
.ecard-player.sf-soul-reveal[data-sf-delivery=gift] .is-running :is(.sf-gift-lid,.sf-gift-box,.sf-gift-loop,.sf-gift-glow){animation-duration:var(--sf-story)}
.ecard-player.sf-soul-reveal[data-sf-delivery=starlight] .is-running :is(.sf-starlight-ribbon-left,.sf-starlight-ribbon-right){animation-duration:var(--sf-story)}
.ecard-player.sf-soul-reveal[data-sf-delivery=starlight] .is-running .sf-starlight-sparks i{animation-duration:var(--sf-story)}
/* Keep the decorations around the card, away from its reading area. */
.ecard-player.sf-soul-reveal[data-sf-delivery=silk] .sf-idea-silk{overflow:visible}
.ecard-player.sf-soul-reveal[data-sf-delivery=gift] .sf-gift-box{top:62%;height:19%}
.ecard-player.sf-soul-reveal[data-sf-delivery=flower] .journey-object.sf-emerging-envelope{animation-name:sf-flower-present}
.ecard-player.sf-soul-reveal[data-sf-delivery=gift] .journey-object.sf-emerging-envelope{animation-name:sf-gift-present}
@keyframes sf-heart-draw{0%{stroke-dashoffset:560;opacity:0}12%{opacity:.9}34%{stroke-dashoffset:0;fill:#f9e7f033}55%{opacity:.65;fill:#fff3dd22}100%{stroke-dashoffset:0;opacity:.18;fill:transparent}}
@keyframes sf-halo{0%{opacity:0;transform:scale(.5)}35%{opacity:.6}65%{opacity:.65;transform:scale(1.1)}100%{opacity:.3;transform:scale(1)}}
@keyframes sf-light-trace{0%{stroke-dashoffset:1200;opacity:0}18%{opacity:.75}47%{stroke-dashoffset:0;opacity:.7}78%{stroke-dashoffset:-350;opacity:.5}100%{stroke-dashoffset:-500;opacity:.22}}
@keyframes sf-light-gather{0%{opacity:0;transform:scale(.45)}40%{opacity:.9;transform:scale(.95)}70%{opacity:.65;transform:scale(1.05)}100%{opacity:.35;transform:scale(1.15)}}
@keyframes sf-silk-loosen{0%,8%{opacity:0;transform:scaleY(.75)}18%,32%{opacity:1;transform:scaleY(1)}60%{opacity:.9;transform:translate(30%,45%) rotate(18deg) scaleY(1.1)}84%,100%{opacity:.35;transform:translate(140%,110%) rotate(58deg) scaleY(.8)}}
@keyframes sf-silk-bow-left{0%,8%{opacity:0;transform:rotate(14deg) scale(.8)}18%,32%{opacity:1;transform:rotate(14deg) scale(1)}62%{opacity:.85;transform:translate(-80%,50%) rotate(-35deg) scale(.6)}85%,100%{opacity:.22;transform:translate(-165%,120%) rotate(-65deg) scale(.3)}}
@keyframes sf-silk-bow-right{0%,8%{opacity:0;transform:scaleX(-1) rotate(14deg) scale(.8)}18%,32%{opacity:1;transform:scaleX(-1) rotate(14deg) scale(1)}62%{opacity:.85;transform:translate(80%,50%) scaleX(-1) rotate(-35deg) scale(.6)}85%,100%{opacity:.22;transform:translate(165%,120%) scaleX(-1) rotate(-65deg) scale(.3)}}
@keyframes sf-pearl-unstring{0%,12%{opacity:0;transform:translateY(0) rotate(-8deg)}24%,36%{opacity:.9;transform:translateY(0) rotate(-8deg)}70%{opacity:.75;transform:translate(55%,60%) rotate(12deg)}100%{opacity:.35;transform:translate(95%,150%) rotate(20deg)}}
@keyframes sf-gift-open{0%,16%{transform:translateY(0) rotateX(0);opacity:1}43%{transform:translateY(-130%) rotateX(55deg);opacity:1}68%,100%{transform:translate(-35%,-200%) rotateX(65deg);opacity:.25}}
@keyframes sf-gift-away{0%,66%{transform:translateX(-50%);opacity:1}100%{transform:translate(-50%,50%);opacity:.25}}
@keyframes sf-gift-ribbon-left{0%,12%{transform:rotate(20deg);opacity:1}40%{transform:translateX(-65%) rotate(-30deg);opacity:.8}100%{transform:translate(-100%,50%) rotate(-45deg);opacity:.25}}
@keyframes sf-gift-ribbon-right{0%,12%{transform:scaleX(-1) rotate(20deg);opacity:1}40%{transform:translateX(65%) scaleX(-1) rotate(-30deg);opacity:.8}100%{transform:translate(100%,50%) scaleX(-1) rotate(-45deg);opacity:.25}}
@keyframes sf-gift-light{0%,12%{opacity:0}38%,70%{opacity:.85}100%{opacity:.2}}
@keyframes sf-flower-cradle{0%,22%{top:62%}55%,100%{top:76%}}
@keyframes sf-petal-unfold{0%,18%{transform:rotate(calc((var(--petal) - 4)*3deg)) scaleX(.57);opacity:1}38%{transform:rotate(calc((var(--petal) - 4)*12deg)) scale(.8,.8);opacity:1}57%,100%{transform:rotate(calc((var(--petal) - 4)*22deg)) scale(.9,.42);opacity:.8}}
@keyframes sf-flower-present{0%,42%{opacity:0;transform:translate(-50%,20%) scale(.55)}65%{opacity:1;transform:translate(-50%,-5%) scale(.75)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes sf-gift-present{0%,48%{opacity:0;transform:translate(-50%,25%) scale(.7)}74%{opacity:1;transform:translate(-50%,-15%) scale(.85)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@keyframes sf-fine-light-left{0%{opacity:0;transform:translate(-15%,18%) rotate(-10deg) scale(.8)}22%{opacity:.8}52%{opacity:.65;transform:translate(0,0) rotate(0) scale(1)}100%{opacity:.18;transform:translate(-10%,-8%) rotate(7deg) scale(1.12)}}
@keyframes sf-fine-light-right{0%{opacity:0;transform:translate(15%,-12%) rotate(10deg) scale(.8)}22%{opacity:.7}52%{opacity:.55;transform:translate(0,0) rotate(0) scale(1)}100%{opacity:.18;transform:translate(10%,8%) rotate(-7deg) scale(1.12)}}

.ecard-player.sf-soul-reveal[data-sf-delivery] .delivery-caption{bottom:7.5%;line-height:1.45;max-width:28rem}

/* Originals use only their chosen scene; legacy films must never flash beneath it. */
.ecard-player.sf-soul-reveal .delivery-scene > :not(.sf-soul-stage):not(.delivery-caption):not(.skip-delivery){display:none!important}
.ecard-player.sf-soul-reveal .sf-soul-stage{container-type:size}
/* Open the lid first, then lift the envelope from behind the box front. */
.ecard-player.sf-soul-reveal[data-sf-delivery=gift] .is-running .sf-gift-lid{animation-name:sf-gift-lid-first;animation-duration:var(--sf-arrival)}
.ecard-player.sf-soul-reveal[data-sf-delivery=gift] .journey-object.sf-emerging-envelope{animation-name:sf-gift-from-box;animation-timing-function:cubic-bezier(.35,0,.25,1)}
@keyframes sf-gift-lid-first{0%,12%{transform:translateY(0) rotateX(0);opacity:1}48%{transform:translate(-35%,-240%) rotateX(65deg);opacity:.8}64%,100%{transform:translate(-65%,-340%) rotateX(75deg);opacity:.2}}
@keyframes sf-gift-from-box{0%,64%{opacity:0;transform:translate(-50%,calc(-50% + 25.5cqh)) scale(.65);clip-path:inset(0)}65%{opacity:1;transform:translate(-50%,calc(-50% + 25.5cqh)) scale(.65);clip-path:inset(0)}100%{opacity:1;transform:translate(-50%,-50%) scale(1);clip-path:inset(0)}}
