.regional-tool-fx {
  position: absolute;
  z-index: 85;
  left: 4px;
  right: 4px;
  pointer-events: none;
  display: none;
  overflow: visible;
  color: #3c4e2b;
}
.regional-tool-fx.show {
  display: block;
  animation: rtEnter .22s ease-out both;
}
.regional-tool-fx[data-phase=exit] {
  opacity: 0;
  transition: opacity .3s;
}
.rt-glow {
  position: absolute;
  top: 8%;
  right: 0;
  bottom: 4%;
  left: 0;
  border-radius: 50%;
  background:
    radial-gradient(
      ellipse,
      #fffad7da 0%,
      #e6f6b350 58%,
      transparent 72%);
}
.rt-title {
  position: absolute;
  top: -2px;
  left: 50%;
  translate: -50% 0;
  white-space: nowrap;
  padding: 3px 13px;
  border: 1px solid #a7ba80;
  border-radius: 12px;
  background: #ffffe8f5;
  text-align: center;
  font-weight: 900;
  font-size: 18px;
  color: #3e6232;
  box-shadow: 0 2px #93ae6c50;
}
.rt-cast {
  position: absolute;
  top: 22px;
  right: 0;
  bottom: 24px;
  left: 0;
}
.rt-actor {
  position: absolute;
  left: 1%;
  bottom: 0;
  width: 46%;
  height: 100%;
  transform-origin: 55% 85%;
}
.rt-actor img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.rt-speech {
  position: absolute;
  right: 7%;
  top: 33px;
  width: 48%;
  padding: 9px 7px;
  border: 2px solid #7c945b;
  border-radius: 15px 15px 15px 3px;
  background: #ffffe8;
  color: #446136;
  text-align: center;
  font-size: 13px;
  line-height: 1.45;
  font-weight: 800;
  box-shadow: 0 3px #93ae6c5c;
}
.rt-result {
  position: absolute;
  left: 5%;
  right: 5%;
  bottom: -3px;
  margin: 0;
  padding: 7px 5px;
  text-align: center;
  border-radius: 12px;
  background: #ffffeced;
  border: 1px solid #a7ba80;
  font-size: 11px;
  line-height: 16px;
  font-weight: 700;
  opacity: 0;
}
[data-phase=result] > .rt-result {
  opacity: 1;
}
.rt-card {
  position: absolute;
  left: var(--x);
  top: 105px;
  width: 40px;
  height: 46px;
  margin-left: -20px;
  padding: 3px 2px 2px;
  border: 1px solid #9dac77;
  border-radius: 6px;
  background: #fffef0;
  box-shadow: 0 3px #8eaa6c;
  text-align: center;
}
.rt-card img {
  display: block;
  width: 31px;
  height: 30px;
  object-fit: contain;
  margin: auto;
}
.rt-card b {
  display: block;
  white-space: nowrap;
  color: #36713c;
  font: 700 9px/12px system-ui, sans-serif;
}
.rt-impact {
  position: absolute;
  left: 65%;
  top: 85px;
  color: #ffed73;
  font: 900 76px/1 sans-serif;
  text-shadow: 2px 2px #b7872f, -1px -1px #fff8cd;
  opacity: 0;
}
.regional-tool-fx[data-tool=bomb][data-phase=action] .rt-actor {
  animation: rtHammer 1.05s cubic-bezier(.3, .1, .2, 1) both;
}
.regional-tool-fx[data-tool=bomb][data-phase=action] .rt-card {
  animation: rtBreak .6s .48s ease-out both;
}
.regional-tool-fx[data-tool=bomb][data-phase=action] .rt-impact {
  animation: rtHit .65s .42s ease-out both;
}
.regional-tool-fx[data-tool=bomb][data-phase=result] .rt-card {
  visibility: hidden;
}
.regional-tool-fx[data-tool=stash] .rt-cast {
  top: 50px;
  right: 0;
  bottom: 26px;
  left: 0;
  overflow: hidden;
}
.regional-tool-fx[data-tool=stash] .rt-actor {
  left: calc(var(--i)*33.333% - 5.333%);
  width: 44%;
  height: 100%;
  bottom: 0;
  transform-origin: 50% 100%;
}
.regional-tool-fx[data-tool=stash] .rt-body {
  object-position: center bottom;
}
.regional-tool-fx[data-tool=stash] .rt-speech {
  top: 23px;
  left: 18%;
  right: 18%;
  width: auto;
  font-size: 12px;
  padding: 5px;
}
.regional-tool-fx[data-tool=stash] .rt-card {
  left: var(--sx);
  top: var(--sy);
  height: 40px;
  padding: 2px;
  opacity: 0;
}
.regional-tool-fx[data-tool=stash] .rt-card img {
  height: 24px;
}
.regional-tool-fx[data-tool=stash] .rt-card b {
  font-size: 8.5px;
  line-height: 10px;
}
.regional-tool-fx[data-tool=stash][data-phase=action] .rt-actor {
  animation: rtStandCatch .95s calc(var(--i)*.12s) ease-in-out both;
}
.regional-tool-fx[data-tool=stash][data-phase=action] .rt-card {
  animation: rtStandTake 1s calc(var(--i)*.12s) linear both;
}
.regional-tool-fx[data-tool=shuffle] .rt-actor {
  left: 8%;
  width: 44%;
}
.regional-tool-fx[data-tool=shuffle][data-phase=action] .rt-actor {
  animation: rtDebate .9s ease-in-out both;
}
.regional-tool-fx[data-tool=shuffle][data-phase=action] .rt-card {
  animation: rtFlip 1.05s calc(var(--i)*.1s) ease-in-out both;
}
.rt-arrows {
  position: absolute;
  width: 58px;
  height: 58px;
  right: 13%;
  top: 113px;
  opacity: .85;
}
[data-phase=action] > .rt-arrows {
  animation: rtSpin 1s ease-in-out;
}
.regional-keeper {
  position: absolute;
  top: -21px;
  left: 50%;
  translate: -50% 0;
  width: 30px !important;
  height: 30px !important;
  object-fit: contain;
  z-index: 3;
}
#stash:not(.is-empty) {
  padding-top: 18px;
  min-height: 65px;
}
.regional-tool-fx[data-reduced=true] *,
.regional-tool-fx[data-reduced=true] {
  animation: none !important;
  transition: none !important;
}
.regional-tool-fx[data-reduced=true] .rt-card {
  opacity: 1;
  left: var(--hand-x,var(--x));
  top: var(--hand-y,105px);
}
.regional-tool-fx[data-reduced=true][data-phase=result] .rt-card {
  opacity: 0;
}
@keyframes rtEnter {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes rtHammer {
  0% {
    rotate: -8deg;
    translate: -8px 6px;
  }
  35% {
    rotate: -23deg;
    translate: -5px -8px;
  }
  58% {
    rotate: 21deg;
    translate: 11px 8px;
  }
  70% {
    rotate: 12deg;
  }
  100% {
    rotate: 0deg;
    translate: 0 0;
  }
}
@keyframes rtBreak {
  0% {
    opacity: 1;
  }
  35% {
    scale: 1.14;
  }
  100% {
    opacity: 0;
    translate: calc((var(--i) - 1)*24px) 32px;
    rotate: calc((var(--i) - 1)*30deg);
    scale: .35;
  }
}
@keyframes rtHit {
  0% {
    opacity: 0;
    scale: .4;
  }
  28% {
    opacity: 1;
    scale: 1.25;
  }
  100% {
    opacity: 0;
    scale: .8;
  }
}
@keyframes rtStandCatch {
  0% {
    translate: 0 3px;
    rotate: 0deg;
    scale: 1;
  }
  30% {
    translate: 0 -1px;
    rotate: var(--lean);
    scale: 1;
  }
  52% {
    translate: 0 3px;
    rotate: var(--lean);
    scale: 1 .985;
  }
  78% {
    translate: 0 -1px;
    rotate: 0deg;
    scale: 1;
  }
  100% {
    translate: 0 0;
    rotate: 0deg;
    scale: 1;
  }
}
@keyframes rtStandTake {
  0% {
    left: var(--sx);
    top: var(--sy);
    opacity: 1;
    scale: .9;
    animation-timing-function: cubic-bezier(.2, .8, .2, 1);
  }
  44% {
    left: var(--hand-x,var(--x));
    top: var(--hand-y,105px);
    opacity: 1;
    scale: 1.04;
    animation-timing-function: linear;
  }
  68% {
    left: var(--hand-x,var(--x));
    top: var(--hand-y,105px);
    opacity: 1;
    scale: 1;
    box-shadow: 0 0 0 3px #f5d56b99;
    animation-timing-function: cubic-bezier(.4, 0, .2, 1);
  }
  100% {
    left: var(--dx);
    top: var(--dy);
    opacity: 0;
    scale: .8;
  }
}
@keyframes rtDebate {
  0%, 100% {
    rotate: 0deg;
  }
  35% {
    rotate: -7deg;
    translate: -5px -3px;
  }
  70% {
    rotate: 6deg;
    translate: 5px 0;
  }
}
@keyframes rtFlip {
  0% {
    rotate: 0deg;
    scale: 1;
  }
  45% {
    rotate: 190deg;
    scale: .55;
    translate: 0 -18px;
  }
  100% {
    rotate: 360deg;
    scale: 1;
  }
}
@keyframes rtSpin {
  to {
    rotate: 360deg;
  }
}
@media (max-height: 650px) {
  .rt-title {
    font-size: 15px;
  }
  .rt-speech {
    font-size: 11px;
    top: 28px;
    padding: 6px;
  }
  .rt-card {
    top: 95px;
  }
  .rt-result {
    font-size: 10px;
    padding: 5px;
  }
}
.regional-tool-fx[data-visual=hammer-character] .rt-cast {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
}
.regional-tool-fx[data-visual=hammer-character] .rt-actor {
  left: var(--actor-left);
  top: var(--actor-top);
  bottom: auto;
  width: var(--actor-width);
  height: var(--actor-height);
}
.regional-tool-fx[data-visual=hammer-character] .rt-actor img {
  transform: none;
}
.regional-tool-fx[data-visual=hammer-character] .rt-body {
  position: relative;
  z-index: 1;
}
.rt-hammer-arm {
  position: absolute;
  left: var(--arm-left);
  top: var(--arm-top);
  width: var(--arm-width);
  height: var(--arm-height);
  transform-origin: var(--arm-pivot-x) var(--arm-pivot-y);
  rotate: -35deg;
}
.regional-tool-fx[data-visual=hammer-character] .rt-title {
  z-index: 3;
  left: 3%;
  translate: 0;
  top: -4px;
}
.regional-tool-fx[data-visual=hammer-character] .rt-speech {
  top: 32px;
  right: 3%;
  width: 47%;
  z-index: 3;
}
.regional-tool-fx[data-visual=hammer-character] .rt-card {
  top: calc(var(--hit-y) - 23px);
}
.regional-tool-fx[data-visual=hammer-character] .rt-impact {
  left: calc(var(--hit-x) - 38px);
  top: calc(var(--hit-y) - 38px);
  z-index: 4;
}
.regional-tool-fx[data-visual=hammer-character][data-phase=action] .rt-actor {
  animation: none;
}
.regional-tool-fx[data-visual=hammer-character][data-phase=action] .rt-hammer-arm {
  animation: rtCharacterHammer 1.05s cubic-bezier(.25, .1, .2, 1) both;
}
.regional-tool-fx[data-visual=hammer-character][data-phase=action] .rt-cast {
  animation: rtHammerBrace 1.05s ease-in-out both;
  transform-origin: center bottom;
}
.regional-tool-fx[data-visual=hammer-character][data-phase=result] .rt-hammer-arm,
.regional-tool-fx[data-visual=hammer-character][data-reduced=true] .rt-hammer-arm {
  rotate: var(--arm-contact-angle);
}
.regional-tool-fx[data-visual=debate] .rt-actor {
  left: 2%;
  width: 49%;
  bottom: -2px;
  height: 100%;
}
.regional-tool-fx[data-visual=debate] .rt-speech {
  right: 3%;
  width: 45%;
  top: 46px;
}
.regional-tool-fx[data-visual=debate] .rt-card {
  top: 145px;
}
.regional-tool-fx[data-visual=debate] .rt-arrows {
  top: 202px;
  right: 17%;
  width: 46px;
  height: 46px;
}
@keyframes rtCharacterHammer {
  0% {
    rotate: -35deg;
  }
  28% {
    rotate: -48deg;
  }
  44.761905% {
    rotate: var(--arm-contact-angle);
  }
  56% {
    rotate: var(--arm-rebound-angle);
  }
  68%, 100% {
    rotate: var(--arm-contact-angle);
  }
}
@keyframes rtHammerBrace {
  0%, 44.761905%, 68%, 100% {
    scale: 1 1;
  }
  28% {
    scale: 1 .97;
  }
  56% {
    scale: 1 .985;
  }
}
