*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#07030e;color:#fff;font-family:Trebuchet MS,Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}button:focus-visible{outline:4px solid #bfff48;outline-offset:5px}button:hover:not(:disabled){filter:brightness(1.16)}button:active:not(:disabled){filter:brightness(.88)}[hidden]{display:none!important}#viewport{width:100%;height:100%;display:grid;place-items:center;overflow:hidden}#stage{position:relative;width:1672px;height:941px;flex:none;transform-origin:center center;isolation:isolate;overflow:hidden;background:#120b26}.cabinet{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#bonusCabinet{z-index:1}#mallGlow{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 95px #d459ff17;animation:mall-breathe 5s ease-in-out infinite;z-index:2}.hotspot{position:absolute;background:transparent;border:0;border-radius:18px;z-index:8;transition:background .15s,box-shadow .15s}.hotspot:hover:not(:disabled){background:#d9ff8619;box-shadow:inset 0 0 22px #eaff784a,0 0 20px #eaff7835}.hotspot:disabled{pointer-events:none}.hotspot:active:not(:disabled){background:#0003;box-shadow:inset 0 0 20px #0007}#menuButton{left:79px;top:789px;width:149px;height:132px;border-radius:50%}#balance{left:242px;top:836px;width:224px}#betLabel{position:absolute;left:535px;top:813px;width:109px;text-align:center;color:#b8f576;font-size:15px;font-weight:900;text-shadow:0 2px 4px #000;z-index:7}#bet{left:532px;top:846px;width:115px;font-size:25px}#betDown{left:477px;top:808px;width:69px;height:91px}#betUp{left:650px;top:808px;width:69px;height:91px}#spinButton{left:738px;top:725px;width:198px;height:209px;border-radius:50%}#stopIcon{display:grid;place-items:center;position:absolute;inset:27px 26px 29px;border-radius:50%;background:radial-gradient(circle at 40% 30%,#df7142,#a31e30 50%,#4b1020);box-shadow:0 0 20px #f42a48,inset 0 3px 8px #ffff9780;color:#fff7c8;font-size:64px;text-shadow:0 3px 8px #38000a}#maxBet{left:942px;top:815px;width:198px;height:96px}#win{left:1150px;top:838px;width:255px;color:#e1ff91}#autoButton{left:1416px;top:788px;width:148px;height:141px;border-radius:50%}#autoCount{position:absolute;right:2px;top:0px;font-size:28px;background:#371563;color:#f7ffaf;box-shadow:0 0 0 2px #cfa6fa;border-radius:20px;min-width:34px}.meter{position:absolute;font-size:36px;line-height:50px;text-align:center;font-weight:900;font-variant-numeric:tabular-nums;text-shadow:0 2px 6px #000;z-index:7;white-space:nowrap}#status{position:absolute;left:450px;top:759px;width:774px;z-index:7;text-align:center;font-size:19px;letter-spacing:2px;font-weight:900;text-shadow:0 2px 4px #000;color:#ffeeb8;pointer-events:none}#reels{position:absolute;left:312px;top:301px;width:1056px;height:447px;display:grid;grid-template-columns:repeat(5,1fr);z-index:3}.reel{height:447px;position:relative;overflow:hidden;contain:layout paint}.reel-tape{position:absolute;width:100%;top:0;will-change:transform}.tile{height:149px;width:100%;display:grid;place-items:center;position:relative}.tile img{display:block;width:187px;height:133px;object-fit:contain;filter:drop-shadow(0 4px 4px #0008);user-select:none;pointer-events:none}.tile.winner{background:radial-gradient(ellipse,#b9ff5a40,transparent 75%)}.tile.winner img{animation:symbol-win .7s ease-in-out infinite;filter:drop-shadow(0 0 10px #fcff6e)}.tile.changed img{animation:symbol-transform .7s cubic-bezier(.2,.8,.2,1)}.tile.trigger img{filter:drop-shadow(0 0 14px #ceff48);animation:symbol-win .55s infinite}.reel.moving:after{content:"";position:absolute;inset:0;background:linear-gradient(#080c2699,transparent 15%,transparent 85%,#080c2699);pointer-events:none}.reel.moving img{filter:blur(.5px) drop-shadow(0 3px 3px #0005)}#lines{position:absolute;left:312px;top:301px;width:1056px;height:447px;z-index:5;pointer-events:none;overflow:visible}#lines polyline{fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 7px currentColor)}#lineBadges{position:absolute;left:267px;top:317px;z-index:6;display:flex;flex-direction:column;gap:4px}#lineBadges button{font-size:16px;border-radius:50%;width:29px;height:29px;padding:0;background:#251040;border:2px solid #d9fd61;color:#fbffb0}#conveyor{position:absolute;left:337px;top:157px;width:994px;height:111px;z-index:3;border-radius:21px;overflow:visible}#conveyor:before{content:"";position:absolute;inset:63px 0 0;background:linear-gradient(#322a3d,#151724 25%,#2a2536 80%,#08070d);border-top:3px solid #998fac;border-bottom:4px solid #484153;border-radius:12px;box-shadow:0 7px 6px #0007}.belt-treads{position:absolute;left:0;right:0;bottom:6px;height:38px;border-radius:7px;background:repeating-linear-gradient(110deg,#ffffff06 0 10px,#0005 11px 13px,transparent 14px 30px);background-size:32px 40px;animation:belt-run 1.2s linear infinite;opacity:.8}.scanner{position:absolute;right:7px;bottom:0;width:9px;height:52px;border-radius:7px;background:#83ff96;box-shadow:0 0 18px #59ff57;z-index:2}.prize{position:absolute;top:-11px;width:162px;height:109px;transform:translateX(-50%);display:grid;place-items:center;z-index:4;filter:drop-shadow(0 6px 4px #000c);transition:left .7s cubic-bezier(.16,.85,.25,1)}.prize img{width:116px;height:106px;object-fit:contain;animation:prize-bob 2.2s ease-in-out infinite}.prize.active img{animation:prize-activate .4s ease-in-out infinite;filter:drop-shadow(0 0 15px #c2ff45)}.prize.used{opacity:.28;filter:grayscale(.7)}#beltHint{position:absolute;left:90px;right:90px;top:8px;text-align:center;font-size:23px;letter-spacing:5px;font-weight:900;color:#e9d3ff;text-shadow:0 2px 4px #000}#beltHint span{display:block;font-size:13px;margin-top:10px;letter-spacing:3px;color:#9c91b5}#bonusHud{position:absolute;left:343px;top:156px;width:987px;height:111px;border-radius:18px;border:2px solid #f6ce6c;background:linear-gradient(90deg,#341250ef,#081a2eee);z-index:2;pointer-events:none}#bonusHud>span{position:absolute;left:10px;top:-28px;background:#501455;border:1px solid #eaeb78;padding:3px 14px;font-weight:900;letter-spacing:3px}#bonusHud strong{position:absolute;right:-146px;top:206px;color:#eaff8b;font-size:56px;text-align:center;width:130px;text-shadow:0 4px 7px #000}#bonusHud small{position:absolute;right:-150px;top:265px;color:#fff6c0;font-size:12px;letter-spacing:1px;width:140px;text-align:center;text-shadow:0 2px 5px #000}#bonusHud b{position:absolute;left:-150px;top:238px;font-size:23px;background:#190b27d9;border:2px solid #d4b962;border-radius:12px;padding:10px;color:#fff0a6;max-width:145px}#particles{position:absolute;inset:0;pointer-events:none;z-index:12;overflow:hidden}.particle{position:absolute;font-size:26px;will-change:transform,opacity;animation:particle-fly var(--duration) ease-out forwards}.spark-beam{position:absolute;height:5px;background:#d7ff66;box-shadow:0 0 20px 7px #b2fd75;transform-origin:0 50%;animation:beam .7s ease-out both}.screen-flash{position:absolute;inset:0;background:radial-gradient(ellipse,#f8ffad9c,transparent 70%);animation:flash .8s ease-out forwards}#modalLayer{position:absolute;inset:0;z-index:20;background:#080413c9;backdrop-filter:blur(7px);display:grid;place-items:center}.panel{position:relative;width:930px;max-height:825px;padding:39px 46px 35px;border:3px solid #d7b27c;border-radius:28px;background:radial-gradient(ellipse at top,#492867,#190c2e 65%);box-shadow:0 0 0 8px #2b1b39,0 0 0 11px #81718a,0 18px 80px #000, inset 0 0 35px #bc57e71f;overflow:auto;text-align:center}.panel h1{font-size:52px;margin:0 0 8px;color:#dfff7e;letter-spacing:1px;text-shadow:0 4px 0 #334010,0 0 25px #a9f75744}.panel h2{font-size:31px;margin:18px 0;color:#f3dc9e}.panel p{font-size:21px;line-height:1.55;color:#dacee6;margin:12px 0}.panel .eyebrow{font-size:16px;letter-spacing:4px;color:#f2dca5;font-weight:900}.panel button.action,.panel button.choice{border:2px solid #e2d09d;border-radius:12px;color:#f7ffdf;background:linear-gradient(#7caa2e,#39620a);box-shadow:0 4px 0 #142b00, inset 0 1px 4px #d8ffb080;padding:15px 29px;font-weight:900;font-size:24px;margin:12px 5px}.panel button.secondary{background:linear-gradient(#67449b,#361957);box-shadow:0 4px 0 #1a0b2d}.close-panel{position:absolute;right:15px;top:10px;width:46px;height:46px;border:0;background:#22102f;color:#e7d2f7;font-size:35px;border-radius:50%}.tabs{display:flex;justify-content:center;gap:9px;margin:18px 0}.tabs button{border:1px solid #8764a3;border-radius:10px;background:#22122f;color:#d4bfdc;padding:10px 16px;font-size:20px}.tabs button.selected{background:#704196;color:#fff0b7;border-color:#efd27d}.paytable{display:grid;grid-template-columns:repeat(5,1fr);gap:15px}.paytable article{background:#110b2199;border-radius:13px;border:1px solid #8f6b9e55;padding:8px 6px}.paytable img{width:126px;height:85px;object-fit:contain}.paytable h3{font-size:16px;margin:4px 0 8px;color:#c6fd84}.paytable p{font-size:17px;line-height:1.55;margin:3px}.paytable span{color:#a58cbb;margin-right:8px}.line-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.line-card{background:#11082099;border:1px solid #8f66a1;border-radius:12px;padding:8px}.line-card b{font-size:18px;color:#d9ee8b}.line-card svg{display:block;width:100%;height:70px}.feature-list{display:grid;grid-template-columns:1fr 1fr;gap:15px;text-align:left}.feature-list article{display:flex;align-items:center;background:#170b2899;border:1px solid #7f54a15c;padding:12px;border-radius:12px;gap:13px}.feature-list img{width:84px;height:95px;object-fit:contain}.feature-list h3{font-size:21px;color:#e5f7ac;margin:0 0 5px}.feature-list p{font-size:17px;margin:0;line-height:1.4}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.setting{padding:20px;border:1px solid #8e6aa2;border-radius:15px;background:#1b0c2b;font-size:23px;display:flex;justify-content:space-between}.setting input{width:28px;height:28px;accent-color:#a6e448}.award-panel{width:800px;overflow:visible;min-height:430px}.award-art{width:230px;height:220px;object-fit:contain;margin:-8px 0 -3px;filter:drop-shadow(0 0 25px #dfff6660);animation:prize-bob 2s ease-in-out infinite}.award-number{font-size:93px;font-weight:900;color:#fff6a1;line-height:1.05;text-shadow:0 5px 0 #805d29,0 0 26px #ffd95466;font-variant-numeric:tabular-nums}.celebration{background:radial-gradient(ellipse at center,#573279,#231030);box-shadow:0 0 0 8px #2b1b39,0 0 0 11px #d4ad62,0 0 100px #ffdc5760}.celebration .award-art{position:absolute;left:-174px;bottom:-18px;width:285px;height:350px;z-index:2}.celebration h1{font-size:67px;color:#ffed84}.celebration .award-number{font-size:104px;padding:30px 0}.mascot-sprite{position:absolute;right:-124px;bottom:0;width:190px;height:220px;background-repeat:no-repeat;filter:drop-shadow(0 0 18px #d2ff8380)}#devToggle{position:absolute;top:15px;left:16px;z-index:11;font-size:15px;letter-spacing:2px;font-weight:bold;background:#150c26d9;border:1px solid #b287e5;color:#ddc7fe;padding:8px 12px;border-radius:7px}#devPanel{position:fixed;right:15px;top:15px;bottom:15px;width:360px;z-index:100;background:#150c25f5;border:1px solid #9d78ca;box-shadow:0 12px 80px #000;border-radius:16px;padding:21px;overflow:auto;color:#f2e9ff;font-size:14px}#devPanel h2{margin:0 0 5px;font-size:23px;color:#d7ff8c}#devPanel p{color:#bea9cf;line-height:1.45;font-size:13px}#devPanel label{display:block;color:#d5c4e3;margin:13px 0 5px}#devPanel select,#devPanel input{width:100%;background:#291a3a;color:white;border:1px solid #75538e;border-radius:6px;padding:9px}#devPanel button{padding:10px 12px;border:1px solid #9675ad;border-radius:7px;background:#452669;color:white;margin:4px 3px 3px 0}#devPanel button.primary{background:#94cb45;color:#132302;font-weight:bold}#devPanel .dev-row{display:flex;gap:8px}#devPanel pre{padding:12px;background:#0a0611;border-radius:8px;white-space:pre-wrap;font-size:11px;color:#c2b5d2;max-height:230px;overflow:auto}#devClose{float:right}.dev-notice{padding:8px;background:#341e4b;border-radius:8px;color:#eaffad!important}#loading{position:absolute;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;flex-direction:column;background:radial-gradient(ellipse,#39224f,#090611);text-align:center}.load-mark{font-size:75px;font-weight:1000;color:#c8fc40;text-shadow:0 6px 0 #334f14;letter-spacing:-2px}.load-mark span{color:#ec63ff;margin-left:20px;text-shadow:0 6px 0 #5e206f}.load-track{height:8px;width:370px;background:#553461;border-radius:4px;overflow:hidden}.load-track i{display:block;height:100%;width:30%;background:#d0ff77;animation:load 1.3s ease-in-out infinite}#loadStatus{font-size:23px;color:#c8afdd}#rotate{position:fixed;inset:0;background:radial-gradient(ellipse,#402351,#0c0716);z-index:200;display:none;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:25px}#rotate>div{font-size:110px;color:#d6ff73}#rotate h2{font-size:26px;color:#deff9d}#rotate p{color:#c9b7dc}#rotate button{border:1px solid #a783c8;background:#4d2675;color:white;border-radius:9px;padding:12px 22px}@media(orientation:portrait) and (max-width:900px){#rotate{display:flex}}@media(max-width:600px){#devPanel{left:8px;right:8px;top:8px;bottom:8px;width:auto}}.reduced *{animation-duration:.01ms!important;animation-iteration-count:1!important}.reduced .belt-treads{animation:none!important}@keyframes mall-breathe{50%{box-shadow:inset 0 0 95px #d459ff30}}@keyframes belt-run{to{background-position:-32px 0}}@keyframes prize-bob{50%{transform:translateY(-5px) rotate(2deg)}}@keyframes prize-activate{50%{transform:translateY(-13px) scale(1.16)}}@keyframes symbol-win{50%{transform:scale(1.07)}}@keyframes symbol-transform{0%{transform:scale(.2) rotate(-9deg);opacity:0}60%{transform:scale(1.12)}100%{transform:scale(1);opacity:1}}@keyframes particle-fly{to{transform:translate(var(--dx),var(--dy)) rotate(var(--rot));opacity:0}}@keyframes beam{0%{opacity:0;scale:0 1}25%{opacity:1;scale:1 1}100%{opacity:0}}@keyframes flash{to{opacity:0}}@keyframes load{50%{transform:translateX(240px)}}.celebration .mascot-sprite{left:-171px;bottom:-2px;width:280px;height:280px;background-image:url('../assets/mascot-sheet.png');background-size:1120px 280px;animation:cashier-cheer 1.8s steps(4) infinite;z-index:2;right:auto}.retry-load{padding:16px 38px;margin:20px;background:#92ce46;border:2px solid #e6ffa0;border-radius:12px;font-size:25px;font-weight:bold;color:#163400}@keyframes cashier-cheer{to{background-position:-1120px 0}}
#status{left:336px;top:278px;width:994px;font-size:16px;letter-spacing:1.4px}#conveyor{top:148px;height:120px;overflow:visible;clip-path:inset(-80px 0 0 round 0 0 21px 21px)}.prize{top:1px}#betDown{left:469px;width:88px}#betUp{left:645px;width:88px}

#stage{position:absolute;left:50%;top:50%}.prize-art{position:relative;width:116px;height:106px;display:grid;place-items:center;animation:prize-bob 2.2s ease-in-out infinite}.prize .prize-art img{animation:none}.prize.active .prize-art{animation:prize-activate .4s ease-in-out infinite}.prize.active .prize-art img{animation:none}


/* The painted cabinet is the geometry authority. */
#reels{left:312px;top:296px;width:1051px;height:447px;grid-template-columns:210px 209px 212px 211px 209px}
#lines{left:312px;top:296px;width:1051px;height:447px}
.tile img{width:187px;height:133px;object-fit:contain;object-position:50% 50%;transform-origin:50% 50%}
#conveyorDepartures{position:absolute;left:337px;top:148px;width:994px;height:120px;pointer-events:none;z-index:6;overflow:visible}
.prize{transition:none}.belt-treads{animation-play-state:paused}#conveyor.advancing .belt-treads{animation-play-state:running}
.prize.claimed{animation:prize-claim .34s ease-in forwards;pointer-events:none}
.prize.departing .prize-art{animation:none}
#spinButton{z-index:10;overflow:visible}
.control-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}
.hotspot .hover-art{opacity:0;transition:opacity .15s}
.hotspot:hover:not(:disabled) .hover-art,.hotspot:focus-visible:not(:disabled) .hover-art{opacity:1}
.hotspot:hover:not(:disabled){background:transparent;box-shadow:none;filter:none}
.hotspot:active:not(:disabled){background:transparent;box-shadow:none;filter:none}
.hotspot:active:not(:disabled) .control-art{filter:brightness(.9);transform:scale(.97)}
#stopIcon{display:block;inset:0;width:100%;height:100%;background:none;box-shadow:none;border-radius:0;font-size:inherit;text-shadow:none}
#autoCount{z-index:2}
@keyframes prize-claim{0%{opacity:1;transform:translateX(-50%) scale(1)}45%{opacity:1;transform:translateX(-50%) scale(1.2)}100%{opacity:0;transform:translateX(-50%) translateY(24px) scale(.25)}}

#autoCount:empty{display:none}
#betReadout{position:absolute;left:540px;top:815px;width:108px;height:75px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;z-index:7;pointer-events:none}
#betReadout #betLabel{position:static;width:100%;height:18px;font-size:14px;line-height:18px;text-align:center;letter-spacing:.3px}
#betReadout #bet{position:static;width:100%;height:34px;line-height:34px;font-size:27px;text-align:center}
#spinButton{left:718px;top:712px;width:230px;height:229px;border-radius:50%}

/* Equal frame size, not equal outer silhouette: preserve leaf, fur and flame overhangs. */
.tile[data-symbol="plant"] img{width:200.357px;height:142.5px;translate:0 -4.286px}
.tile[data-symbol="jelly"] img{width:188.045px;height:133.743px;translate:0 .251px}
.tile[data-symbol="furry"] img{width:193.448px;height:137.586px;translate:0 -1.81px}
.tile[data-symbol="fire"] img{width:201.557px;height:143.353px;translate:0 -4.85px}
.tile[data-symbol="wild"] img{width:189.634px;height:134.873px;translate:.254px 0}
.tile[data-symbol="bonus"] img{width:190.708px;height:135.637px;translate:.255px 0}

/* Illustration-led checkout and controls; all positions match the source cabinet. */
#conveyor:before{content:none}
#checkoutIllustration{position:absolute;inset:0;width:994px;height:120px;object-fit:contain;pointer-events:none}
.belt-treads{left:85px;right:85px;top:25px;bottom:32px;height:auto;border-radius:10px;background-image:url('../assets/conveyor/belt-tread.png');background-size:128px 100%;opacity:.68;animation:belt-illustration-roll .62s linear infinite;animation-play-state:paused}
#conveyor.advancing .belt-treads{animation-play-state:running}
#menuButton{left:76px;top:771px;width:160px;height:166px}
#autoButton{left:1417px;top:771px;width:160px;height:166px}
#betDown{left:465px;top:800px;width:88px;height:100px}
#betDown .control-art{left:10px;top:0;width:68px;height:100px;right:auto;bottom:auto}
#betUp{left:636px;top:800px;width:95px;height:100px}
#betUp .control-art{left:10px;top:0;width:75px;height:100px;right:auto;bottom:auto}
#maxBet{left:944px;top:793px;width:200px;height:115px}
@keyframes belt-illustration-roll{to{background-position:-128px 0}}

/* The video and the prize trajectory share the measured portal centre in layout.js. */
#wormhole{position:absolute;z-index:2;pointer-events:none;isolation:isolate;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 14px,#000 calc(100% - 14px),transparent),linear-gradient(0deg,transparent,#000 14px,#000 calc(100% - 14px),transparent);mask-composite:intersect}
#wormhole>img,.wormhole-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.wormhole-video{opacity:0;will-change:opacity}
.portal-flare{position:absolute;inset:8%;z-index:3;border-radius:50%;background:radial-gradient(ellipse,#ffffcbaa, #d19aff66 22%,#a428ff11 50%,transparent 70%);opacity:0}
#wormhole.ejecting .portal-flare{animation:portal-eject 1.1s ease-out both}
#prizeFlights{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:hidden}
.prize{pointer-events:none;height:109px}
.prize-art{width:138px;height:109px;animation:none;display:flex;align-items:center;justify-content:center}
.prize .prize-art img{width:138px;height:109px;animation:none;object-fit:contain}
.prize.flying{transform:translate(-50%,-50%);will-change:left,top,transform,opacity;filter:drop-shadow(0 5px 5px #10081bcc) drop-shadow(0 0 9px #c27aff88)}
.prize.flying .prize-art{animation:none}
.prize.flying:after{content:"";position:absolute;inset:24px 20px;border-radius:50%;box-shadow:0 0 24px 9px #b47aff22;pointer-events:none}
.prize-landing-glow{position:absolute;width:106px;height:16px;border-radius:50%;background:radial-gradient(ellipse,#fff5afbb,#d19fff55 48%,transparent 70%);transform:translate(-50%,-50%);animation:prize-dust .46s ease-out forwards}
@keyframes portal-eject{0%{opacity:0;transform:scale(.7)}15%{opacity:.8;transform:scale(.9)}45%{opacity:.18;transform:scale(1.15)}100%{opacity:0;transform:scale(1.3)}}
@keyframes prize-dust{0%{opacity:.7;scale:.7 1}100%{opacity:0;scale:1.5 .5}}

/* The articulated collector rises above the reel clipping regions. */
#grabberLayer{position:absolute;inset:0;z-index:9;pointer-events:none;overflow:hidden}
.wild-collection,.grabber-rig{position:absolute;inset:0;pointer-events:none}
.wild-door{position:absolute;width:189.634px;height:134.873px;transform:translate(-50%,-50%);z-index:1;overflow:hidden;mask-image:url("../assets/symbols/wild.png");mask-size:100% 100%;mask-repeat:no-repeat}
.wild-door-poster,.wild-door-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.wild-door-video{opacity:0}
.tile.collecting img{visibility:hidden;animation:none!important}
.grabber-rig{z-index:4;filter:drop-shadow(3px 5px 3px #0009);clip-path:polygon(0 0,0 0,0 0)}
.grabber-base{position:absolute;width:90px;height:70px;object-fit:contain;transform:translate(-50%,-50%);z-index:1}
.grabber-link{position:absolute;transform-origin:50% 0;z-index:2}
.grabber-link img{position:absolute;left:0;top:-5.1724%;width:100%;height:110.3448%}
.grabber-link.forearm{z-index:3}
.grabber-pivot{position:absolute;width:65px;height:65px;object-fit:contain;z-index:4}
.grabber-wrist{position:absolute;width:60px;height:60px;object-fit:contain;z-index:5}
.grabber-claw{position:absolute;background-image:url('../assets/grabber/claw-sheet.png');background-repeat:no-repeat;z-index:6}
.prize.grabbed{z-index:3;pointer-events:none;filter:drop-shadow(0 4px 4px #0008);will-change:transform,top}
.prize.grabbed .prize-art{animation:none}
.grabber-spark{position:absolute;width:18px;height:18px;background:url('../assets/grabber/sparks.png') center/contain no-repeat;z-index:7;animation:grabber-spark .36s ease-out forwards}
.grabber-impact{position:absolute;width:80px;height:80px;background:url('../assets/grabber/impact-sheet.png') 0 0/480px 80px no-repeat;z-index:8;transform:translate(-50%,-50%);animation:grabber-impact .26s steps(6) forwards}
@keyframes grabber-spark{from{opacity:1;transform:translate(-50%,-50%) scale(.65)}to{opacity:0;transform:translate(var(--sx),var(--sy)) rotate(var(--turn)) scale(.15)}}
@keyframes grabber-impact{to{background-position:-480px 0;opacity:0}}

/* The cropped video plaque matches the static BONUS frame; its transparent
   image remains underneath during the final crossfade. MP4 padding is hidden. */
.bonus-landing{position:absolute;left:calc(50% + .255px);top:50%;width:190.708px;height:135.637px;transform:translate(-50%,-50%);pointer-events:none;opacity:0;z-index:1}
.bonus-land-crop{position:absolute;left:5.099px;top:4.079px;width:180.510px;height:127.478px;overflow:hidden}
.bonus-land-video{position:absolute;left:-2.68041237%;top:-2.62390671%;width:105.36082474%;height:104.95626822%;max-width:none;object-fit:fill;pointer-events:none}

/* Portal glitter and small checkout fragments stay behind the flying prize. */
.prize.flying{z-index:2}
.prize-fx{position:absolute;width:0;height:0;z-index:1;pointer-events:none}
.prize-fx-particle{position:absolute;left:0;top:0;display:block;pointer-events:none;will-change:transform,opacity;user-select:none}
.prize-fx-mote{border-radius:50%;background:radial-gradient(circle,#fff 5%,currentColor 38%,transparent 76%);filter:drop-shadow(0 0 5px currentColor)}
.prize-fx-chip{background:linear-gradient(145deg,#fff9,currentColor 40%,#31203e);clip-path:polygon(7% 0,83% 9%,100% 66%,22% 100%);filter:drop-shadow(0 1px 1px #150b20a0)}
.prize-fx-flash,.prize-fx-impact{position:absolute;pointer-events:none;background:radial-gradient(ellipse,#fff5cbba,#bd70fb75 35%,transparent 72%)}
.prize-fx-flash{width:105px;height:105px;mix-blend-mode:screen}
.prize-fx-impact{width:110px;height:19px}
.prize[data-type="surprise"] .prize-art img{transform:scale(1.2)}
/* Keep enlarged bottle caps and activation pulses above the belt visible; retain its side/bottom crop. */
/* Enlarge the bottle and its engraved number while keeping its base on the belt. */
.prize[data-type="free-spins"] .prize-art img{transform:scale(1.25);transform-origin:50% 100%}

/* Supplied win clips replace the old scale pulse while keeping frame registration. */
.tile.winner > img{animation:none}
.win-symbol-source-host{position:absolute;left:0;top:0;width:1px;height:1px;overflow:hidden;opacity:.001;pointer-events:none;z-index:-1}
.win-symbol-source{width:1px;height:1px;max-width:none}
.win-symbol-animation{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;z-index:2}
.win-symbol-canvas{display:block;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 0 6px #d9ff7955)}
.tile.win-animating > img{animation:none!important;opacity:0}
.tile.win-animating.win-fading > img{opacity:1;transition:opacity .18s ease-in-out}

/* One registered illustration per control; hover changes light, never geometry. */
.hotspot:hover:not(:disabled) .control-art,.hotspot:focus-visible:not(:disabled) .control-art{filter:brightness(1.18) saturate(1.1)}
.hotspot:active:not(:disabled) .control-art{filter:brightness(.92);transform:none}
.hotspot .control-art{transition:filter .14s ease-out}
#spinButton #stopIcon{clip-path:circle(94px at 115px 115px)}
/* Retain live announcements without the visible status caption over the cabinet. */
#status{left:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;font-size:1px}

/* All twenty illustrated paylines stay beside the reel cabinet. */
#lineBadges{inset:0;display:block;pointer-events:none;z-index:6}
.line-marker-column{position:absolute;top:298px;width:42px;display:grid;grid-template-rows:repeat(10,39px);gap:6px;pointer-events:auto}
.line-marker-column.left{left:260px}.line-marker-column.right{left:1373px}
#lineBadges .line-marker{display:grid;place-items:center;width:42px;height:39px;padding:0;border:0;border-radius:9px;background:none;box-shadow:none;position:relative}
.line-marker img{display:block;width:42px;height:39px;object-fit:contain;pointer-events:none;transition:filter .14s}
#lineBadges .line-marker:hover{filter:none}.line-marker:hover img,.line-marker:focus-visible img{filter:brightness(1.2) drop-shadow(0 0 4px #aef794)}
.line-marker.is-winning img{filter:brightness(1.2) drop-shadow(0 0 5px #d7ff6b)}
.line-marker.is-selected:after{content:"";position:absolute;inset:0;border:1px solid #deff8b;border-radius:8px;pointer-events:none;box-shadow:0 0 6px #bcf76a88}

.line-marker .green-state{position:absolute;inset:0;opacity:0;transition:opacity .14s ease-out}
.line-marker:hover .green-state,.line-marker:focus-visible .green-state,.line-marker.is-selected .green-state,.line-marker.is-winning .green-state{opacity:1}
#lineBadges .line-marker.is-selected:after{display:none}
#lineBadges .line-marker:focus-visible{outline:none}

/* One reel at a time: the renderer holds it, then WAAPI fades its three-box overlay. */
.bonus-anticipation{position:absolute;inset:0;pointer-events:none;z-index:4;mix-blend-mode:screen;opacity:1;will-change:opacity}
.anticipation-cell{position:absolute;left:5px;width:calc(100% - 10px);height:145px;pointer-events:none;border:2px solid #fb60d5;border-radius:10px;box-shadow:inset 0 0 10px #fa43c8,0 0 7px #ef57e0}
.bonus-anticipation.playing .anticipation-cell{border:none;box-shadow:none}

/* Paid autoplay remaining sits over the illustrated stop square. */
#spinButton #autoCount{position:absolute;left:114.5px;top:110px;right:auto;bottom:auto;transform:translate(-50%,-50%);display:grid;place-items:center;width:86px;height:78px;min-width:0;padding:0;margin:0;border:0;border-radius:0;background:none;box-shadow:none;font-family:'Arial Black',Impact,Arial,sans-serif;font-size:36px;font-weight:900;font-variant-numeric:lining-nums tabular-nums;line-height:1;letter-spacing:-1px;color:#64230e;text-shadow:0 1px 0 #fff6be;z-index:4;pointer-events:none}
