blur-hash {
  display: block;
  overflow: hidden;
}

blur-hash canvas {
  transition: opacity var(--blur-hash-time, .8s);
  opacity: var(--blur-hash-opacity, .4);
  width: 100%;
  height: 100%;
  display: block;
}

blur-hash img {
  width: 100%;
  height: 100%;
  transition: opacity var(--blur-hash-time, .8s);
  object-fit: cover;
  display: block;
  position: relative;
  top: -100%;
}

blur-hash img.blurry {
  opacity: 0;
  filter: blur(30px);
}

blur-hash img.sharp {
  opacity: 1;
  animation: sharpen var(--blur-hash-time, .8s) both;
}

blur-hash img.instant {
  opacity: 1;
  transition: none;
}

@keyframes sharpen {
  from {
    filter: blur(30px);
  }

  to {
    filter: blur();
  }
}
hr {
  margin: 2rem 0;
}

blur-hash {
  --blur-hash-opacity: .2;
  --blur-hash-time: 2s;
}

blur-hash img {
  object-fit: cover;
  width: 100%;
  height: 100%;
}
