@mixin vertical-center() {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  -webkit-transform-origin: 50% 50%;
  transform-origin: 50% 50%;
}

@mixin center() {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  -webkit-transform-origin: 50% 50%;
  transform-origin: 50% 50%;
}

@mixin gpu-acceleration() {
  &,
  & * {
    backface-visibility: hidden;
    perspective: 1000;
    transform: translateZ(0);
  }
}

@mixin aspect-ratio($width, $height) {
  position: relative;

  &::before {
    display: block;
    content: "";
    width: 100%;
    padding-top: ($height / $width) * 100%;
  }

  > .aspect-ratio-content {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
  }
}