/* Situational gags, each with its own setup and visual punchline. */
.heckle{position:absolute;left:14px;right:14px;top:65px;z-index:9;pointer-events:none;background:#fff4ddeb;color:#4b2a48;border:2px solid #fff2c0;border-radius:9px;font-size:13px;font-weight:900;padding:8px 12px;opacity:0;text-align:center;transform:translateY(-12px)}
.heckle.show{animation:hecklePop 3.8s both}.impact-playing .heckle{display:none}
.impact-playing .stage-sign{display:none}
.scene-coda{position:absolute;bottom:17px;left:12px;right:12px;z-index:7;background:#fff4dceF;border:2px solid #ffe8a7;border-radius:7px;padding:7px 5px;text-align:center;color:#542d4b;font-size:12px;font-weight:900;animation:punchlineReveal .2s .65s both}
.scene-select-label{display:block;font-size:11px;margin:12px 0 5px}.scene-picker{display:flex;gap:5px;margin-bottom:9px}.scene-picker select{min-width:0;flex:1;background:#fff2dc;color:#43273f;border:0;border-radius:6px;padding:8px 5px;font:inherit;font-size:12px}.scene-picker button{background:#ffe27f;color:#3a2847;font-weight:900;border:0;border-radius:6px;padding:7px 9px;white-space:nowrap}.scene-caption b{animation:cashBounce .45s both}
.fx-envelope{position:absolute;bottom:95px;left:var(--actor-x);font-size:100px;animation:envelopeBoomerang 1.2s both}.fx-envelope b{position:absolute;left:18px;bottom:44px;font-size:11px;color:#ffe89e;white-space:nowrap}
.fx-groupchat{position:absolute;bottom:95px;left:calc(var(--actor-x) - 25px);width:260px;max-width:77%;background:#fff7e5;color:#472340;border:3px solid #734765;border-radius:12px;padding:10px;box-shadow:5px 5px 0 #341f47;animation:punchlineReveal .25s .8s both}.fx-groupchat span{display:block;border-bottom:1px solid #bda9b9;padding-bottom:5px;font-size:11px}.fx-groupchat strong{display:block;font-size:13px;line-height:1.5;margin:10px 0}.fx-groupchat i{display:block;color:#988296;font-size:10px;text-align:center;font-style:normal}
.fx-god{position:absolute;bottom:77px;left:calc(var(--actor-x) - 5px);font-size:105px;animation:godArrival .5s both;line-height:1.15;text-align:center}.fx-god b,.fx-god span{display:block;font-size:11px;background:#ffc94a;color:#663a41;padding:5px;border:2px solid #fff1b7;border-radius:8px}.fx-coupon{position:absolute;bottom:97px;left:calc(var(--actor-x) + 100px);width:132px;padding:13px 8px;border:3px dashed #c44270;background:#fff0c0;color:#9d3057;rotate:9deg;text-align:center;animation:punchlineReveal .35s .65s both}.fx-coupon strong{display:block;font-size:24px}.fx-coupon span,.fx-coupon small{font-size:10px}
.fx-wallet{position:absolute;left:calc(var(--actor-x) - 25px);bottom:75px;animation:walletEscape 1.65s both}.fx-wallet>span{font-size:82px}.fx-wallet>b{display:block;white-space:nowrap;background:#fff2c3;color:#422b41;font-size:12px;border-radius:9px;padding:5px}.wallet-legs{display:flex;justify-content:space-evenly;margin-top:-20px;position:relative}.wallet-legs i{display:block;width:8px;height:25px;background:#542942;transform-origin:top;animation:walletStride .1s infinite alternate}.wallet-legs i:after{content:'';display:block;width:22px;height:8px;background:#ffd867;position:absolute;bottom:0;border-radius:9px}.wallet-legs i+i{animation-direction:alternate-reverse}
.fx-memberships{position:absolute;left:calc(var(--actor-x) - 30px);bottom:100px;width:265px;height:130px}.fx-memberships>div{position:absolute;left:0;top:0;width:170px;height:108px;background:#bf9952;border:4px solid #fff1b9;color:#fff0c4;font-size:15px;font-weight:1000;padding:13px;border-radius:13px;box-shadow:5px 5px 0 #47283d;rotate:-13deg;animation:memberReveal .4s both}.fx-memberships>div:nth-child(2){left:38px;top:20px;background:#725291;rotate:0deg;animation-delay:.4s}.fx-memberships>div:nth-child(3){left:73px;top:41px;background:#302842;rotate:10deg;animation-delay:.85s}.fx-memberships span{display:block;font-size:25px;letter-spacing:.08em}
.fx-pigeon{position:absolute;left:calc(var(--actor-x) - 50px);bottom:209px;font-size:64px;animation:pigeonLand .6s both}.fx-pigeon b{position:absolute;left:40px;top:-15px;white-space:nowrap;font-size:12px;background:#fff4d7;color:#543246;padding:4px;border-radius:8px}.fx-photo-flash{position:absolute;inset:0;background:white;opacity:0;animation:photoFlash .2s .55s}.fx-pigeon-bill{position:absolute;left:calc(var(--actor-x) + 40px);bottom:90px;rotate:7deg;background:#fff2d8;color:#833357;border:3px solid #b0586d;padding:15px;animation:punchlineReveal .3s .7s both}.fx-pigeon-bill strong,.fx-pigeon-bill small{display:block}.fx-pigeon-bill small{font-size:9px;margin-top:4px}
.fx-magnet{position:absolute;right:25px;bottom:113px;font-size:108px;rotate:90deg;animation:magnetWobble .2s infinite alternate}.fx-magnet-coins .fx-particle{animation:magnetSuck 1s var(--delay) both;font-size:29px}
.fx-tea{position:absolute;left:var(--actor-x);bottom:88px;font-size:110px;animation:teaExpand 1.4s both}.fx-toppings{position:absolute;left:calc(var(--actor-x) + 80px);bottom:155px;display:grid;gap:6px}.fx-toppings i{font-size:12px;font-style:normal;font-weight:900;background:#ffeec5;color:#6b365b;border:2px solid #865075;border-radius:7px;padding:7px;animation:toppingDrop .35s .2s both}.fx-toppings i:nth-child(2){animation-delay:.55s}.fx-toppings i:nth-child(3){animation-delay:.9s}
.fx-printer{position:absolute;bottom:140px;left:calc(var(--actor-x) + 10px);font-size:100px;z-index:2;animation:printerJolt .1s infinite alternate}.fx-long-bill{position:absolute;left:calc(var(--actor-x) + 18px);bottom:-65px;width:130px;background:#fff4d7;color:#804364;padding:15px;line-height:1.7;text-align:center;font-size:13px;transform-origin:top;animation:billPrint 1.5s both}
.fx-balloon{position:absolute;bottom:109px;left:var(--actor-x);font-size:90px;animation:balloonEscape 1.8s both;display:flex;flex-direction:column;align-items:center;line-height:1}.fx-balloon i{height:48px;width:2px;background:#fff1d3;margin-top:-10px}.fx-balloon span{font-size:60px}.fx-balloon b{position:absolute;left:70px;top:55px;font-size:12px;white-space:nowrap;background:#fff1c9;color:#513041;border-radius:6px;padding:5px}
.fx-duck{position:absolute;left:var(--actor-x);bottom:78px;font-size:116px;animation:duckRide 1.6s both}.fx-duck b{position:absolute;top:-5px;right:0;font-size:25px;background:#fff3d5;color:#5e3651;padding:4px;border-radius:50%;animation:duckQuack .28s 3}.fx-duck-meter{position:absolute;left:calc(var(--actor-x) + 10px);bottom:215px;background:#2d293c;color:#f6e273;border:3px solid #f8e7c3;border-radius:9px;padding:8px 12px;font-size:10px;animation:punchlineReveal .3s .5s both}.fx-duck-meter strong{display:block;font-size:15px}
.fx-prize-wheel{position:absolute;left:var(--actor-x);bottom:88px;font-size:113px;animation:prizeSpin .9s cubic-bezier(.2,.8,.4,1) both}.fx-prize-ticket{position:absolute;left:calc(var(--actor-x) - 17px);bottom:107px;width:228px;text-align:center;border:5px double #d58155;background:#fff2c9;color:#9c3559;padding:12px;rotate:-7deg;animation:punchlineReveal .3s .85s both}.fx-prize-ticket strong{display:block;font-size:25px;margin:7px 0}.fx-prize-ticket span{display:block;font-size:10px}
.fx-ufo{position:absolute;left:calc(var(--actor-x) - 32px);bottom:229px;font-size:100px;z-index:2;animation:ufoLand .5s both}.fx-ufo-beam{position:absolute;left:calc(var(--actor-x) - 22px);bottom:83px;width:105px;height:187px;clip-path:polygon(42% 0,61% 0,100% 100%,0 100%);background:linear-gradient(#faffbdcc,#a4ffc632);animation:punchlineReveal .2s .4s both}.fx-abducted{position:absolute;left:var(--actor-x);bottom:85px;font-size:61px;animation:abductWallet 1.2s .4s both}
@keyframes hecklePop{0%,100%{opacity:0;transform:translateY(-12px)}8%,88%{opacity:1;transform:translateY(0)}}
@keyframes cashBounce{0%{transform:scale(.2) rotate(-12deg)}70%{transform:scale(1.25) rotate(3deg)}100%{transform:scale(1)}}
@keyframes envelopeBoomerang{0%{transform:translate(250px,-140px) rotate(120deg)}35%{transform:translate(0,0) rotate(-10deg)}65%{transform:translate(150px,-100px) rotate(90deg)}100%{transform:translate(10px,0) scale(.3);opacity:0}}
@keyframes punchlineReveal{from{opacity:0;transform:scale(.3) translateY(30px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes godArrival{from{transform:translateY(120px)}to{transform:translateY(0)}}
@keyframes walletEscape{0%,20%{transform:translateX(0)}100%{transform:translateX(220px)}}
@keyframes walletStride{to{transform:rotate(45deg)}}
@keyframes memberReveal{from{transform:translateY(-80px) scale(.2);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes pigeonLand{from{transform:translate(220px,-140px)}to{transform:translate(0,0)}}
@keyframes photoFlash{0%,100%{opacity:0}40%{opacity:.85}}
@keyframes magnetWobble{to{transform:translateX(-8px)}}
@keyframes magnetSuck{from{opacity:1;transform:translate(0,0)}to{opacity:0;transform:translate(180px,0) scale(.3)}}
@keyframes teaExpand{from{transform:scale(.5)}to{transform:scale(1.4)}}
@keyframes toppingDrop{from{transform:translateY(-70px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes printerJolt{to{transform:translateX(3px)}}
@keyframes billPrint{from{transform:scaleY(.05)}to{transform:scaleY(1)}}
@keyframes balloonEscape{from{transform:translateY(105px) rotate(-5deg)}to{transform:translateY(-150px) rotate(8deg)}}
@keyframes duckRide{from{transform:translateX(180px)}to{transform:translateX(0)}}
@keyframes duckQuack{50%{transform:scale(1.4)}}
@keyframes prizeSpin{from{transform:rotate(0)}to{transform:rotate(1080deg)}}
@keyframes ufoLand{from{transform:translate(100px,-170px)}to{transform:translate(0,0)}}
@keyframes abductWallet{0%{transform:translateY(0)}100%{transform:translateY(-155px) scale(.25);opacity:0}}
@media(max-width:520px){.heckle{font-size:11px;top:49px;padding:7px}.fx-coupon{left:calc(var(--actor-x) + 72px);width:121px}.fx-groupchat{width:228px}.fx-memberships{transform:scale(.87);transform-origin:bottom left}.fx-toppings{left:calc(var(--actor-x) + 53px)}.fx-prize-ticket{width:205px}.scene-announcement strong{font-size:21px}.scene-caption{top:108px}.fx-ufo{font-size:80px;bottom:215px}.fx-ufo-beam{height:165px}.fx-duck-meter{bottom:206px}.fx-god{font-size:88px}}
@media(prefers-reduced-motion:reduce){.heckle.show{animation:none;opacity:1}.effect-layer *{animation-duration:.1s!important;animation-delay:0s!important;animation-iteration-count:1!important}}
@media(max-width:520px){.end-photo{height:37vh;bottom:auto;background-size:cover;background-position:center 82%;mask-image:linear-gradient(#000 78%,transparent)}.game-over-panel{margin-top:28vh}.game-over{align-items:start}}
@media(max-width:520px){.fx-ufo{bottom:170px;font-size:70px}.fx-ufo-beam{height:120px}.fx-abducted{animation-name:abductWalletMobile}.fx-pigeon{bottom:170px;font-size:55px}.fx-duck-meter{bottom:190px}.fx-magnet{right:16px;font-size:90px}}
@keyframes abductWalletMobile{to{transform:translateY(-125px) scale(.25);opacity:0}}
