/* Global Reset & Box-Sizing */
*, *::before, *::after {
    box-sizing: border-box;
}
/* 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: #3173e9;
    text-decoration: none;
    cursor: pointer;
}
a:hover {
    color: #001f54;
}
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;
}
hr.short {
    position: relative;
    display: block;
    width: 100px;
    border-top: 4px solid #3173e9;
}
hr.shortSmall {
    position: relative;
    display: block;
    width: 50px;
    border-top: 1px solid #dfdfdf;
    margin: 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;
}
.orange {
    color: #e9a731;
}
.fgBlack {
    color: #000;
}
.fgGrey {
    color: #666;
}
.cursor {
    cursor: pointer;
}
.error {
    display: block;
    position: relative;
    padding: 1em;
    margin: 0 0 1em 0;
    background-color: #9b0000;
    border-radius: .5em;
    color: #FFF;

    .svg {
        display: block;
    }
}
.padding {
    padding: 1em;
}
.paddingLeft {
    padding-left: 1em;
}
.paddingLeftHalf {
    padding-left: .5em;
}
.borderLeft {
    border-left: 1px solid #cdcdcd;
    padding-left: 1em;
    margin-left: 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;
}
.gapBig {
    gap: 2em;
}
.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: .5em 0;
}
.odd:nth-child(even) {
    background-color: rgba(0,0,0,.025);
}
.yScroll {
    overflow-y: scroll;
}
.ds {
    box-shadow: 0 0 1em rgba(0,0,0,.2);
}
.big {
    font-size: 125%;
}
.bold {
    font-weight: bold;
}
.hover {
    cursor: pointer;
}
.swiper {
    width: 100%;
}
.subtleCard {
    display: block;
    position: relative;
    box-shadow: 0 0 .5em rgba(0,0,0,.1);
    border-radius: .5em;
    padding: 1em;
    background-color: #FFF;
    width: 100%;
}
.logo {
    display: block;
    position: relative;
    width: 175px;
    padding: 1em;
}
.breadcrumbs {
    border-bottom: 1px solid #ddd;
    padding: 0 0 1em 0;
    margin: 0 0 1em 0;
    color: #7d7d7d;
    font-weight: bold;
}
.notices {
    background-color: #e9a731;
    padding: 1em 1em 1em 1em;
    border-radius: .5em;

    h2 {
        padding: 0;
        margin: 0;
        color: #FFF;
    }
    a {
        color: #FFF;
    }
    hr.short {
        border-color: #FFF;
    }
}
#headers {
    border-bottom: 1em solid #e6e6e6;
}
#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: #e9a731;
    margin-bottom: 1.5em;

    div {
        position: relative;
        display: block;
        width: 50px;
        border-top: 4px solid #3173e9;
    }
}
#sidebar {
    box-shadow: -10px 0 10px 0px rgba(0, 0, 0, 0.05);
    padding: 1em 0 0 2em;
    margin: 0 0 0 2em;
}
.widgets {
    display: block;
    position: relative;
    box-shadow: 0 0 .5em rgba(0,0,0,.1);
    border-radius: .5em;
    padding: 1em;
    background-color: #FFF;
    width: 100%;
}
.dateDiv {
    background-color: #3173e9;
    color: #e9a731;
    padding: .25em;
    margin: 0 0 1em 0;
    width: 55px;
    border-radius: .25em;
    text-align: center;
    line-height: 125%;
    div {
        font-size: 105%;
    }
    span {
        font-size: 175%;
        color: #FFF;
    }
}
.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: #e9a731;
        border-radius: .5em;
    }
    .button:hover {
        background-color: rgb(255, 201, 131);
    }
    .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;
}
.gallery {
    position: relative;
    display: flex;
    overflow-x: auto;
    gap: 1em;
    padding: 1em 0 1em 0;
    width:100%;
    scroll-snap-type: x mandatory;  /* Forces the slider to snap to items */
    scroll-behavior: smooth;        /* Ensures smooth movement */
    -webkit-overflow-scrolling: touch; /* Optimizes smooth scrolling on iOS */

    div {
        display: flex;
        justify-content: center;
        align-items: top;
        flex: 0 0 30%;
        scroll-snap-align: start;
        height: 175px;
        cursor: pointer;
        padding: .5em;
        border-radius: .5em;
        
        img {
            border-radius: .5em;
            width: 100%;
            height: 100%;
            object-fit: cover;       /* Fills the box and crops excess while maintaining aspect ratio */
            object-position: center; /* Centers the crop focus point horizontally and vertically */
        }
    }
    div:hover {
        background-color: #cfe931;
    }
}
.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;
    font-size: 90%;
}
.calendarHeader {
    padding: 1em;
    background-color: #cfe931;
    border-radius: 6px;
    color: #000;
    text-align: center;
    font-weight: bold;
}
.calendarDay {
    max-height: 250px;
    min-height: 250px;
    border: 1px solid #DDD;
    padding: 1em; 
    border-radius: 6px;
    background-color: #ffffff;
    color: #575757;
    font-size: 90%;
    overflow-y: scroll;
}
.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;
}
.form input[type='text'], 
.form input[type='password'], 
.form input[type='date'],
.form textarea, 
.form select {
    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;
}
.form label {
    margin-top: 1em;
}
.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: flex;
    position: relative;
    justify-content: center;
    align-items: flex-start;
    background-color: #f3f3f3;
    width: 100%;
    padding: 2em;
    flex-wrap: wrap;
    div {
        margin: 0 2em;
    }
    .logo {
        display: flex;
        position: relative;
        justify-content: center;
        align-items: top;
    }
    .logo img {
        width: 100px;
    }
}
.borderTopFooter {
    border-top: 1em solid #e6e6e6;
    margin-top: 1em;
    z-index: 5000;
}
.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 { 
    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%;
    }
    .nav {
        display: none;
    }
    .justifyLeft {
        display: block;
    }
    .spaceBetween {
        display: block;
    }
    .justifyRight {
        display: block;
    }
    #content {
        position: relative;
        margin: 0 5%;
        padding: 1em;
    }
    .mobileNav {
        display: block !important;
    }
    .footer {
        .nav {
            font-size: 95%;
        }
    }
}
/* 3. Mobile Styles: (768px and smaller) */
@media only screen and (max-width: 768px) {
    .topBar {
        padding: 1em 2.5%;
    }
    .logo {
        width: 75px;
        padding: 0em;
    }
    #content {
        position: relative;
        display: block;
        margin: 0 2.5%;
        padding: 1em;
    }
    #sidebar {
        box-shadow: none;
        padding: 0;
        margin: 1em 0;
    }
    #calendar {
        display: none;
    }
}