/* Scene-based, narrated demonstrations. All action stays within the safe stage. */
dialog.story-modal{inset:0;margin:0;padding:0;width:100%;max-width:none;height:100svh;max-height:none;border:0;border-radius:0;box-shadow:none;background:#e6efe5;animation:none;transform:none}dialog.story-modal::backdrop{background:#e6efe5;backdrop-filter:none}.story-film{height:100%;min-height:0;background:#e6efe5;overflow:hidden;isolation:isolate}.story-backdrop{position:absolute;inset:0;z-index:-3;background:#edf1df}.story-backdrop.backdrop-room{background:url('./assets/lucy-world/clubhouse.webp') center/cover}.story-backdrop.backdrop-shop{background:url('./assets/lucy-world/shop-dumplings.webp') center/cover}.story-backdrop.backdrop-street{background:linear-gradient(#cfebf2 0 55%,#d0e2b5 56% 73%,#eedcc0 74%)}.story-street{position:absolute;inset:15% -8% 15%;display:flex;gap:2%;align-items:end}.story-building{position:relative;display:block;flex:1;height:100%;min-width:0}.story-building>.shop-building{height:100%;filter:drop-shadow(0 7px 3px #775d4233)}.story-door-glow{position:absolute;left:19%;bottom:8%;width:24%;height:36%;border-radius:50% 50% 0 0;background:#ffe6a6;opacity:0;box-shadow:0 0 30px #ffd989}.story-light{position:absolute;inset:0;background:linear-gradient(130deg,#fff9e733,transparent 65%);pointer-events:none;z-index:-1}.story-floor{position:absolute;inset:68% 0 0;background:linear-gradient(transparent,#ecdabeaa);z-index:-1}.story-stage{position:absolute;inset:110px 6% 110px;max-width:1100px;margin:auto;container-type:size}.story-actor{position:absolute;left:2%;bottom:2%;width:42%;height:84%;display:grid;place-items:end center;z-index:3;transform-origin:center bottom}.story-actor:after{content:'';position:absolute;left:18%;right:18%;bottom:1%;height:5%;border-radius:50%;background:#6c55452e;filter:blur(4px);z-index:-1}.story-pose{display:block;width:min(100cqw,72cqh);height:auto;aspect-ratio:1;background:url('./assets/story/action-poses.webp') var(--pose-x) var(--pose-y)/300% 300% no-repeat;max-width:100%;max-height:100%;filter:drop-shadow(0 6px 3px #765b4433)}.story-actor .story-lucy{height:100%;width:auto;aspect-ratio:3/4;max-width:100%;filter:drop-shadow(0 6px 3px #765b4433)}.story-logo{position:absolute;top:15px;left:22px;width:120px;height:75px;object-fit:contain;z-index:10}.story-controls{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));right:24px;display:flex;gap:12px;z-index:20}.story-controls .btn,.story-controls .icon-button{width:52px;height:52px;min-width:52px;min-height:52px;padding:10px}.story-controls svg{width:25px;height:25px}.story-progress{position:absolute;bottom:40px;left:25px;display:flex;gap:8px}.story-progress i{width:9px;height:9px;border-radius:50%;background:#9786a366}.story-progress .current{background:#6b5384;box-shadow:0 0 0 4px #fff8}.story-caption{position:absolute;top:24px;left:160px;right:25px;margin:0;text-align:right;font-size:clamp(17px,2.5vw,27px);font-weight:800;color:#594672;text-shadow:0 2px #fff9}.story-foreground{position:absolute;bottom:-5%;left:-4%;width:20%;height:18%;border-radius:50%;background:#c2d1b277;filter:blur(9px);pointer-events:none;z-index:8}.story-pointer{position:absolute;right:-8%;bottom:-15%;z-index:10;transform:rotate(-20deg)}.story-pointer .game-hand{width:55px;height:65px}.story-home-toys{position:absolute;right:3%;bottom:12%;display:flex;align-items:end;width:52%;height:30%}.story-home-toys .toy{width:33%;height:auto;aspect-ratio:1}.scene-home .story-actor,.scene-hug .story-actor{left:28%;width:44%}.scene-home .story-home-toys{right:0;bottom:5%;width:40%}.story-shop-target{position:absolute;left:65%;bottom:45%;color:#765899;rotate:90deg;background:#fff4ca;border:3px solid white;border-radius:50%;padding:15px}.story-shop-target svg{width:45px;height:45px}.story-window-treasure{position:absolute;right:12%;bottom:38%;width:25%;aspect-ratio:1;background:#fff1c5dd;border:4px solid white;border-radius:25px;display:grid;place-items:center;box-shadow:0 7px #ae907b}.story-window-treasure .toy{width:95%;height:95%}.story-twinkle{position:absolute;right:-12%;top:-15%;font-size:60px;color:#ffe493;text-shadow:0 3px #ba9452}.story-bell{position:absolute;right:22%;top:5%;width:65px;height:65px;transform-origin:top center}.story-bell>.world-art{width:100%;height:100%}.story-shopkeeper{position:absolute;right:12%;bottom:10%;height:55%;width:37%;display:grid;place-items:end}.story-shopkeeper .clay-pal{width:100%;height:auto!important;aspect-ratio:1;transform-origin:center bottom}.scene-door .story-actor{left:8%;width:36%;height:72%}.scene-door .story-building:not(.shop-2){opacity:.35}.scene-door .story-building.shop-2{scale:1.25;transform-origin:center bottom}.story-discovery{position:absolute;right:9%;top:17%;width:43%;aspect-ratio:1;display:grid;place-items:center;background:radial-gradient(#fff6c6 0 20%,#ffe9ad44 50%,transparent 70%);isolation:isolate}.story-discovery .toy{width:88%;height:88%;filter:drop-shadow(0 9px 5px #755a4844)}.scene-find .story-backdrop{filter:blur(3px);opacity:.65}.scene-find .story-twinkle{right:7%;top:7%}.story-closeup{position:absolute;right:1%;top:17%;width:60%;height:65%;display:grid;place-items:center;isolation:isolate}.story-closeup:before{content:'';position:absolute;inset:-20%;background:radial-gradient(#fff7d9dd,transparent 65%);z-index:-2}#story-squeeze{background:none;border:0;padding:0;width:min(80%,330px);aspect-ratio:1;position:relative;z-index:2;touch-action:manipulation;filter:drop-shadow(0 10px 4px #866b4833)}#story-squeeze .toy{width:100%;height:100%;max-width:none;filter:none}.story-palm{position:absolute;width:27%;height:52%;border-radius:48% 45% 36% 40%;background:radial-gradient(at 30% 20%,#ffe8ca,#f0b287 75%);border:1px solid #e1a47e;box-shadow:inset -4px -3px 6px #c9856144,0 6px 5px #74513c22;z-index:4;top:25%;pointer-events:none}.story-palm:after{content:'';position:absolute;top:36%;right:-30%;width:65%;height:34%;border-radius:50%;background:linear-gradient(150deg,#ffddbd,#eaaa80);rotate:-28deg;box-shadow:0 2px #c8876244}.palm-left{left:0%;rotate:-18deg}.palm-right{right:0%;transform:scaleX(-1);rotate:18deg}.scene-squeeze .story-actor,.scene-release .story-actor{height:55%;width:32%;bottom:0;left:-1%}.story-closeup>.story-pointer{right:27%;bottom:-3%}.story-touch-ring{position:absolute;width:48%;aspect-ratio:1;border:4px solid #fff7bd;border-radius:50%;opacity:0;pointer-events:none}.child-tried>.story-pointer{display:none}.story-purchase{position:absolute;right:0;top:10%;width:62%;height:80%}.story-purchase-toy{position:absolute;left:20%;top:5%;width:35%;aspect-ratio:1;z-index:4}.story-purchase-toy .toy{width:100%;height:100%;max-width:none}.story-basket{position:absolute;right:3%;bottom:0;width:55%;height:55%}.story-basket .world-art{width:100%;height:100%}.story-basket-button{position:absolute;left:3%;bottom:3%;width:22%;aspect-ratio:1;border:3px solid white;border-radius:24px;background:#8ed4bf;box-shadow:0 5px #57a38f;z-index:5}.story-basket-button>.world-art{width:100%;height:100%}.story-payment{position:absolute;top:1%;left:0;display:flex;gap:5px}.story-payment .game-coin{width:40px;height:40px}.story-heart{position:absolute;right:18%;top:20%;color:#eaa3c4}.story-heart svg{width:80px;height:80px;fill:#eaa3c4;stroke:#fff}.scene-trade .story-actor,.scene-agree .story-actor,.scene-swap .story-actor{left:2%;bottom:35%;height:55%;width:35%}.story-friend{position:absolute;right:7%;top:2%;width:30%;height:50%;display:grid;place-items:center}.story-friend .clay-pal{width:100%;height:auto!important;aspect-ratio:1}.story-trade-mat{position:absolute;left:16%;right:16%;bottom:0;height:63%;display:grid;grid-template-rows:1fr 1fr 48px;background:#e8afd0;border:5px solid #fff9e9;border-radius:22px;box-shadow:0 8px #b080a0;overflow:hidden;z-index:5}.story-friend-side,.story-my-side{position:relative;display:grid;place-items:center;border-bottom:3px solid white;min-height:0}.story-trade-toy{position:relative;display:block;height:95%;aspect-ratio:1;z-index:4}.story-trade-toy .toy{width:100%;height:100%;max-width:none}.story-mat-controls{display:flex;background:#34334f}.story-mat-controls>span{width:50%;display:grid;place-items:center;color:#f36db4;border-right:3px solid white}.story-mat-controls svg{width:31px;height:31px;stroke-width:4}.story-mat-controls>.story-my-check{color:#ffe86d;position:relative}.story-my-check>.story-pointer{right:20%;bottom:0}.story-npc-check{position:absolute;right:5%;top:15%;color:#ffe66e;opacity:0}.story-npc-check svg{width:32px;height:32px;stroke-width:4}.story-wallet{position:absolute;top:0;right:0;display:flex;align-items:center;gap:8px;padding:8px 13px;background:#fff7dfe8;border:2px solid white;border-radius:22px;z-index:8}.story-coinbag{display:grid;place-items:center;position:relative;width:48px;height:49px;border-radius:42% 42% 36% 36%;background:radial-gradient(at 32% 28%,#ffeaa0,#dfa844 80%);box-shadow:inset -4px -3px 6px #ba782d66,0 4px #9e783833;border:1px solid #dbad54;color:#aa762c}.story-coinbag>svg{width:25px;height:25px;fill:#ffe891;stroke-width:1.6}.bag-neck{position:absolute;width:55%;height:20%;top:-12%;left:23%;border-radius:3px 3px 40% 40%;background:repeating-linear-gradient(90deg,#f5ce77 0 5px,#dba644 6px 8px)}.bag-string{position:absolute;top:8%;left:16%;right:16%;height:3px;background:#8c6935;border-radius:50%}.story-bag-demo{position:absolute;right:18%;top:24%;width:30%;height:40%;display:grid;place-items:center}.story-bag-demo .story-coinbag{width:120px;height:125px}.story-bag-demo svg{width:60px;height:60px}.story-empty-coin{position:absolute;right:0;bottom:0;opacity:.35}.story-match{position:absolute;right:2%;top:10%;width:59%;height:80%;background:#fff8e9d9;border:3px solid #fff;border-radius:30px;box-shadow:0 7px #cbb59e55}.story-match-target{position:absolute;top:5%;left:32%;width:36%;aspect-ratio:1;border:3px dashed #b99acb;border-radius:23px}.story-match-target .toy{width:100%;height:100%}.story-match-options{position:absolute;bottom:10%;left:3%;right:3%;display:flex;gap:4%;align-items:center}.story-match-options>.toy,.story-match-options>.story-correct{position:relative;display:block;width:30%;height:auto;aspect-ratio:1;background-color:#f8eedb;border-radius:20px}.story-correct>.toy{width:100%;height:100%}.story-match-check{position:absolute;top:22%;right:5%;color:#6cb897;opacity:0}.story-match-check svg{width:45px;height:45px;stroke-width:4}.story-flying-coins{position:absolute;right:15%;top:52%;z-index:9;display:flex;gap:8px;opacity:0}.story-flying-coins .game-coin{width:42px;height:42px}.story-passport{position:absolute;right:8%;top:17%;width:47%;height:65%;display:flex;gap:4px;background:#fff2d2;border:7px solid #b39ace;border-radius:12px;box-shadow:0 6px #967faf;rotate:-5deg}.story-passport>span{display:grid;grid-template-rows:1fr 1fr;width:50%;padding:10px;gap:10px;min-height:0}.story-passport>span:first-child{border-right:2px solid #c6b48f}.story-passport .toy,.story-last-sticker{height:100%;width:auto;aspect-ratio:1;max-width:100%;justify-self:center;background-color:#fffaf0;border-radius:12px;box-shadow:0 2px #ac927044}.story-last-sticker>.toy{width:100%;height:100%}.story-unlocked-shop{position:absolute;right:7%;bottom:2%;width:45%;height:90%;z-index:5}.scene-unlock .story-passport{width:28%;height:44%;right:48%;top:0}.story-unlock-check{position:absolute;right:12%;top:8%;padding:10px;background:#fff1a6;color:#729e77;border-radius:50%;opacity:0}.story-unlock-check svg{width:35px;height:35px}.story-delivery-road{position:absolute;bottom:15%;left:-10%;right:-10%;height:24%;background:#c4b396;border-top:5px solid #fff2cf;border-bottom:5px solid #f0dbb0}.story-delivery-road:after{content:'';position:absolute;top:50%;left:0;right:0;height:5px;background:repeating-linear-gradient(90deg,#fff3cf 0 25px,transparent 25px 50px)}.story-truck{position:absolute;right:4%;bottom:16%;width:42%;height:65%;z-index:5}.story-truck img{width:100%;height:100%;object-fit:contain;object-position:bottom;filter:drop-shadow(0 8px 4px #66544144)}.story-depot{position:absolute;right:0;bottom:42%;background:#f9e5ba;padding:15px;border:3px solid white;border-radius:18px;color:#87a889}.story-depot svg{width:65px;height:65px}.scene-delivery .story-actor{height:59%;bottom:37%;width:32%;left:0}.story-package{position:absolute;right:3%;top:7%;width:55%;height:85%;isolation:isolate}.story-package>.world-art{position:absolute;bottom:0;width:100%;height:80%;z-index:3}.story-package-lid{position:absolute;bottom:53%;left:13%;width:74%;height:16%;background:linear-gradient(#ceb5e0,#a287c3);border:3px solid #fff0c2;border-radius:12px;box-shadow:0 5px #8366a4;z-index:6;display:grid;place-items:center}.story-package-lid svg{width:35px;color:#fff0ab;fill:#ffe691}.story-ribbon{position:absolute;bottom:10%;height:63%;left:48%;width:9%;background:#f3d67b;border:2px solid #ffeb9f;z-index:5}.story-package-toy{position:absolute;left:23%;bottom:8%;width:55%;aspect-ratio:1;z-index:4;opacity:0}.story-package-toy .toy{width:100%;height:100%;max-width:none}.story-package>.story-pointer{right:23%;bottom:30%}.story-display{position:absolute;right:0;bottom:3%;width:62%;height:72%}.story-display>.world-art{width:100%;height:100%}.story-display>span{position:absolute;inset:20% 10% 34%;display:flex;align-items:end}.story-display .toy,.story-place-toy{width:33%;height:auto;aspect-ratio:1}.story-place-toy .toy{width:100%;height:100%}.scene-display .story-actor{left:0}.scene-ready .story-actor{left:30%;width:40%}.scene-ready .story-backdrop{opacity:0}.scene-ready{background:transparent}.scene-ready .story-light,.scene-ready .story-floor,.scene-ready .story-foreground{display:none}.story-modal:has(.scene-ready){background:transparent}.story-modal:has(.scene-ready)::backdrop{background:transparent}.scene-ready .story-controls,.scene-ready .story-progress,.scene-ready .story-logo,.scene-ready .story-caption{opacity:0}.scene-ready .story-stage{pointer-events:none}.story-arrived .hunter-shop:first-child,.story-arrived .storefront:first-child{outline:3px solid #ffdf72;outline-offset:-3px}
@media(max-width:600px){.story-stage{inset:90px 2% 105px}.story-logo{left:12px;top:10px;width:100px;height:66px}.story-caption{left:115px;right:12px;top:25px;font-size:18px}.story-controls{right:12px;gap:8px;bottom:max(18px,env(safe-area-inset-bottom))}.story-controls .btn,.story-controls .icon-button{width:46px;height:46px;min-width:46px;min-height:46px}.story-progress{left:14px;bottom:37px;gap:6px}.story-progress i{width:7px;height:7px}.story-actor{width:49%;height:64%;bottom:4%;left:-5%}.story-pose{width:100%;height:auto}.story-actor .story-lucy{height:auto;width:80%;aspect-ratio:3/4}.story-street{inset:18% -35% 25%;gap:2%}.story-building{height:80%}.scene-home .story-actor,.scene-hug .story-actor{width:67%;left:13%;height:80%}.story-home-toys{width:55%!important}.story-closeup{top:2%;height:59%;right:1%;width:84%}.scene-squeeze .story-actor,.scene-release .story-actor{height:42%;width:40%;bottom:-2%}.story-closeup .story-pointer .game-hand{width:42px;height:52px}.story-discovery{top:10%;right:0;width:62%}.scene-find .story-actor{bottom:0;width:48%;height:50%}.story-wallet{padding:5px 8px;top:0;right:0;scale:.85;transform-origin:right top}.story-purchase{width:70%;height:70%;top:4%;right:0}.scene-keep .story-actor,.scene-buy .story-actor{width:46%;height:58%}.story-basket-button{width:31%}.story-match{top:14%;width:84%;height:58%;right:4%}.scene-match .story-actor,.scene-earn .story-actor{height:40%}.story-match-target{width:28%;left:36%}.story-match-options{bottom:7%}.story-match-options>.toy,.story-match-options>.story-correct{width:29%}.story-match-check{right:8%;top:15%}.story-match-check svg{width:30px;height:30px}.story-flying-coins{top:40%;right:15%}.story-flying-coins .game-coin{width:25px;height:25px}.story-bag-demo{right:10%;top:18%;width:45%;height:38%}.story-bag-demo .story-coinbag{width:90px;height:95px}.scene-trade .story-actor,.scene-agree .story-actor,.scene-swap .story-actor{top:0;left:0;width:40%;height:39%;bottom:auto}.story-friend{top:-1%;right:2%;width:37%;height:40%;place-items:start center}.story-trade-mat{left:7%;right:7%;height:65%;bottom:0;grid-template-rows:1fr 1fr 44px}.story-passport{width:67%;right:0;height:51%;top:7%;border-width:5px}.story-passport>span{padding:5px;gap:5px}.story-unlocked-shop{width:58%;height:68%;right:0}.scene-unlock .story-passport{width:37%;height:30%;right:53%}.scene-delivery .story-actor{bottom:37%;height:50%;width:44%}.story-truck{width:65%;height:55%;right:0}.story-depot{padding:8px}.story-depot svg{width:40px;height:40px}.story-package{width:72%;height:70%;right:0;top:0}.story-package-lid svg{width:25px}.story-display{width:71%;height:62%;bottom:22%}.scene-display .story-actor{height:50%}.story-window-treasure{width:40%;right:5%;bottom:50%}.story-twinkle{font-size:42px}.story-bell{right:20%;width:50px;height:50px}.story-shopkeeper{width:44%;bottom:20%}.scene-door .story-actor{width:47%;left:-5%;height:60%}.story-shop-target{left:68%;bottom:47%;padding:10px}.story-shop-target svg{width:30px;height:30px}}
/* Animation starts with the recording, rather than racing the audio download. */
@media(prefers-reduced-motion:no-preference){
.story-stage{animation:story-focus .65s ease-out both}.story-actor{animation:story-idle 4s ease-in-out infinite}.story-backdrop{animation:story-camera var(--shot-time) linear both}.story-stage,.story-stage *,.story-backdrop,.story-backdrop *{animation-play-state:paused!important}.story-running .story-stage,.story-running .story-stage *,.story-running .story-backdrop,.story-running .story-backdrop *{animation-play-state:running!important}
.scene-street .story-actor{animation:story-walk var(--shot-time) ease-in-out both}.scene-street .story-street{animation:story-street-pan var(--shot-time) ease-in-out both}.scene-street .story-shop-target{animation:story-invite 1.4s ease-in-out 1s 2 both}.scene-goal .story-window-treasure{animation:story-reveal 1s ease-out .5s both}.scene-goal .story-actor{animation:story-lean 2s ease-in-out .8s both}.scene-door .story-actor{animation:story-enter var(--shot-time) ease-in-out both}.scene-door .story-door-glow{animation:story-door-light 2s ease-out .5s both}.scene-door .story-bell{animation:story-ring 1.5s ease-in-out .4s both}.scene-door .story-shopkeeper{animation:story-wave 2s ease-in-out .7s both}.scene-find .story-discovery{animation:story-reveal 1.5s cubic-bezier(.2,1.3,.3,1) .6s both}.story-twinkle{animation:story-sparkle 1.7s ease-in-out 1.5s 2 both}.scene-find .story-actor{animation:story-hop 1s ease-in-out 1.2s both}
.scene-squeeze #story-squeeze{animation:story-squash 2.2s ease-in-out 1.2s both}.scene-squeeze .palm-left{animation:story-left-grip 2.2s ease-in-out 1.2s both}.scene-squeeze .palm-right{animation:story-right-grip 2.2s ease-in-out 1.2s both}.scene-squeeze .story-pointer{animation:story-tap 2s ease-in-out .6s both}.scene-squeeze .story-touch-ring{animation:story-touch 2.5s ease-out 3.6s infinite}.scene-release #story-squeeze{animation:story-rise 2.8s cubic-bezier(.18,.65,.3,1) both}.scene-release .palm-left{animation:story-let-left 1.5s ease-out both}.scene-release .palm-right{animation:story-let-right 1.5s ease-out both}.scene-release .story-pointer{display:none}#story-squeeze.squeezed{animation:story-squash 1.6s ease-out!important}.scene-keep .story-purchase-toy,.scene-buy .story-purchase-toy{animation:story-basket-drop 2.5s cubic-bezier(.3,.05,.3,1) 1s both}.scene-keep .story-pointer,.scene-buy .story-pointer{animation:story-tap 1.5s ease-in-out .3s both}.scene-keep .story-basket,.scene-buy .story-basket{animation:story-land .7s ease-out 3s both}.scene-buy .story-payment{animation:story-pay 1.7s ease-in .5s both}.scene-keep .story-actor,.scene-buy .story-actor{animation:story-lean 2s ease-in-out .5s both}
.scene-trade .story-trade-toy{animation:story-to-mat 1.3s cubic-bezier(.2,1.2,.3,1) .8s both}.scene-trade .story-my-check>.story-pointer{opacity:0}.scene-agree .story-npc-check,.scene-swap .story-npc-check{animation:story-check .6s ease-out .4s both}.scene-agree .story-my-check>.story-pointer{animation:story-tap 1.5s ease-in-out 1.4s both}.scene-agree .story-my-check{animation:story-button-press .5s ease-in-out 2.2s both}.scene-swap .story-my-check>.story-pointer{display:none}.scene-swap .story-friend-side .story-trade-toy{animation:story-trade-down 1.8s ease-in-out .5s both}.scene-swap .story-my-side .story-trade-toy{animation:story-trade-up 1.8s ease-in-out .5s both}.scene-swap .story-actor{animation:story-hop .9s ease-in-out 2.5s both}.scene-hug .story-actor{animation:story-hug 2s ease-in-out .3s both}.scene-hug .story-heart{animation:story-heart-rise 2s ease-out .5s both}
.scene-emptybag .story-bag-demo{animation:story-bag-tip 2s ease-in-out .6s both}.scene-match .story-correct,.scene-earn .story-correct{animation:story-match-snap 2.2s ease-in-out .6s both}.scene-match .story-match-check,.scene-earn .story-match-check{animation:story-check .65s ease-out 2.5s both}.scene-match .story-pointer,.scene-earn .story-pointer{animation:story-tap 1.8s ease-in-out .2s both}.scene-earn .story-flying-coins{animation:story-coins-fly 2s ease-in-out .5s both}.scene-earn .story-wallet{animation:story-land .6s ease-out 2.3s both}.scene-sticker .story-last-sticker{animation:story-sticker-peel 2.8s cubic-bezier(.2,.7,.3,1) .4s both}.scene-unlock .story-unlocked-shop{animation:story-color-shop 2.4s ease-out .6s both}.scene-unlock .story-unlock-check{animation:story-check .8s ease-out 2.8s both}.scene-unlock .story-actor{animation:story-hop 1s ease-in-out 2.8s both}.scene-delivery .story-truck{animation:story-truck-drive 3.5s cubic-bezier(.2,.7,.3,1) .5s both}.scene-delivery .story-street{animation:story-street-pan var(--shot-time) linear both}.scene-parcel .story-package>.world-art{animation:story-box-wiggle 1.2s ease-in-out .4s both}.scene-parcel .story-ribbon{animation:story-ribbon-loose 1.1s ease-in .9s both}.scene-parcel .story-package-lid{animation:story-lid-open 1.2s ease-in-out 1.5s both}.scene-parcel .story-package-toy{animation:story-parcel-rise 1.6s cubic-bezier(.2,1.4,.3,1) 2s both}.scene-parcel .story-pointer{animation:story-tap 1.5s ease-in-out .2s both}.scene-parcel .story-actor{animation:story-hop .8s ease-in-out 3.1s both}.scene-display .story-place-toy{animation:story-shelf-place 2.5s cubic-bezier(.2,.7,.3,1) .5s both}.scene-display .story-actor{animation:story-lean 2.5s ease-in-out .5s both}.scene-ready .story-actor{animation:story-goodbye var(--shot-time) ease-in-out both}.story-arrived .hunter-shop:first-child,.story-arrived .storefront:first-child{animation:story-invite 1.1s ease-in-out 2}
@keyframes story-focus{from{opacity:0;translate:0 7px}to{opacity:1;translate:0 0}}@keyframes story-camera{to{scale:1.025}}@keyframes story-idle{50%{translate:0 -3px}}@keyframes story-walk{0%{translate:-20% 0}20%{translate:0 -4px}40%{translate:15% 0}60%{translate:30% -4px}80%,100%{translate:45% 0}}@keyframes story-street-pan{to{translate:-12% 0}}@keyframes story-invite{50%{translate:0 -6px;filter:brightness(1.08)}}@keyframes story-enter{0%{translate:-5% 0}35%{translate:25% -4px}75%,100%{translate:75% -15%;scale:.65;opacity:0}}@keyframes story-door-light{to{opacity:.9}}@keyframes story-ring{20%,60%{rotate:15deg}40%,80%{rotate:-15deg}}@keyframes story-wave{25%,65%{rotate:-5deg;translate:0 -5px}45%,85%{rotate:4deg}}@keyframes story-reveal{from{scale:.6;opacity:0;translate:0 15px}to{scale:1;opacity:1;translate:0 0}}@keyframes story-sparkle{0%,100%{scale:.6;opacity:0}50%{scale:1.1;opacity:1;rotate:25deg}}@keyframes story-hop{15%{scale:1.04 .96}50%{translate:0 -13px;scale:.98 1.02}85%{scale:1.03 .97}100%{translate:0 0;scale:1}}@keyframes story-lean{40%,65%{rotate:4deg;translate:5% 0}}@keyframes story-squash{0%,100%{scale:1}25%,55%{scale:.73 1.15;rotate:-4deg}78%{scale:1.05 .96}}@keyframes story-left-grip{25%,55%{translate:24% 0}}@keyframes story-right-grip{25%,55%{translate:-24% 0}}@keyframes story-rise{from{scale:.72 1.15}75%{scale:1.025 .975}to{scale:1}}@keyframes story-let-left{from{translate:24% 0}to{translate:-15% 0;opacity:0}}@keyframes story-let-right{from{translate:-24% 0}to{translate:15% 0;opacity:0}}@keyframes story-tap{0%{opacity:0;translate:0 18px}30%,65%{opacity:1;translate:0 0}45%{translate:0 -8px;scale:.9}100%{opacity:0;translate:0 12px}}@keyframes story-touch{from{scale:.7;opacity:.7}to{scale:1.25;opacity:0}}@keyframes story-basket-drop{0%{translate:0 0}20%{translate:-8% -10%;rotate:-8deg}85%{translate:75% 165%;scale:.7;rotate:8deg}100%{translate:75% 165%;scale:.5;opacity:0}}@keyframes story-land{40%{scale:1.06 .94}75%{scale:.98 1.02}}@keyframes story-pay{to{translate:160% 80%;scale:.6;opacity:0}}@keyframes story-to-mat{from{translate:-60% -30%;scale:.7;opacity:0}to{translate:0 0;scale:1;opacity:1}}@keyframes story-check{from{scale:.3;opacity:0}70%{scale:1.2;opacity:1}to{scale:1;opacity:1}}@keyframes story-button-press{50%{background:#fff09b;color:#729f7b}}@keyframes story-trade-down{40%{translate:65% 50%;scale:.9}100%{translate:0 105%;scale:1}}@keyframes story-trade-up{40%{translate:-65% -50%;scale:.9}100%{translate:0 -105%;scale:1}}@keyframes story-hug{40%,65%{rotate:-4deg;scale:1.04}}@keyframes story-heart-rise{from{translate:0 40%;scale:.5;opacity:0}50%{opacity:1}to{translate:0 -30%;scale:1;opacity:0}}@keyframes story-bag-tip{40%{rotate:-25deg}60%{rotate:20deg}80%{rotate:-10deg}}@keyframes story-match-snap{0%,35%{translate:0 0}90%{translate:0 -145%;scale:1.05}100%{translate:0 -145%;scale:1}}@keyframes story-coins-fly{0%{opacity:0;translate:0 0;scale:.5}25%{opacity:1;translate:0 -20px;scale:1}85%{opacity:1}100%{top:0;right:0;translate:0 0;scale:.4;opacity:0}}@keyframes story-sticker-peel{0%{translate:25% -80%;rotate:18deg;scale:1.3;opacity:0}30%{opacity:1}70%{translate:0 0;rotate:-4deg;scale:1.05}100%{translate:0 0;rotate:0;scale:1}}@keyframes story-color-shop{from{filter:grayscale(1) brightness(.65);scale:.8}to{filter:none;scale:1}}@keyframes story-truck-drive{from{translate:150% 0}60%{translate:0 -3px}78%{translate:-3% 0}to{translate:0 0}}@keyframes story-box-wiggle{20%,60%{rotate:-6deg}40%,80%{rotate:6deg}}@keyframes story-ribbon-loose{to{translate:60% -70%;rotate:70deg;opacity:0}}@keyframes story-lid-open{to{translate:35% -230%;rotate:25deg;opacity:0}}@keyframes story-parcel-rise{0%{translate:0 0;opacity:0;scale:.5}50%{opacity:1}100%{translate:0 -95%;opacity:1;scale:1}}@keyframes story-shelf-place{from{translate:-120% 25%;scale:1.2;opacity:0}30%{opacity:1}to{translate:0 0;scale:1;opacity:1}}@keyframes story-goodbye{0%,50%{opacity:1;translate:0 0}100%{opacity:0;translate:0 10%}}
}
@media(prefers-reduced-motion:reduce){.story-npc-check,.story-match-check,.story-unlock-check{opacity:1}.scene-parcel .story-package-lid,.scene-parcel .story-ribbon{display:none}.scene-parcel .story-package-toy{opacity:1;translate:0 -95%}.scene-release .story-palm{display:none}.scene-ready .story-actor{opacity:.7}.story-pointer{opacity:.8}#story-squeeze.squeezed{scale:.85 1.08}}
.story-caption{padding:9px 14px;background:#fff8e8e8;border:2px solid #fff9;border-radius:18px;justify-self:end;left:auto;max-width:60%;text-align:center;font-size:clamp(16px,2.1vw,24px)}
@media(prefers-reduced-motion:no-preference){.scene-door .story-door-glow{transform-origin:left center;animation:story-door-swing 2.5s ease-out .5s both}@keyframes story-door-swing{0%{opacity:0;transform:perspective(300px) rotateY(0)}45%,100%{opacity:.85;transform:perspective(300px) rotateY(-65deg)}}}
/* Rendered hands supply real fingers, thumbs and matched highlights. */
.story-palm{width:40%;height:85%;top:8%;border:0;border-radius:0;box-shadow:none;background-image:url('./assets/story/squeeze-hands.webp');background-size:200% 100%;background-repeat:no-repeat;rotate:0deg}.story-palm:after{display:none}.palm-left{left:-8%;background-position:0 0}.palm-right{right:-8%;background-position:100% 0;transform:none}#story-squeeze{width:min(70%,300px)}

/* Opening artwork replaces the sealed package as its lid lifts. */
.story-package>.package-open{opacity:0}.story-unlocked-shop>.story-door-glow{left:22%;bottom:9%;height:35%;width:22%}.story-steam{position:absolute;left:49%;bottom:35%;width:18%;height:20%;display:flex;gap:12%;pointer-events:none}.story-steam i{width:20%;height:75%;border-radius:50%;background:linear-gradient(transparent,#fff9,transparent);filter:blur(2px);opacity:.5}
@media(prefers-reduced-motion:no-preference){
.scene-parcel .story-package>.package-closed{animation:story-box-wiggle 1.2s ease-in-out .4s both,story-sealed-hide .25s linear 1.7s forwards}.scene-parcel .story-package>.package-open{animation:story-open-show .25s linear 1.7s forwards}
.story-steam i{animation:story-steam-rise 3s ease-in-out infinite}.story-steam i:nth-child(2){animation-delay:.7s}.story-steam i:nth-child(3){animation-delay:1.4s}
.scene-unlock .story-door-glow{animation:story-door-swing 1s ease-out 3s both;transform-origin:left center}.story-actor:after{animation:story-shadow 4s ease-in-out infinite;animation-play-state:inherit}
@keyframes story-sealed-hide{to{opacity:0}}@keyframes story-open-show{to{opacity:1}}@keyframes story-steam-rise{from{translate:0 15%;opacity:0}40%{opacity:.6}to{translate:10% -45%;opacity:0}}@keyframes story-shadow{50%{scale:.92;opacity:.65}}
}
@media(prefers-reduced-motion:reduce){.story-package>.package-closed{opacity:0}.story-package>.package-open{opacity:1}.story-unlocked-shop>.story-door-glow{opacity:.8}}
/* Keep the squeeze demonstration centered with room for both wrists. */
.story-closeup{left:50%;right:auto;transform:translateX(-50%);width:min(88%,650px)}
.story-closeup .palm-left{left:0}
.story-closeup .palm-right{right:0}
.story-closeup .story-palm{width:34%}
.story-closeup #story-squeeze{width:min(60%,300px)}
.story-closeup>.story-pointer{right:calc(50% - 24px)}
@media(max-width:600px){.story-closeup{left:50%;right:auto;width:88%;top:2%;height:59%}}
/* Hands enter from the screen edges so no detached wrist ends are visible. */
.story-closeup{width:100vw;max-width:none;--hand-width:min(46vw,460px)}
.story-closeup .story-palm{width:var(--hand-width);height:calc(var(--hand-width)*4/3);top:50%;margin-top:calc(var(--hand-width)*-2/3)}
.story-closeup .palm-left{left:-7%;rotate:30deg}
.story-closeup .palm-right{right:-7%;rotate:-30deg}
.story-closeup #story-squeeze{width:min(50vw,300px)}
@media(max-width:600px){.story-closeup{width:100vw}}
@media(prefers-reduced-motion:no-preference){
@keyframes story-left-grip{25%,55%{translate:12% 0}}
@keyframes story-right-grip{25%,55%{translate:-12% 0}}
@keyframes story-let-left{from{translate:12% 0}to{translate:-15% 0;opacity:0}}
@keyframes story-let-right{from{translate:-12% 0}to{translate:15% 0;opacity:0}}
}
