/*
 ▄▄▄       ██▓███   ▄▄▄       ▄████▄   ██░ ██ ▓█████     ██▓  ▄████  ███▄    █  ██▓▄▄▄█████▓▓█████
▒████▄    ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██░ ██▒▓█   ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█   █ ▓██▒▓  ██▒ ▓▒▓█   ▀
▒██  ▀█▄  ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▀▀██░▒███      ▒██▒▒██░▄▄▄░▓██  ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█  ▄    ░██░░▓█  ██▓▓██▒  ▐▌██▒░██░░ ▓██▓ ░ ▒▓█  ▄
 ▓█   ▓██▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒   ░██░░▒▓███▀▒▒██░   ▓██░░██░  ▒██▒ ░ ░▒████▒
 ▒▒   ▓▒█░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░ ▒ ░░▒░▒░░ ▒░ ░   ░▓   ░▒   ▒ ░ ▒░   ▒ ▒ ░▓    ▒ ░░   ░░ ▒░ ░
  ▒   ▒▒ ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░▒░ ░ ░ ░  ░    ▒ ░  ░   ░ ░ ░░   ░ ▒░ ▒ ░    ░     ░ ░  ░
  ░   ▒   ░░         ░   ▒   ░         ░  ░░ ░   ░       ▒ ░░ ░   ░    ░   ░ ░  ▒ ░  ░         ░
      ░  ░               ░  ░░ ░       ░  ░  ░   ░  ░    ░        ░          ░  ░              ░  ░
*/

/*
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
*/

@import "../css/syntaxhighlighter.css";


$theme-colors: (
     "primary": #055799,
     "secondary": #b02032,
    'gray': #e9e9e9,
    'shadow-gray': #d5d5d5,
     'ignite-red': #f20025,
);

@import "../node_modules/bootstrap/scss/bootstrap";

body {
    font-family: 'Open Sans', sans-serif;
    font-size: 14px;
    margin: 0;
    padding: 0;
}
strong {
    font-weight: 600;
}



.sticky-top {
    box-shadow: 0 4px 8px 0 #b5b5b5;
    background-color: #ffffff;
}


/** start header */
#header {
    

    #nav {
        padding: 0.5rem 0;
        margin-bottom: 0 !important;
        .navbar-brand {
            img {
                width: 12rem;
                transition: all 0.5s ease;
            }
        }
        .navbar-nav {
            position: absolute;
            right: 0;

            > li.nav-item {
                font-size: 16px;
                transition: width 0.2 ease, font-size 0.5s ease;
                width:130px;
                
            }
            

            li.nav-item {
                

                a {
                    display: inline-block;
                    padding-right: 1.3em;
                    padding-left: 1.3em;
                    cursor: pointer;
                    transition: padding 0.5s ease;
                    
                }
                .dropdown-toggle:after {
                    display: none;
                }

                ul.dropdown-menu {
                    padding: 0.5em 0 0 1.3em;
                    

                    box-shadow:  0px 5px 8px 0px theme-color('shadow-gray'), 0px -5px 8px 0px theme-color('shadow-gray');
                    border-bottom: 5px solid theme-color('ignite-red');
                    border-radius: 0;

                    .dropdown-subtitle {
                        font-weight: 400;
                        font-size: 16px;
                        margin-top: 0.6em;
                        border-bottom: 3px solid theme-color('gray');
                        margin-bottom: 0.5em;

                        padding-bottom: 0.5em;

                    }

                    .dropdown-item {
                        padding: 0;
                        transition: background-color 200ms ease-in-out;
                        a {
                            padding: 0.4em 1.5em 0.4em 1em;
                            color: #000;
                            // padding: 0;
                            font-size: 14px;
                            display: block;
                            transition: none;;
                        }
                        a:hover {
                            text-decoration: none;
                        }
                    }
                    .dropdown-item:hover {
                        background-color: lighten(theme-color('gray'), 5%);
                        border-left:3px solid theme-color('secondary');
                            // -webkit-animation: menuitemanimation 1000ms linear  both;
                            // animation: menuitemanimation 1000ms linear  both;   
                        
                        a {
                            padding-left: calc(1em - 3px);
                            
                        }
                    }
                    .dropdown-item:active {
                        background-color: #ffffff;
                    }

                    .dropdown-item:last-child {
                        border-bottom: 5px solid theme-color('secondary');
                        padding-bottom: 1em;
                        margin-bottom: -5px;
                    }
                }
                
            }
            li.nav-item.show {
                > a.dropdown-toggle {
                    font-weight: 700;
                    
                }
            }
        }
    }
}
#header.shrink {

    #nav .navbar-nav > li.nav-item {
        // font-size: 15px !important;
        width: 120px;
    }
    .btn-secondary {
        padding: 0.3rem 1.2rem 0.4rem !important;
    }

    img {
        width: 8rem !important;   
    }
}

#footer {
    
    box-shadow: 
        inset 0px 15px 8px -10px theme-color('shadow-gray'),
        inset 0px -15px 8px -10px theme-color('shadow-gray');

        .wrapper {
            background: rgb(24,124,204);
            background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 45%, rgba(242,242,242,0) 45%);
            background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 45%, rgba(242,242,242,0) 45%);
            background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 45%, rgba(242,242,242,0) 45%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#f2f2f2",GradientType=1);
    
            padding-top: 3rem;
        }

    nav {
        ul {
            
            li {
                padding:5px;
                a {
                    color: #ffffff;
                }
            }
        }
    }
    .copyright {
        padding-left: 33%;
        
        .footer-logos {
            display: flex;
            justify-content: space-between;


            .ignite {
                img {
                    width: 190px;
                }
            }
            .apache {
                img {
                    width: 80px;
                }
            }
        }
    }
}



/** end header */

.bg-gray-shadow {
    background-color: theme-color("gray");


}

#main-banner {
    

    
    
    box-shadow: 
        inset 0px 15px 8px -10px theme-color('shadow-gray'),
        inset 0px -15px 8px -10px theme-color('shadow-gray');

    .wrapper {

        background: rgb(24,124,204);
        background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 14%, rgba(242,242,242,0) 14%, rgba(242,242,242,0) 80%, rgba(10,90,154,1) 80%, rgba(24,124,204,1) 100%);
        background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 14%, rgba(242,242,242,0) 14%, rgba(242,242,242,0) 80%, rgba(10,90,154,1) 80%, rgba(24,124,204,1) 100%);
        background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 14%, rgba(242,242,242,0) 14%, rgba(242,242,242,0) 80%, rgba(10,90,154,1) 80%, rgba(24,124,204,1) 100%);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);

        // background: rgb(24,124,204);
        // background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%);
        // background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%);
        // background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%);
        // filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#f2f2f2",GradientType=1);

        padding: 5em 0;
    }


    h1 {
        font-weight: 300;
        font-size: 32px;
        line-height: 1.4em;
        text-align: center;

        strong {
            display: block;
        }
    }
    p {
        font-size: 24px;
        font-weight: 300;
        width: 80%;
        line-height: 1.5em;
        margin-bottom: 1.5em;
    }
    .btn {
        font-size: 18px;
        line-height: 1.5em;
        padding: 0.5rem 1.5rem;
        margin-right: 30px;

        i {
            font-size: 24px;
            margin-right: 8px;
            vertical-align: middle;
        }
    }
    .buttons {
        text-align: center;
        margin-top: 3rem;
    }
    .btn-getting-started {
        background-color: #ffffff;

        i {
            color: theme-color('secondary');
        }
    }

}

#github-stats-bar {
    padding:  0.5rem 0 0.2rem;
    background-color: lighten(theme-color('gray'), 5%);
    
    a {
        color: lighten(theme-color('gray'), 5%);
    }

    

    .twitter-follow {
        iframe {
            position: absolute !important;
            top: 5px;
            right: 0;
        }
    }
}

.github-stats {
    .github-link {
        
        .fa-github {
            color: theme-color('primary');
            font-size: 30px;
            margin-right: 1rem;
            vertical-align: top;
        }
    }
}
.github-wrapper {
    .fa-github {
        color: #000000 !important;
    }
    
    > * {
        display: inline-block;
        
    }
    * {
        vertical-align: top !important; 
        line-height: 24px;;
    }

}

#intro-text {
    // margin-bottom: 3rem; 
    padding: 5rem 0 0;
    box-shadow:  inset 0px 15px 8px -10px #d5d5d5;

    p {
        border-radius: 5px;
        padding: 0 10rem;
        font-size: 24px;
        text-align: center;
        margin-bottom: 0;
        font-weight: 300;
    }
}


#home-deployment-options {
    box-shadow: inset 0px -15px 8px -10px theme-color('shadow-gray'); 
    padding: 4rem 0 3rem;

    background: #ffffff;
    background: linear-gradient(180deg, #ffffff 0%, theme-color('gray') 30%);
    // background-color: theme-color('gray');
   
    h2 {
        margin-bottom: 3rem;
    }

    .row {
        padding: 0 3rem; 
        
        .option {
            padding: 0 40px; 
        }
     
        a {
            display: block;
            text-align: center;
            color: #000;
            margin-bottom: 3em; 
            
            h3 {
                font-size: 20px;
                line-height: 1.5em;
                font-weight: 600; 

                span {
                    display: block; 
                }
            }
        
            p {
                font-size: 16px;
                font-weight: 400;
                line-height: 1.6em; 
            }
        
            .icon-wrapper{
                border-radius: 50px;
                padding: 1.5rem;
                background-color: theme-color('secondary');
                transition: all 0.3s ease-in-out;
                margin: 1rem auto 2rem;
                
                width: 100px;
                height: 100px;

                > svg {
                    width: 100%;
                    height: 100%;

                    
                    // fill: theme-color('secondary');
                    fill: #ffffff;
                    
                    
                }
            }
        }
        a:hover {
            text-decoration: none; 
            
            .icon-wrapper {
                
                background-color: theme-color('primary');
                
                svg {
                    
                    fill: #ffffff; 
                    
                }
            }
        }
    }
}

#home-use-cases {
    padding: 5rem 0;
    background-color: #ffffff;
    // box-shadow: inset 0px 15px 8px -10px #e5e5e5;

    #intro-text {
        
        margin-bottom: 50px;
        
        p {
            background-color: theme-color('gray');
            border-radius: 5px;
            padding: 40px 90px;
            font-size: 18px;
            line-height: 2em;
        }
    }
    #intro-text:after {
        content: "";
        width: 25vw;
        height: 6px;
        background-color: theme-color('gray');
        display: block;
        margin: 40px auto 50px;
        border-radius: 5px;;
    }

    .container {
        .row {
            margin-bottom: 2rem;
            margin-top: 4rem;
        }

        
        a.simplified-img-a {
            cursor: zoom-in;
        }
        
        
        img {
            max-width: 100%;
            margin: 0 auto;
            display: block;
        }

        .txt-wrapper {
            h3 {
                font-size: 20px;
                margin-bottom: 15px;
                font-weight: 600;
            }
            display: block;
            padding: 30px;


            p {
                font-size: 16px;
                line-height: 2em;
                margin-bottom: 20px;
            }
            .btn {
                padding: 8px 15px;
            }
        }
    }

}

.modal-dialog {
    
    .modal-content {
        button.close {
            width: 40px;
            position: absolute;
            right: 10px;
            top: 10px;
        }

    }
}

#diagramModal {
    .modal-dialog {
        max-width: 90vw !important;

        .modal-content {
            height: 95vh;

            

            img {
                height: 95vh;
                max-width: 60vw;
                margin: 0 auto;
            }
        }
    }
}

#videoModal {
    .modal-dialog {
        max-width: 68vw;

        .modal-content {
            .modal-header {
                h4 {
                    font-weight: 300;
                }
            }
            .modal-body {
                iframe {
                    width: 100% !important;
                    height: 40vw !important;
                }
            }
        }
    }
}

section.section-block {
    
    h2 {
        text-align: center;
        font-size: 32px;
        text-transform: uppercase;
        margin-bottom: 2em;

        strong {
            color: theme-color('primary');
            font-weight: 900;
        }
    }
}


#home-features {

    

    box-shadow: 
        inset 0px 15px 8px -10px theme-color('shadow-gray'),
        inset 0px -15px 8px -10px theme-color('shadow-gray');

    .wrapper {
        background: rgb(24,124,204);
        background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%, rgba(242,242,242,0) 95%, rgba(10,90,154,1) 95%, rgba(24,124,204,1) 100%);
        background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%, rgba(242,242,242,0) 95%, rgba(10,90,154,1) 95%, rgba(24,124,204,1) 100%);
        background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%, rgba(242,242,242,0) 95%, rgba(10,90,154,1) 95%, rgba(24,124,204,1) 100%);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);

        padding: 5rem 0;
        }

        .row {
            padding: 0 3rem;
        }
    .feature {
        padding: 0 40px;

        a {
            display: block;
            text-align: center;
            color: #000;
            margin-bottom: 3em;;
            

            h3 {
                font-size: 20px;
                line-height: 1.5em;
                font-weight: 600;
                span {
                    display: block;
                }
            }

            p {
                font-size: 16px;
                font-weight: 400;;
                line-height: 1.6em;
            }
            svg {
                width: 100px;
                height: 100px;
                fill: theme-color('secondary');
                transition: all 0.5s ease-in-out;
                background-color: #ffffff;
                border-radius: 0px;
                padding: 1.5em;
                margin-top: 2em;
                margin-bottom: 1em;
            }
            
        }
        a:hover {
            text-decoration: none;
            
            svg {
                background-color: theme-color('secondary');
                fill: #ffffff;
                
                // border-radius: 300px;
            }
        }
    }
}

#home-extras {
    padding: 5rem 0;
    
    #home-links {
        ul {
            padding: 0 6rem;
            li {
                list-style: none;

                a {
                    display: flex;
                    justify-content: start;
                    align-items: center;
                    padding: 10px 20px;
                    margin-bottom: 25px;
                    transition: all 0.2s ease-in-out;

                    svg {
                        background-color: theme-color('secondary');
                        border-radius: 150px;
                        width: 55px;
                        height: 55px;
                        fill: #ffffff;
                        transition: all 0.3s ease-in-out;
                        padding: 5px;
                        margin-right: 2em;
                    }
                    span {
                        color: #000;
                        font-size: 20px;
                        font-weight: 600;
                    }
                }
                a:hover {
                    background-color: theme-color('gray') !important;
                    border-radius: 5px;
                    text-decoration: none;

                    svg {
                        background-color: theme-color('primary');
                    }
                }

            }
        }
    }
    #home-twitter {
        .pre-scrollable {
            max-height: 430px;
            border-top: 1px solid theme-color('gray');
            border-bottom: 1px solid theme-color('gray');
        }
        .follow-widget {
            text-align: right;
            margin-top: 10px;
        }
    }
}

.documentation {
    padding-top: 0;

    h2 {
        text-align: center;
        text-transform: uppercase;
        font-weight: 400;
        font-size: 24px;
        margin-top: 4em;
        margin-bottom: 1em;
    }

    h2:after {
        content: " ";
        display: block;
        width: 200px;
        border-bottom: 1px solid #dddddd;
        border-top: 1px solid #dddddd;
        margin: 1.5em auto 0;
        height: 7px;
    }

    p.intro {
        text-align: center;
        padding: 0 3em;
        font-size: 16px;
        margin-bottom: 2em;
    }


    .icons-list {
        padding-left: 0;
        
        li {
            list-style: none;

        
            a {
                color: #000;
                text-align: center;
                display: block;
                width: 100%;
                min-height: 8em;
                font-size: 16px;
                line-height: 1.6em;
                margin-bottom: 4em;;
                transition: all 0.4s ease-out;


                svg {
                    margin: 0 auto;
                    display: block;
                    width: 3.5em;
                    height: 5em;
                    fill: #c8c8c8;
                    transition: all 0.4s ease-out;
                }

                
            }
            a:after {
                content:"";
                border-right: 1px solid #cccccc;
                height: 6em;
                width: 1px;
                float: right;
                display: block;
                position: absolute; right: 0; 
                top: calc(50% - 4em);
            }
        
            a:hover {
                color:  theme-color('secondary');
                text-decoration: none;
                > svg {
                    width: 4em;
                    fill: theme-color('secondary');
                }
            }
        }

        li:last-child, li:nth-child(4n) {
            a:after {
                display: none;
            }
        }
    }
}



/***
* Styles for internal pages 
*/
article {
    
    padding: 0px 0 80px;
    font-size: 16px;
    line-height: 2em;

    header {
        
        background: -moz-linear-gradient(45deg, rgba(242,242,242,0) 91%, rgba(10,90,154,1) 91%, rgba(24,124,204,1) 100%);
        background: -webkit-linear-gradient(45deg, rgba(242,242,242,0) 91%, rgba(10,90,154,1) 91%, rgba(24,124,204,1) 100%);
        background: linear-gradient(45deg, rgba(242,242,242,0) 91%, rgba(10,90,154,1) 91%, rgba(24,124,204,1) 100%);
        filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);
        background-color: theme-color('gray');
        box-shadow: 0px 14px 30px 10px theme-color('gray');
        // color: #000000;
        padding: 4rem 0 1rem;
        margin-bottom: 5rem;

        h1 {
            color: #000000;
        }
    }

    h1, h2 {
        font-size: 36px;
        font-weight: 300;
        text-transform: uppercase;
        margin-bottom: 0;

        strong {
            font-weight: bold;
            color: theme-color('primary')
        }
    }

    h2 {
        font-size: 26px;
        margin-top: 50px;
        margin-bottom: 30px;
        // clear: both;
    }

    h3 {
        font-size: 26px;
        font-weight: 500;
        margin-top: 40px;
        margin-bottom: 20px;
    }



    .fa-anchor {
        font-size: 14px;
    }

    p {
        
    }

    ul {
        li {
            margin-bottom: 1em;
        }
    }

    .tab-content {
        margin-top: 30px;
        margin-bottom: 40px;
    }

    .jumbotron {
        margin-top: 80px;
        padding: 2rem;
        clear: both;

        .title {
            font-size: 26px;
            font-weight: 500;;
        }
    }

    img.diagram-right {
        max-width: 50%;
        float: right;
        margin: 0 0 2rem 2rem;
        max-height: 600px;
    }

    .fact-question {
        padding-bottom: 35px;
    }
    .nav-tabs > li > a {
        margin-right: 2px;
        line-height: 1.42857;
        border: 1px solid transparent;
        border-radius: 4px 4px 0 0;
    }
    .nav > li > a {
        position: relative;
        display: block;
        padding: 10px 15px;
        overflow: hidden;
    }
    .nav-tabs > li {
        float: left;
        margin-bottom: -1px;
    }
    .nav-tabs > li > a.active, .nav-tabs > li.active > a, .nav-tabs > li.active > a:hover, .nav-tabs > li.active > a:focus {
        color: #555555;
        background-color: #fff;
        border: 1px solid #ddd;
        border-bottom-color: transparent;
        cursor: default;
    }
    .nav-tabs {
        border-bottom: 1px solid #ddd;
    }

    #events {
        .row-event {
            margin-bottom: 4rem;
            border-bottom: 2px #e1e1e1 dotted;
            padding-bottom: 2rem;

            .round-icon-block {
                background-color: theme-color('gray');
                border-radius: 10px;
                padding: 1rem;

                img {
                    margin: 0 auto;
                    max-width: 75%;
                    
                    display: block;
                }
                p {
                    text-align: center;
                    margin-top: 10px;
                    font-weight: 300;
                    strong {
                        color: theme-color('primary') !important;
                        font-weight: bold;
                    }
                }
            }

            h3 {
                margin-top: 0;
                margin-bottom: 10px;
            }

            
                p {
                    margin-top: 1rem;
                    
                }
            
            .event-date {
                font-size: 16px;
                color: #666;
                margin-bottom: 0px;
                line-height: 1.5em;
            }
            .event-date:before {
                content: "•";
                font-size: 22px;
                color: theme-color('secondary');
                display: inline-block;
                margin-right: 5px;
                line-height: 1.5em;
                vertical-align: middle;
            }
        }
        
        
    }

    #meetups-groups {

        #meetups-tabs {
            .round-icon-block-tab {
                background-color: theme-color('gray');
                border-radius: 10px;
                padding: 5px;
                display: block;
                float: left;
                margin-right: 8px;
                
                img {
                    margin: 0px auto;
                    max-width: 20px;
                    width: 20px;
                    display: block;
                }
            }
            .continent {
                display: block;
                float: left;
            }
            .active .continent {
                font-weight: bold;
                padding-top: 1px;
            }
        }
        .meet-groups {
            h4 {
                font-size: 1.2rem;
                font-weight: 600;
                
            }

            ul {
                padding-bottom: 25px;
            }
        }
    }

    #screencasts {
        a.video {
            display: block;
            background-color: theme-color('gray');
            background-size: 100%;
            width: 90%;
            padding: 1rem 0;
            text-align: center;
            font-size: 18px;
            margin: 0 auto;
            border-top: 5px solid #000;
            border-bottom: 5px solid #000;

            p {
                line-height: 1.8em;
                font-weight: 300;
                color: theme-color('secondary');
                text-transform: uppercase;
                
                margin-bottom: 0;
            }
            span {
                font-size: 15px;
                color: #666666;
            }
        }
        a:after {
            content: "\f16a";
            font-family: FontAwesome;
            font-size: 32px;
            color: theme-color('secondary');
            display: block;
        }
        a:hover {
            text-decoration: none;;
        }
    }

    .btn-group-export {
        float: right;

        .table-export-options {
            padding: 1rem;

            li {
                text-align: center;
                a {
                    display: block;
                    width: 100%;
                    transition: background-color 500ms ease-out;
                }
                a:hover {
                    background-color: theme-color('gray');
                    text-decoration: none;
                }
            }
            li:last-child {
                margin-bottom: 0;
            }
        }
    }
}





  /* Generated with Bounce.js. Edit at http://bouncejs.com#%7Bs%3A%5B%7BT%3A%22t%22%2Ce%3A%22b%22%2Cd%3A750%2CD%3A0%2Cf%3A%7Bx%3A0%2Cy%3A-5%7D%2Ct%3A%7Bx%3A0%2Cy%3A0%7D%2Cs%3A1%2Cb%3A9%7D%5D%7D */
  
  @-webkit-keyframes menuitemanimation { 
    0% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -5, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -5, 0, 1); }
    2.5% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -3.034, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -3.034, 0, 1); }
    4.9% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.368, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.368, 0, 1); }
    7.31% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.644, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.644, 0, 1); }
    9.71% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.32, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.32, 0, 1); }
    12.41% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.646, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.646, 0, 1); }
    15.02% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.366, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.366, 0, 1); }
    17.62% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.68, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.68, 0, 1); }
    20.22% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1.042, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1.042, 0, 1); }
    22.92% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.743, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.743, 0, 1); }
    25.53% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.168, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.168, 0, 1); }
    28.13% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.304, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.304, 0, 1); }
    30.73% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.468, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.468, 0, 1); }
    36.04% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.077, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.077, 0, 1); }
    41.34% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.21, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.21, 0, 1); }
    51.85% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.095, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.095, 0, 1); }
    62.36% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.042, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.042, 0, 1); }
    72.87% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.019, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.019, 0, 1); }
    83.48% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.009, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.009, 0, 1); }
    93.99% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.004, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.004, 0, 1); }
    100% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 
  }
  
  @keyframes menuitemanimation { 
    0% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -5, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -5, 0, 1); }
    2.5% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -3.034, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -3.034, 0, 1); }
    4.9% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.368, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.368, 0, 1); }
    7.31% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.644, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.644, 0, 1); }
    9.71% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.32, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 2.32, 0, 1); }
    12.41% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.646, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1.646, 0, 1); }
    15.02% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.366, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.366, 0, 1); }
    17.62% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.68, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.68, 0, 1); }
    20.22% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1.042, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1.042, 0, 1); }
    22.92% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.743, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.743, 0, 1); }
    25.53% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.168, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.168, 0, 1); }
    28.13% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.304, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.304, 0, 1); }
    30.73% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.468, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.468, 0, 1); }
    36.04% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.077, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.077, 0, 1); }
    41.34% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.21, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.21, 0, 1); }
    51.85% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.095, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.095, 0, 1); }
    62.36% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.042, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.042, 0, 1); }
    72.87% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.019, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.019, 0, 1); }
    83.48% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.009, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, -0.009, 0, 1); }
    93.99% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.004, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0.004, 0, 1); }
    100% { -webkit-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } 
  }
  
  
  
  



@media (max-width: 1400px) {
    #main-banner {
    

        .wrapper {
    
            background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 9%, rgba(242,242,242,0) 9%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 9%, rgba(242,242,242,0) 9%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 9%, rgba(242,242,242,0) 9%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);
        }
    }

}

@media (max-width: 1280px) {
    #main-banner {
    

        .wrapper {
    
            background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 7%, rgba(242,242,242,0) 7%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 7%, rgba(242,242,242,0) 7%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 7%, rgba(242,242,242,0) 7%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);
        }
    }

}

// Large devices (desktops, less than 1200px)
// @media (max-width: 1199.98px) { ... }
@include media-breakpoint-down(lg) {
    #main-banner {
    

        .wrapper {
    
            background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 7%, rgba(242,242,242,0) 7%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 7%, rgba(242,242,242,0) 7%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 7%, rgba(242,242,242,0) 7%, rgba(242,242,242,0) 90%, rgba(10,90,154,1) 90%, rgba(24,124,204,1) 100%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);
        }
    }

    #intro-text {
        p {
            padding: 0;
        }
    }

    #home-use-cases {
        #use-cases-tabs {
            width: 85%;

            .active:after {
                left: calc(28% - 15px);
            }

            li:last-child {
                .active:after {
                    left: calc(73% - 15px);
                }
            }
        }
    }
    #home-extras {
        #home-links {
            ul {
                padding: 0;
            }
        }
    }
    #home-features {
        .feature {
            a {
                p {
                    font-size: 15px;
                }
            }
        }
    }
}

// Medium devices (tablets, less than 992px)
// @media (max-width: 991.98px) { ... }
@include media-breakpoint-down(md) {
    
    #intro-text {
        p {
            font-size: 20px;
        }
    }

    article {
        header {
            padding-top: 3rem;
            h1 {
                font-size: 32px;
            }
        }

        #screencasts {
            a.video {
                font-size: 16px;
                width: 100%;

                p {
                
                }
                span {
                    font-size: 13px;
                }
            }
            a:after {
                
                font-size: 28px;
            }
            
        }

        #videoModal {
            .modal-dialog {
                max-width: 96vw;
        
                .modal-content {
                    
                    .modal-body {
                        iframe {
                            
                            height: 60vw !important;
                        }
                    }
                }
            }
        }
    }

    #home-deployment-options {
        .row {
            a {
                svg {
                    width: 85px;
                    height: 85px;
                }
                h3 {
                    font-size: 18px;

                }
                p {
                    font-size: 14px;
                }
            }
            .option {
                padding: 0 25px !important;
            }
            
        }
    }


    #header {
        #nav {
            .navbar-nav {
                position: relative;
                li.nav-item {
                    
                    a.btn {
                        margin-left: 1.3em;
                    }
                    
                    ul.dropdown-menu {
                        border: 0;
                        box-shadow: none;
                        margin-bottom: 2rem;
                        margin-left: 2rem;
                        border-left: 5px solid theme-color('secondary');

                        .dropdown-item:last-child {
                            border-bottom: none;
                        }
                    }
                }
            }
            
            
            .navbar-brand {
                img {
                    width: 9rem;
                }
            }
            .navbar-toggler-icon {
                i {
                    font-size: 2rem;
                }
            }
        }
    }
    #header.shrink 
        #nav .navbar-nav > li.nav-item {
            width: 100%;
        }
    

    #home-use-cases {
        #use-cases-tabs {
            width: 100%;

            .active:after {
                left: calc(24% - 15px);
            }
            li:last-child {
                .active:after {
                    left: calc(77% - 15px);
                }
            }
        }
        #tabsContent {
            img {
                max-width: 75rem;
            }
            .txt-wrapper {
                width: 35rem;
            }
        }
    }
    #home-features {
        .row {
            padding: 0 2rem;
        }
        .feature {
            padding: 0 10px;
            a {
                h3 {
                    font-size: 18px;
                }
                p {
                    font-size: 14px;
                }
            }
        }
    }

    .jumbotron {
        margin-top: 80px;
        padding: 1rem;
        clear: both;
        > .container {
            padding: 0;
        }

        .title {
            font-size: 22px;
        }

        ul {
            padding-inline-start: 1.5rem;

            li {

            }
        }
    }
    
}

// Small devices (landscape phones, less than 768px)
// @media (max-width: 767.98px) { ... }
@include media-breakpoint-down(sm) {
    .twitter-follow {
        display: none;
    }

    article {
        img.diagram-right {
            max-width: 100%;
            float: right;
            margin: 1rem;
        }
        
        
        #screencasts {
            a.video {
                font-size: 19px;
                max-width: 50vw;
                height: 28vw;
                margin-bottom: 2em;

                span {
                    font-size: 15px;
                }
            }
            a:after {
                
                font-size: 34px;
            }
            
        }
    }

    #main-banner {
        .wrapper {
            background: -moz-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%, rgba(242,242,242,0) 95%, rgba(10,90,154,1) 95%, rgba(24,124,204,1) 100%);
            background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%, rgba(242,242,242,0) 95%, rgba(10,90,154,1) 95%, rgba(24,124,204,1) 100%);
            background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 5%, rgba(242,242,242,0) 5%, rgba(242,242,242,0) 95%, rgba(10,90,154,1) 95%, rgba(24,124,204,1) 100%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#187ccc",GradientType=1);
        }
    }
    
    #home-deployment-options {
        #intro-text { 
            p {
                font-size: 18px;
                padding: 30px 0;
            }
        }
    }
    #home-use-cases {
        #tabsContent {
            padding: 0;

            .txt-wrapper {
                width: 32rem;

                p {
                    font-size: 14px;
                }
            }
        }
        #use-cases-tabs {
            .btn {
                min-height: 90px;
            }
            .active:after {
                top: 4.8em;
            }
        }
    }
    #home-extras {
        #home-links {
            ul {
                li {
                    a {
                        padding: 5px 0;
                    }
                }
            }
        }
    }

    #footer {

        nav {
            ul {
                display: flex;
                justify-content: space-evenly;
                li {
                
                    a {
                        color: #000;
                    }
                }
            }
        }

        .wrapper {
             background: none;
        }
        .copyright {
            padding: 0;
            text-align: center;

            .footer-logos {
                justify-content: space-evenly;
                padding-bottom: 20px;
            }
        }
    }
    
}

// Extra small devices (portrait phones, less than 576px)
// @media (max-width: 575.98px) { ... }
@include media-breakpoint-down(xs) { 
    #main-banner {
        h1 {
            font-size: 26px;
            text-align: center;
            
        }
        .buttons {
            text-align: center;
            align-items: center;
        }
        .btn {
            margin-bottom: 10px;
        }
    }
    #home-use-cases {
        #tabsContent {
            .txt-wrapper {
                width: 100%;
            }
        }
    }
    #home-extras {
        #home-links {
            ul {
                padding-left: 3em;
            }
        }
    }
    #home-features, #home-use-cases {
        h2 {
            strong {
                display: block;
            }
        }
    }
    article {
        header {
            margin-bottom: 2rem;
            padding-top: 2.5rem;
            h1 {
                font-size: 28px;
            }
        }

        img.diagram-right {
            float: none;
            margin: 1rem auto;
            max-width: 100% !important;
        }

        .jumbotron {
            padding: 1rem;
            .title {
                font-size: 24px;

            }
            .my-4 {
                margin-bottom: 1rem !important;
                margin-top: 1rem !important;
            }
        }
        .fact-question {
            padding-bottom: 1rem;

            h3 {
                font-size: 22px;
                margin-top: 1rem;
                
            }
        }
        .usecase-video {
            iframe {
                width: 100% !important;
                
            }
        }
        .documentation {
            h2 {
                margin-top: 2em;
            }
            .icons-list {
                li {
                    a {
                        margin-bottom: 2em;
                    }
                }
                li:last-child, li:nth-child(2n) {
                    a:after {
                        display: none;
                    }
                }
            }
        }
        #screencasts {
            a.video {
                max-width: 100%;
                height: 10em;
                margin-bottom: 1em;

                
            }
            
            
        }
    }
    #footer {
        nav {
            ul {
                flex-wrap: wrap;
            }
        }
    }
}


