/* Opaque, clipped reel strips keep each stop independent of the other reels. */
.board{overflow:hidden;contain:layout paint}
.reel-window{position:absolute;top:0;bottom:0;width:16.666667%;overflow:hidden;pointer-events:none;z-index:12;background:#0b1210;border:1px solid #58452d}
.reel-strip{position:absolute;inset:0 0 auto;height:300%;will-change:transform}
.reel-ghost{position:relative;height:8.333333%;background:radial-gradient(ellipse,#1d2420,#080d0c 80%);border-bottom:2px solid #58452d}
.reel-ghost .symbol{filter:blur(1.2px) brightness(.85);transition:none}
.reel-window::after{content:'';position:absolute;inset:0;background:linear-gradient(#02090799,transparent 20%,transparent 80%,#02090799)}
.tile .symbol{transition:filter .22s;backface-visibility:hidden}
.tile.spinning .symbol,.tile.just-landed{animation:none}
.tile.winner{animation:win-breathe 1.8s ease-in-out infinite}
@keyframes win-breathe{50%{box-shadow:inset 0 0 20px #e7c67538,0 0 16px #e7c67588}}
.token{transition:opacity .24s,border-color .24s,box-shadow .24s}
.tall-emblem em,.hud strong{font-variant-numeric:tabular-nums}
dialog[open]{animation:dialog-enter .2s cubic-bezier(.2,.7,.3,1)}
@keyframes dialog-enter{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(prefers-reduced-motion:reduce){.tile.winner,dialog[open],.paylines path,.spin-hotspot:disabled .spin-glyph{animation:none}.token,.tile .symbol{transition:none}}
