body {
  margin: 0;
}

.coffee {
  margin: 0 auto;
  position: relative;
  width: 300px;
}

.coffee div {
  position: absolute;
}

.saucer {
  background: #fff;
  top: 165px;
  left: 50px;
  border-radius: 50%;
  width: 200px;
  height: 55px;
  box-shadow: 0 8px 20px 5px rgba(0, 0, 0, 0.2), inset 0 2px 20px rgba(0, 0, 0, 0.2), inset 0 8px 15px 24px #fff, inset 0 -1px 2px 30px rgba(0, 0, 0, 0.4), inset 0 -1px 2px #fff;
}

.cup {
  background: #fff;
  top: 60px;
  left: 60px;
  border-radius: 50% 50% 45% 45% / 10% 10% 50% 50%;
  width: 180px;
  height: 140px;
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2), 0 3px 5px rgba(0, 0, 0, 0.1), inset 0 0 15px 5px #fff, inset 60px 0 40px #ddd, inset -30px 0 25px #ddd;
}

.hole {
  background: #eee;
  top: 60px;
  left: 60px;
  border-radius: 50%;
  width: 180px;
  height: 32px;
  box-shadow: 0 8px 30px 15px rgba(0, 0, 0, 0.1), inset 0 -1px 2px #fff, inset -50px 0 25px -5px rgba(0, 0, 0, 0.1), inset 10px 0 15px 2px rgba(0, 0, 0, 0.1);
}

.handle {
  top: 90px;
  left: 225px;
  border-radius: 50%;
  width: 50px;
  height: 50px;
  box-shadow: 0 4px 20px 5px rgba(0, 0, 0, 0.2), inset 0 -4px 8px #ddd, inset 0 -2px 6px 8px #fff, inset 0 0 0 14px #ddd, inset 0 0 8px 16px rgba(0, 0, 0, 0.1);
}

.smoke {
  width: 400px;
  height: 400px;
  top: 0;
  left: 0;
}

.smoke div {
  left: 120px;
  border-radius: 50%;
  height: 60px;
  width: 10px;
  box-shadow: 2px -5px 20px 15px #fff, inset 2px -5px 20px 5px #fff;
  animation: smoke 8s infinite;
}

.smoke div:nth-child(2) {
  left: 100px;
  animation: smoke 8s infinite -3s;
}

.smoke div:nth-child(3) {
  left: 180px;
  animation: smoke 8s infinite -1s;
}

.smoke div:nth-child(4) {
  left: 150px;
  animation: smoke 8s infinite -4s;
}

@keyframes smoke {
  0% {
    opacity: 0.1;
    top: 35px;
  }
  50% {
    opacity: 1;
  }
  100% {
    width: 30px;
    opacity: 0.1;
    box-shadow: 2px -5px 20px 15px rgba(220, 220, 220, 0.7), inset 2px -5px 20px 5px rgba(220, 220, 220, 0.7);
    top: -20px;
  }
}