.loader-mask {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.805); /* semi-transparent black */
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 9999; /* above everything */
  }

  .loader {
    position: relative;
    font-size: 48px;
    letter-spacing: 6px;
    color: #fff;
    text-align: center;
  }

  .loader:before {
    content: "Loading";
    display: block;
    margin-bottom: 20px;
  }

  .loader:after {
    content: "";
    width: 20px;
    height: 20px;
    background-color: #ff3d00;
    background-image: 
      radial-gradient(circle 2px, #fff4 100%, transparent 0),
      radial-gradient(circle 1px, #fff3 100%, transparent 0);
    background-position: 14px -4px, 12px -1px;
    border-radius: 50%;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: 60px;
    transform-origin: center bottom;
    animation: fillBaloon 1s ease-in-out infinite alternate;
  }

  @keyframes fillBaloon {
    0% { transform: translateX(-50%) scale(1); }
    100% { transform: translateX(-50%) scale(3); }
  }