.emotewrapper {
    position: relative;
    display: inline-flex;
    object-fit: contain;
    margin: -0.1em 0.05em -0.2em 0.1em;
    vertical-align: top;
}

.emotewrapper.jumboable {
    margin-bottom: 0;
    margin-top: 0.2em;
    vertical-align: -0.3em;
}

.emote {
    object-fit: contain;
    width: 1.375em;
    height: 1.375em;
    vertical-align: bottom;
}

.emote.jumboable {
    width: 3rem;
    height: 3rem;
    min-height: 3rem;
}

.fav {
    display: none;
    position: absolute;
    width: 15px;
    height: 15px;
    right: -7px;
    background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAzFBMVEUAAABQUFBMTExLS0tNTU1MTExNTU1NTU1MTExMTExNTU1LS0tEREBEREBEREBEREBJSUhLS0tLS0tEREBNTU1NTU1NTU1EREArKyhNTU1NTU0AAABMTExKSklMTExNTU1NTU1NTU1KSkpMTExKSkhNTU1KSkpISEZNTU1LS0tAQDxOTk5KSkpLS0tNTU1MTExMTEx/f39MTExMTExLS0pLS0tMTExNTU1NTU1LS0pNTU1NTU1NTU1NTU1NTU1NTUxNTU1NTU1NTUxMTEzB8C/5AAAAOnRSTlMAI8X96oWAgYSF68QBAg0PMCb9BIuLgQUD4N0Bh0mKhZSOQ4gcrKscaW8QRE6fmJyjAshASceG7cIpqQOxTQAAALVJREFUGFddx6FOA0EYAOGZvd07Qm6vVCAAgUUgQEDfX/YZMAigqaFN7iC5tsmPqGPUN/AvUVeoEbGOCElJz08Uzeixqu4AqomVVSNngOVjTqDGZSl3UFtPGV2ot2zaq96YM9p5Ddzcf/nTTAlj+/sNtNu8OcwkIsbPBtrUfMQeEhGQmHbmGIFMwLPzu6UMIwBNgToshgq8Nr2ki+Oy7ebDHp70LRPWB6OZgfWLWei7fJonOOsPCGA9kVlssOoAAAAASUVORK5CYII=");
    border: none;
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-color: #303030;
    border-radius: 5px;
    top: -7px;
    cursor: pointer;
}

.fav.active {
    background-color: yellow;
}

.emotewrapper:hover .fav {
    display: block;
}

.emote.stop-animation {
    animation: none;
}

.emoteflip,
.emotespinflip {
    transform: scaleX(-1);
}

.emotespin {
    animation: 1s emote-spin infinite linear;
}

.emote1spin {
    animation: 1s emote-spin-reverse infinite linear;
}

.emotespin2 {
    animation: 0.5s emote-spin infinite linear;
}

.emote2spin {
    animation: 0.5s emote-spin-reverse infinite linear;
}

.emotespin3 {
    animation: 0.2s emote-spin infinite linear;
}

.emote3spin {
    animation: 0.2s emote-spin-reverse infinite linear;
}

.emotepulse {
    animation: 1s emote-pulse infinite linear;
}

.emotetr {
    transform: translateX(-3px);
}

.emotebl {
    transform: translateY(-3px);
}

.emotebr {
    transform: translate(-3px, -3px);
}

.emoteshake {
    animation: 1s emote-shake infinite linear;
}

.emoteflap {
    transform: scaleY(-1);
}

.emoteshake2 {
    animation: emote-shake2 0.3s linear infinite;
}

.emoteshake3 {
    animation: emote-shake3 0.1s linear infinite;
}

@keyframes emote-shake2 {
    25% {
        transform: translate(-1px, -1px);
    }

    50% {
        transform: translate(-1px, 1px);
    }

    75% {
        transform: translate(1px, 1px);
    }

    75% {
        transform: translate(1px, -1px);
    }
}

@keyframes emote-shake3 {
    25% {
        transform: translate(-1px, -1px);
    }

    50% {
        transform: translate(-1px, 1px);
    }

    75% {
        transform: translate(1px, 1px);
    }

    75% {
        transform: translate(1px, -1px);
    }
}

@keyframes emote-spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@keyframes emote-spin-reverse {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(-360deg);
    }
}

@keyframes emote-pulse {
    0% {
        -webkit-transform: scale(1, 1);
    }

    50% {
        -webkit-transform: scale(1.2, 1.2);
    }

    100% {
        -webkit-transform: scale(1, 1);
    }
}

@keyframes emote-shake {
    10%,
    90% {
        transform: translate3d(-1px, 0, 0);
    }

    20%,
    80% {
        transform: translate3d(2px, 0, 0);
    }

    30%,
    50%,
    70% {
        transform: translate3d(-4px, 0, 0);
    }

    40%,
    60% {
        transform: translate3d(4px, 0, 0);
    }
}
