.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; }