:host {
  display: block;
}

.skeleton-wrapper {
  display: flex;
}
.skeleton-wrapper.vertical {
  flex-direction: column;
}
.skeleton-wrapper.horizontal {
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap;
}

.skeleton {
  display: inline-block;
  background-color: #D5D5D5;
  position: relative;
  overflow: hidden;
  flex-shrink: 0;
}
.skeleton.text {
  border-radius: 4px;
}
.skeleton.rect {
  border-radius: 4px;
}
.skeleton.circle {
  border-radius: 50%;
}
.skeleton.pulse {
  animation: pulse 1.5s infinite ease-in-out;
}
.skeleton.wave::after {
  content: "";
  position: absolute;
  top: 0;
  left: -150px;
  height: 100%;
  width: 150px;
  background: linear-gradient(90deg, transparent, white, transparent);
  animation: wave 1.6s infinite;
}

@keyframes pulse {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.4;
  }
  100% {
    opacity: 1;
  }
}
@keyframes wave {
  0% {
    left: -150px;
  }
  100% {
    left: 100%;
  }
}