<div class="toggleWrapper">
  <input type="checkbox" class="dn" id="dn"/>
    <label for="dn" class="toggle">
    <span class="toggle__handler">
  </label>
  <div class="bear-body">
    <span class="eye left"></span>
    <span class="eye right"></span>
  </div>
</div>
$brown: #7e2804;
$orange: #fe7702;
$darkBrown: #3d2526;
$yellow: #fdb300;
$tan: #dcc8a3;

body {
  background-color: #7994a5;
  height: 100vh;
}

.toggleWrapper {
  position: absolute;
  top: 50%;
  left: 50%;
  padding: 0 200px;
  transform: translate3d(-50%, -50%, 0);

  input {
    position: absolute;
    left: -99em;
  }
}

.toggle {
  cursor: pointer;
  display: inline-block;
  position: absolute;
  width: 90px;
  top: 36px;
  left: 50%;
  transform: translateX(-50%);
  height: 40px;
  background-color: $tan;
  border-radius: 90px - 6;
  z-index: 2;
  transition: background-color 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95);
}

.toggle__handler {
  display: inline-block;
  position: relative;
  z-index: 1;
  top: 3px;
  left: 3px;
  width: 40px - 6;
  height: 40px - 6;
  background-color: $brown;
  border-radius: 50px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
  transition: all 400ms cubic-bezier(0.68, -0.55, 0.265, 1.55);
  transform: rotate(-45deg);
}

input:checked {
  + .toggle {

    &:after {
      color: #ffffff;
    }

    .toggle__handler {
      transform: translate3d(49px, 0, 0) rotate(0);
    }
    + .bear-body {
      transform: rotateY(180deg);
    }
  }
}

.bear-body {
  position: relative;
  border-radius: 20px 10px 5px;

  border-bottom: 150px solid $brown;
  border-left: 20px solid transparent;
  border-right: 10px solid transparent;
  height: 0;
  width: 94px;

  &::before,
  &::after {
    content: '';
    position: absolute;
    height: 25px;
    width: 25px;
    border-radius: 50%;
    top: -16px;
    background: radial-gradient($tan 5px, $brown 6px);
  }
  &::before {
    left: -12.5px;
  }
  &::after {
    right: -12.5px;
  }
  .eye {
    position: absolute;
    top: 18px;
    background: $darkBrown;
    height: 14px;
    width: 14px;
    border-radius: 50%;
    background-image: radial-gradient(circle at 4px, white 1px, $darkBrown 2px);

    &.left {
      left: 20px;
      animation: blink 3s ease-in-out infinite;
    }
    &.right {
      left: 46px;
      animation: blink 3.5s ease-in-out infinite;
    }
  }
}

@keyframes blink {
  85% {
    transform: rotateX(0deg);
  }
  90% {
    transform: rotateX(90deg);
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.