.button {
    @apply inline-flex;
    @apply place-center;
    @apply px-4;
    @apply min-h-10;
    @apply border-0;
    @apply bg-purple-500;
    @apply overflow-hidden;
    @apply rounded-sm;
    @apply text-white;
    @apply leading-none;
    @apply no-underline;
}

.button:after {
    content: '';
    @apply block;
    @apply absolute;
    @apply left-full;
    @apply bottom-0;
    width: 200%;
    height: 100vh;
    @apply bg-tint-500;
    transform: translateX(-1rem) skewX(-65deg);
    transform-origin: 0% 100%;
    transition: transform 0.75s ease-out;
}

.button:hover:after {
    transform: translateX(-1.5rem) skewX(-65deg);
    transition-duration: 0.3s;
}

.button:not(:disabled):active:after,
.button.button-submitting:after {
    transition-delay: 0.2s;
    transition-duration: 0.3s;
    transform: translateX(-100%) skewX(-65deg);
}

.button-secondary {
    @apply button;
    @apply bg-tint-200;
    @apply text-tint-700;
}

.button-secondary:hover {
    @apply bg-tint-300;
}

.button-secondary:not(:disabled):active,
.button-secondary.button-submitting:after {
    @apply bg-tint-500;
    @apply opacity-50;
}

.button:focus,
.button-secondary:focus {
    @apply outline-none;
}

.button:disabled,
.button-secondary:disabled {
    @apply cursor-not-allowed;
    @apply opacity-25;
}

.button-sm {
    @apply text-sm;
}

.button.button-sm,
.button-secondary.button-sm {
    @apply px-2;
    @apply min-h-6;
    @apply rounded-sm;
}

.button-lg {
    @apply text-lg;
}

.button.button-lg,
.button-secondary.button-lg {
    @apply px-6;
    @apply min-h-12;
}

.button-lg.button:after {
    transform: translateX(-2rem) skewX(-65deg);
}

.button-lg.button:hover:after {
    transform: translateX(-3rem) skewX(-65deg);
}
