@keyframes tileLand{0%{opacity:0;transform:scale(.72)}70%{transform:scale(1.045)}100%{opacity:1;transform:scale(1)}}
@keyframes snapPulse{
  0%{filter:url(#tileShadow) brightness(1)}
  35%{filter:url(#tileShadow) brightness(1.28) drop-shadow(0 0 14px rgba(241,209,141,.55))}
  100%{filter:url(#tileShadow) brightness(1)}
}
@keyframes snapPulseDom{
  0%{filter:brightness(1)}
  35%{filter:brightness(1.22) drop-shadow(0 0 12px rgba(241,209,141,.5))}
  100%{filter:brightness(1)}
}
@keyframes rackDeal{from{opacity:0;transform:translateY(28px) rotate(5deg)}to{opacity:1;transform:translateY(0) rotate(0)}}
@keyframes pulseTarget{0%,100%{opacity:.72;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}
@keyframes pulseDraw{0%,100%{box-shadow:0 0 0 1px rgba(241,209,141,.18),0 0 12px rgba(215,176,104,.1)}50%{box-shadow:0 0 0 1px rgba(241,209,141,.42),0 0 22px rgba(215,176,104,.28)}}
@keyframes tileShake{0%,100%{transform:translateY(0) rotate(0)}20%{transform:translateY(0) rotate(-5deg)}40%{transform:translateY(0) rotate(5deg)}60%{transform:translateY(0) rotate(-3deg)}80%{transform:translateY(0) rotate(2deg)}}
.svg-domino.new{animation:tileLand calc(.28s * var(--dur)) cubic-bezier(.2,.8,.25,1)}
.svg-domino.new .face{stroke:#9a8660;stroke-width:1.2}
.hand-tile.deal{animation:rackDeal calc(.38s * var(--dur)) cubic-bezier(.2,.8,.25,1) backwards}
.tutorial-tile.snap-pulse,.tutorial-snap-zone.snap-pulse,.tutorial-chain.snap-pulse{animation:snapPulseDom calc(.38s * var(--dur)) ease}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
html[data-motion="reduce"] .boneyard-zone.needs-draw,
html[data-motion="reduce"] .tutorial-snap-zone.hint{animation:none}
