.loader
  .bubble
    .bubble__shine.bubble__shine--lg
    .bubble__shine.bubble__shine--sm
  p.text 
    | Lo
    span.text__highlight a
    | din
    span.text__highlight g
View Compiled
:root {
  // COLOR CSS VARIABLES
  --c_01: #ff1ead; // Pink
  --c_02: #000; // Black
  --c_03: #fff; // White

  // SIZE VARIABLES
  --size: 12vmin; // Resize loader by only editing this variable. With vmin unit, loader is automatically responsive.
  --loader_w: calc(var(--size) * 6);
  --loader_h: calc(var(--size) * 2.3);
  --bubble: calc(var(--size) * 1.5);
  --shine: calc(var(--size) / 5);
}

// MIXINS
@mixin size($w, $h: $w) {
  width: $w;
  height: $h;
}

// LAYOUT
body {
  background-color: var(--c_02);
}

.loader {
  @include size(var(--loader_w), var(--loader_h));
  display: flex;
  justify-content: center;
  position: relative;
  margin: calc(50vh - var(--loader_h)) auto 0;
}

.bubble {
  @include size(var(--bubble));
  animation: blow 1.6s linear alternate infinite;
  background-color: var(--c_01);
  border-radius: 50%;
  position: absolute;
  bottom: calc(var(--size) / 1.5);
  left: 50%;
  transform: scale(0.5) translateY(50%);
  outline: 1px solid transparent; // Fixes Chrome jagged edges

  &__shine {
    background-color: var(--c_03);
    position: absolute;

    &--lg {
      @include size(var(--shine), calc(var(--shine) * 2.5));
      border-radius: 100% 50% 40% 100% / 50% 30% 30% 100%;
      top: 2%;
      left: 26%;
      transform: rotateZ(60deg);
    }

    &--sm {
      @include size(calc(var(--shine) / 2));
      border-radius: 50% 50% 40% 100% / 50% 50% 50% 100%;
      top: 32%;
      left: 9%;
    }
  }
}

.text {
  align-self: flex-end;
  color: var(--c_01);
  font-family: "Major Mono Display", monospace;
  font-size: var(--size);
  margin: 0;
  text-transform: uppercase;

  &__highlight {
    color: var(--c_03);
  }
}

// ANIMATION
@keyframes blow {
  0% {
    transform: scale(0.5) translateY(50%);
  }
  20% {
    transform: scale(0.6) translateY(33%);
  }
  40% {
    transform: scale(0.7) translateY(21%);
  }
  60% {
    transform: scale(0.8) translateY(12%);
  }
  80% {
    transform: scale(0.9) translateY(5%);
  }
  93%, 100% {
    transform: scale(1) translateY(0) translateZ(0);
  }
}
View Compiled
/* 
 * PURE CSS BUBBLE GUM LOADER
 * Responsive simple loader for #CodePenChallenge Color Pop. 
 * Resizable loader with just 1 CSS edit.
 * By ilithya | 2019
 */

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.