/* Generated by tools/battle.py — do not edit by hand.
   A turn-based fight on a 21.0s cycle: 15 turns of 0.95s from 1.5s,
   the banner at 16.4s. The turn order, who hits whom and who mends
   whom are all in ORDER in tools/battle.py. Rebuild after editing it;
   nothing here is counted by hand. */

/* Walking on at the start, and clearing at the end. */
@keyframes woh-enter {
  0% { opacity: 0; transform: translateX(var(--from, -14px)); }
  2.86% { opacity: 1; transform: none; }
  95.71% { opacity: 1; }
  100% { opacity: 0; }
}
@keyframes woh-spark {
  0% { opacity: 0; transform: scale(.4); }
  0.333% { opacity: 1; transform: scale(1); }
  1.524%, 100% { opacity: 0; transform: scale(1.6); }
}
@keyframes woh-num {
  0% { opacity: 0; transform: translateY(2px) scale(.8); }
  1.048% { opacity: 1; transform: translateY(-8px) scale(1); }
  4.524%, 100% { opacity: 0; transform: translateY(-22px); }
}

.woh-l1 { animation-delay: 0.12s; }
.woh-l2 { animation-delay: 0.20s; }
.woh-l3 { animation-delay: 0.28s; }
.woh-l4 { animation-delay: 0.36s; }
.woh-l5 { animation-delay: 0.44s; }
.woh-r1 { animation-delay: 0.20s; }
.woh-r2 { animation-delay: 0.32s; }

/* A turn. A melee unit walks out to its target and back; a unit that fights at range plants itself and leans into the shot. */
@keyframes woh-go-l1 {
  0% { transform: translate(0, 0); }
  7.048% { transform: translate(0, 0); }
  8.762% { transform: translate(var(--ax), calc(var(--row) * 1.55)); }
  9.524% { transform: translate(var(--ax), calc(var(--row) * 1.55)); }
  11.143% { transform: translate(0, 0); }
  34.190% { transform: translate(0, 0); }
  35.905% { transform: translate(var(--ax), calc(var(--row) * 1.55)); }
  36.667% { transform: translate(var(--ax), calc(var(--row) * 1.55)); }
  38.286% { transform: translate(0, 0); }
  61.333% { transform: translate(0, 0); }
  63.048% { transform: translate(var(--ax), calc(var(--row) * 2.55)); }
  63.810% { transform: translate(var(--ax), calc(var(--row) * 2.55)); }
  65.429% { transform: translate(0, 0); }
  100% { transform: translate(0, 0); }
}
.woh-l1 .woh-u__body { animation-name: woh-go-l1; }
@keyframes woh-go-l2 {
  0% { transform: translate(0, 0); }
  11.857% { transform: translateX(0); }
  12.619% { transform: translateX(-3px); }
  13.857% { transform: translateX(2px); }
  15.095% { transform: translateX(0); }
  39.000% { transform: translateX(0); }
  39.762% { transform: translateX(-3px); }
  41.000% { transform: translateX(2px); }
  42.238% { transform: translateX(0); }
  66.143% { transform: translateX(0); }
  66.905% { transform: translateX(-3px); }
  68.143% { transform: translateX(2px); }
  69.381% { transform: translateX(0); }
  100% { transform: translate(0, 0); }
}
.woh-l2 .woh-u__body { animation-name: woh-go-l2; }
@keyframes woh-go-l3 {
  0% { transform: translate(0, 0); }
  20.905% { transform: translateX(0); }
  21.667% { transform: translateX(-3px); }
  22.905% { transform: translateX(2px); }
  24.143% { transform: translateX(0); }
  48.048% { transform: translateX(0); }
  48.810% { transform: translateX(-3px); }
  50.048% { transform: translateX(2px); }
  51.286% { transform: translateX(0); }
  70.667% { transform: translateX(0); }
  71.429% { transform: translateX(-3px); }
  72.667% { transform: translateX(2px); }
  73.905% { transform: translateX(0); }
  100% { transform: translate(0, 0); }
}
.woh-l3 .woh-u__body { animation-name: woh-go-l3; }
@keyframes woh-go-l4 {
  0% { transform: translate(0, 0); }
  25.143% { transform: translate(0, 0); }
  26.857% { transform: translate(var(--ax), calc(var(--row) * -1.45)); }
  27.619% { transform: translate(var(--ax), calc(var(--row) * -1.45)); }
  29.238% { transform: translate(0, 0); }
  52.286% { transform: translate(0, 0); }
  54.000% { transform: translate(var(--ax), calc(var(--row) * -1.45)); }
  54.762% { transform: translate(var(--ax), calc(var(--row) * -1.45)); }
  56.381% { transform: translate(0, 0); }
  100% { transform: translate(0, 0); }
}
.woh-l4 .woh-u__body { animation-name: woh-go-l4; }
@keyframes woh-go-l5 {
  0% { transform: translate(0, 0); }
  29.952% { transform: translateX(0); }
  30.714% { transform: translateX(-3px); }
  31.952% { transform: translateX(2px); }
  33.190% { transform: translateX(0); }
  57.095% { transform: translateX(0); }
  57.857% { transform: translateX(-3px); }
  59.095% { transform: translateX(2px); }
  60.333% { transform: translateX(0); }
  100% { transform: translate(0, 0); }
}
.woh-l5 .woh-u__body { animation-name: woh-go-l5; }
@keyframes woh-go-r1 {
  0% { transform: translate(0, 0); }
  16.095% { transform: translate(0, 0); }
  17.810% { transform: translate(calc(var(--ax) * -1), calc(var(--row) * 0.45)); }
  18.571% { transform: translate(calc(var(--ax) * -1), calc(var(--row) * 0.45)); }
  20.190% { transform: translate(0, 0); }
  100% { transform: translate(0, 0); }
}
.woh-r1 .woh-u__body { animation-name: woh-go-r1; }
@keyframes woh-go-r2 {
  0% { transform: translate(0, 0); }
  43.238% { transform: translate(0, 0); }
  44.952% { transform: translate(calc(var(--ax) * -1), calc(var(--row) * -1.55)); }
  45.714% { transform: translate(calc(var(--ax) * -1), calc(var(--row) * -1.55)); }
  47.333% { transform: translate(0, 0); }
  100% { transform: translate(0, 0); }
}
.woh-r2 .woh-u__body { animation-name: woh-go-r2; }

/* What the ranged units send across: it leaves the hand and lands where the blow does. */
@keyframes woh-shot-l2 {
  0% { opacity: 0; transform: translate(0, 0) scale(.6); }
  12.381% { opacity: 0; transform: translate(0, 0) scale(.6); }
  12.429% { opacity: 1; transform: translate(0, 0) scale(1); }
  13.667% { opacity: 1; transform: translate(var(--ax), calc(var(--row) * 0.55)) scale(1); }
  13.952% { opacity: 0; transform: translate(var(--ax), calc(var(--row) * 0.55)) scale(1.3); }
  39.524% { opacity: 0; transform: translate(0, 0) scale(.6); }
  39.571% { opacity: 1; transform: translate(0, 0) scale(1); }
  40.810% { opacity: 1; transform: translate(var(--ax), calc(var(--row) * 0.55)) scale(1); }
  41.095% { opacity: 0; transform: translate(var(--ax), calc(var(--row) * 0.55)) scale(1.3); }
  66.667% { opacity: 0; transform: translate(0, 0) scale(.6); }
  66.714% { opacity: 1; transform: translate(0, 0) scale(1); }
  67.952% { opacity: 1; transform: translate(var(--ax), calc(var(--row) * 1.55)) scale(1); }
  68.238% { opacity: 0; transform: translate(var(--ax), calc(var(--row) * 1.55)) scale(1.3); }
  100% { opacity: 0; transform: translate(0, 0) scale(.6); }
}
.woh-l2 .woh-shot { animation-name: woh-shot-l2; }
@keyframes woh-shot-l3 {
  0% { opacity: 0; transform: translate(0, 0) scale(.6); }
  21.143% { opacity: 0; transform: translate(0, 0) scale(.6); }
  21.190% { opacity: 1; transform: translate(0, 0) scale(1); }
  22.714% { opacity: 1; transform: translate(var(--ax), calc(var(--row) * -0.45)) scale(1); }
  23.000% { opacity: 0; transform: translate(var(--ax), calc(var(--row) * -0.45)) scale(1.3); }
  48.286% { opacity: 0; transform: translate(0, 0) scale(.6); }
  48.333% { opacity: 1; transform: translate(0, 0) scale(1); }
  49.857% { opacity: 1; transform: translate(var(--ax), calc(var(--row) * -0.45)) scale(1); }
  50.143% { opacity: 0; transform: translate(var(--ax), calc(var(--row) * -0.45)) scale(1.3); }
  70.905% { opacity: 0; transform: translate(0, 0) scale(.6); }
  70.952% { opacity: 1; transform: translate(0, 0) scale(1); }
  72.476% { opacity: 1; transform: translate(var(--ax), calc(var(--row) * 0.55)) scale(1); }
  72.762% { opacity: 0; transform: translate(var(--ax), calc(var(--row) * 0.55)) scale(1.3); }
  100% { opacity: 0; transform: translate(0, 0) scale(.6); }
}
.woh-l3 .woh-shot { animation-name: woh-shot-l3; }
@keyframes woh-shot-l5 {
  0% { opacity: 0; transform: translate(0, 0) scale(.6); }
  30.095% { opacity: 0; transform: translate(0, 0) scale(.6); }
  30.143% { opacity: 1; transform: translate(0, 0) scale(1); }
  31.762% { opacity: 1; transform: translate(0px, calc(var(--row) * -2.00)) scale(1); }
  32.048% { opacity: 0; transform: translate(0px, calc(var(--row) * -2.00)) scale(1.3); }
  57.238% { opacity: 0; transform: translate(0, 0) scale(.6); }
  57.286% { opacity: 1; transform: translate(0, 0) scale(1); }
  58.905% { opacity: 1; transform: translate(0px, calc(var(--row) * -3.00)) scale(1); }
  59.190% { opacity: 0; transform: translate(0px, calc(var(--row) * -3.00)) scale(1.3); }
  100% { opacity: 0; transform: translate(0, 0) scale(.6); }
}
.woh-l5 .woh-shot { animation-name: woh-shot-l5; }

/* Legs alternate whenever a unit is on the move — coming on, and out and back on its turn. A unit that stands and shoots only ever walks on. The weapon rears and falls on the blow. */
@keyframes woh-walk-l1-a {
  0% { transform: rotate(0deg); }
  0.571% { transform: rotate(0.0deg); }
  1.405% { transform: rotate(17.0deg); }
  2.238% { transform: rotate(-17.0deg); }
  3.071% { transform: rotate(17.0deg); }
  3.905% { transform: rotate(0.0deg); }
  7.143% { transform: rotate(0.0deg); }
  7.548% { transform: rotate(17.0deg); }
  7.952% { transform: rotate(-17.0deg); }
  8.357% { transform: rotate(17.0deg); }
  8.762% { transform: rotate(0.0deg); }
  9.524% { transform: rotate(0.0deg); }
  9.929% { transform: rotate(17.0deg); }
  10.333% { transform: rotate(-17.0deg); }
  10.738% { transform: rotate(17.0deg); }
  11.143% { transform: rotate(0.0deg); }
  34.286% { transform: rotate(0.0deg); }
  34.690% { transform: rotate(17.0deg); }
  35.095% { transform: rotate(-17.0deg); }
  35.500% { transform: rotate(17.0deg); }
  35.905% { transform: rotate(0.0deg); }
  36.667% { transform: rotate(0.0deg); }
  37.071% { transform: rotate(17.0deg); }
  37.476% { transform: rotate(-17.0deg); }
  37.881% { transform: rotate(17.0deg); }
  38.286% { transform: rotate(0.0deg); }
  61.429% { transform: rotate(0.0deg); }
  61.833% { transform: rotate(17.0deg); }
  62.238% { transform: rotate(-17.0deg); }
  62.643% { transform: rotate(17.0deg); }
  63.048% { transform: rotate(0.0deg); }
  63.810% { transform: rotate(0.0deg); }
  64.214% { transform: rotate(17.0deg); }
  64.619% { transform: rotate(-17.0deg); }
  65.024% { transform: rotate(17.0deg); }
  65.429% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-l1-b {
  0% { transform: rotate(0deg); }
  0.571% { transform: rotate(0.0deg); }
  1.405% { transform: rotate(-17.0deg); }
  2.238% { transform: rotate(17.0deg); }
  3.071% { transform: rotate(-17.0deg); }
  3.905% { transform: rotate(0.0deg); }
  7.143% { transform: rotate(0.0deg); }
  7.548% { transform: rotate(-17.0deg); }
  7.952% { transform: rotate(17.0deg); }
  8.357% { transform: rotate(-17.0deg); }
  8.762% { transform: rotate(0.0deg); }
  9.524% { transform: rotate(0.0deg); }
  9.929% { transform: rotate(-17.0deg); }
  10.333% { transform: rotate(17.0deg); }
  10.738% { transform: rotate(-17.0deg); }
  11.143% { transform: rotate(0.0deg); }
  34.286% { transform: rotate(0.0deg); }
  34.690% { transform: rotate(-17.0deg); }
  35.095% { transform: rotate(17.0deg); }
  35.500% { transform: rotate(-17.0deg); }
  35.905% { transform: rotate(0.0deg); }
  36.667% { transform: rotate(0.0deg); }
  37.071% { transform: rotate(-17.0deg); }
  37.476% { transform: rotate(17.0deg); }
  37.881% { transform: rotate(-17.0deg); }
  38.286% { transform: rotate(0.0deg); }
  61.429% { transform: rotate(0.0deg); }
  61.833% { transform: rotate(-17.0deg); }
  62.238% { transform: rotate(17.0deg); }
  62.643% { transform: rotate(-17.0deg); }
  63.048% { transform: rotate(0.0deg); }
  63.810% { transform: rotate(0.0deg); }
  64.214% { transform: rotate(-17.0deg); }
  64.619% { transform: rotate(17.0deg); }
  65.024% { transform: rotate(-17.0deg); }
  65.429% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l1 .woh-fig__leg--a { animation-name: woh-walk-l1-a; }
.woh-l1 .woh-fig__leg--b { animation-name: woh-walk-l1-b; }
@keyframes woh-swing-l1 {
  0% { transform: rotate(0deg); }
  7.810% { transform: rotate(0deg); }
  8.476% { transform: rotate(-29deg); }
  9.219% { transform: rotate(36deg); }
  10.571% { transform: rotate(0deg); }
  34.952% { transform: rotate(0deg); }
  35.619% { transform: rotate(-29deg); }
  36.362% { transform: rotate(36deg); }
  37.714% { transform: rotate(0deg); }
  62.095% { transform: rotate(0deg); }
  62.762% { transform: rotate(-29deg); }
  63.505% { transform: rotate(36deg); }
  64.857% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l1 .woh-fig__sw { animation-name: woh-swing-l1; transform-origin: 26.3px 21px; }
@keyframes woh-walk-l2-a {
  0% { transform: rotate(0deg); }
  0.952% { transform: rotate(0.0deg); }
  1.786% { transform: rotate(17.0deg); }
  2.619% { transform: rotate(-17.0deg); }
  3.452% { transform: rotate(17.0deg); }
  4.286% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-l2-b {
  0% { transform: rotate(0deg); }
  0.952% { transform: rotate(0.0deg); }
  1.786% { transform: rotate(-17.0deg); }
  2.619% { transform: rotate(17.0deg); }
  3.452% { transform: rotate(-17.0deg); }
  4.286% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l2 .woh-fig__leg--a { animation-name: woh-walk-l2-a; }
.woh-l2 .woh-fig__leg--b { animation-name: woh-walk-l2-b; }
@keyframes woh-swing-l2 {
  0% { transform: rotate(0deg); }
  11.857% { transform: rotate(0deg); }
  12.524% { transform: rotate(-16deg); }
  13.267% { transform: rotate(20deg); }
  14.619% { transform: rotate(0deg); }
  39.000% { transform: rotate(0deg); }
  39.667% { transform: rotate(-16deg); }
  40.410% { transform: rotate(20deg); }
  41.762% { transform: rotate(0deg); }
  66.143% { transform: rotate(0deg); }
  66.810% { transform: rotate(-16deg); }
  67.552% { transform: rotate(20deg); }
  68.905% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l2 .woh-fig__sw { animation-name: woh-swing-l2; transform-origin: 20px 21px; }
@keyframes woh-walk-l3-a {
  0% { transform: rotate(0deg); }
  1.333% { transform: rotate(0.0deg); }
  2.167% { transform: rotate(17.0deg); }
  3.000% { transform: rotate(-17.0deg); }
  3.833% { transform: rotate(17.0deg); }
  4.667% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-l3-b {
  0% { transform: rotate(0deg); }
  1.333% { transform: rotate(0.0deg); }
  2.167% { transform: rotate(-17.0deg); }
  3.000% { transform: rotate(17.0deg); }
  3.833% { transform: rotate(-17.0deg); }
  4.667% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l3 .woh-fig__leg--a { animation-name: woh-walk-l3-a; }
.woh-l3 .woh-fig__leg--b { animation-name: woh-walk-l3-b; }
@keyframes woh-swing-l3 {
  0% { transform: rotate(0deg); }
  20.905% { transform: rotate(0deg); }
  21.571% { transform: rotate(-16deg); }
  22.314% { transform: rotate(20deg); }
  23.667% { transform: rotate(0deg); }
  48.048% { transform: rotate(0deg); }
  48.714% { transform: rotate(-16deg); }
  49.457% { transform: rotate(20deg); }
  50.810% { transform: rotate(0deg); }
  70.667% { transform: rotate(0deg); }
  71.333% { transform: rotate(-16deg); }
  72.076% { transform: rotate(20deg); }
  73.429% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l3 .woh-fig__sw { animation-name: woh-swing-l3; transform-origin: 25.2px 22px; }
@keyframes woh-walk-l4-a {
  0% { transform: rotate(0deg); }
  1.714% { transform: rotate(0.0deg); }
  2.548% { transform: rotate(17.0deg); }
  3.381% { transform: rotate(-17.0deg); }
  4.214% { transform: rotate(17.0deg); }
  5.048% { transform: rotate(0.0deg); }
  25.238% { transform: rotate(0.0deg); }
  25.643% { transform: rotate(17.0deg); }
  26.048% { transform: rotate(-17.0deg); }
  26.452% { transform: rotate(17.0deg); }
  26.857% { transform: rotate(0.0deg); }
  27.619% { transform: rotate(0.0deg); }
  28.024% { transform: rotate(17.0deg); }
  28.429% { transform: rotate(-17.0deg); }
  28.833% { transform: rotate(17.0deg); }
  29.238% { transform: rotate(0.0deg); }
  52.381% { transform: rotate(0.0deg); }
  52.786% { transform: rotate(17.0deg); }
  53.190% { transform: rotate(-17.0deg); }
  53.595% { transform: rotate(17.0deg); }
  54.000% { transform: rotate(0.0deg); }
  54.762% { transform: rotate(0.0deg); }
  55.167% { transform: rotate(17.0deg); }
  55.571% { transform: rotate(-17.0deg); }
  55.976% { transform: rotate(17.0deg); }
  56.381% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-l4-b {
  0% { transform: rotate(0deg); }
  1.714% { transform: rotate(0.0deg); }
  2.548% { transform: rotate(-17.0deg); }
  3.381% { transform: rotate(17.0deg); }
  4.214% { transform: rotate(-17.0deg); }
  5.048% { transform: rotate(0.0deg); }
  25.238% { transform: rotate(0.0deg); }
  25.643% { transform: rotate(-17.0deg); }
  26.048% { transform: rotate(17.0deg); }
  26.452% { transform: rotate(-17.0deg); }
  26.857% { transform: rotate(0.0deg); }
  27.619% { transform: rotate(0.0deg); }
  28.024% { transform: rotate(-17.0deg); }
  28.429% { transform: rotate(17.0deg); }
  28.833% { transform: rotate(-17.0deg); }
  29.238% { transform: rotate(0.0deg); }
  52.381% { transform: rotate(0.0deg); }
  52.786% { transform: rotate(-17.0deg); }
  53.190% { transform: rotate(17.0deg); }
  53.595% { transform: rotate(-17.0deg); }
  54.000% { transform: rotate(0.0deg); }
  54.762% { transform: rotate(0.0deg); }
  55.167% { transform: rotate(-17.0deg); }
  55.571% { transform: rotate(17.0deg); }
  55.976% { transform: rotate(-17.0deg); }
  56.381% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l4 .woh-fig__leg--a { animation-name: woh-walk-l4-a; }
.woh-l4 .woh-fig__leg--b { animation-name: woh-walk-l4-b; }
@keyframes woh-swing-l4 {
  0% { transform: rotate(0deg); }
  25.905% { transform: rotate(0deg); }
  26.571% { transform: rotate(-29deg); }
  27.314% { transform: rotate(36deg); }
  28.667% { transform: rotate(0deg); }
  53.048% { transform: rotate(0deg); }
  53.714% { transform: rotate(-29deg); }
  54.457% { transform: rotate(36deg); }
  55.810% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l4 .woh-fig__sw { animation-name: woh-swing-l4; transform-origin: 18.6px 18.6px; }
@keyframes woh-walk-l5-a {
  0% { transform: rotate(0deg); }
  2.095% { transform: rotate(0.0deg); }
  2.929% { transform: rotate(17.0deg); }
  3.762% { transform: rotate(-17.0deg); }
  4.595% { transform: rotate(17.0deg); }
  5.429% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-l5-b {
  0% { transform: rotate(0deg); }
  2.095% { transform: rotate(0.0deg); }
  2.929% { transform: rotate(-17.0deg); }
  3.762% { transform: rotate(17.0deg); }
  4.595% { transform: rotate(-17.0deg); }
  5.429% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l5 .woh-fig__leg--a { animation-name: woh-walk-l5-a; }
.woh-l5 .woh-fig__leg--b { animation-name: woh-walk-l5-b; }
@keyframes woh-swing-l5 {
  0% { transform: rotate(0deg); }
  29.952% { transform: rotate(0deg); }
  30.619% { transform: rotate(-16deg); }
  31.362% { transform: rotate(20deg); }
  32.714% { transform: rotate(0deg); }
  57.095% { transform: rotate(0deg); }
  57.762% { transform: rotate(-16deg); }
  58.505% { transform: rotate(20deg); }
  59.857% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-l5 .woh-fig__sw { animation-name: woh-swing-l5; transform-origin: 25.2px 22px; }
@keyframes woh-walk-r1-a {
  0% { transform: rotate(0deg); }
  0.952% { transform: rotate(0.0deg); }
  1.786% { transform: rotate(13.0deg); }
  2.619% { transform: rotate(-13.0deg); }
  3.452% { transform: rotate(13.0deg); }
  4.286% { transform: rotate(0.0deg); }
  16.190% { transform: rotate(0.0deg); }
  16.595% { transform: rotate(13.0deg); }
  17.000% { transform: rotate(-13.0deg); }
  17.405% { transform: rotate(13.0deg); }
  17.810% { transform: rotate(0.0deg); }
  18.571% { transform: rotate(0.0deg); }
  18.976% { transform: rotate(13.0deg); }
  19.381% { transform: rotate(-13.0deg); }
  19.786% { transform: rotate(13.0deg); }
  20.190% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-r1-b {
  0% { transform: rotate(0deg); }
  0.952% { transform: rotate(0.0deg); }
  1.786% { transform: rotate(-13.0deg); }
  2.619% { transform: rotate(13.0deg); }
  3.452% { transform: rotate(-13.0deg); }
  4.286% { transform: rotate(0.0deg); }
  16.190% { transform: rotate(0.0deg); }
  16.595% { transform: rotate(-13.0deg); }
  17.000% { transform: rotate(13.0deg); }
  17.405% { transform: rotate(-13.0deg); }
  17.810% { transform: rotate(0.0deg); }
  18.571% { transform: rotate(0.0deg); }
  18.976% { transform: rotate(-13.0deg); }
  19.381% { transform: rotate(13.0deg); }
  19.786% { transform: rotate(-13.0deg); }
  20.190% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-r1 .woh-fig__leg--a { animation-name: woh-walk-r1-a; }
.woh-r1 .woh-fig__leg--b { animation-name: woh-walk-r1-b; }
@keyframes woh-swing-r1 {
  0% { transform: rotate(0deg); }
  16.857% { transform: rotate(0deg); }
  17.524% { transform: rotate(-24deg); }
  18.267% { transform: rotate(30deg); }
  19.619% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-r1 .woh-fig__sw { animation-name: woh-swing-r1; transform-origin: 26.9px 20px; }
@keyframes woh-walk-r2-a {
  0% { transform: rotate(0deg); }
  1.524% { transform: rotate(0.0deg); }
  2.357% { transform: rotate(13.0deg); }
  3.190% { transform: rotate(-13.0deg); }
  4.024% { transform: rotate(13.0deg); }
  4.857% { transform: rotate(0.0deg); }
  43.333% { transform: rotate(0.0deg); }
  43.738% { transform: rotate(13.0deg); }
  44.143% { transform: rotate(-13.0deg); }
  44.548% { transform: rotate(13.0deg); }
  44.952% { transform: rotate(0.0deg); }
  45.714% { transform: rotate(0.0deg); }
  46.119% { transform: rotate(13.0deg); }
  46.524% { transform: rotate(-13.0deg); }
  46.929% { transform: rotate(13.0deg); }
  47.333% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
@keyframes woh-walk-r2-b {
  0% { transform: rotate(0deg); }
  1.524% { transform: rotate(0.0deg); }
  2.357% { transform: rotate(-13.0deg); }
  3.190% { transform: rotate(13.0deg); }
  4.024% { transform: rotate(-13.0deg); }
  4.857% { transform: rotate(0.0deg); }
  43.333% { transform: rotate(0.0deg); }
  43.738% { transform: rotate(-13.0deg); }
  44.143% { transform: rotate(13.0deg); }
  44.548% { transform: rotate(-13.0deg); }
  44.952% { transform: rotate(0.0deg); }
  45.714% { transform: rotate(0.0deg); }
  46.119% { transform: rotate(-13.0deg); }
  46.524% { transform: rotate(13.0deg); }
  46.929% { transform: rotate(-13.0deg); }
  47.333% { transform: rotate(0.0deg); }
  100% { transform: rotate(0deg); }
}
.woh-r2 .woh-fig__leg--a { animation-name: woh-walk-r2-a; }
.woh-r2 .woh-fig__leg--b { animation-name: woh-walk-r2-b; }
@keyframes woh-swing-r2 {
  0% { transform: rotate(0deg); }
  44.000% { transform: rotate(0deg); }
  44.667% { transform: rotate(-24deg); }
  45.410% { transform: rotate(30deg); }
  46.762% { transform: rotate(0deg); }
  100% { transform: rotate(0deg); }
}
.woh-r2 .woh-fig__sw { animation-name: woh-swing-r2; transform-origin: 27.8px 22px; }

/* Every spark and number sits inside whoever it happened to, so it needs no position of its own. */
.woh-fx--0 { animation-delay: 1.92s; }
.woh-fx--1 { animation-delay: 2.87s; }
.woh-fx--2 { animation-delay: 3.82s; }
.woh-fx--3 { animation-delay: 4.77s; }
.woh-fx--4 { animation-delay: 5.72s; }
.woh-fx--5 { animation-delay: 6.67s; }
.woh-fx--6 { animation-delay: 7.62s; }
.woh-fx--7 { animation-delay: 8.57s; }
.woh-fx--8 { animation-delay: 9.52s; }
.woh-fx--9 { animation-delay: 10.47s; }
.woh-fx--10 { animation-delay: 11.42s; }
.woh-fx--11 { animation-delay: 12.37s; }
.woh-fx--12 { animation-delay: 13.32s; }
.woh-fx--13 { animation-delay: 14.27s; }
.woh-fx--14 { animation-delay: 15.22s; }

/* Health. An enemy takes the blows ORDER sends it and falls when they run out; a hero loses a share to a blow and gets it back when the cleric mends it. */
@keyframes woh-hp-r1 {
  0% { transform: scaleX(1); }
  8.667% { transform: scaleX(1.000); }
  9.905% { transform: scaleX(0.875); }
  13.190% { transform: scaleX(0.875); }
  14.429% { transform: scaleX(0.750); }
  22.238% { transform: scaleX(0.750); }
  23.476% { transform: scaleX(0.625); }
  26.762% { transform: scaleX(0.625); }
  28.000% { transform: scaleX(0.500); }
  35.810% { transform: scaleX(0.500); }
  37.048% { transform: scaleX(0.375); }
  40.333% { transform: scaleX(0.375); }
  41.571% { transform: scaleX(0.250); }
  49.381% { transform: scaleX(0.250); }
  50.619% { transform: scaleX(0.125); }
  53.905% { transform: scaleX(0.125); }
  55.143% { transform: scaleX(0.000); }
  100% { transform: scaleX(0); }
}
.woh-r1 .woh-u__hpfill { animation-name: woh-hp-r1; }
@keyframes woh-die-r1 {
  0%, 56.524% { opacity: 1; filter: none; }
  58.905%, 100% { opacity: .3; filter: grayscale(1); }
}
.woh-r1 { animation-name: woh-enter, woh-die-r1; }

@keyframes woh-hp-r2 {
  0% { transform: scaleX(1); }
  62.952% { transform: scaleX(1.000); }
  64.190% { transform: scaleX(0.667); }
  67.476% { transform: scaleX(0.667); }
  68.714% { transform: scaleX(0.333); }
  72.000% { transform: scaleX(0.333); }
  73.238% { transform: scaleX(0.000); }
  100% { transform: scaleX(0); }
}
.woh-r2 .woh-u__hpfill { animation-name: woh-hp-r2; }
@keyframes woh-die-r2 {
  0%, 74.619% { opacity: 1; filter: none; }
  77.000%, 100% { opacity: .3; filter: grayscale(1); }
}
.woh-r2 { animation-name: woh-enter, woh-die-r2; }

@keyframes woh-hp-l1 {
  0% { transform: scaleX(1); }
  100% { transform: scaleX(1.000); }
}
.woh-l1 .woh-u__hpfill { animation-name: woh-hp-l1; }
@keyframes woh-hp-l2 {
  0% { transform: scaleX(1); }
  44.857% { transform: scaleX(1.000); }
  46.286% { transform: scaleX(0.600); }
  58.429% { transform: scaleX(0.600); }
  59.857% { transform: scaleX(0.960); }
  100% { transform: scaleX(0.960); }
}
.woh-l2 .woh-u__hpfill { animation-name: woh-hp-l2; }
@keyframes woh-hp-l3 {
  0% { transform: scaleX(1); }
  17.714% { transform: scaleX(1.000); }
  19.143% { transform: scaleX(0.380); }
  31.286% { transform: scaleX(0.380); }
  32.714% { transform: scaleX(0.938); }
  100% { transform: scaleX(0.938); }
}
.woh-l3 .woh-u__hpfill { animation-name: woh-hp-l3; }
@keyframes woh-hp-l4 {
  0% { transform: scaleX(1); }
  100% { transform: scaleX(1.000); }
}
.woh-l4 .woh-u__hpfill { animation-name: woh-hp-l4; }
@keyframes woh-hp-l5 {
  0% { transform: scaleX(1); }
  100% { transform: scaleX(1.000); }
}
.woh-l5 .woh-u__hpfill { animation-name: woh-hp-l5; }

@keyframes woh-win {
  0%, 77.86% { opacity: 0; transform: translateY(6px) scale(.94); }
  80.00%, 88.33% { opacity: 1; transform: none; }
  100% { opacity: 0; transform: none; }
}

/* One clock for everything in the fight. */
.woh-u, .woh-u__hpfill, .woh-u__body, .woh-fig__leg, .woh-fig__sw, .woh-shot, .woh-spark, .woh-num, .woh__win { animation-duration: 21.0s; }
