/* Lock-respin board (shared by lock-respin ways games): the reels board plus the layer of locked wilds over its window.
   The lock art and its ×m badge come from the game (lockHTML); --lock-bg is the glass each lock sits behind (opaque
   enough to hide the reel spinning under it), --lock-ring its frame. The heartbeat plays on the badge (class "badge"). */
.respin-board{grid-template-columns:auto;gap:0} /* no payline markers: the window is the only column */
.respin-board .locks{position:absolute;inset:0;pointer-events:none;z-index:3}
.respin-board .lock{position:absolute;width:var(--cell);height:var(--cell);display:flex;align-items:center;justify-content:center;
  background:var(--lock-bg,rgba(0,0,0,.82));box-shadow:inset 0 0 0 2px var(--lock-ring,rgba(255,255,255,.35));transition:filter .25s,opacity .25s}
.respin-board .lock>.sym{position:relative;width:88%;height:88%}
.respin-board .lock.land>*{animation:rs-lock .42s cubic-bezier(.2,.9,.3,1.2) both}
.respin-board .lock.land{animation:rs-glass .42s ease-out both}
.respin-board .lock.beat .badge{animation:rs-beat 1s ease-out both}
.respin-board .lock.lit>*{filter:drop-shadow(0 0 8px var(--win-glow,#fff)) brightness(1.08)}
.respin-board .lock.dim{filter:brightness(.42) saturate(.6)}
/* a plain default badge (a game's skin restyles it): bottom right of the cell, digits on a dark disc */
:where(.respin-board .lock) .badge{position:absolute;right:2%;bottom:2%;min-width:36%;padding:0 .3em;border-radius:999px;display:grid;place-items:center;
  font:800 calc(var(--cell)*.2)/1.3 var(--ui,system-ui);color:#fff;background:rgba(0,0,0,.8);box-shadow:0 0 0 2px var(--lock-ring,rgba(255,255,255,.6));font-variant-numeric:tabular-nums}
@keyframes rs-lock{0%{transform:scale(1.18);opacity:0}100%{transform:none;opacity:1}}
@keyframes rs-glass{0%{box-shadow:inset 0 0 0 2px var(--lock-ring,rgba(255,255,255,.35)),inset 0 0 calc(var(--cell)*.5) var(--win-glow,#fff)}100%{box-shadow:inset 0 0 0 2px var(--lock-ring,rgba(255,255,255,.35))}}
/* two heartbeats (lub-dub) at 72 bpm */
@keyframes rs-beat{0%{transform:scale(1)}7%{transform:scale(1.26)}13%{transform:scale(1)}19%{transform:scale(1.14)}28%,83%{transform:scale(1)}89%{transform:scale(1.2)}95%{transform:scale(1)}98%{transform:scale(1.08)}100%{transform:scale(1)}}
/* reduced motion: locks and badges simply change (shell.css caps every animation and transition) */
body.still .respin-board .lock,body.still .respin-board .lock>*,body.still .respin-board .lock .badge{animation:none!important}
@media (prefers-reduced-motion:reduce){.respin-board .lock,.respin-board .lock>*,.respin-board .lock .badge{animation:none!important}.respin-board .lock{transition-duration:.1s}}
/* spent glass: the chain's locks as a feature starts (none is one of its sticky wilds): dim, no ring, no badge, until
   the feature's first spin clears them */
.respin-board .lock.spent{box-shadow:none;filter:brightness(.4) saturate(.5)}
.respin-board .lock.spent .badge{display:none}
