/* Physical, staged motion for Donut Snakes. */
.snakes-history-note{border-top:1px solid #31271d;color:#756c61;font-size:10px;line-height:1.55;margin:2px 0 0;padding:13px 2px 0}
.snakes-dice{perspective:720px;transform-style:preserve-3d}
.snake-die{background:linear-gradient(145deg,#fffaf0,#d8d1c7);box-shadow:inset -7px -9px 0 #b8b1a8,inset 4px 4px 0 #fff,0 13px 24px #0009;transform-style:preserve-3d;will-change:transform}
.snakes-dice.rolling .snake-die:first-child{animation:die-tumble-a .88s cubic-bezier(.26,.72,.34,1) infinite}
.snakes-dice.rolling .snake-die:last-child{animation:die-tumble-b .82s cubic-bezier(.26,.72,.34,1) infinite}
.snakes-dice.landed .snake-die:first-child{animation:die-land-a .34s cubic-bezier(.2,.9,.3,1.25) both}
.snakes-dice.landed .snake-die:last-child{animation:die-land-b .4s .04s cubic-bezier(.2,.9,.3,1.25) both}
.snakes-runner{--runner-size:42px;position:absolute;left:0;top:0;width:var(--runner-size);height:var(--runner-size);z-index:8;pointer-events:none;transition-property:transform;transition-timing-function:cubic-bezier(.25,.9,.35,1.15);will-change:transform}
.snakes-runner span{position:absolute;inset:-10px;border-radius:50%;background:radial-gradient(circle,#ffd15a88,transparent 65%);filter:blur(2px);animation:runner-glow 1.4s ease-in-out infinite}
.snakes-runner img{position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 5px #0009)}
.snakes-runner.moving img{animation:runner-hop .15s ease-in-out infinite alternate}
.snakes-runner.landed img{animation:runner-land .2s ease-out}
.snakes-runner.rewarded{animation:runner-reward .5s ease both}
.snakes-runner.caught{animation:runner-caught .78s ease both}
.snake-tile.snake:not(.snake-hit) img{animation:snake-idle 2.8s ease-in-out infinite;transform-origin:50% 85%}
.snake-tile.safe-hit:after{content:'';position:absolute;inset:5px;border:2px solid #c9ff7e;border-radius:4px;animation:safe-ring .48s ease-out both;pointer-events:none}
.snake-tile.snake-hit{z-index:9}
.snake-tile.snake-hit img{animation:snake-attack .78s cubic-bezier(.2,.8,.2,1) both;z-index:10}
.snakes-board.hazard-impact{animation:snake-board-hit .42s ease both}
.snakes-board.safe-impact{animation:safe-board-glow .5s ease both}
@keyframes die-tumble-a{0%{transform:translate3d(-6px,0,0) rotateX(0) rotateY(0) rotateZ(0)}35%{transform:translate3d(8px,-38px,30px) rotateX(210deg) rotateY(160deg) rotateZ(80deg)}70%{transform:translate3d(-4px,-16px,12px) rotateX(410deg) rotateY(330deg) rotateZ(190deg)}100%{transform:translate3d(0,0,0) rotateX(540deg) rotateY(540deg) rotateZ(270deg)}}
@keyframes die-tumble-b{0%{transform:translate3d(7px,0,0) rotateX(0) rotateY(0)}40%{transform:translate3d(-9px,-31px,26px) rotateX(-190deg) rotateY(240deg) rotateZ(-100deg)}75%{transform:translate3d(5px,-12px,8px) rotateX(-390deg) rotateY(410deg) rotateZ(-210deg)}100%{transform:translate3d(0,0,0) rotateX(-540deg) rotateY(540deg) rotateZ(-300deg)}}
@keyframes die-land-a{0%{transform:translateY(-16px) rotate(-7deg) scale(.94)}65%{transform:translateY(4px) rotate(2deg) scale(1.05)}100%{transform:none}}
@keyframes die-land-b{0%{transform:translateY(-20px) rotate(8deg) scale(.92)}68%{transform:translateY(4px) rotate(-2deg) scale(1.05)}100%{transform:none}}
@keyframes runner-hop{to{transform:translateY(-11px) rotate(12deg)}}
@keyframes runner-land{50%{transform:scale(1.3)}100%{transform:scale(1)}}
@keyframes runner-reward{45%{filter:drop-shadow(0 0 15px #bbff62);transform:scale(1.28)}100%{filter:none;transform:scale(1)}}
@keyframes runner-caught{0%,30%{opacity:1;transform:scale(1)}65%{opacity:.65;transform:scale(.55) rotate(20deg)}100%{opacity:0;transform:scale(.1) rotate(-35deg)}}
@keyframes runner-glow{50%{transform:scale(1.22);opacity:.55}}
@keyframes snake-idle{0%,100%{transform:rotate(-2deg) translateY(1px)}50%{transform:rotate(3deg) translateY(-4px)}}
@keyframes snake-attack{0%{transform:scale(1) rotate(0)}28%{transform:scale(.82) rotate(-8deg)}68%{transform:scale(2.35) translate(-18%,-24%) rotate(9deg);filter:drop-shadow(0 10px 12px #000) drop-shadow(0 0 18px #e94e31)}100%{transform:scale(1.1) rotate(0)}}
@keyframes snake-board-hit{0%,100%{transform:translateX(0)}20%{transform:translateX(-7px)}40%{transform:translateX(7px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@keyframes safe-ring{0%{opacity:1;transform:scale(.7)}100%{opacity:0;transform:scale(1.18)}}
@keyframes safe-board-glow{50%{box-shadow:0 0 30px #91cf4f35,inset 0 0 25px #91cf4f16}}
@media(prefers-reduced-motion:reduce){.snakes-dice.rolling .snake-die,.snakes-dice.landed .snake-die,.snake-tile img,.snakes-runner,.snakes-board{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

/* V2: quieter dice and exact clockwise step feedback. */
.snakes-dice.rolling .snake-die:first-child{animation:die-calm-a .52s ease-in-out infinite}
.snakes-dice.rolling .snake-die:last-child{animation:die-calm-b .56s ease-in-out infinite}
.snakes-dice.landed .snake-die:first-child,.snakes-dice.landed .snake-die:last-child{animation:die-calm-land .28s cubic-bezier(.2,.8,.3,1.2) both}
.snakes-runner img{border:2px solid #f2ba4f;border-radius:7px;background:#17130f;image-rendering:pixelated;box-shadow:0 0 0 2px #1c160f,0 5px 10px #0009;filter:none}
.snakes-runner:not([data-position]){visibility:hidden}
.snakes-runner.resetting{opacity:0;transition:opacity .1s ease!important}
.snakes-runner span{inset:-7px}
.snakes-runner.moving img{animation:runner-step .13s ease-in-out infinite alternate}
.snake-tile.passing{border-color:#f0b84d!important;box-shadow:inset 0 0 0 2px #f0b84d22,0 0 16px #f0a52d55!important;filter:brightness(1.16)}
.snake-tile.current{border-color:#e5bb55;box-shadow:inset 0 0 0 2px #e5bb5524,0 0 14px #e5bb5538}
.tile-start-icon{color:#57b8ef;font-size:clamp(22px,3vw,40px);filter:drop-shadow(0 0 8px #41a7e866)}
.snakes-center-multiplier{color:#f3eadc;font:700 clamp(22px,3vw,38px)/1 Oswald,sans-serif;letter-spacing:.01em}
@keyframes die-calm-a{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-9px) rotate(7deg)}}
@keyframes die-calm-b{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-7px) rotate(-6deg)}}
@keyframes die-calm-land{0%{transform:translateY(-7px) scale(.98)}65%{transform:translateY(2px) scale(1.03)}100%{transform:none}}
@keyframes runner-step{to{transform:translateY(-6px) scale(1.04)}}
