/* Illustrated controls share the cabinet's gold / violet / cyan material palette. */
.feature-card{border:0;border-radius:0;background:none;box-shadow:none;isolation:isolate;overflow:visible;transition:transform .2s,filter .2s;padding:0}
.feature-card::before,.feature-card::after{display:none}.control-skin{position:absolute;left:0;top:-19%;width:100%;height:146%;object-fit:fill;z-index:-1;pointer-events:none;filter:drop-shadow(0 8px 9px #090011a0)}
.feature-card small{position:absolute;top:24%;left:12%;right:12%;margin:0;font-size:12px;letter-spacing:1px;color:#fff0b3;text-shadow:0 2px #260427}
.feature-card b{position:absolute;top:34%;left:10%;right:10%;font-size:37px;line-height:.98;letter-spacing:-1px;color:#fff8dc;text-shadow:0 2px #c58b40,0 4px #662458,0 6px 5px #220825;transform:none}
.feature-card>span{position:absolute;bottom:17%;left:20%;right:20%;margin:0;min-width:0;padding:3px 4px;font-size:20px;border:1px solid #ffe9b254;border-radius:20px;background:#260636a8;color:#fff3ad;text-shadow:0 2px #280b32}
.feature-card em{position:absolute;bottom:9%;left:0;right:0;font-size:10px;letter-spacing:.6px;margin:0;color:#f7d7fc}
.ante-card b{font-size:32px;color:#cbf9ff}.ante-card small{font-size:10px}.ante-card>span{font-size:14px;bottom:19%;left:28%;right:28%;padding:4px}.ante-card[aria-pressed=true]{filter:drop-shadow(0 0 13px #72f0ffb0)}.ante-card[aria-pressed=true]>span{background:#b5f6ff;color:#1c3053;border-color:#fff;text-shadow:none}
.feature-card:hover:not(:disabled){transform:translateY(-3px) scale(1.025);filter:brightness(1.12) drop-shadow(0 0 10px #eeabff60)}.feature-card:active:not(:disabled){transform:translateY(3px) scale(.97);filter:brightness(.94)}.feature-card:disabled{filter:saturate(.85) brightness(.88)}
.button-emblem{display:none}
.last-win-card{border:1px solid #dfb678;border-radius:17px;background:linear-gradient(130deg,#33144ceb,#130a25e8);box-shadow:inset 0 0 0 3px #150826,inset 0 0 0 4px #cb8a484a,0 6px 15px #05000c77;padding-top:23px}
.last-win-card>small{color:#ffe4a5;letter-spacing:1.8px}.last-win-card>b{font-size:35px;text-shadow:0 3px #633049}.history-row{border-top-color:#c8884630}.history-row b{color:#fff1c9}
.control-deck{height:110px;padding:0 28px;grid-template-columns:98px 285px 1fr 52px 145px 52px 73px;gap:14px;background:linear-gradient(#492851,#21122f 13%,#120a20 50%,#080514);border-top:2px solid #e6be78;box-shadow:inset 0 2px #fff2be66,inset 0 -3px #a6794840,0 -10px 35px #10031b88}
.control-deck::before{content:"";position:absolute;top:6px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#e1b37670,transparent);pointer-events:none}
.machine{bottom:110px}
.wallet{border:1px solid #d6ab623d;border-radius:12px;background:linear-gradient(#100b1bcc,#29133799);padding:13px 17px;box-shadow:inset 0 1px 6px #0007;gap:9px}.stat span{font-size:13px;letter-spacing:.8px;min-width:85px}.stat strong{font-size:21px;color:#fff6dd}
.spin-button{width:145px;height:145px;margin-top:-24px;border:0;background:none;box-shadow:none;isolation:isolate;border-radius:50%;transition:transform .18s,filter .18s}
.spin-art{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 6px #0008);pointer-events:none}.spin-button svg{display:none}.spin-button:hover:not(:disabled){background:none;transform:scale(1.065);filter:brightness(1.15) drop-shadow(0 0 10px #da8aff88)}.spin-button:active:not(:disabled){transform:scale(.95)}.spin-button.working .spin-art{animation:spinMedallion 1.3s cubic-bezier(.35,.1,.65,.9) infinite;filter:drop-shadow(0 0 14px #bb78ff66)}
.mini-button,.bet-button{border:1px solid #f9d397;background:radial-gradient(ellipse at 35% 15%,#9567b2,#4e286d 42%,#1d0b35 82%);box-shadow:inset 0 2px 2px #fff2cc80,inset 0 -3px 3px #130622,0 3px 0 #15051f,0 0 0 3px #bb864938;color:#fff3c4;text-shadow:0 2px #311436;transition:filter .15s,transform .12s}
.mini-button:hover,.bet-button:hover{background:radial-gradient(ellipse at 35% 15%,#bd88df,#6d3890 42%,#321450 82%);filter:brightness(1.1)}.mini-button:active,.bet-button:active{transform:translateY(2px)}.mini-button{width:40px;height:40px}.bet-button{width:48px;height:48px}
.turbo-button{height:62px;border:1px solid #bf9a6355;border-radius:11px;background:linear-gradient(#3e234e,#180c2b);box-shadow:inset 0 1px #f6d89844;color:#dcc8ee}.turbo-button[aria-pressed=true]{color:#a6f7ff;border-color:#92eaff;box-shadow:inset 0 0 15px #40c5ec22,0 0 12px #5eefff55;background:linear-gradient(#305b80,#162a4b)}
.central-readout>span{color:#fff0c1;text-shadow:0 2px #351849}.win-line strong{font-size:43px;color:#fff6d9;text-shadow:0 3px #3c1a43}.win-line i{font-size:21px;color:#ffdf8a}.bonus-mode .central-readout.has-win .win-line i{font-size:17px}
/* The ball is larger than one cell, with room inside the cabinet mask. */
.grid{overflow:visible;clip-path:inset(-6% -3% round 22px)}
.symbol.multiplier{z-index:6}.symbol.multiplier::before{height:165%;filter:drop-shadow(0 5px 4px #090019a0) drop-shadow(0 0 8px #91eaff65)}.symbol.multiplier::after{top:61%;font-size:39px;color:#fff8bf;-webkit-text-stroke:.7px #311537;text-shadow:0 3px #1e1435,2px 0 #1e1435,-2px 0 #1e1435,0 -2px #1e1435,0 0 8px #ad7ad0}
.symbol.multiplier.charging{z-index:12}.symbol.multiplier.charging::before{filter:brightness(1.7) drop-shadow(0 0 24px #baf5ff)}.multiplier-flight::after{font-size:39px}
.win-banner[data-level=epic] .win-art{display:block}.win-banner[data-level=epic]>span,.win-banner[data-level=epic]>.celebration-stars{visibility:hidden}.win-banner[data-level=epic]>strong{position:absolute;top:65%;transform:translateY(-50%);margin:0;border:0;background:none;box-shadow:none;padding:0;font-size:77px;min-width:0;animation:goldAmount .65s .15s both}
.win-banner[data-level=epic]::before{background:repeating-conic-gradient(transparent 0deg 14deg,#7ceaff44 15deg 22deg,transparent 24deg 36deg)}
.win-banner[data-level=big]>span{font-size:112px;font-style:italic;letter-spacing:-5px;background:linear-gradient(#fffce0,#ffe995 40%,#dc942b 42%,#fff2a4 75%);background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 5px #86461c) drop-shadow(0 9px #33103c);text-shadow:none;animation:artEntrance .6s both}
.win-banner.count-complete>strong{filter:drop-shadow(0 0 15px #ffda6d);transition:filter .2s}.win-banner[data-level=free]>span{letter-spacing:0}
.melody-preview{padding:20px 0;border-top:1px solid #e4b57c40;margin-top:20px}.melody-preview>p{font-size:12px;letter-spacing:2px;color:#ffdea0;font-weight:900}.melody-preview>div{display:flex;flex-wrap:wrap;gap:8px}.melody-preview button,.audio-mute{padding:11px 15px;border:1px solid #e0b16a;border-radius:9px;background:linear-gradient(#784294,#33134d);box-shadow:inset 0 1px #ffe1ac44;color:#fff0d0;font-size:13px;font-weight:700}.melody-preview small{display:block;font-size:12px;color:#d2c2e6;margin:12px 0}.melody-preview #stopMelody{padding:6px 10px;font-size:11px;background:none;border-color:#9576a5}.dialog-card{background:radial-gradient(ellipse at top,#49205e,#1a0b2b 75%)}
@keyframes spinMedallion{to{transform:rotate(360deg)}}
.portrait .machine{bottom:154px}.portrait .feature-card{height:55px;padding:0;border:0;border-radius:11px;overflow:visible;background:linear-gradient(#893bb0,#411360);box-shadow:inset 0 0 0 1px #edc27a,inset 0 0 0 3px #3b1750,0 4px 8px #0006}.portrait .control-skin{display:none}.portrait .feature-card small,.portrait .feature-card em{display:none}.portrait .feature-card b{position:static;transform:none;font-size:15px;line-height:1.1;letter-spacing:0;text-shadow:0 2px #411436}.portrait .feature-card>span{position:static;margin:0;padding:4px 6px;font-size:12px;min-width:0;border:1px solid #f1d78b66;background:#17052688}.portrait .ante-card b{font-size:14px}.portrait .feature-rail{height:55px}.portrait .control-deck{height:136px;padding:7px 12px;grid-template-columns:64px 1fr 30px 74px 30px;gap:7px}.portrait .spin-button{width:81px;height:81px;margin:0 0 0 -4px}.portrait .wallet{border:0;background:none;box-shadow:none;padding:0;gap:7px}.portrait .stat span{font-size:8px;min-width:0}.portrait .stat strong{font-size:13px}.portrait .mini-button{width:27px;height:27px;font-size:17px}.portrait .bet-button{width:29px;height:29px;font-size:20px}.portrait .central-readout>span{font-size:15px}.portrait .win-line strong{font-size:26px}.portrait .win-line i{font-size:16px}.portrait .bonus-mode .central-readout.has-win .win-line i{font-size:11px}.portrait .symbol.multiplier::before{height:165%}.portrait .symbol.multiplier::after,.portrait .multiplier-flight::after{font-size:17px;top:61%;-webkit-text-stroke:0}.portrait .grid{clip-path:inset(-6% -3% round 10px)}.portrait .win-banner[data-level=epic]>strong{font-size:29px;top:65%;padding:0;margin:0}.portrait .win-banner[data-level=big]>span{font-size:44px;letter-spacing:-2px}.portrait .bonus-round-card,.portrait .free-spins-counter{height:55px}.portrait .melody-preview>div{flex-direction:column}
@media(prefers-reduced-motion:reduce){.spin-button.working .spin-art,.win-banner[data-level=big]>span{animation:none}.feature-card{transition:none}}

.ante-card em{bottom:31%}
.bonus-round-card,.free-spins-counter{border:0;border-radius:0;background:none;box-shadow:none;isolation:isolate;padding-top:18px}.bonus-round-card small{font-size:12px;letter-spacing:.2px;color:#fff0c3}.bonus-round-card b{font-size:72px}.bonus-round-card span{color:#e4bfff;font-size:11px}.free-spins-counter span{font-size:16px}.free-spins-counter b{font-size:92px;line-height:1.1;color:#fff0af}
.portrait .bonus-round-card,.portrait .free-spins-counter{background:linear-gradient(#5b2f86,#23123e);border:1px solid #daba79;border-radius:10px;padding-top:0;box-shadow:inset 0 0 0 2px #21122f}.portrait .bonus-round-card small{font-size:8px}.portrait .bonus-round-card b{font-size:27px}.portrait .free-spins-counter span{font-size:9px}.portrait .free-spins-counter b{font-size:26px}

/* Rendered gold value atlas; accessible numeric labels remain on the symbols. */
.symbol.multiplier::after{content:"";width:110%;aspect-ratio:1;top:60%;background-image:url('./assets/multiplier-values.webp');background-size:500% 200%;background-position:var(--badge-pos);background-repeat:no-repeat;filter:drop-shadow(0 3px 2px #17082280);pointer-events:none}
.win-banner[data-level=free] .win-art{display:block}.win-banner[data-level=free]>span,.win-banner[data-level=free]>.celebration-stars{visibility:hidden}.win-banner[data-level=free]>strong{position:absolute;top:65%;transform:translateY(-50%);margin:0;border:0;background:none;box-shadow:none;padding:0;font-size:90px;min-width:0;animation:goldAmount .65s .15s both}
.portrait .win-banner[data-level=free]>strong{font-size:36px;top:65%;margin:0;padding:0}

.cabinet-bezel{z-index:2}

/* A whole-stage concert reveal, with one decisive impact instead of layered popups. */
.game-shell>.win-banner{inset:0;z-index:65;border-radius:0;background:radial-gradient(ellipse at 50% 42%,#361550d9,#090411f5 74%);box-shadow:none;isolation:isolate}
.game-shell>.win-banner.show{animation:concertReveal .38s ease-out both}
.win-banner[data-level=epic]{--show-color:#6cecff}.win-banner[data-level=sensational]{--show-color:#ffcf65}.win-banner[data-level=free]{--show-color:#da9aff}.win-banner[data-level=big]{--show-color:#ffdb93}
.game-shell>.win-banner::before{opacity:.48;filter:blur(2px);background:repeating-conic-gradient(from 10deg,transparent 0deg 22deg,var(--show-color) 23deg 26deg,transparent 28deg 45deg);animation:showRays 48s linear infinite}
.game-shell>.win-banner::after{content:"";position:absolute;inset:20% 29%;border:3px solid var(--show-color);border-radius:50%;box-shadow:0 0 65px var(--show-color),inset 0 0 50px var(--show-color);animation:concertRing 1.1s .16s ease-out both;pointer-events:none;z-index:0}
.game-shell>.win-banner .win-art{inset:5% 5% 11%;width:90%;height:84%;animation:concertArt .85s cubic-bezier(.12,.75,.2,1) both;filter:drop-shadow(0 0 25px color-mix(in srgb,var(--show-color) 35%,transparent))}
.game-shell>.win-banner>strong{font-variant-numeric:tabular-nums;letter-spacing:-2px}
.game-shell>.win-banner .win-context{position:absolute;bottom:16%;z-index:4;font-size:20px;font-weight:800;letter-spacing:5px;color:#fff1c8;text-shadow:0 2px 4px #000}
.game-shell>.win-banner button{bottom:8%;padding:16px 30px;letter-spacing:2px;border-color:#f4cf8d88;box-shadow:inset 0 1px #fff6b833;background:linear-gradient(#472051,#1d102b);font-size:15px}
.game-shell>.win-banner.count-complete>strong{animation:finalAmount .48s ease-out both;text-shadow:0 3px #683166,0 0 28px #ffdb7380}
.game-shell>.win-banner.count-complete .win-context{color:#fff;transition:color .3s}
.game-shell>.win-banner[data-art-ready=false]>.win-art{display:none}.game-shell>.win-banner[data-art-ready=false]>span{visibility:visible}
.celebrating .machine{filter:blur(4px) brightness(.35);transition:filter .3s}.celebrating .control-deck{filter:brightness(.35);transition:filter .3s}
.game-shell>.win-banner .celebration-particles{z-index:3;pointer-events:none}.game-shell>.win-banner .celebration-particles i{opacity:0;animation-fill-mode:both}
.portrait .game-shell>.win-banner{inset:0}.portrait .game-shell>.win-banner .win-art{inset:auto 0;top:calc(50% - 100vw / 3);width:100%;height:calc(100vw * 2 / 3)}
.portrait .game-shell>.win-banner[data-level=epic]>strong,.portrait .game-shell>.win-banner[data-level=free]>strong,.portrait .game-shell>.win-banner[data-level=sensational]>strong{top:calc(50% + 100vw * .14);font-size:36px}
.portrait .game-shell>.win-banner .win-context{bottom:25%;font-size:12px;letter-spacing:2px}.portrait .game-shell>.win-banner button{bottom:15%;font-size:12px;padding:14px 24px}.portrait .game-shell>.win-banner::after{inset:30% 5%}
@keyframes concertReveal{from{opacity:0}to{opacity:1}}
@keyframes concertArt{0%{opacity:0;transform:translateY(45px) scale(.78);filter:brightness(1.8) blur(4px)}55%{opacity:1;transform:translateY(-5px) scale(1.025)}100%{transform:none}}
@keyframes concertRing{0%{opacity:0;transform:scale(.2)}20%{opacity:.7}100%{opacity:0;transform:scale(2.9)}}
@keyframes finalAmount{0%{transform:translateY(-50%) scale(1)}45%{transform:translateY(-50%) scale(1.12)}100%{transform:translateY(-50%) scale(1)}}
.game-shell>.win-banner[data-level=big].count-complete>strong{animation:none}
@media(prefers-reduced-motion:reduce){.game-shell>.win-banner::after{display:none}.game-shell>.win-banner,.game-shell>.win-banner *{animation:none!important}.celebrating .machine,.celebrating .control-deck{transition:none}}

.game-shell>.win-banner[data-level=sensational]>strong{top:66%}
.portrait .game-shell>.win-banner[data-level=sensational]>strong{top:calc(50% + 100vw * .14)}

/* Leave room for italic glyph overhang before clipping the gold text fill. */
.win-banner[data-level=big]>span{padding:.04em .20em .10em;line-height:1.2;overflow:visible}

/* Keep gold motion on transform/opacity layers; avoid repainting blurred surfaces. */
.symbol.winner::after{animation:winnerGlow .7s ease-in-out infinite alternate;box-shadow:inset 0 0 12px #ffcc5340,0 0 12px #ffd57988;will-change:opacity}
@keyframes winnerGlow{from{opacity:.6}to{opacity:1}}
.game-shell>.win-banner,.feature-gate{backdrop-filter:none;-webkit-backdrop-filter:none}
.game-shell>.win-banner::before,.feature-gate::before{inset:-15%;filter:none}
.game-shell>.win-banner .win-art{filter:none}
@keyframes concertArt{0%{opacity:0;transform:translateY(45px) scale(.78)}55%{opacity:1;transform:translateY(-5px) scale(1.025)}100%{transform:none}}
.celebrating .machine,.celebrating .control-deck{filter:none;opacity:.35;transition:opacity .25s}
.game-shell>.win-banner .celebration-particles i{filter:none;animation-name:coinCascadeFlat}
@keyframes coinCascadeFlat{0%{transform:translate3d(0,-40px,0) rotate(-20deg);opacity:0}8%{opacity:1}90%{opacity:1}100%{transform:translate3d(var(--drift),1000px,0) rotate(160deg);opacity:0}}
.stage-lights i{filter:none}.celebrating .stage-lights i{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.symbol.winner::after{animation:none!important}.celebrating .machine,.celebrating .control-deck{transition:none}}
