svg {
  cursor: pointer;
  overflow: visible;
  width: 60px;
}
svg #heart {
  transform-origin: center;
  animation: animateHeartOut 0.3s linear forwards;
}
svg #parent-circle {
  transform-origin: 29.5px 29.5px;
}

#heart-checkbox {
  display: none;
}

#heart-checkbox:checked + label svg #heart {
  transform: scale(0.2);
  fill: #e2264d;
  animation: animateHeart 0.3s linear forwards 0.25s;
}
#heart-checkbox:checked + label svg #parent-circle {
  transition: all 2s;
  animation: animateCircle 0.3s linear forwards;
  opacity: 1;
}
#heart-checkbox:checked + label svg #circleGrp1 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp1 #oval1 {
  transform: scale(0) translate(0, -30px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp1 #oval2 {
  transform: scale(0) translate(10px, -50px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp2 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp2 #oval1 {
  transform: scale(0) translate(30px, -15px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp2 #oval2 {
  transform: scale(0) translate(60px, -15px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp3 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp3 #oval1 {
  transform: scale(0) translate(30px, 0px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp3 #oval2 {
  transform: scale(0) translate(60px, 10px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp4 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp4 #oval1 {
  transform: scale(0) translate(30px, 15px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp4 #oval2 {
  transform: scale(0) translate(40px, 50px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp5 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp5 #oval1 {
  transform: scale(0) translate(-10px, 20px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp5 #oval2 {
  transform: scale(0) translate(-60px, 30px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp6 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp6 #oval1 {
  transform: scale(0) translate(-30px, 0px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp6 #oval2 {
  transform: scale(0) translate(-60px, -5px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp7 {
  opacity: 1;
  transition: 0.1s all 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp7 #oval1 {
  transform: scale(0) translate(-30px, -15px);
  transform-origin: 0 0 0;
  transition: 0.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp7 #oval2 {
  transform: scale(0) translate(-55px, -30px);
  transform-origin: 0 0 0;
  transition: 1.5s transform 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp2 {
  opacity: 1;
  transition: 0.1s opacity 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp3 {
  opacity: 1;
  transition: 0.1s opacity 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp4 {
  opacity: 1;
  transition: 0.1s opacity 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp5 {
  opacity: 1;
  transition: 0.1s opacity 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp6 {
  opacity: 1;
  transition: 0.1s opacity 0.3s;
}
#heart-checkbox:checked + label svg #circleGrp7 {
  opacity: 1;
  transition: 0.1s opacity 0.3s;
}

@keyframes animateCircle {
  40% {
    transform: scale(10);
    opacity: 1;
    fill: #dd4688;
  }
  55% {
    transform: scale(11);
    opacity: 1;
    fill: #d46abf;
  }
  65% {
    transform: scale(12);
    opacity: 1;
    fill: #cc8ef5;
  }
  75% {
    transform: scale(13);
    opacity: 1;
    fill: transparent;
    stroke: #cc8ef5;
    stroke-width: 0.5;
  }
  85% {
    transform: scale(17);
    opacity: 1;
    fill: transparent;
    stroke: #cc8ef5;
    stroke-width: 0.2;
  }
  95% {
    transform: scale(18);
    opacity: 1;
    fill: transparent;
    stroke: #cc8ef5;
    stroke-width: 0.1;
  }
  100% {
    transform: scale(19);
    opacity: 1;
    fill: transparent;
    stroke: #cc8ef5;
    stroke-width: 0;
  }
}
@keyframes animateHeart {
  0% {
    transform: scale(0.2);
  }
  40% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}
@keyframes animateHeartOut {
  0% {
    transform: scale(1.4);
  }
  100% {
    transform: scale(1);
  }
}