* {
  box-sizing: border-box;
}
*::before, *::after {
  box-sizing: border-box;
}

body {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  min-height: 100vh;
  background: #fff;
  overflow: hidden;
}

#container {
  position: relative;
  width: 22.813rem;
  height: 22.813rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.circles {
  display: flex;
  flex-wrap: wrap;
}
.circles .circle {
  position: relative;
  width: 1.563rem;
  height: 1.563rem;
  margin: -0.125rem;
  border-radius: 50%;
}

.circles:nth-child(1) .circle:nth-child(2n) {
  opacity: 0;
  background: #7600fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: 0.2s;
          animation-delay: 0.2s;
}

.circles:nth-child(2) .circle:nth-child(2n) {
  opacity: 0;
  background: #5500fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: 0.1s;
          animation-delay: 0.1s;
}

.circles:nth-child(3) .circle:nth-child(2n) {
  opacity: 0;
  background: #5602fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: 0s;
          animation-delay: 0s;
}

.circles:nth-child(4) .circle:nth-child(2n) {
  opacity: 0;
  background: #3100fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.1s;
          animation-delay: -0.1s;
}

.circles:nth-child(5) .circle:nth-child(2n) {
  opacity: 0;
  background: #1300fd;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.2s;
          animation-delay: -0.2s;
}

.circles:nth-child(6) .circle:nth-child(2n) {
  opacity: 0;
  background: #010afe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.3s;
          animation-delay: -0.3s;
}

.circles:nth-child(7) .circle:nth-child(2n) {
  opacity: 0;
  background: #0127fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.4s;
          animation-delay: -0.4s;
}

.circles:nth-child(8) .circle:nth-child(2n) {
  opacity: 0;
  background: #0143fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.5s;
          animation-delay: -0.5s;
}

.circles:nth-child(9) .circle:nth-child(2n) {
  opacity: 0;
  background: #0165fb;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.6s;
          animation-delay: -0.6s;
}

.circles:nth-child(10) .circle:nth-child(2n) {
  opacity: 0;
  background: #0183fb;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.7s;
          animation-delay: -0.7s;
}

.circles:nth-child(11) .circle:nth-child(2n) {
  opacity: 0;
  background: #01a2fe;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.8s;
          animation-delay: -0.8s;
}

.circles:nth-child(12) .circle:nth-child(2n) {
  opacity: 0;
  background: #01c0fb;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.9s;
          animation-delay: -0.9s;
}

.circles:nth-child(13) .circle:nth-child(2n) {
  opacity: 0;
  background: #02defc;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1s;
          animation-delay: -1s;
}

.circles:nth-child(14) .circle:nth-child(2n) {
  opacity: 0;
  background: #00fdfd;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.1s;
          animation-delay: -1.1s;
}

.circles:nth-child(15) .circle:nth-child(2n) {
  opacity: 0;
  background: #03fcd4;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.2s;
          animation-delay: -1.2s;
}

.circles:nth-child(16) .circle:nth-child(2n) {
  opacity: 0;
  background: #00ffc1;
  -webkit-animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSize 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.3s;
          animation-delay: -1.3s;
}

.circles:nth-child(1) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #09f6b8;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: 0.2s;
          animation-delay: 0.2s;
}

.circles:nth-child(2) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #00ffc1;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: 0.1s;
          animation-delay: 0.1s;
}

.circles:nth-child(3) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #03fcd4;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: 0s;
          animation-delay: 0s;
}

.circles:nth-child(4) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #00fffc;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.1s;
          animation-delay: -0.1s;
}

.circles:nth-child(5) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #02defc;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.2s;
          animation-delay: -0.2s;
}

.circles:nth-child(6) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #02bffe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.3s;
          animation-delay: -0.3s;
}

.circles:nth-child(7) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #01a2fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.4s;
          animation-delay: -0.4s;
}

.circles:nth-child(8) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #0185fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.5s;
          animation-delay: -0.5s;
}

.circles:nth-child(9) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #0168fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.6s;
          animation-delay: -0.6s;
}

.circles:nth-child(10) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #014bfe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.7s;
          animation-delay: -0.7s;
}

.circles:nth-child(11) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #0127fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.8s;
          animation-delay: -0.8s;
}

.circles:nth-child(12) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #010afe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -0.9s;
          animation-delay: -0.9s;
}

.circles:nth-child(13) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #1300fd;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1s;
          animation-delay: -1s;
}

.circles:nth-child(14) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #3100fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.1s;
          animation-delay: -1.1s;
}

.circles:nth-child(15) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #5500fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.2s;
          animation-delay: -1.2s;
}

.circles:nth-child(16) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #7602fe;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.3s;
          animation-delay: -1.3s;
}

.circles:nth-child(17) .circle:not(:nth-child(2n)) {
  opacity: 1;
  background: #7100f6;
  -webkit-animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
          animation: circleSizeTwo 4s cubic-bezier(0.445, 0.05, 0.55, 0.95) infinite;
  -webkit-animation-delay: -1.4s;
          animation-delay: -1.4s;
}

@supports (display: grid) {
  body {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-gap: 0.625rem;
    grid-template-areas: ". main main ." ". main main .";
  }

  #container {
    grid-area: main;
    align-self: center;
    justify-self: center;
  }
}
@-webkit-keyframes circleSize {
  0%, 100% {
    opacity: 0;
    -webkit-transform: scale(0);
            transform: scale(0);
  }
  10%, 90% {
    opacity: 1;
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
}
@keyframes circleSize {
  0%, 100% {
    opacity: 0;
    -webkit-transform: scale(0);
            transform: scale(0);
  }
  10%, 90% {
    opacity: 1;
  }
  50% {
    opacity: 1;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
}
@-webkit-keyframes circleSizeTwo {
  0%, 100% {
    opacity: 1;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
  40%, 60% {
    opacity: 1;
  }
  50% {
    opacity: 0;
    -webkit-transform: scale(0);
            transform: scale(0);
  }
}
@keyframes circleSizeTwo {
  0%, 100% {
    opacity: 1;
    -webkit-transform: scale(1);
            transform: scale(1);
  }
  40%, 60% {
    opacity: 1;
  }
  50% {
    opacity: 0;
    -webkit-transform: scale(0);
            transform: scale(0);
  }
}
