@keyframes tst-submit-spinner-rotate {
    100% {
        transform: rotate(360deg);
    }
}
@keyframes tst-submit-spinner-dash {
    0% {
        stroke-dasharray: 1, 150;
        stroke-dashoffset: 0;
    }
    50% {
        stroke-dasharray: 90, 150;
        stroke-dashoffset: -35;
    }
    100% {
        stroke-dasharray: 90, 150;
        stroke-dashoffset: -124;
    }
}
button.tst-submit-spinner {
    position: relative;
}
button.tst-submit-spinner > svg {
    width: 1em;
    height: 1em;
    position: absolute;
    top: 50%;
    left: 50%;
    margin: calc(1em / -2) 0 0 calc(1em / -2);
    animation: tst-submit-spinner-rotate 2s linear infinite;
    display: none;
}
button.tst-submit-spinner > svg > circle {
    stroke: currentColor;
    stroke-linecap: round;
    animation: tst-submit-spinner-dash 1.5s ease-in-out infinite;
}
.is-validating button.tst-submit-spinner > span,
.is-submitting button.tst-submit-spinner > span {
    visibility: hidden;
}
.is-validating button.tst-submit-spinner > svg,
.is-submitting button.tst-submit-spinner > svg {
    display: block;
}
