
/*----- Icon optimization ------*/
    i[class*='jtbI']{
        display: inline-flex;
    }

/*----- Type Sizing ------*/
    .jtbI-2x.jtbI-circle,
    .jtbI-2x.jtbI-square,
    .jtbI-2x.jtbI-rounded{
        font-size: calc(1em * 0.6);
    }

/*----- Sizing ------*/
    .jtbI-2x{
        font-size: 2em;
    }
    /*----- Types ------*/
        .jtbI-2x.jtbI-circle,
        .jtbI-2x.jtbI-square,
        .jtbI-2x.jtbI-rounded{
            font-size: calc(2em * 0.6);
        }
    .jtbI-3x{
        font-size: 3em;
    }
        /*----- Types ------*/
            .jtbI-3x.jtbI-circle,
            .jtbI-3x.jtbI-square,
            .jtbI-3x.jtbI-rounded{
                font-size: calc(3em * 0.6);
            }
    .jtbI-4x{
        font-size: 4em;
    }
        /*----- Types ------*/
            .jtbI-4x.jtbI-circle,
            .jtbI-4x.jtbI-square,
            .jtbI-4x.jtbI-rounded{
                font-size: calc(4em * 0.6);
            }
    .jtbI-5x{
        font-size: 5em;
    }
        /*----- Types ------*/
            .jtbI-5x.jtbI-circle,
            .jtbI-5x.jtbI-square,
            .jtbI-5x.jtbI-rounded{
                font-size: calc(5em * 0.6);
            }
    .jtbI-6x{
        font-size: 6em;
    }
        /*----- Types ------*/
            .jtbI-6x.jtbI-circle,
            .jtbI-6x.jtbI-square,
            .jtbI-6x.jtbI-rounded{
                font-size: calc(6em * 0.6);
            }
    .jtbI-7x{
        font-size: 7em;
    }
        /*----- Types ------*/
            .jtbI-7x.jtbI-circle,
            .jtbI-7x.jtbI-square,
            .jtbI-7x.jtbI-rounded{
                font-size: calc(7em * 0.6);
            }
    .jtbI-8x{
        font-size: 8em;
    }
        /*----- Types ------*/
            .jtbI-8x.jtbI-circle,
            .jtbI-8x.jtbI-square,
            .jtbI-8x.jtbI-rounded{
                font-size: calc(8em * 0.6);
            }
    .jtbI-9x{
        font-size: 9em;
    }
        /*----- Types ------*/
            .jtbI-9x.jtbI-circle,
            .jtbI-9x.jtbI-square,
            .jtbI-9x.jtbI-rounded{
                font-size: calc(9em * 0.6);
            }
    .jtbI-10x{
        font-size: 10em;
    }
        /*----- Types ------*/
            .jtbI-10x.jtbI-circle,
            .jtbI-10x.jtbI-square,
            .jtbI-10x.jtbI-rounded{
                font-size: calc(10em * 0.6);
            }

/*----- Rotating ------*/
    .jtbI-rotate-90{
        transform: rotate(90deg);
    } 
    .jtbI-rotate-180{
        transform: rotate(180deg);
    }
    .jtbI-rotate-270{
        transform: rotate(270deg);
    }

/*----- Animations ------*/
    /*----- Variables ------*/
        :root{

            /*----- Defaults ------*/
                --jtbI-duration: 1s;
                --jtbI-type: infinite;

            /*----- Pulse ------*/
                --jtbI-scale: 0.70;

            /*----- Fade ------*/
                --jtbI-maxVal: 1;
                --jtbI-minVal: 0.6;

            /*----- Swing ------*/
                --jtbI-transform-origin: top center;

        }

    /*----- Pulse ------*/
        .jtbI-pulse{
            animation: jtb-pulse var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-pulse var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-pulse var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-pulse var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-pulse var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-pulse {
                0%{transform: scale(1);}
                50%{transform: scale(var(--jtbI-scale));}
                100%{transform: scale(1);}
            }
            @-moz-keyframes jtb-pulse {
                0%{transform: scale(1);}
                50%{transform: scale(var(--jtbI-scale));}
                100%{transform: scale(1);}
            }
            @-webkit-keyframes jtb-pulse {
                0%{transform: scale(1);}
                50%{transform: scale(var(--jtbI-scale));}
                100%{transform: scale(1);}
            }
            @-o-keyframes jtb-pulse {
                0%{transform: scale(1);}
                50%{transform: scale(var(--jtbI-scale));}
                100%{transform: scale(1);}
            }
            @-ms-keyframes jtb-pulse {
                0%{transform: scale(1);}
                50%{transform: scale(var(--jtbI-scale));}
                100%{transform: scale(1);}
            }

    /*----- Fade ------*/
        .jtbI-fade{
            animation: jtb-fade var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-fade var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-fade var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-fade var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-fade var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-fade {
                0%{opacity: var(--jtbI-maxVal);}
                50%{opacity: var(--jtbI-minVal);}
                100%{opacity: var(--jtbI-maxVal);}
            }
            @-moz-keyframes jtb-fade {
                0%{opacity: var(--jtbI-maxVal);}
                50%{opacity: var(--jtbI-minVal);}
                100%{opacity: var(--jtbI-maxVal);}
            }
            @-webkit-keyframes jtb-fade {
                0%{opacity: var(--jtbI-maxVal);}
                50%{opacity: var(--jtbI-minVal);}
                100%{opacity: var(--jtbI-maxVal);}
            }
            @-o-keyframes jtb-fade {
                0%{opacity: var(--jtbI-maxVal);}
                50%{opacity: var(--jtbI-minVal);}
                100%{opacity: var(--jtbI-maxVal);}
            }
            @-ms-keyframes jtb-fade {
                0%{opacity: var(--jtbI-maxVal);}
                50%{opacity: var(--jtbI-minVal);}
                100%{opacity: var(--jtbI-maxVal);}
            }

    /*----- Pulse & Fade ------*/
        .jtbI-pulse-fade{
            animation: jtb-pulse-fade var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-pulse-fade var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-pulse-fade var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-pulse-fade var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-pulse-fade var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-pulse-fade {
                0%{transform: scale(1);opacity: var(--jtbI-maxVal);}
                50%{transform: scale(var(--jtbI-scale));opacity: var(--jtbI-minVal);}
                100%{transform: scale(1);opacity: var(--jtbI-maxVal);}
            }
            @-moz-keyframes jtb-pulse-fade {
                0%{transform: scale(1);opacity: var(--jtbI-maxVal);}
                50%{transform: scale(var(--jtbI-scale));opacity: var(--jtbI-minVal);}
                100%{transform: scale(1);opacity: var(--jtbI-maxVal);}
            }
            @-webkit-keyframes jtb-pulse-fade {
                0%{transform: scale(1);opacity: var(--jtbI-maxVal);}
                50%{transform: scale(var(--jtbI-scale));opacity: var(--jtbI-minVal);}
                100%{transform: scale(1);opacity: var(--jtbI-maxVal);}
            }
            @-o-keyframes jtb-pulse-fade {
                0%{transform: scale(1);opacity: var(--jtbI-maxVal);}
                50%{transform: scale(var(--jtbI-scale));opacity: var(--jtbI-minVal);}
                100%{transform: scale(1);opacity: var(--jtbI-maxVal);}
            }
            @-ms-keyframes jtb-pulse-fade {
                0%{transform: scale(1);opacity: var(--jtbI-maxVal);}
                50%{transform: scale(var(--jtbI-scale));opacity: var(--jtbI-minVal);}
                100%{transform: scale(1);opacity: var(--jtbI-maxVal);}
            }

    /*----- Bounce ------*/
        .jtbI-bounce {
            animation: jtb-bounce var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-bounce var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-bounce var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-bounce var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-bounce var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-bounce {
                0%   { transform: scale(1,1)      translateY(0); }
                10%  { transform: scale(1.1,.9)   translateY(0); }
                30%  { transform: scale(.9,1.1)   translateY(-15%); }
                50%  { transform: scale(1.05,.95) translateY(0); }
                57%  { transform: scale(1,1)      translateY(-7%); }
                64%  { transform: scale(1,1)      translateY(-3%); }
                100% { transform: scale(1,1)      translateY(0); }
            }
            @-moz-keyframes jtb-bounce {
                0%   { transform: scale(1,1)      translateY(0); }
                10%  { transform: scale(1.1,.9)   translateY(0); }
                30%  { transform: scale(.9,1.1)   translateY(-15%); }
                50%  { transform: scale(1.05,.95) translateY(0); }
                57%  { transform: scale(1,1)      translateY(-7%); }
                64%  { transform: scale(1,1)      translateY(-3%); }
                100% { transform: scale(1,1)      translateY(0); }
            }
            @-webkit-keyframes jtb-bounce {
                0%   { transform: scale(1,1)      translateY(0); }
                10%  { transform: scale(1.1,.9)   translateY(0); }
                30%  { transform: scale(.9,1.1)   translateY(-15%); }
                50%  { transform: scale(1.05,.95) translateY(0); }
                57%  { transform: scale(1,1)      translateY(-7%); }
                64%  { transform: scale(1,1)      translateY(-3%); }
                100% { transform: scale(1,1)      translateY(0); }
            }
            @-o-keyframes jtb-bounce {
                0%   { transform: scale(1,1)      translateY(0); }
                10%  { transform: scale(1.1,.9)   translateY(0); }
                30%  { transform: scale(.9,1.1)   translateY(-15%); }
                50%  { transform: scale(1.05,.95) translateY(0); }
                57%  { transform: scale(1,1)      translateY(-7%); }
                64%  { transform: scale(1,1)      translateY(-3%); }
                100% { transform: scale(1,1)      translateY(0); }
            }
            @-ms-keyframes jtb-bounce {
                0%   { transform: scale(1,1)      translateY(0); }
                10%  { transform: scale(1.1,.9)   translateY(0); }
                30%  { transform: scale(.9,1.1)   translateY(-15%); }
                50%  { transform: scale(1.05,.95) translateY(0); }
                57%  { transform: scale(1,1)      translateY(-7%); }
                64%  { transform: scale(1,1)      translateY(-3%); }
                100% { transform: scale(1,1)      translateY(0); }
            }

    /*----- Jelly ------*/
        .jtbI-jelly {
            animation: jtb-jelly var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-jelly var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-jelly var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-jelly var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-jelly var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-jelly {
                0% {transform: scale(1, 1);}
                25% { transform: scale(0.9, 1.1); }
                50% { transform: scale(1.1, 0.9); }
                75% { transform: scale(0.95, 1.05); }
                100% {transform: scale(1, 1);}
            }
            @-moz-keyframes jtb-jelly {
                0% {transform: scale(1, 1);}
                25% { transform: scale(0.9, 1.1); }
                50% { transform: scale(1.1, 0.9); }
                75% { transform: scale(0.95, 1.05); }
                100% {transform: scale(1, 1);}
            }
            @-webkit-keyframes jtb-jelly {
                0% {transform: scale(1, 1);}
                25% { transform: scale(0.9, 1.1); }
                50% { transform: scale(1.1, 0.9); }
                75% { transform: scale(0.95, 1.05); }
                100% {transform: scale(1, 1);}
            }
            @-o-keyframes jtb-jelly {
                0% {transform: scale(1, 1);}
                25% { transform: scale(0.9, 1.1); }
                50% { transform: scale(1.1, 0.9); }
                75% { transform: scale(0.95, 1.05); }
                100% {transform: scale(1, 1);}
            }
            @-ms-keyframes jtb-jelly {
                0% {transform: scale(1, 1);}
                25% { transform: scale(0.9, 1.1); }
                50% { transform: scale(1.1, 0.9); }
                75% { transform: scale(0.95, 1.05); }
                100% {transform: scale(1, 1);}
            }

    /*----- Swing ------*/
        .jtbI-swing {
            transform-origin: var(--jtbI-transform-origin);
            animation: jtb-swing var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-swing var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-swing var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-swing var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-swing var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-swing {
                20% { transform: rotate(15deg); }   
                40% { transform: rotate(-10deg); }
                60% { transform: rotate(5deg); }    
                80% { transform: rotate(-5deg); }   
                100% { transform: rotate(0deg); }
            }
            @-moz-keyframes jtb-swing {
                20% { transform: rotate(15deg); }   
                40% { transform: rotate(-10deg); }
                60% { transform: rotate(5deg); }    
                80% { transform: rotate(-5deg); }   
                100% { transform: rotate(0deg); }
            }
            @-webkit-keyframes jtb-swing {
                20% { transform: rotate(15deg); }   
                40% { transform: rotate(-10deg); }
                60% { transform: rotate(5deg); }    
                80% { transform: rotate(-5deg); }   
                100% { transform: rotate(0deg); }
            }
            @-o-keyframes jtb-swing {
                20% { transform: rotate(15deg); }   
                40% { transform: rotate(-10deg); }
                60% { transform: rotate(5deg); }    
                80% { transform: rotate(-5deg); }   
                100% { transform: rotate(0deg); }
            }
            @-ms-keyframes jtb-swing {
                20% { transform: rotate(15deg); }   
                40% { transform: rotate(-10deg); }
                60% { transform: rotate(5deg); }    
                80% { transform: rotate(-5deg); }   
                100% { transform: rotate(0deg); }
            }

    /*----- Shake ------*/
        .jtbI-shake {
            transform-origin: center;
            animation: jtb-shake var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-shake var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-shake var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-shake var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-shake var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-shake {
                0% { transform: rotate(0deg); }
                18% { transform: rotate(15deg); }   
                26% { transform: rotate(-5deg); }
                34% { transform: rotate(7.5deg); }
                42% { transform: rotate(-2.5deg); }
                50% { transform: rotate(0deg); }
                58% { transform: rotate(15deg); }   
                66% { transform: rotate(-5deg); }
                74% { transform: rotate(7.5deg); }
                82% { transform: rotate(-2.5deg); }
                90% { transform: rotate(0deg); }
                100% { transform: rotate(0deg); }
            }
            @-moz-keyframes jtb-shake {
                0% { transform: rotate(0deg); }
                18% { transform: rotate(15deg); }   
                26% { transform: rotate(-5deg); }
                34% { transform: rotate(7.5deg); }
                42% { transform: rotate(-2.5deg); }
                50% { transform: rotate(0deg); }
                58% { transform: rotate(15deg); }   
                66% { transform: rotate(-5deg); }
                74% { transform: rotate(7.5deg); }
                82% { transform: rotate(-2.5deg); }
                90% { transform: rotate(0deg); }
                100% { transform: rotate(0deg); }
            }
            @-webkit-keyframes jtb-shake {
                0% { transform: rotate(0deg); }
                18% { transform: rotate(15deg); }   
                26% { transform: rotate(-5deg); }
                34% { transform: rotate(7.5deg); }
                42% { transform: rotate(-2.5deg); }
                50% { transform: rotate(0deg); }
                58% { transform: rotate(15deg); }   
                66% { transform: rotate(-5deg); }
                74% { transform: rotate(7.5deg); }
                82% { transform: rotate(-2.5deg); }
                90% { transform: rotate(0deg); }
                100% { transform: rotate(0deg); }
            }
            @-o-keyframes jtb-shake {
                0% { transform: rotate(0deg); }
                18% { transform: rotate(15deg); }   
                26% { transform: rotate(-5deg); }
                34% { transform: rotate(7.5deg); }
                42% { transform: rotate(-2.5deg); }
                50% { transform: rotate(0deg); }
                58% { transform: rotate(15deg); }   
                66% { transform: rotate(-5deg); }
                74% { transform: rotate(7.5deg); }
                82% { transform: rotate(-2.5deg); }
                90% { transform: rotate(0deg); }
                100% { transform: rotate(0deg); }
            }
            @-ms-keyframes jtb-shake {
                0% { transform: rotate(0deg); }
                18% { transform: rotate(15deg); }   
                26% { transform: rotate(-5deg); }
                34% { transform: rotate(7.5deg); }
                42% { transform: rotate(-2.5deg); }
                50% { transform: rotate(0deg); }
                58% { transform: rotate(15deg); }   
                66% { transform: rotate(-5deg); }
                74% { transform: rotate(7.5deg); }
                82% { transform: rotate(-2.5deg); }
                90% { transform: rotate(0deg); }
                100% { transform: rotate(0deg); }
            }

    /*----- Flip ------*/
        .jtbI-flip {
            backface-visibility: visible !important;
            animation: jtb-flip var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-flip var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-flip var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-flip var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-flip var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-flip {
                0% {transform: rotateY(0deg);}
                50% {transform: rotateY(180deg);}
                100% {transform: rotateY(0deg);}
            }
            @-moz-keyframes jtb-flip {
                0% {transform: rotateY(0deg);}
                50% {transform: rotateY(180deg);}
                100% {transform: rotateY(0deg);}
            }
            @-webkit-keyframes jtb-flip {
                0% {transform: rotateY(0deg);}
                50% {transform: rotateY(180deg);}
                100% {transform: rotateY(0deg);}
            }
            @-o-keyframes jtb-flip {
                0% {transform: rotateY(0deg);}
                50% {transform: rotateY(180deg);}
                100% {transform: rotateY(0deg);}
            }
            @-ms-keyframes jtb-flip {
                0% {transform: rotateY(0deg);}
                50% {transform: rotateY(180deg);}
                100% {transform: rotateY(0deg);}
            }

    /*----- Flip Vertical ------*/
        .jtbI-flip-vertical {
            backface-visibility: visible !important;
            animation: jtb-flip-vertical var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-flip-vertical var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-flip-vertical var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-flip-vertical var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-flip-vertical var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-flip-vertical {
                0% {transform: rotateX(0deg);}
                50% {transform: rotateX(180deg);}
                100% {transform: rotateX(0deg);}
            }
            @-moz-keyframes jtb-flip-vertical {
                0% {transform: rotateX(0deg);}
                50% {transform: rotateX(180deg);}
                100% {transform: rotateX(0deg);}
            }
            @-webkit-keyframes jtb-flip-vertical {
                0% {transform: rotateX(0deg);}
                50% {transform: rotateX(180deg);}
                100% {transform: rotateX(0deg);}
            }
            @-o-keyframes jtb-flip-vertical {
                0% {transform: rotateX(0deg);}
                50% {transform: rotateX(180deg);}
                100% {transform: rotateX(0deg);}
            }
            @-ms-keyframes jtb-flip-vertical {
                0% {transform: rotateX(0deg);}
                50% {transform: rotateX(180deg);}
                100% {transform: rotateX(0deg);}
            }



    /*----- Spin ------*/
        .jtbI-spin{
            animation: jtb-spin var(--jtbI-duration) var(--jtbI-type);
            -moz-animation: jtb-spin var(--jtbI-duration) var(--jtbI-type);
            -webkit-animation: jtb-spin var(--jtbI-duration) var(--jtbI-type);
            -o-animation: jtb-spin var(--jtbI-duration) var(--jtbI-type);
            -ms-animation: jtb-spin var(--jtbI-duration) var(--jtbI-type);
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-spin {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-moz-keyframes jtb-spin {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-webkit-keyframes jtb-spin {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-o-keyframes jtb-spin {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-ms-keyframes jtb-spin {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
       
   /*----- Rotate ------*/
        .jtbI-rotate{
            animation: jtb-rotate var(--jtbI-duration) var(--jtbI-type) linear;
            -moz-animation: jtb-rotate var(--jtbI-duration) var(--jtbI-type) linear;
            -webkit-animation: jtb-rotate var(--jtbI-duration) var(--jtbI-type) linear; 
            -o-animation: jtb-rotate var(--jtbI-duration) var(--jtbI-type) linear;
            -ms-animation: jtb-rotate var(--jtbI-duration) var(--jtbI-type) linear;
        }
        /*----- Keyframes ------*/ 
            @keyframes jtb-rotate {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-moz-keyframes jtb-rotate {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-webkit-keyframes jtb-rotate {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-o-keyframes jtb-rotate {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }
            @-ms-keyframes jtb-rotate {
                from {transform: rotate(0deg);}
                to {transform: rotate(360deg);}
            }