/* Tactile motion layer; no ambient loops, no gameplay state. */
.kb-dice-running .die { will-change: transform; filter: drop-shadow(0 7px 5px rgba(20,17,15,.18)); }
.center-motion[data-motion="tumbling"] { animation: kb-dice-tray 720ms cubic-bezier(.2,.8,.3,1) both; }
.center-motion[data-motion="settled"] { animation: kb-dice-settle 180ms ease-out both; }
.kb-token-travelling { z-index: 60; will-change: transform; }
.kb-token-shadow { position:absolute; left:50%; top:calc(100% - 1px); width:18px; height:6px; border-radius:50%; background:rgba(20,17,15,.25); transform:translateX(-50%); pointer-events:none; }
.kb-token-travelling .kb-token-shadow { animation: kb-shadow-float 190ms ease-in-out both; }
.kb-token-landed { animation: kb-token-land 250ms cubic-bezier(.2,.9,.25,1) both; }
/* Static outline only: the old infinite filter pulse repainted the board every frame. */
.kb-path-active { outline:2px solid color-mix(in srgb,var(--kb-gold,#f6a91b) 85%, transparent); outline-offset:-3px; }
.kb-card-enter { animation: kb-card-flip 520ms cubic-bezier(.18,.82,.24,1) both; box-shadow:0 16px 28px rgba(20,17,15,.16); perspective:900px; }
.kb-card-event { transform-origin:50% 100%; }
.kb-celebrate { animation: kb-celebrate 650ms cubic-bezier(.2,.85,.25,1) both; }
@keyframes kb-dice-tray { 0%{transform:scale(.94) rotate(-1deg);opacity:.75} 45%{transform:scale(1.04) rotate(1deg);opacity:1} 100%{transform:scale(1) rotate(0)} }
@keyframes kb-dice-settle { 0%{transform:scale(1.06)} 70%{transform:scale(.98)} 100%{transform:scale(1)} }
@keyframes kb-token-land { 0%{filter:drop-shadow(0 8px 4px rgba(20,17,15,.2));scale:1.12} 100%{filter:drop-shadow(0 2px 2px rgba(20,17,15,.15));scale:1} }
@keyframes kb-shadow-float { 0%,100%{opacity:.25;transform:translateX(-50%) scale(.7)} 50%{opacity:.1;transform:translateX(-50%) scale(1.15)} }
@keyframes kb-card-flip { 0%{opacity:0;transform:translateY(18px) rotateX(-28deg) rotateY(-6deg) scale(.94);box-shadow:0 2px 4px rgba(20,17,15,.08)} 58%{opacity:1;transform:translateY(-2px) rotateX(4deg) rotateY(1deg) scale(1.01);box-shadow:0 18px 30px rgba(20,17,15,.19)} 100%{opacity:1;transform:none;box-shadow:0 8px 14px rgba(20,17,15,.12)} }
@keyframes kb-celebrate { 0%{transform:scale(1)} 35%{transform:scale(1.04) rotate(-1deg)} 70%{transform:scale(.99) rotate(.5deg)} 100%{transform:scale(1)} }
@media (prefers-reduced-motion:reduce){.kb-card-enter,.kb-celebrate,.kb-token-landed{animation:none}.center-motion[data-motion]{animation:none}}
