/* Foreground object shots occupy the centre; actors move to the edges. */
.stage.has-cinema .cast{inset:120px -4% 0;padding-bottom:210px;z-index:-1}.stage.has-cinema .actor{width:31%;height:min(54vh,520px);opacity:.88}.stage.has-cinema .actor.npc{width:30%;height:min(51vh,490px)}.stage.has-cinema .actor.kitten{display:none}.cinema{position:absolute;z-index:1;left:25%;right:25%;top:133px;height:clamp(215px,36vh,390px);isolation:isolate;animation:shot-reveal .65s ease}.cinema:before{content:"";position:absolute;inset:5% -10%;background:radial-gradient(ellipse,#c9e3ee1a,transparent 70%);z-index:-1;pointer-events:none}.object-stage{height:100%;position:relative;perspective:800px}.object-slot{position:absolute;aspect-ratio:330/320;pointer-events:none}.story-object{display:block;background:transparent!important;border:0;padding:0;width:100%;height:100%;border-radius:20%;transform-origin:center;pointer-events:auto;filter:drop-shadow(0 10px 9px #08162b55)}.story-object:hover:not(:disabled){background:transparent;transform:none;filter:drop-shadow(0 0 9px #cee9ff9c)}.story-object:focus-visible{outline:2px solid #f0ce99;outline-offset:1px}.story-object img{width:100%;height:100%;object-fit:contain;pointer-events:none}.object-slot.mirror{transform:scaleX(-1)}.shot-caption{position:absolute;bottom:-37px;left:-5%;right:-5%;display:flex;align-items:center;justify-content:center;gap:14px;font-size:13px;letter-spacing:1px;color:#dbe5e8;text-shadow:0 2px 7px #030b15}.shot-caption span{background:#10273ba3;padding:5px 12px;border-radius:30px}.replay-shot{font-size:12px;white-space:nowrap;padding:5px 10px;background:#183b53c9;border-color:#aac8d15c;border-radius:30px}.object-hint{position:absolute;top:-14px;left:0;right:0;text-align:center;color:#aec9d8;font-size:11px;letter-spacing:2px;pointer-events:none}.stage.choosing .cinema{top:112px;height:clamp(175px,26vh,285px)}.stage.choosing.has-cinema .cast{padding-bottom:370px}.stage.choosing.has-cinema .actor{height:42vh}.prop-inspect{display:flex;align-items:center;gap:24px}.prop-inspect>img{width:43%;max-height:330px;filter:drop-shadow(0 15px 15px #09162799)}.prop-inspect p{line-height:1.95}.prop-inspect h2{margin:0 0 15px}.shot-note{color:#c4d9e6;font-size:14px;border-left:2px solid #d1b480;padding-left:14px}.prop-preview-stage{margin:0 auto;position:relative;height:350px;max-width:600px;background:#223e52;border-radius:14px;overflow:hidden}.prop-preview-stage .cinema{position:absolute;inset:10px 35px 60px;height:auto}.prop-preview-stage .object-hint{display:none}
/* One-shot actions settle after the important motion; ambient effects repeat slowly. */
.perform .truck-arrive{animation:truck-arrive 4.2s ease-in-out both}.perform .box-hoist{animation:box-hoist 4.2s ease-in-out both}.perform .door-close{animation:door-close 2.3s ease-in both;transform-origin:18% center}.perform .letter-fall{animation:letter-fall 2.8s ease-out both}.perform .hand-offer{animation:hand-offer 3.2s ease-in-out both}.perform .bread-pass{animation:bread-pass 3.2s ease-in-out both}.perform .hand-receive{animation:hand-receive 3.2s ease-in-out both}.perform .coin-roll{animation:coin-roll 3.6s ease-out both}.perform .page-turn{transform-origin:50% center;animation:page-turn 5.5s ease-in-out infinite}.perform .pen-write{animation:pen-write 4.2s ease-in-out 2}.perform .needle-sew{animation:needle-sew 2.4s ease-in-out 3}.perform .tag-sort{animation:tag-sort 2.2s ease-out both}.perform .tag-swing{animation:lantern-sway 5s ease-in-out infinite;transform-origin:50% 3%}.perform .lantern-sway{animation:lantern-sway 5s ease-in-out infinite;transform-origin:50% 2%}.perform .lantern-sway-late{animation:lantern-sway 6s -2s ease-in-out infinite;transform-origin:50% 2%}.perform .umbrella-rock{animation:umbrella-rock 5s ease-in-out infinite;transform-origin:50% 80%}.perform .steam-rise{animation:steam-rise 3.8s ease-out infinite;pointer-events:none}.perform .cup-offer{animation:cup-offer 2.2s ease-out both}.perform .blanket-open{animation:blanket-open 2.6s ease-out both}.perform .pack-in{animation:pack-in 2.8s ease-out both}.perform .pack-note{animation:pack-note 3.4s ease-out both}.perform .letter-slide{animation:letter-slide 3s ease-in-out both}.perform .map-travel{animation:map-travel 5s ease-in-out both}.perform .key-turn{animation:key-turn 3.3s ease-in-out both}.perform .plant-grow{animation:plant-grow 3s ease-out both;transform-origin:50% 90%}.perform .kitten-peek{animation:kitten-peek 4.8s ease-in-out both}.perform .kitten-settle{animation:kitten-settle 4s ease-out both}.perform .kitten-nudge{animation:kitten-nudge 3.8s ease-in-out both}.perform .bowl-tip{animation:bowl-tip 3.8s ease-in-out both;transform-origin:45% 65%}.water-spread{opacity:0}.perform .water-spread{animation:water-spread 3.8s ease-out both;transform-origin:center 70%}.perform .sleep-breathe{animation:sleep-breathe 4s ease-in-out infinite}.perform .light-breathe{animation:light-breathe 4s ease-in-out infinite}.perform .photo-land{animation:photo-land 2.6s ease-out both}
@keyframes shot-reveal{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}@keyframes truck-arrive{0%{transform:translateX(36%)}45%,100%{transform:translateX(0)}}@keyframes box-hoist{0%,15%{transform:translate(0,0) rotate(-3deg)}55%{transform:translate(100%,-75%) rotate(5deg)}80%,100%{transform:translate(168%,-40%) scale(.8)}}@keyframes door-close{0%{transform:perspective(700px) rotateY(-62deg)}80%,100%{transform:perspective(700px) rotateY(0)}}@keyframes letter-fall{0%,30%{transform:translate(80%,-90%) rotate(-20deg);opacity:0}55%{opacity:1}100%{transform:translate(0,0) rotate(9deg)}}@keyframes hand-offer{0%{transform:translateX(-35%)}55%,100%{transform:translateX(0)}}@keyframes bread-pass{0%{transform:translateX(-43%) rotate(-8deg)}60%{transform:translateX(48%) rotate(2deg)}100%{transform:translateX(48%) rotate(0)}}@keyframes hand-receive{0%{transform:translateX(-25%)}60%,100%{transform:translateX(5%)}}@keyframes coin-roll{0%{transform:translate(0,-60%) rotate(0)}25%{transform:translate(-15%,0) rotate(-65deg)}48%{transform:translate(-90%,-15%) rotate(-160deg)}78%,100%{transform:translate(-135%,30%) rotate(-250deg)}}@keyframes page-turn{0%,20%{transform:rotateY(0)}65%,82%{transform:rotateY(-160deg)}100%{transform:rotateY(0)}}@keyframes pen-write{0%,100%{transform:translate(0,0) rotate(-8deg)}20%{transform:translate(-12%,8%) rotate(-3deg)}40%{transform:translate(10%,10%) rotate(-9deg)}60%{transform:translate(-9%,19%) rotate(-2deg)}80%{transform:translate(13%,24%) rotate(-6deg)}}@keyframes needle-sew{0%,100%{transform:translate(0,0) rotate(-9deg)}35%{transform:translate(13%,16%) rotate(8deg)}60%{transform:translate(22%,27%) rotate(0deg)}80%{transform:translate(7%,-7%) rotate(-8deg)}}@keyframes tag-sort{from{transform:translate(15%,35%) rotate(22deg)}to{transform:translate(0,0) rotate(0)}}@keyframes lantern-sway{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}@keyframes umbrella-rock{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes steam-rise{0%{transform:translateY(17%) scale(.8);opacity:0}35%{opacity:.7}100%{transform:translateY(-20%) scale(1.12);opacity:0}}@keyframes cup-offer{from{transform:translate(23%,17%);opacity:.6}to{transform:translate(0,0);opacity:1}}@keyframes blanket-open{from{transform:scaleX(.4) rotate(-9deg)}to{transform:scaleX(1) rotate(0)}}@keyframes pack-in{from{transform:translate(-15%,-20%) rotate(-8deg)}to{transform:translate(24%,7%) rotate(3deg)}}@keyframes pack-note{0%,20%{transform:translate(0,-15%) rotate(-15deg)}100%{transform:translate(68%,58%) scale(.7) rotate(5deg)}}@keyframes letter-slide{0%,25%{transform:translateY(-12%)}100%{transform:translateY(39%) scale(.85)}}@keyframes map-travel{0%{transform:translate(0,70%)}30%{transform:translate(130%,0)}65%{transform:translate(190%,70%)}100%{transform:translate(260%,-25%)}}@keyframes key-turn{0%,20%{transform:rotate(-28deg) translateX(30%)}65%{transform:rotate(52deg) translateX(-10%)}100%{transform:rotate(0)}}@keyframes plant-grow{from{transform:scaleY(.72) rotate(-3deg)}to{transform:scaleY(1) rotate(0)}}@keyframes kitten-peek{0%,15%{transform:translateY(36%) scale(.9)}50%{transform:translateY(0) rotate(-4deg)}100%{transform:translateY(0) rotate(2deg)}}@keyframes kitten-settle{from{transform:translate(60%,-8%)}to{transform:translate(0,15%) rotate(-3deg)}}@keyframes kitten-nudge{0%,15%{transform:translateX(0)}45%{transform:translateX(50%)}60%{transform:translateX(46%) rotate(-6deg)}100%{transform:translateX(8%)}}@keyframes bowl-tip{0%,40%{transform:rotate(0)}58%{transform:rotate(70deg) translateY(5%)}100%{transform:rotate(65deg) translateY(8%)}}@keyframes water-spread{0%,45%{transform:scale(.2);opacity:0}65%{opacity:.75}100%{transform:scale(1.08);opacity:1}}@keyframes sleep-breathe{0%,100%{transform:translateY(5%) scaleY(.97) rotate(-5deg)}50%{transform:translateY(4%) scaleY(1) rotate(-5deg)}}@keyframes light-breathe{0%,100%{filter:drop-shadow(0 0 9px #efce8977)}50%{filter:drop-shadow(0 0 27px #efce89b0)}}@keyframes photo-land{from{transform:translateY(-25%) rotate(-13deg);opacity:.3}to{transform:translateY(0) rotate(4deg);opacity:1}}
.reduce .water-spread{opacity:.7}.reduce .cinema .story-object{animation:none!important}.reduce .cinema .replay-shot{display:none}
@media(max-height:740px) and (min-width:761px){.cinema{top:107px;height:210px;left:29%;right:29%}.stage.choosing .cinema{top:94px;height:158px;left:32%;right:32%}.stage.has-cinema .actor{height:46vh}.shot-caption{bottom:-28px;font-size:12px}}
@media(max-width:760px){.cinema{left:19%;right:19%;top:155px;height:clamp(150px,23vh,235px)}.stage.has-cinema .cast{inset:125px -18% 0;padding-bottom:275px;justify-content:space-between}.stage.has-cinema .actor{height:35vh;width:37%;opacity:.68}.stage.has-cinema .actor.npc{height:32vh;width:37%;margin-left:0}.shot-caption{left:-21%;right:-21%;font-size:11px;bottom:-31px;gap:5px;letter-spacing:0}.shot-caption span{padding:4px 7px}.replay-shot{font-size:11px;padding:4px 6px}.object-hint{top:-13px;font-size:10px}.stage.choosing .cinema{top:123px;height:clamp(100px,16vh,150px);left:27%;right:27%}.stage.choosing .shot-caption span{display:none}.stage.choosing .shot-caption{bottom:-22px}.stage.choosing.has-cinema .cast{padding-bottom:375px}.stage.choosing.has-cinema .actor{height:25vh;opacity:.5}.prop-inspect{display:block}.prop-inspect>img{display:block;width:65%;height:220px;margin:0 auto}.prop-preview-stage{height:280px}}
@media(prefers-reduced-motion:reduce){.cinema .story-object{animation:none!important}.water-spread{opacity:.7}.replay-shot{display:none}}
@media(max-width:760px){.stage.has-cinema{min-height:max(calc(100svh - 68px),740px)}}

.perform .coin-count{animation:coin-count 3s ease-in-out both}@keyframes coin-count{0%{transform:translate(45%,-12%) rotate(15deg)}50%{transform:translate(0,0) rotate(0)}100%{transform:translate(-37%,28%) rotate(-9deg)}}
