.download-link {
    overflow: hidden;
    position: relative;
    display: inline-block;
    cursor: pointer;
}

.download-link::before,
.download-link::after {
    content: '';
    position: absolute;
    width: 100%;
    left: 0;
}
.download-link::before {
    background-color: #004d26;
    height: 2px;
    bottom: 0;
    transform-origin: 100% 50%;
    transform: scaleX(0);
    transition: transform .3s cubic-bezier(0.76, 0, 0.24, 1);
}
.download-link::after {
    content: attr(data-replace);
    height: 100%;
    top: 0;
    transform-origin: 100% 50%;
    transform: translate3d(200%, 0, 0);
    transition: transform .3s cubic-bezier(0.76, 0, 0.24, 1);
    color: #004d26;
}

.download-link:hover::before {
    transform-origin: 0% 50%;
    transform: scaleX(1);
}
.download-link:hover::after {
    transform: translate3d(0, 0, 0);
}

.download-link span {
    display: inline-block;
    transition: transform .3s cubic-bezier(0.76, 0, 0.24, 1);
}

.download-link:hover span {
    transform: translate3d(-200%, 0, 0);
}