:root {
  --bump-loader-primary: var(--color-primary-500);
  --bump-loader-secondary: var(--color-secondary-500);
  --bump-loader-size: 24px;
  --bump-loader-gap: 16px;
  --bump-loader-duration: 1s;
  --bump-loader-bg: transparent;
  --bump-loader-background-image: none;
  --bump-loader-background-image-fit: cover;
  --bump-loader-image: none;
  --bump-loader-image-opacity: 0;
  --bump-loader-image-fit: contain;
  --bump-loader-media-size: min(50vw, 220px);
  --bump-loader-squares-display: block;
  --bump-loader-bootstrap-visibility: hidden;
  --bump-loader-bootstrap-opacity: 0;
  --bump-loader-bootstrap-z-index: -1;
  --bump-loader-fade-duration: 650ms;
}

html {
  height: 100%;
  width: 100%;
}

#loader-wrapper {
    position: fixed;
    display: block;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    z-index: var(--bump-loader-bootstrap-z-index);
    background-color: var(--bump-loader-bg);
    background-image: var(--bump-loader-background-image);
    background-size: var(--bump-loader-background-image-fit);
    background-position: center;
    background-repeat: no-repeat;
    visibility: var(--bump-loader-bootstrap-visibility);
    opacity: var(--bump-loader-bootstrap-opacity);
    transition: opacity var(--bump-loader-fade-duration) ease-in-out, visibility 0s linear var(--bump-loader-fade-duration);
    display: flex;
    align-items: center;
    justify-content: center;
    will-change: opacity;
  }
  #loader-wrapper.bump-loader-visible {
    visibility: visible;
    opacity: 1;
    z-index: 9999;
    transition: opacity var(--bump-loader-fade-duration) ease-in-out, visibility 0s linear 0s;
  }
  #loader-wrapper.bump-loader-hidden {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    z-index: -1;
  }
  .bump-loader {
    display: block;
    position: relative;
    left: 0;
    top: 0;
    width: var(--bump-loader-size);
    height: calc((var(--bump-loader-size) * 2) + var(--bump-loader-gap));
    margin-top: 0;
    margin-left: 0;
  }
  .bump-loader::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: var(--bump-loader-media-size);
    height: var(--bump-loader-media-size);
    transform: translate(-50%, -50%);
    background-image: var(--bump-loader-image);
    background-repeat: no-repeat;
    background-position: center;
    background-size: var(--bump-loader-image-fit);
    opacity: var(--bump-loader-image-opacity);
    transition: opacity 300ms ease-in-out;
  }
  .bump-loader div {
    position: absolute;
    top: 0px;
    left: 0px;
    width: var(--bump-loader-size);
    height: var(--bump-loader-size);
    background: #000;
    display: var(--bump-loader-squares-display);
    animation-timing-function: cubic-bezier(0, 1, 1, 0);
  }
  .bump-loader div:nth-child(1) {
    top: 0px;
    animation: bump-loader1 var(--bump-loader-duration) infinite;
  }
  .bump-loader div:nth-child(2) {
    top: 0px;
    animation: bump-loader2 var(--bump-loader-duration) infinite;
  }
  .bump-loader div:nth-child(3) {
    top: calc(var(--bump-loader-size) + var(--bump-loader-gap));
    z-index: -1;
    animation: bump-loader3 var(--bump-loader-duration) infinite;
  }
  @keyframes bump-loader1 {
    0% {
      transform: scale(0);
    }
    100% {
      transform: scale(1);
      background: var(--bump-loader-primary);
    }
  }
  @keyframes bump-loader3 {
    0% {
      background: var(--bump-loader-secondary);
      transform: scale(1);
  }
  100% {
      background: var(--bump-loader-secondary);
      transform: scale(0);
    }
  }
  @keyframes bump-loader2 {
    0% {
      background: var(--bump-loader-primary);
      transform: translate(0, 0);
    }
    100% {
      background: var(--bump-loader-secondary);
      transform: translate(0, calc(var(--bump-loader-size) + var(--bump-loader-gap)));
    }
  }
  