.cta,
.cta:visited {
  padding: 16px 50px;
  margin: 10px auto;
  overflow: hidden;
  display: block;
  position: relative;
  width: 235px;
  max-width: 300px;
  border: 2px solid white;
  font-family: "glacial", "Arial", sans-serif;
  font-weight: bold;
  font-size: 2.2rem;
  line-height: 2.6rem;
  text-decoration: none;
  z-index: 0;
  color: var(--white);
  background: none;
  transition: color 0.3s;
}

.cta-revert,
.cta-revert:visited {
  color: var(--purple);
  background: white;
}

.cta-full,
.cta-full:visited {
  color: white;
  background: var(--purple);
  border: 2px solid var(--purple);
}

.cta:hover,
.cta:focus {
  color: var(--purple);
}

.cta::before {
  background: var(--green);
}

.cta::after {
  background: white;
}

.cta-revert:hover,
.cta-revert:focus {
  color: white;
}

.cta-revert::before {
  background: var(--green);
}

.cta-revert::after {
  background: var(--purple);
}

.cta::before,
.cta::after {
  content: "";
  position: absolute;
  height: 100%;
  width: 100%;
  bottom: 100%;
  left: 0;
  z-index: -1;
  -webkit-transition: -webkit-transform 0.3s;
  -moz-transition: -moz-transform 0.3s;
  transition: transform 0.3s;
  transition-timing-function: ease;
  -webkit-transition-timing-function: cubic-bezier(0.75, 0, 0.125, 1);
  -moz-transition-timing-function: cubic-bezier(0.75, 0, 0.125, 1);
  transition-timing-function: cubic-bezier(0.75, 0, 0.125, 1);
}

.cta:hover::before,
.cta:hover::after,
.cta:focus::before,
.cta:focus::after {
  -webkit-transform: translate3d(0, 100%, 0);
  -moz-transform: translate3d(0, 100%, 0);
  -ms-transform: translate3d(0, 100%, 0);
  -o-transform: translate3d(0, 100%, 0);
  transform: translate3d(0, 100%, 0);
}

.cta:hover::after,
.cta:focus::after {
  -webkit-transition-delay: 0.175s;
  -moz-transition-delay: 0.175s;
  transition-delay: 0.175s;
}
