.osxshake {
    animation: osxshake .5s linear;
}

@keyframes osxshake {
    8%, 41% {-webkit-transform: translateX(-10px);}
    25%, 58% {-webkit-transform: translateX(10px);}
    75% {-webkit-transform: translateX(-5px);}
    92% {-webkit-transform: translateX(5px);}
    0%, 100% {-webkit-transform: translateX(0);}
}

@keyframes spinner {
  to {transform: rotate(360deg);}
}

.billink_input {
    width: 100%;
    padding: 0.5em;
    border-radius: 0.2em;
}

.billink_label {
    display: block;
    margin-bottom: 0.5em;
}

.billink_label.has_error:after {
    content: attr(data-error);
    display: block;
    position: relative;
    width: auto;
    height: auto;
    background: #f44336;
    padding: 0.2em;
    color: white;
    padding-left: 0.5em;
    border-radius: 0 0 0.5em 0.5em;
    top: -1px;
    left: 1px;
    line-height: 1.5;
}

.billink__loader.active {
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute;
    background: rgba(255,255,255,0.5);
    cursor: wait;
}

.billink__loader.active:before {
    content: '';
    box-sizing: border-box;
    position: absolute;
    top: 50%;
    left: 50%;
    width: 40px;
    height: 40px;
    margin-top: -40px;
    margin-left: -30px;
    border-radius: 50%;
    border: 4px solid #f0812d;
    border-top-color: #d0d0d0;
    animation: spinner .6s linear infinite;
}