#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) 50%, rgba(242,242,242,0) 50%);
            background: -webkit-linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 50%, rgba(242,242,242,0) 50%);
            background: linear-gradient(45deg, rgba(24,124,204,1) 0%, rgba(10,90,154,1) 50%, rgba(242,242,242,0) 50%);
            filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#187ccc",endColorstr="#f2f2f2",GradientType=1);
    
            padding-top: 3rem;
            padding-bottom: 3rem;
        }

    nav {
        h4 {
            font-size: 18px;
            font-weight: 600;
            color: #ffffff;
        }

        ul {
            
            li {
                padding: 3px;
                a {
                    color: #ffffff;
                    font-size: 12px;
                }
            }
        }
    }
    .copyright {
        padding-left: 25%;
        
        .footer-logos {
            display: flex;
            justify-content: flex-end;


            .ignite {
                img {
                    width: 150px;
                    margin-right: 25px;;
                }
            }
            .apache {
                img {
                    width: 60px;
                }
            }
        }
    }
}




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

    #footer {


        nav {

            h4 {
                color: #333;
                text-align: center;
            }
            
            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) { 
   
    #footer {
        nav {
            ul {
                flex-wrap: wrap;
            }
        }
    }
}


