/* Global Reset & Box-Sizing */
*, *::before, *::after {
    box-sizing: border-box;
}
.homeCircles {
    display: flex;
    position: relative;
    justify-content: center;
    align-items: center;
    gap: 2em;
    margin-top: 2em;

    div {
        display: flex;
        position: relative;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        width: 200px;
        height: 200px;
        border-radius: 50%;
        color: #FFF;
        padding: 2em;
        font-size: 175%;
        cursor: pointer;
    }
    div:hover {
        animation: hue-cycle 1s ease-in-out forwards;
    }
}
.homeSquares {
    display: flex;
    position: relative;
    justify-content: flex-start;
    align-items: center;
    gap: 1em;
    margin: 1em 0 0 0;
    div {
        width: 225px;
        cursor: pointer;
        border-radius: .5em;
        overflow: hidden;
    }
    div:hover {
        animation: hue-cycle 1s ease-in-out forwards;
    }
}
@keyframes hue-cycle {
    from { 
        filter: brightness(1); 
    }
    to { 
        filter: brightness(1.5); 
    }
}
.o {
    background-color: #f7941d;
}
.g {
    background-color: #8cc63f;
}
.dg {
    background-color: #056839;
}
.b {
    background-color: #0f75bc;
}
.lb {
    background-color: #23aae1;
}
/* Responsive Root Font Size */
html {
    margin: 0;
    font-size: 62.5%; /* Sets 1rem to 10px for easier math */
}
/* Base Body Styles */
body {
    font-size: 1.6rem; /* Standard 16px font size */
    line-height: 1.5;
    text-rendering: optimizeSpeed;
    background-color: #f8f8f8;
    color: #444;
    margin: 0;  
    font-family: "Google Sans Flex", sans-serif;
    font-optical-sizing: auto;
    font-weight: 400;
    font-style: normal;
    font-variation-settings:
        "slnt" 0,
        "wdth" 100,
        "GRAD" 0,
        "ROND" 0;
}
/* responsive Image Defaults */
img, picture {
    max-width: 100%;
    display: block;
}
a {
    color: #0f75bc;
    text-decoration: none;
}
a:hover {
    color: #f7941d;
}
hr {
    border-width: 0;
    outline-width: 0;
    height: 1px;
    background-image: linear-gradient(to right, rgba(0,0,0,.05), rgba(0,0,0,.15), rgba(0,0,0,.05));
    margin: 1.5em 0;
}
/* input[type='text'], 
input[type='password'], 
select, 
input[type='date'], 
textarea {
    display: block;
    position: relative;
    padding: .5em;
    border: 1px solid rgb(204, 204, 204);
    border-radius: .25rem;
    box-sizing: border-box;
} */
button {
    border-width: 0;
    outline-width: 0;
    border-radius: .25rem;
    padding: 1em;
    cursor: pointer;
    font-size: 100%;
    font-weight: bold;
    background-color: #a50040;
    color: #FFF;
    box-shadow: 0 0 .25em rgba(0,0,0,.5);
}
button:hover {
    background-color: #d10050;
}
.error {
    display: block;
    position: relative;
    padding: 1em;
    margin: 0 0 1em 0;
    background-color: #500000;
    border-radius: .5em;
    color: #FFF;

    .svg {
        display: block;
    }
}
.padding {
    padding: 1em;
}
/* Flex building blocks */
.justifyLeft {
    display: flex;
    position: relative;
    justify-content: flex-start;
}
.spaceBetween {
    display: flex;
    position: relative;
    justify-content: space-between;
}
.justifyRight {
    display: flex;
    position: relative;
    justify-content: flex-end;
}
.gap {
    gap: 1.5em;
}
.gapSmall {
    gap: .75em;
}
.flex {
    flex: 1;
}
.top {
    align-items: flex-start;
}
.center {
    align-items: center;
}
.bottom {
    align-items: flex-end;
}
.sticky {
    position: sticky;
}
.odd {
    position: relative;
    box-sizing: border-box;
    padding: .25em 0;
    border-top: 1px solid #ddd;
}
.odd:nth-child(even) {
    background-color: rgba(0,0,0,.015);
}
.yScroll {
    overflow-y: scroll;
}
.ds {
    box-shadow: 0 0 1em rgba(0,0,0,.2);
}
.hover {
    cursor: pointer;
}
.swiper {
    width: 100%;
}
.logo {
    display: block;
    position: relative;
    width: 525px;
    padding: 1em;
}
#content {
    position: relative;
    display: flex;
    justify-content: space-between;
    align-items: top;
    margin: 0 10%;
    padding: 2em;
}
#modal {
    position: fixed;
    display: block;
    z-index: 1000;
    top: 0;
    right: 0;
    height: 100vh;
    width: 100%;
    background-color: rgba(0,0,0,.35);
    backdrop-filter: blur(2px); 
    -webkit-backdrop-filter: blur(2px);
}
#modalPop {
    position: absolute;
    display: block;
    top: 5%;
    left: 5%;
    width:90%;
    height: 90vh;
    border-radius: .5em;
    box-shadow: 0 0 .5em rgba(0,0,0,.5);
    background-color: #FFF;
}
#modalInner {
    overflow-y: scroll;
    max-height: 75vh;
}
.headline {
    color: #0f75bc;
    border-bottom: 1px solid #ddd;
    margin-bottom: 1.5em;
}
.widgets {
    display: block;
    position: relative;
    box-shadow: 0 0 .5em rgba(0,0,0,.1);
    border-radius: .5em;
    padding: 2em;
    margin: 2em 0 0 2em;
    background-color: #FFF;
    max-width: 250px;
}
.topBar {
    top: 0;
    display: flex;
    position: sticky;
    justify-content: space-between;
    align-items: center;
    padding: 0 2.5%;
    z-index: 1000;
    background-color: #f3f3f3;
    border-bottom: 1em solid #e6e6e6;
}
.nav {
    display: flex;
    position: relative;
    justify-content: flex-start;
    align-items: center;

    .item a {
        display: block;
        text-decoration: none;
        font-size: 115%;
        font-weight: bold;
        padding: 1em 1em;
    }
    .item a:hover {
        color: #e9a731;
    }
    .button {
        display: block;
        text-decoration: none;
        font-size: 115%;
        font-weight: bold;
        padding: .5em 1em;
        background-color: #e68200;
        border-radius: .5em;
    }
    .button:hover {
        background-color: #f3a745;
    }
    .button a {
        color: #FFF;
    }
    .dropdown {
        display: block;
        position: absolute;
        background-color: rgb(255, 255, 255);
        border-radius: .5em;
        box-shadow: 0 0 1em rgba(0,0,0,.125);
        padding: 1em 0;
    }
    .subItem {
        display: block;
        text-decoration: none;
    }
    .subItem a {
        display: block;
        font-size: 115%;
        font-weight: bold;
        padding: 0 1em;
    }
}
.mobileNav {
    display: none;
    position: relative;
}
.mobileMenu {
    display: none;
    position: fixed;
    flex-direction: column;
    top: 10vh;
    right: 0;
    width: 90%;
    height: 90vh;
    background-color: #0f75bc;
    color: #fff;
    box-shadow: 0 0 1em rgba(0,0,0,.125);
    border-top-left-radius: 1em;
    padding: 1em;

    /* sub classes */
    .items {
        display: flex;
        flex: 1;
        flex-direction: column;
        justify-content: flex-start;
        align-items: flex-end;
    }
}
.mobileMenu a {
    font-size: 225%;
    color: #fff;
}
.calendar {
    background-color: #f6f6f6;
}
.calendarRow {
    display: flex;
    position: relative; 
    justify-content: flex-start;
    align-items: flex-start;
}
.calendarCell {
    max-width: calc((100%/7) - .5em);
    min-width: calc((100%/7) - .5em);
    margin: .25em;
}
.calendarHeader {
    padding: 1em;
    background-color: #000;
    border-radius: 6px;
    color: #FFF;
    text-align: center;
    font-weight: bold;
}
.calendarDay {
    max-height: 200px;
    min-height: 200px;
    border: 1px solid #DDD;
    padding: 1em; 
    border-radius: 6px;
    background-color: #ffffff;
    color: #575757;
    font-size: 90%;
}
.eventLink {
    border-left: .25em solid #e68200;
    padding-left: .5em;
    margin-bottom: .5em;
    color: #000;
}
.eventLink:hover {
    text-decoration: underline;
    cursor: pointer;
}
.form {
    display: block;
    position: relative;
    margin-top: 1em;
    max-width: 500px;
}
.form input, 
.form textarea, 
.form select,
.form input[type='date'] {
    display: block;
    position: relative;
    padding: 1em;
    margin: 0 1em 1em 0;
    border: 1px solid rgb(170, 170, 170);
    border-radius: .25rem;
    box-sizing: border-box;
}
.hScroll {
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    font-size: 150%;
    padding: 2em 0;
    color: #000;
}
.hScrollText {
    display: flex;
    justify-content: flex-start;
    flex: 1;
    animation: scroll-left 30s linear infinite;
    gap: 1.5em;
}
.rounded {
    border-radius: .5em;
}
@keyframes scroll-left {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); } 
}
.footer {
    display: block;
    position: relative;
    background-color: #f3f3f3;
    border-top: 1em solid #e6e6e6;
    margin-top: 1em;
    width: 100%;

    .nav {
        display: flex;
        position: relative;
        padding: 2em;
        font-size: 165%;
        width:100%;
        justify-content: center;
        align-items: center;
        gap: 4em;
        background-color: #0f75bc;
        color: #FFF;
    }
    .nav a {
        color: #FFF;
    }
    .nav a:hover {
        color: #f7941d;
    }
    .logo {
        display: flex;
        position: relative;
        width: 100%;
        justify-content: center;
        align-items: top;
    }
    .logo img {
        width: 325px;
    }
}
.loading {
    display: block;
    position: relative;
    background-image: url("../images/loading.gif");
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
    height: 25px;
    width: 25px;
}
pre { 
    background-color: #919191; 
    color: #f8f8f2; 
    padding: 10px; 
    width: 100%;
}
.string { color: green; }
.number { color: darkorange; }
.boolean { color: blue; }
.null { color: magenta; }
.key { color: rgb(124, 124, 124); }

/* 1. Small screen */
@media only screen and (max-width: 1200px) {
    #content {
        position: relative;
        display: flex;
        justify-content: space-between;
        align-items: top;
        margin: 0 2.5%;
        padding: 1em;
    }
}
/* 2. Tablet Styles: (1024px and smaller) */
@media only screen and (max-width: 1024px) {
    .m100 {
        width: 100%;
    }
    .topBar {
        padding: 0 1.5%;
    }
    .logo {
        width: 375px;
        padding: 0em;
    }
    .nav {
        display: none;
    }
    .justifyLeft {
        display: block;
    }
    .spaceBetween {
        display: block;
    }
    .justifyRight {
        display: block;
    }
    #content {
        position: relative;
        margin: 0 5%;
        padding: 1em;
    }
    .mobileNav {
        display: block !important;
    }
    .homeSquares {
        display: flex;
        position: relative;
        justify-content: flex-start;
        align-items: center;
        gap: 1em;
        margin: 1em 0 0 0;
        div {
            width: 225px;
            cursor: pointer;
            border-radius: .5em;
            overflow: hidden;
        }
        div:hover {
            animation: hue-cycle 1s ease-in-out forwards;
        }
    }
    .homeCircles {
        div {
            font-size: 100%;
        }
    } 
    .footer {
        .nav {
            font-size: 95%;
        }
    }
}

/* 3. Mobile Styles: (768px and smaller) */
@media only screen and (max-width: 768px) {
    .homeCircles {
        div {
            width: 100px;
            height: 100px;
        }
    }
    .logo {
        width: 300px;
        padding: 0em;
    }
    #content {
        position: relative;
        display: block;
        margin: 0 2.5%;
        padding: 1em;
    }
    .widgets {
        display: block;
        position: relative;
        box-shadow: 0 0 .5em rgba(0,0,0,.1);
        border-radius: .5em;
        padding: 1em;
        margin: 0;
        background-color: #FFF;
        max-width: 100%;
    }
}