/* A compact display face, embedded locally so every stage uses the same lettering. */
@font-face{font-family:Bonanza;src:url('./assets/fonts/LilitaOne-Regular.ttf') format('truetype');font-style:normal;font-weight:400 1000;font-display:swap}
.game-shell{font-family:Bonanza,Arial,sans-serif;font-synthesis:none}
.game-shell button{font-family:inherit}
.game-message,.central-readout>span,.last-win-card>small,.tumble-meter small,.feature-gate-card h2,.feature-gate-card p{font-weight:400;letter-spacing:.8px}
.game-message{font-size:26px;color:#fff5d4;text-shadow:0 2px #722353,0 4px #260d38;letter-spacing:1px}
.feature-card .feature-content{position:absolute;inset:24% 16% 19%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-width:0}
.feature-card .feature-content>small,.feature-card .feature-content>b,.feature-card .feature-content>span,.feature-card .feature-content>em{position:static;inset:auto;transform:none;margin:0;max-width:100%;min-width:0;flex-shrink:0}
.feature-card .feature-content>small{font-size:12px;line-height:1.2;letter-spacing:.5px;color:#ffefc2;white-space:nowrap;font-weight:400}
.feature-card .feature-content>b{width:100%;font-size:34px;line-height:.94;letter-spacing:0;font-weight:400;color:#fff4cf;text-shadow:0 2px #d79849,0 4px #642851,0 5px #24102f}
.feature-card .feature-content>span{padding:4px 12px;border:1px solid #ffe4a369;border-radius:18px;background:linear-gradient(#240a32d9,#421345b0);color:#fff0b7;font-size:20px;line-height:1.1;white-space:nowrap;text-shadow:0 2px #381026;font-variant-numeric:tabular-nums}
.feature-card .feature-content>em{font-size:11px;line-height:1;letter-spacing:.5px;font-style:normal;color:#e6ccf3}
.ante-card .feature-content{inset:24% 16% 18%;gap:7px}
.ante-card .feature-content>small{font-size:11px;letter-spacing:.15px}
.ante-card .feature-content>span{font-size:15px;min-width:68px}
.ante-card[aria-pressed=true] .feature-content>span{background:linear-gradient(#dcffff,#75dff3);color:#20334a;border-color:#efffff;text-shadow:0 1px #fff9}
.feature-title-art{display:block;width:100%;height:75px;object-fit:contain;pointer-events:none}
.brand{top:0;left:4px;width:240px;height:70px;filter:none}
.brand-art{display:block;width:100%;height:100%;object-fit:contain}
.last-win-card>small{font-size:15px;letter-spacing:1px}.last-win-card>b{font-size:38px;font-weight:400;letter-spacing:.2px}
.last-win-card>span{font-size:13px;font-weight:400;letter-spacing:.6px}.history-row b{font-size:19px;font-weight:400}.history-row span{font-size:15px}
.stat span{font-size:14px;font-weight:400;letter-spacing:.8px}.stat strong{font-weight:400;font-size:23px;letter-spacing:.4px;font-variant-numeric:tabular-nums}
.win-line strong{font-size:48px;font-weight:400;letter-spacing:.6px}.win-line i{font-size:23px;font-weight:400;letter-spacing:1px}
.central-readout>span{font-size:25px}.central-readout small{font-size:14px;letter-spacing:.5px;font-weight:400}
.tumble-meter{border-color:#ffe4a5;background:linear-gradient(#a358b4,#57177a 48%,#31134e);box-shadow:inset 0 2px #fff1cf70,inset 0 -3px #170722,0 4px #2c1334}
.tumble-meter small{color:#fff0ba}.tumble-meter b,.tumble-meter>strong,.bonus-round-card b,.free-spins-counter b{font-weight:400;letter-spacing:.3px;font-variant-numeric:tabular-nums}
.bonus-round-card small{font-size:14px;line-height:1.15;max-width:145px;letter-spacing:.6px}.bonus-round-card span{font-size:12px;max-width:142px;line-height:1.3}.free-spins-counter span{font-size:17px;letter-spacing:.8px}
.feature-gate-card h2{color:#fff1b6;text-shadow:0 3px #c57a31,0 6px #532347;line-height:1.06;max-width:100%;padding:.08em .15em}
.feature-gate-card>strong,.win-banner>strong{font-weight:400;letter-spacing:0}
.feature-gate-card button,.win-banner button{font-weight:400;letter-spacing:1px}
.win-banner[data-level=big]>span{font-weight:400;letter-spacing:-1px;padding:.08em .2em .12em}
/* One short reflection on deliberate interaction; no perpetual glow repaint. */
.feature-card .feature-content::after{content:"";position:absolute;inset:-4% -2%;pointer-events:none;background:linear-gradient(115deg,transparent 25%,#fff5cb00 39%,#fff5cb55 50%,#fff5cb00 61%,transparent 75%);opacity:0;transform:translateX(-18%)}
.feature-card:hover:not(:disabled) .feature-content::after{animation:plaqueReflection .65s ease-out both}
@keyframes plaqueReflection{0%{opacity:0;transform:translateX(-18%)}35%{opacity:.7}100%{opacity:0;transform:translateX(18%)}}
.portrait .brand{top:8px;left:50%;width:212px;height:66px}
.portrait .feature-card{min-width:0;padding:5px 7px;gap:0}
.portrait .feature-card .feature-content{position:static;inset:auto;width:100%;height:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px}
.portrait .feature-card .feature-content>small,.portrait .feature-card .feature-content>em{display:none}
.portrait .feature-card .feature-content>b{font-size:17px;line-height:.94;width:auto;min-width:0}
.portrait .feature-title-art{height:39px;width:100%;max-width:78px;margin:auto}
.portrait .feature-card .feature-content>span{font-size:12px;padding:4px 5px;min-width:0;letter-spacing:0}
.portrait .ante-card .feature-content>span{min-width:35px;font-size:12px}
.portrait .game-message{font-size:12px;letter-spacing:.3px}
.portrait .stat span{font-size:9px}.portrait .stat strong{font-size:14px;letter-spacing:0}
.portrait .central-readout>span{font-size:17px}.portrait .central-readout small{font-size:11px}.portrait .win-line strong{font-size:30px;letter-spacing:0}
.portrait .bonus-round-card small{font-size:9px;max-width:80px;letter-spacing:0}.portrait .bonus-round-card b{font-size:27px}.portrait .free-spins-counter span{font-size:10px}
.portrait .feature-gate-card h2{font-size:32px}.portrait .win-banner[data-level=big]>span{font-size:48px;letter-spacing:0}
@media(prefers-reduced-motion:reduce){.feature-card .feature-content::after{display:none}}

/* Keep the same raster origin before, during and after each landing. */
.symbol{transform:translate3d(0,0,0) scaleY(1);backface-visibility:hidden}

.portrait .play-area{aspect-ratio:1.2}

/* Give the mobile payout its own row; never shrink a clipped flex text line. */
.portrait .control-deck{height:auto;min-height:154px;padding:8px 12px;grid-template-rows:auto 81px;row-gap:6px;align-content:normal}
.portrait .central-readout{position:static;grid-column:1 / -1;grid-row:1;height:auto;min-height:51px;gap:2px}
.portrait .central-readout>*{flex-shrink:0}
.portrait .central-readout small{font-size:12px;line-height:1.4;margin:0;padding:1px 0;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.portrait .central-readout small:empty{display:none}
.portrait .control-deck>.utility-buttons,.portrait .control-deck>.wallet,.portrait .control-deck>.bet-button,.portrait .control-deck>.spin-button{grid-row:2}
.portrait .machine{bottom:172px}

/* Celebrate the artwork, not the cell: its gold outline must stay inside the grid. */
.symbol.winner{animation:none}
.symbol.winner::before{animation:winningArtwork .65s cubic-bezier(.18,.8,.2,1) both}
.symbol.winner::after{inset:7%;box-shadow:inset 0 0 12px #ffcc5355}
.symbol.winner.exploding::before{animation:burstArtwork .4s cubic-bezier(.2,.65,.3,1) forwards}
.symbol.winner.exploding::after{animation:none;opacity:0;transition:opacity .1s}
@keyframes winningArtwork{0%{transform:translate(-50%,-50%) scale(1)}30%{transform:translate(-50%,-50%) scale(1.1)}65%{transform:translate(-50%,-50%) scale(1.035)}100%{transform:translate(-50%,-50%) scale(1.06)}}
@keyframes burstArtwork{0%{transform:translate(-50%,-50%) scale(1.06);opacity:1}40%{transform:translate(-50%,-50%) scale(1.18);opacity:1}100%{transform:translate(-50%,-50%) scale(.3);opacity:0}}
@media(prefers-reduced-motion:reduce){.symbol.winner::before{animation:none!important}}
/* The cabinet's ornate corners cover any decoration beneath the physical rim. */
.cabinet-bezel{z-index:8}

/* Only multiplier balls may extend beyond the reel window. */
.grid{overflow:hidden;clip-path:inset(0 round 22px)}
.portrait .grid{clip-path:inset(0 round 10px)}
.multiplier-layer{position:absolute;inset:5% 3.4%;z-index:9;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr));overflow:visible;pointer-events:none}
