/* The silent companion flies within the viewport and carries hearts on its belly. */
.fx-pet {
  --fx-pet-size:90px;
  --fx-pet-look-x:0px;
  --fx-pet-look-y:0px;
  --fx-pet-tilt:0deg;
  --fx-pet-yaw:calc(var(--fx-pet-tilt) * 1.4);
  --fx-pet-arm-left-track:0deg;
  --fx-pet-arm-right-track:0deg;
  --fx-pet-point-shoulder:0deg;
  --fx-pet-point-elbow:0deg;
  --fx-pet-point-wrist:0deg;
  position:fixed;
  top:0;
  left:0;
  bottom:auto;
  z-index:50;
  width:var(--fx-pet-size);
  height:var(--fx-pet-size);
  pointer-events:none;
  user-select:none;
  -webkit-user-select:none;
  will-change:transform;
}
.fx-pet__button {
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:flex-start;
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  border:0;
  border-radius:35px;
  background:transparent;
  color:#f5fbff;
  font:inherit;
  cursor:pointer;
  pointer-events:auto;
  touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  perspective:420px;
}
.fx-pet__button:focus-visible {
  outline:2px solid #75e7ff;
  outline-offset:5px;
  box-shadow:0 0 0 7px #0d1c35cc;
}
.fx-pet__body {
  position:relative;
  display:block;
  flex:none;
  width:var(--fx-pet-size);
  height:var(--fx-pet-size);
  transform-origin:50% 78%;
  filter:drop-shadow(0 6px 5px #001b4170) drop-shadow(0 0 3px #50c6e522);
  animation:fx-pet-float 4.6s ease-in-out infinite;
  transition:filter .2s ease;
}
.fx-pet__rig {
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  overflow:visible;
  pointer-events:none;
}
/* Each bone carries a clipped section of one original textured arm. Its
   view-box origin keeps the shoulder, elbow and wrist physically connected. */
.fx-pet__arm,
.fx-pet__forearm,
.fx-pet__hand {
  transform-box:view-box;
  transform:rotate(0deg);
  transition:transform .38s cubic-bezier(.22,.61,.36,1);
  pointer-events:none;
}
.fx-pet__arm--left {
  --fx-pet-arm-side:1;
  --fx-pet-arm-track:var(--fx-pet-arm-left-track);
  --fx-pet-arm-delay:0s;
  transform-origin:17.734375% 60.9375%;
  animation:fx-pet-arm-idle 8.8s ease-in-out var(--fx-pet-arm-delay) infinite;
}
.fx-pet__arm--right {
  --fx-pet-arm-side:-1;
  --fx-pet-arm-track:var(--fx-pet-arm-right-track);
  --fx-pet-arm-delay:-4.4s;
  transform-origin:82.265625% 60.9375%;
  animation:fx-pet-arm-idle 8.8s ease-in-out var(--fx-pet-arm-delay) infinite;
}
.fx-pet__arm--left .fx-pet__forearm {transform-origin:14.921875% 66.40625%;}
.fx-pet__arm--right .fx-pet__forearm {transform-origin:85.078125% 66.40625%;}
.fx-pet__arm--left .fx-pet__hand {transform-origin:14.296875% 70%;}
.fx-pet__arm--right .fx-pet__hand {transform-origin:85.703125% 70%;}
.fx-pet__forearm {animation:fx-pet-elbow-idle 8.8s ease-in-out var(--fx-pet-arm-delay) infinite;}
.fx-pet__hand {animation:fx-pet-wrist-idle 8.8s ease-in-out var(--fx-pet-arm-delay) infinite;}
.fx-pet__eyes {
  position:absolute;
  inset:0;
  display:block;
  pointer-events:none;
}
.fx-pet__eye {
  --fx-pet-lid-light:#90edf6;
  --fx-pet-lid-mid:#49cbe9;
  --fx-pet-lid-shade:#2398ce;
  position:absolute;
  top:36.1%;
  display:block;
  width:17.4%;
  height:20.4%;
  overflow:hidden;
  border-radius:49% 49% 47% 47%;
  background:transparent;
  box-shadow:none;
  transform-origin:50% 50%;
}
.fx-pet__eye::before,
.fx-pet__eye::after {
  content:"";
  position:absolute;
  left:0;
  z-index:2;
  width:100%;
  height:51%;
  background:linear-gradient(135deg,var(--fx-pet-lid-light),var(--fx-pet-lid-mid) 48%,var(--fx-pet-lid-shade));
  transform:scaleY(0);
  animation:fx-pet-blink 7.3s ease-in-out infinite;
  pointer-events:none;
}
.fx-pet__eye::before {
  top:0;
  border-bottom:.65px solid #165d8799;
  border-radius:48% 48% 0 0;
  transform-origin:50% 0;
}
.fx-pet__eye::after {
  bottom:0;
  border-top:.65px solid #165d8777;
  border-radius:0 0 48% 48%;
  transform-origin:50% 100%;
}
.fx-pet__eye--left {left:28.2%;}
.fx-pet__eye--right {
  --fx-pet-lid-light:#74ddf4;
  --fx-pet-lid-mid:#3cb8e8;
  --fx-pet-lid-shade:#5687e7;
  left:54.5%;
}
.fx-pet__pupil {
  position:absolute;
  top:24%;
  left:22%;
  display:block;
  width:56%;
  height:58%;
  border-radius:49%;
  background:radial-gradient(ellipse at 50% 44%,#03152e 0 29%,#102e54 34%,#2c639c 49%,#51c4e0 68%,#124d7e 88%);
  box-shadow:inset 0 1px 1px #03162cb3,inset 0 -.7px .5px #8af0f499,0 0 0 .5px #082c56;
  transform:translate(var(--fx-pet-look-x),var(--fx-pet-look-y));
  transition:transform .12s ease-out;
}
.fx-pet__pupil::before {
  content:"";
  position:absolute;
  top:10%;
  left:17%;
  width:32%;
  height:23%;
  border-radius:50%;
  background:linear-gradient(140deg,#fff,#e8fbffe6);
  transform:rotate(-24deg);
}
.fx-pet__pupil::after {
  content:"";
  position:absolute;
  right:16%;
  bottom:18%;
  width:16%;
  height:12%;
  border-radius:50%;
  background:#c7f7ffd9;
}
.fx-pet__likes {
  position:absolute;
  top:69%;
  left:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:2px;
  width:34%;
  height:11%;
  padding:0;
  border:0;
  background:transparent;
  color:#f3fcff;
  text-shadow:0 1px 1px #123d7799;
  font-size:9.5px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  transform:translateX(-50%);
  pointer-events:none;
}
.fx-pet__likes>svg {
  display:block;
  flex:none;
  width:9px;
  height:9px;
  color:#ffabdf;
  fill:currentColor;
}
.fx-pet__likes>span:first-child:not(.fx-pet__count) {color:#ff93d6;}
.fx-pet__count {display:block;}
.fx-pet__status {
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  padding:0;
  overflow:hidden;
  border:0;
  clip-path:inset(50%);
  white-space:nowrap;
}
.fx-pet.has-game-error .fx-pet__status {
  top:auto;
  bottom:calc(100% + 8px);
  right:0;
  width:160px;
  height:auto;
  margin:0;
  padding:10px 12px;
  overflow:visible;
  border:1px solid #82d9ed55;
  border-radius:12px;
  background:#111a30;
  color:#edf8ff;
  clip-path:none;
  white-space:normal;
  font:500 12px/1.4 Arial,sans-serif;
}
.fx-pet__hearts {
  position:absolute;
  inset:0;
  z-index:2;
  overflow:visible;
  pointer-events:none;
}
.fx-pet__heart {
  --fx-heart-drift:0px;
  position:absolute;
  left:50%;
  top:5%;
  display:block;
  width:30px;
  height:30px;
  opacity:0;
  color:#ff3d9d;
  filter:drop-shadow(0 2px 2px #a1156455);
  transform-origin:50% 100%;
  transform:translate3d(-50%,-100%,0) scale(.5);
  animation:fx-pet-heart 1.4s ease-out both;
  pointer-events:none;
}
.fx-pet__heart>svg {
  display:block;
  width:100%;
  height:100%;
  fill:currentColor;
  stroke:#ffd5ec;
  stroke-width:.65;
  stroke-linejoin:round;
}
.fx-pet__button:hover .fx-pet__body {
  filter:drop-shadow(0 6px 5px #001b4170) drop-shadow(0 0 5px #59daed55);
}
.fx-pet.is-moving .fx-pet__body {animation:fx-pet-flight 2.8s ease-in-out infinite;}
.fx-pet.is-moving .fx-pet__arm {animation:fx-pet-arm-balance 2.8s ease-in-out infinite;}
.fx-pet.is-moving .fx-pet__forearm {animation:fx-pet-elbow-balance 2.8s ease-in-out .12s infinite;}
.fx-pet.is-moving .fx-pet__hand {animation:fx-pet-wrist-balance 2.8s ease-in-out .2s infinite;}
.fx-pet.is-greeting .fx-pet__body {animation:fx-pet-greet 1.4s ease-in-out both;}
.fx-pet.is-greeting[data-fx-pet-hand="left"] .fx-pet__arm--left,
.fx-pet.is-greeting[data-fx-pet-hand="right"] .fx-pet__arm--right {animation:fx-pet-arm-wave 1.4s cubic-bezier(.22,.61,.36,1) both;}
.fx-pet.is-greeting[data-fx-pet-hand="left"] .fx-pet__arm--left .fx-pet__forearm,
.fx-pet.is-greeting[data-fx-pet-hand="right"] .fx-pet__arm--right .fx-pet__forearm {animation:fx-pet-elbow-wave 1.4s ease-in-out both;}
.fx-pet.is-greeting[data-fx-pet-hand="left"] .fx-pet__arm--left .fx-pet__hand,
.fx-pet.is-greeting[data-fx-pet-hand="right"] .fx-pet__arm--right .fx-pet__hand {animation:fx-pet-wrist-wave 1.4s ease-in-out both;}
.fx-pet.is-curious .fx-pet__body {animation:fx-pet-curious 1.4s ease-in-out both;}
.fx-pet.is-curious .fx-pet__arm {animation:fx-pet-arm-curious 1.4s ease-in-out both;}
.fx-pet.is-curious .fx-pet__forearm {animation:fx-pet-elbow-curious 1.4s ease-in-out both;}
.fx-pet.is-curious .fx-pet__hand {animation:fx-pet-wrist-curious 1.4s ease-in-out both;}
.fx-pet.is-pointing .fx-pet__body {animation:fx-pet-point 1.7s ease-in-out both;}
.fx-pet.is-pointing[data-fx-pet-hand="left"] .fx-pet__arm--left,
.fx-pet.is-pointing[data-fx-pet-hand="right"] .fx-pet__arm--right {animation:fx-pet-arm-reach .52s cubic-bezier(.22,.61,.36,1) both;}
.fx-pet.is-pointing[data-fx-pet-hand="left"] .fx-pet__arm--left .fx-pet__forearm,
.fx-pet.is-pointing[data-fx-pet-hand="right"] .fx-pet__arm--right .fx-pet__forearm {animation:fx-pet-elbow-reach .6s cubic-bezier(.22,.61,.36,1) both;}
.fx-pet.is-pointing[data-fx-pet-hand="left"] .fx-pet__arm--left .fx-pet__hand,
.fx-pet.is-pointing[data-fx-pet-hand="right"] .fx-pet__arm--right .fx-pet__hand {animation:fx-pet-wrist-reach .66s cubic-bezier(.22,.61,.36,1) both;}
.fx-pet.is-celebrating .fx-pet__body {animation:fx-pet-celebrate 1.65s ease-in-out both;}
.fx-pet.is-celebrating .fx-pet__arm {animation:fx-pet-arm-cheer 1.65s cubic-bezier(.22,.61,.36,1) both;}
.fx-pet.is-celebrating .fx-pet__forearm {animation:fx-pet-elbow-cheer 1.65s ease-in-out both;}
.fx-pet.is-celebrating .fx-pet__hand {animation:fx-pet-wrist-cheer 1.65s ease-in-out both;}
.fx-pet[data-fx-pet-speed="finished"].is-celebrating .fx-pet__body,
.fx-pet[data-fx-pet-speed="finished"].is-celebrating .fx-pet__arm,
.fx-pet[data-fx-pet-speed="finished"].is-celebrating .fx-pet__forearm,
.fx-pet[data-fx-pet-speed="finished"].is-celebrating .fx-pet__hand {animation-duration:2.7s;}
.fx-pet.is-happy .fx-pet__body {animation:fx-pet-delight .68s ease both;}
.fx-pet.is-happy .fx-pet__arm {animation:fx-pet-arm-delight .82s cubic-bezier(.22,.61,.36,1) both;}
.fx-pet.is-happy .fx-pet__forearm {animation:fx-pet-elbow-delight .82s ease-in-out both;}
.fx-pet.is-happy .fx-pet__hand {animation:fx-pet-wrist-delight .82s ease-in-out both;}
.fx-pet.is-happy .fx-pet__eye::before,
.fx-pet.is-happy .fx-pet__eye::after {animation:fx-pet-happy-lids .68s ease both;}
.fx-pet.is-happy .fx-pet__likes>svg {filter:drop-shadow(0 0 3px #ff93d6);}
.fx-pet.has-paused-hands .fx-pet__arm,
.fx-pet.has-paused-hands .fx-pet__forearm,
.fx-pet.has-paused-hands .fx-pet__hand {animation-play-state:paused;}
/* A deliberate click gives one brief response even while the pointer rests. */
.fx-pet.has-paused-hands.is-happy .fx-pet__arm,
.fx-pet.has-paused-hands.is-happy .fx-pet__forearm,
.fx-pet.has-paused-hands.is-happy .fx-pet__hand {animation-play-state:running;}
/* A deliberate verified test, like a heart click, can respond in place. */
.fx-pet.has-paused-hands[data-fx-pet-speed="finished"].is-celebrating .fx-pet__arm,
.fx-pet.has-paused-hands[data-fx-pet-speed="finished"].is-celebrating .fx-pet__forearm,
.fx-pet.has-paused-hands[data-fx-pet-speed="finished"].is-celebrating .fx-pet__hand {animation-play-state:running;}
@keyframes fx-pet-arm-idle {
  0%,17%,56%,100% {transform:rotate(var(--fx-pet-arm-track));}
  29% {transform:rotate(calc(var(--fx-pet-arm-track) + var(--fx-pet-arm-side) * 3deg));}
  43% {transform:rotate(calc(var(--fx-pet-arm-track) - var(--fx-pet-arm-side) * 1.5deg));}
}
@keyframes fx-pet-elbow-idle {
  0%,22%,62%,100% {transform:rotate(0deg);}
  34% {transform:rotate(calc(var(--fx-pet-arm-side) * -3.5deg));}
  48% {transform:rotate(calc(var(--fx-pet-arm-side) * 1.5deg));}
}
@keyframes fx-pet-wrist-idle {
  0%,25%,65%,100% {transform:rotate(0deg);}
  38% {transform:rotate(calc(var(--fx-pet-arm-side) * -5deg));}
  53% {transform:rotate(calc(var(--fx-pet-arm-side) * 2deg));}
}
@keyframes fx-pet-arm-balance {
  0%,100% {transform:rotate(calc(var(--fx-pet-arm-track) + var(--fx-pet-arm-side) * 5deg));}
  50% {transform:rotate(calc(var(--fx-pet-arm-track) + var(--fx-pet-arm-side) * 10deg));}
}
@keyframes fx-pet-elbow-balance {
  0%,100% {transform:rotate(calc(var(--fx-pet-arm-side) * -3deg));}
  50% {transform:rotate(calc(var(--fx-pet-arm-side) * -7deg));}
}
@keyframes fx-pet-wrist-balance {
  0%,100% {transform:rotate(calc(var(--fx-pet-arm-side) * -2deg));}
  50% {transform:rotate(calc(var(--fx-pet-arm-side) * 4deg));}
}
@keyframes fx-pet-arm-wave {
  0%,100% {transform:rotate(0deg);}
  10% {transform:rotate(calc(var(--fx-pet-arm-side) * -6deg));}
  27%,67% {transform:rotate(calc(var(--fx-pet-arm-side) * 91deg));}
  44% {transform:rotate(calc(var(--fx-pet-arm-side) * 85deg));}
  79% {transform:rotate(calc(var(--fx-pet-arm-side) * 88deg));}
  91% {transform:rotate(calc(var(--fx-pet-arm-side) * -2deg));}
}
@keyframes fx-pet-elbow-wave {
  0%,13%,100% {transform:rotate(0deg);}
  29%,62% {transform:rotate(calc(var(--fx-pet-arm-side) * 19deg));}
  45%,76% {transform:rotate(calc(var(--fx-pet-arm-side) * 8deg));}
  92% {transform:rotate(calc(var(--fx-pet-arm-side) * -3deg));}
}
@keyframes fx-pet-wrist-wave {
  0%,19%,100% {transform:rotate(0deg);}
  34%,63% {transform:rotate(calc(var(--fx-pet-arm-side) * -17deg));}
  48%,77% {transform:rotate(calc(var(--fx-pet-arm-side) * 16deg));}
  92% {transform:rotate(calc(var(--fx-pet-arm-side) * -3deg));}
}
@keyframes fx-pet-arm-curious {
  0%,100% {transform:rotate(0deg);}
  12% {transform:rotate(calc(var(--fx-pet-arm-side) * 3deg));}
  34%,72% {transform:rotate(calc(var(--fx-pet-arm-side) * -14deg));}
  90% {transform:rotate(calc(var(--fx-pet-arm-side) * 1deg));}
}
@keyframes fx-pet-elbow-curious {
  0%,14%,100% {transform:rotate(0deg);}
  38%,72% {transform:rotate(calc(var(--fx-pet-arm-side) * -18deg));}
  92% {transform:rotate(calc(var(--fx-pet-arm-side) * 2deg));}
}
@keyframes fx-pet-wrist-curious {
  0%,20%,100% {transform:rotate(0deg);}
  43%,72% {transform:rotate(calc(var(--fx-pet-arm-side) * -12deg));}
}
@keyframes fx-pet-arm-reach {
  0% {transform:rotate(0deg);}
  17% {transform:rotate(calc(var(--fx-pet-arm-side) * -4deg));}
  78% {transform:rotate(calc(var(--fx-pet-point-shoulder) * 1.035));}
  100% {transform:rotate(var(--fx-pet-point-shoulder));}
}
@keyframes fx-pet-elbow-reach {
  0%,17% {transform:rotate(0deg);}
  79% {transform:rotate(calc(var(--fx-pet-point-elbow) * 1.12));}
  100% {transform:rotate(var(--fx-pet-point-elbow));}
}
@keyframes fx-pet-wrist-reach {
  0%,26% {transform:rotate(0deg);}
  80% {transform:rotate(calc(var(--fx-pet-point-wrist) * 1.16));}
  100% {transform:rotate(var(--fx-pet-point-wrist));}
}
@keyframes fx-pet-arm-cheer {
  0%,100% {transform:rotate(0deg);}
  9% {transform:rotate(calc(var(--fx-pet-arm-side) * -7deg));}
  26% {transform:rotate(calc(var(--fx-pet-arm-side) * 116deg));}
  44% {transform:rotate(calc(var(--fx-pet-arm-side) * 100deg));}
  63% {transform:rotate(calc(var(--fx-pet-arm-side) * 112deg));}
  79% {transform:rotate(calc(var(--fx-pet-arm-side) * 96deg));}
  94% {transform:rotate(calc(var(--fx-pet-arm-side) * -3deg));}
}
@keyframes fx-pet-elbow-cheer {
  0%,11%,100% {transform:rotate(0deg);}
  30%,64% {transform:rotate(calc(var(--fx-pet-arm-side) * 14deg));}
  47%,79% {transform:rotate(calc(var(--fx-pet-arm-side) * 5deg));}
}
@keyframes fx-pet-wrist-cheer {
  0%,18%,100% {transform:rotate(0deg);}
  33%,68% {transform:rotate(calc(var(--fx-pet-arm-side) * -13deg));}
  49%,81% {transform:rotate(calc(var(--fx-pet-arm-side) * 8deg));}
}
@keyframes fx-pet-arm-delight {
  0%,100% {transform:rotate(0deg);}
  11% {transform:rotate(calc(var(--fx-pet-arm-side) * -6deg));}
  31% {transform:rotate(calc(var(--fx-pet-arm-side) * 76deg));}
  54% {transform:rotate(calc(var(--fx-pet-arm-side) * 62deg));}
  71% {transform:rotate(calc(var(--fx-pet-arm-side) * 71deg));}
  91% {transform:rotate(calc(var(--fx-pet-arm-side) * -3deg));}
}
@keyframes fx-pet-elbow-delight {
  0%,14%,100% {transform:rotate(0deg);}
  36%,73% {transform:rotate(calc(var(--fx-pet-arm-side) * -16deg));}
  57% {transform:rotate(calc(var(--fx-pet-arm-side) * -7deg));}
}
@keyframes fx-pet-wrist-delight {
  0%,22%,100% {transform:rotate(0deg);}
  42%,74% {transform:rotate(calc(var(--fx-pet-arm-side) * -11deg));}
  59% {transform:rotate(calc(var(--fx-pet-arm-side) * 8deg));}
}
@keyframes fx-pet-float {
  0%,100% {transform:translate3d(0,0,0) rotateZ(var(--fx-pet-tilt)) rotateY(calc(var(--fx-pet-yaw) - 3deg));}
  50% {transform:translate3d(0,-3px,0) rotateZ(var(--fx-pet-tilt)) rotateY(calc(var(--fx-pet-yaw) + 3deg));}
}
@keyframes fx-pet-flight {
  0%,100% {transform:translate3d(0,0,0) rotateZ(calc(var(--fx-pet-tilt) - 1deg)) rotateY(calc(var(--fx-pet-yaw) - 5deg));}
  50% {transform:translate3d(0,-4px,0) rotateZ(calc(var(--fx-pet-tilt) + 1deg)) rotateY(calc(var(--fx-pet-yaw) + 5deg));}
}
@keyframes fx-pet-blink {
  0%,91%,96%,100% {transform:scaleY(0);}
  93%,94% {transform:scaleY(1);}
}
@keyframes fx-pet-greet {
  0%,100% {transform:translate3d(0,0,0) rotateZ(0deg) rotateY(0deg);}
  24%,64% {transform:translate3d(0,-3px,0) rotateZ(-4deg) rotateY(-4deg);}
  44%,82% {transform:translate3d(0,-1px,0) rotateZ(4deg) rotateY(4deg);}
}
@keyframes fx-pet-curious {
  0%,100% {transform:translate3d(0,0,0) rotateZ(0deg) rotateY(0deg);}
  30%,72% {transform:translate3d(0,-2px,0) rotateZ(-6deg) rotateY(-4deg) scale(1.02);}
}
@keyframes fx-pet-point {
  0%,100% {transform:translate3d(0,0,0) rotateZ(var(--fx-pet-tilt)) rotateY(var(--fx-pet-yaw));}
  32%,68% {transform:translate3d(0,-2px,0) rotateZ(var(--fx-pet-tilt)) rotateY(var(--fx-pet-yaw)) rotateX(6deg);}
}
@keyframes fx-pet-celebrate {
  0%,100% {transform:translate3d(0,0,0) rotateZ(0deg) scale(1);}
  22% {transform:translate3d(0,-7px,0) rotateZ(-5deg) scale(1.04);}
  44% {transform:translate3d(0,-3px,0) rotateZ(5deg) scale(1.02);}
  66% {transform:translate3d(0,-5px,0) rotateZ(-3deg) scale(1.03);}
  84% {transform:translate3d(0,-1px,0) rotateZ(2deg) scale(1.01);}
}
@keyframes fx-pet-delight {
  0%,100% {transform:translate3d(0,0,0) rotateZ(var(--fx-pet-tilt)) rotateY(var(--fx-pet-yaw));}
  22% {transform:translate3d(0,-9px,0) rotateZ(-6deg) rotateY(-8deg) scale(1.06);}
  48% {transform:translate3d(0,-4px,0) rotateZ(6deg) rotateY(8deg) scale(1.03);}
  72% {transform:translate3d(0,-6px,0) rotateZ(-2deg) rotateY(-3deg);}
}
@keyframes fx-pet-happy-lids {
  0%,100% {transform:scaleY(0);}
  22%,70% {transform:scaleY(.45);}
}
@keyframes fx-pet-heart {
  0% {opacity:0;transform:translate3d(-50%,-100%,0) scale(.5) rotate(-8deg);}
  12% {opacity:1;transform:translate3d(calc(-50% + var(--fx-heart-drift) * .1),calc(-100% - var(--fx-pet-size) * .12),0) scale(1.08) rotate(-2deg);}
  45% {opacity:1;transform:translate3d(calc(-50% + var(--fx-heart-drift) * .4),calc(-100% - var(--fx-pet-size) * .45),0) scale(1) rotate(2deg);}
  100% {opacity:0;transform:translate3d(calc(-50% + var(--fx-heart-drift)),calc(-100% - var(--fx-pet-size) * 1.1),0) scale(1.17) rotate(6deg);}
}
@media (max-width:640px) {
  .fx-pet {--fx-pet-size:76px;}
  .fx-pet__likes {font-size:8.5px;}
  .fx-pet__likes>svg {width:8px;height:8px;}
  .fx-pet__heart {width:26px;height:26px;}
}
@media (prefers-reduced-motion:reduce) {
  .fx-pet {will-change:auto;}
  .fx-pet__body,
  .fx-pet__eye::before,
  .fx-pet__eye::after,
  .fx-pet.is-moving .fx-pet__body,
  .fx-pet.is-greeting .fx-pet__body,
  .fx-pet.is-curious .fx-pet__body,
  .fx-pet.is-pointing .fx-pet__body,
  .fx-pet.is-celebrating .fx-pet__body,
  .fx-pet.is-happy .fx-pet__body,
  .fx-pet.is-happy .fx-pet__eye::before,
  .fx-pet.is-happy .fx-pet__eye::after {animation:none;}
  .fx-pet__body {transform:none;}
  .fx-pet .fx-pet__arm,
  .fx-pet .fx-pet__forearm,
  .fx-pet .fx-pet__hand {animation:none!important;transition:none!important;transform:none!important;}
  .fx-pet__pupil {transition:none;}
  .fx-pet__heart {
    animation:none;
    opacity:1;
    transform:translate3d(-50%,-100%,0);
  }
}
