*,
*:before,
*:after {
    box-sizing: border-box;
}


/*
--------------------------------------------------------------------------
 Typography 
--------------------------------------------------------------------------
 */

 :root {
    overflow-x: hidden;
    font-size: 16px;
    font-family: 'Open Sans', sans-serif;
    max-width: 100vw;
}

body {
    color: #444;
    font-size: inherit !important;
    font-family: inherit !important;
    font-weight: 500;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: 'Mulish', sans-serif;
    color: #5b005f;
}


/*  Links -------------------

 */

a {
    color: #5b005f;
    text-decoration: none;
}

a:focus,
a:hover {
    color: #5b005f;
}


/*
--------------------------------------------------------------------------
 Objects
--------------------------------------------------------------------------
 */

.disappear {
    transition: opacity .25s ease-in-out;
    /* opacity: 0; */
}

.centered {
    text-align: center;
}


/*  Wrappers
    *.wrapper acts as a more symantic stand in for <container><row><col-md-12></col-md-12></row></container> in sections of this build that don't require stacking columns 
 */

.wrapper {
    margin-right: auto;
    margin-left: auto;
    max-width: 100%;
    position: relative;
    height: inherit;
    padding-left: 15px;
    padding-right: 15px;
}

@media (min-width:768px) {
    body {
        --side-margin: calc((100vw - 750px) / 2);
    }
    .wrapper {
        width: 750px;
    }
}

@media (min-width:992px) {
    body {
        --side-margin: calc((100vw - 987px) / 2);
    }
    .wrapper {
        width: 970px;
    }
}

@media (min-width:1200px) {
    body {
        --side-margin: calc((100vw - 1170px) / 2);
    }
    .wrapper {
        width: 1170px;
    }
}

@media (min-width: 767px) {
    /*The following styles are meant to give more space to the label column in contact forms that are too narrow for the entire label to be read normally*/
    .col-md-5 form[action="contact_form_resp.php"] .col-sm-2,
    .col-md-4 form[action="contact_form_resp.php"] .col-sm-2,
    .col-md-3 form[action="contact_form_resp.php"] .col-sm-2,
    .col-md-2 form[action="contact_form_resp.php"] .col-sm-2,
    .col-md-1 form[action="contact_form_resp.php"] .col-sm-2 {
        width: 25%;
        padding-right: 1em;
    }
    .col-md-5 form[action="contact_form_resp.php"] .col-sm-10,
    .col-md-4 form[action="contact_form_resp.php"] .col-sm-10,
    .col-md-3 form[action="contact_form_resp.php"] .col-sm-10,
    .col-md-2 form[action="contact_form_resp.php"] .col-sm-10,
    .col-md-1 form[action="contact_form_resp.php"] .col-sm-10 {
        width: 75%;
        padding-left: 0;
    }
    .col-md-5 form[action="contact_form_resp.php"] .col-sm-offset-2,
    .col-md-4 form[action="contact_form_resp.php"] .col-sm-offset-2,
    .col-md-3 form[action="contact_form_resp.php"] .col-sm-offset-2,
    .col-md-2 form[action="contact_form_resp.php"] .col-sm-offset-2,
    .col-md-1 form[action="contact_form_resp.php"] .col-sm-offset-2 {
        margin-left: 25%;
    }
    /*^^Adjusts the form-group placement of the reCAPTCHA iframe and submit buttom to match the new widths from the styles above*/
}

grammarly-btn {
    display: none;
    /*If someone copy/pastes text from Grammarly it will add this invisible button and cause the page to scroll horizontally. This style hides that.*/
}


/*  Modals ---------------------------------
    ----------------------------------------
 */

.modal-open .modal {
    display: flex;
}

.modal-dialog {
    max-width: 260px;
    font-size: 16px;
    margin: auto;
}

.modal-header,
.modal-body {
    padding: .5rem 1rem;
}

.modal-header .close {
    opacity: 1;
    z-index: 1;
    position: relative;
}

.modal h2 {
    font-size: 20px;
    opacity: .9;
}

.modal a {
    display: block;
    margin-bottom: .5em;
}


/*  Login Forms ----------------------------
----------------------------------------
*/

.modal input[name="Username"],
.modal input[name="Password"] {
    width: 100%;
    padding-left: .25em;
    padding-right: .25em;
    margin-bottom: 0.5em;
    height: 2em;
    border: 1px solid rgba(68, 68, 68, .5);
}


/*
--------------------------------------------------------------------------
 Header
--------------------------------------------------------------------------
 */

header {
    padding: 0 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    z-index: 100;
    position: sticky;
    top: 0;
    box-shadow: 0 0 7px rgb(0 0 0 / 10%);
    background: white;
}


/*  Desktop Menu ---------------------------
    ----------------------------------------
 */

header>ul {
    display: flex;
    flex-wrap: wrap;
}

header>ul>li {
    padding-left: 22px;
    position: relative;
}

.menu-item-has-children {
    position: relative;
    padding-right: 11px;
}

.menu-item-has-children>a::after {
    content: '';
    width: 6px;
    height: 6px;
    border: 2px solid currentColor;
    border-top: none;
    border-right: none;
    display: inline-block;
    position: absolute;
    right: -11px;
    top: 1em;
    transform: rotate( -45deg);
}

header>.nav>li>a {
    padding: 10px 0;
    white-space: nowrap;
    font-weight: 600;
}

header ul a {
    color: #232323;
    transition: .125s opacity ease-in-out;
}

header ul a:hover,
header ul a:focus {
    opacity: .7;
    color: #232323;
    background-color: transparent !important;
    text-decoration: none;
}

.sub-menu {
    position: absolute;
    top: 100%;
    padding: 10px 0;
    width: 20em;
    border-top: 3px solid #b390cf;
    background: white;
    box-shadow: 0 2px 5px rgb(0 0 0 / 10%);
    list-style: none;
    margin: 0;
    display: none;
    opacity: 0;
    transition: .125 all ease-in-out;
}

header a:focus+.sub-menu,
header a:focus-within+.sub-menu,
header a:hover+.sub-menu,
.sub-menu:hover,
.sub-menu:focus {
    display: block;
    opacity: 1;
}

.sub-menu li {
    padding: 0 2em;
}

.sub-menu li:hover,
.sub-menu li:focus {
    background-color: #f4f4f4;
}

.sub-menu a {
    font-size: 15px;
    display: block;
    margin: 3px 0;
    font-weight: 600;
    line-height: 28px;
}


/*
--------------------------------------------------------------------------
 Main
--------------------------------------------------------------------------
 */

main {
    min-height: calc(100vh - 43px - 140px);
    position: relative;
}


/*  Footer -------------------
    ----------------------------------------
 */

footer {
    position: relative;
    padding-top: 50px;
    padding-bottom: 50px;
}

footer.container::before {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(var(--side-margin) * -1);
    right: calc(var(--side-margin) * -1);
    background: #b6b5b5;
    z-index: -1;
    display: block;
}

footer ul {
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    padding: 0;
    margin: 0;
}

footer>.row>.col-md-12>ul {
    justify-content: space-between;
    width: 100%;
}

footer ul ul {
    gap: 7px;
}

footer svg,
footer img {
    min-width: 40px;
    min-height: 40px;
    border-radius: 2px;
}