@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400&family=League+Spartan:wght@400;800&display=swap');

.specialEventsModule {
    padding: 25px 0;
}

.event-item {
    color: #2b1509;
    text-decoration: none;
    background: #FFFFFF;
}

.cardTopAnchor {
    position: absolute;
    top: -20px;
}

.mainHeaderDate {
    font-size: 40px !important;
}

.subHeaderExtra {
    text-align: left !important;
    width: auto !important;
}

.title {
    border-top: 1.5rem;
    border-color: transparent;
}

.title-text {
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    font-size: 29px;
    color: #3D2A18;
    margin: 0;
}

.title, pb-3, col-4 {
    text-align: left;
    text-decoration: none;
    color: black;
}

.description {
    height: 17rem;
    transition: all 0.5s ease-in-out;
}

.description-text {
    font-size: 18px;
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
}

.shortDesc {
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    font-size: 18px;
    color: #3D2A18;
    margin-bottom: 2rem;
}

.image-group {
    border: 1px solid grey;
    border-radius: 5px;
    padding: 15px;
    animation: slide-up 0.4s ease;
    margin: 2rem 0;
    -moz-box-shadow: 0 0 10px #ccc;
    -webkit-box-shadow: 0 0 10px #ccc;
    box-shadow: 0 0 10px #ccc;
}

.event-image {
    width: 100%;
    height: 294px;
    left: 0;
    object-fit: cover;
    border: none;
    border-radius: 0;
}

.featured-events.carousel .event-image {
    height: 175px;
}

.eventType {
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    font-size: 24px;
    color: #3D2A18;
    position: relative;
    bottom: 1.75rem;
    left: 2.5rem;
    padding: 0.5em;
    background-color: #EEE7D4;
    max-width: 80%;
    width: -moz-fit-content;
    width: fit-content;
}

.featured-events.carousel {
    padding: 80px 0 50px 0;
    margin: 0 auto;
    max-width: 1000px;
    width: 80vw;
}

.featured-title {
    border: 1px solid #707070;
    box-shadow: 2px 2px 10px grey;
    display: flex;
    justify-items: center;
    text-align: center;
    margin: 50px auto -2.5rem auto;
    width: fit-content;
    z-index: 10;
    background-color: white;
    position: relative;
}

.featured-title-text {
    font-family: 'League Spartan', sans-serif;
    font-weight: 800;
    font-size: 50px;
    margin: 0;
    color: #3D2A18;
}

.featured-title img {
    padding: 0 15px;
}

.fevcard.card.card-box-shadow {
    box-shadow: 0 0 10px grey;
    margin: 1rem;
    height: -moz-fit-content;
    height: fit-content;
    border: none;
    width: 100%;
    max-width: 500px;
}

.fevcard.card {
    transition: .2s;
    width: max-content;
}

.card-box-shadow {
    margin-right: 15px;
}

/*.image-eventType {
    height: 10rem;
}*/

.featured-events.carousel .image-eventType {
    height: unset;
    display: contents;
}

.the-rest-of-it {
    margin: 0 1.5rem 1.5rem 1.5rem;
    overflow: hidden;
}

.featured-events.carousel .the-rest-of-it {
    margin-top: -15px;
}

.btn {
    display: initial;
}

.more-arrow {
    right: 0;
    top: 0;
    text-align: right;
    position: relative;
    z-index: 10;
}

.exploreMoreLink {
    border: 1px solid white;
    text-transform: uppercase;
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    color: #3D2A18 !important;
    font-size: 21px;
    position: relative;
    z-index: 1;
}

    .exploreMoreLink:hover {
        text-decoration: none;
    }

    .exploreMoreLink:focus {
        border: 1px solid #3D2A18;
    }

.featured-more-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

.more-link-area img {
    position: relative;
    /*left: 6px;*/
    top: -2px;
}

.bottom-gradient {
    background: linear-gradient(0deg, rgba(255,255,255,1) 0%, rgba(255,255,255,1) 70%, rgba(0,212,255,0) 100%);
    height: 90px;
    width: 100%;
    position: absolute;
    bottom: 0;
    left: 0;
}

.featured-events.carousel .bottom-gradient {
    height: 120px;
}

.pageDeleted {
    color: red;
    margin-right: auto;
    margin-left: auto;
}

.featured-module-background {
    margin-bottom: 50px;
    background-color: #EEE7D4;
    background: linear-gradient(180deg, rgba(238,231,212,1) 0%, rgba(238,231,212,1) 70%, rgba(0,212,255,0) 100%);
}

/* Event Page CSS */
.detailedEventInfo {
    margin: 0 auto !important;
    padding: 50px 0 !important;
}

.buttons {
    margin: 25px 0;
}

.reservationLink, .backButton {
    position: relative;
    display: inline-block;
    width: -moz-fit-content;
    width: fit-content;
    margin: 5px !important;
}

.reservationLink {
    padding-right: 50px !important;
}

.backButton {
    padding-left: 50px !important;
}

    .reservationLink img, .backButton img {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
    }

.reservationLink img {
    right: 10px;
}

.backButton img {
    left: 10px;
}

.eventImage {
    width: 100%;
}

.detailedEventInfo h2, .detailedEventInfo h3 {
    font-family: 'League Spartan', sans-serif;
    font-weight: 800;
    color: #3D2A18;
}

.detailedEventInfo h2 {
    font-size: 22px;
}

.detailedEventInfo h3 {
    font-size: 18px;
    margin: 25px 0;
}

.detailedEventInfo p, .detailedEventInfo ul, .detailedEventInfo ol {
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    font-size: 18px;
    color: #3D2A18;
}

.detailedEventInfo ul, .detailedEventInfo ol {
    list-style: none;
    margin: 0 0 25px;
}

.campusMapDiv_EventsPage {
    position: relative;
    width: -moz-fit-content;
    width: fit-content;
    margin: 100px auto 50px;
}

.campusMap_EventsPage {
    max-width: 100%;
    margin: 0 auto;
    display: block;
}

.mapDownload_EventsPage {
    position: absolute;
    right: 0;
    bottom: 5px;
    text-transform: uppercase;
    color: #3D2A18;
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    font-size: 21px;
    padding-right: 40px;
}

    .mapDownload_EventsPage:hover {
        text-decoration: none;
    }

    .mapDownload_EventsPage:focus {
        outline: 1px solid #3D2A18;
    }

    .mapDownload_EventsPage img {
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        right: 0;
    }

.loadingOverlay {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: rgba(0,0,0,0.5);
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    text-align: center;
}

    .loadingOverlay div:not(.img-indicator) {
        height: 50px;
        width: 50px;
        position: fixed;
        top: 50vw; /* Fallback in case calc doesn't work. */
        top: calc(50vh - 50px);
    }

    .loadingOverlay .img-indicator {
        height: 50px;
        width: 50px;
    }

    .rowPadding {
        padding-bottom: 15px;
    }

@media (max-width: 1199px) {
    .detailedEventInfo h2 {
        margin-top: 50px;
    }

    .eventImage {
        min-height: 30vw;
        max-height: 120vw;
        object-fit: contain;
    }

    .mainHeaderDate {
        font-size: 22px !important;
    }

    .card-box-shadow {
        margin-bottom: 25px;
    }
}

@media (max-width: 767px) {
    .detailedEventInfo h2 {
        font-size: 20px;
    }

    .detailedEventInfo h3, .detailedEventInfo p, .detailedEventInfo ul, .detailedEventInfo ol {
        font-size: 16px;
    }

    .mapDownload_EventsPage {
        font-size: 18px;
        padding-right: 30px;
    }

        .mapDownload_EventsPage img {
            width: 20px;
        }

    .featured-title-text {
        font-size: 40px;
    }

    .carousel-control-prev {
        position: absolute;
        left: -25px !important;
    }

    .carousel-control-next {
        position: absolute;
        right: -25px !important;
    }
}

@media (max-width: 500px) {
    .description {
        height: 7rem;
    }
}

/* 00.00.04: the whole description shows. Descriptions used to sit in a fixed-height box
   (17rem; 200px in the featured carousel) under a white fade, so longer text was cut off.
   Cards in a row now share one height, with the "more" link on the bottom edge. */
.specialEventsModule .row > .card,
.featured-events .carousel-item > div { display: flex; }
.event-item,
.fevcard.card.card-box-shadow { display: flex; flex-direction: column; height: auto; width: 100%; }
.specialEventsModule .row > .card > .event-item { flex: 1 1 auto; }
.the-rest-of-it { display: flex; flex-direction: column; flex: 1 1 auto; overflow: visible; }
.description { height: auto; }
.shortDesc { margin-bottom: 1.25rem; }
.bottom-gradient { display: none; }
.more-link-area { margin-top: auto; }
.the-rest-of-it > .exploreMoreLink { margin-top: auto; align-self: flex-start; }
@media (max-width: 500px) { .description { height: auto; } }

/* =====================================================================================
   01.00.00: same look, new layout pieces.
   - .ks-card replaces the Bootstrap-column cards; one card markup for the grid and the home row.
   - .ks-when: the event date, which was not shown anywhere before.
   - .ks-stretch: the title link covers the whole card (one link per event).
   - .ks-row: the home-page row (scroll-snap) replacing the cloning carousel.
   ===================================================================================== */
.ks-card.card {
    position: relative;
    display: flex;
    flex-direction: column;
    margin: 0;
    border: none;
    border-radius: 0;
    background: #fff;
    box-shadow: 0 0 10px rgba(0, 0, 0, .28);
    height: 100%;
    transition: box-shadow .2s ease, transform .2s ease;
}
.ks-card.card:hover, .ks-card.card:focus-within {
    box-shadow: 0 6px 22px rgba(61, 42, 24, .35);
    transform: translateY(-2px);
}
.ks-card .image-eventType { position: relative; }
.ks-card .event-image { display: block; height: 260px; }
.ks-card .eventType {
    display: inline-block;
    position: relative;
    bottom: 1.6rem;
    left: 1.5rem;
    margin-bottom: -1.6rem;
    font-size: 19px;
    line-height: 1.1;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.ks-card .the-rest-of-it {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    margin: 0;
    padding: 1.4rem 1.5rem 1.25rem;
    overflow: visible;
}
.ks-when {
    margin: .35rem 0 .35rem;
    font-family: 'League Spartan', sans-serif;
    font-weight: 400;
    font-size: 16px;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: #7a5a3a;
}
.ks-card .title-text { font-size: 27px; line-height: 1.15; margin: 0 0 .6rem; }
.ks-card .title-text a { color: inherit; text-decoration: none; }
.ks-stretch::after { content: ''; position: absolute; inset: 0; z-index: 2; }
.ks-stretch:focus { outline: none; }
.ks-card:focus-within { outline: 3px solid #3D2A18; outline-offset: 3px; }
.ks-card .description { height: auto; margin: 0 0 1rem; }
.ks-card .description p:last-child { margin-bottom: 0; }
.ks-card .exploreMoreLink { margin-top: auto; align-self: flex-end; border: 0; font-size: 19px; }
.ks-card .more-arrow { margin-left: .4rem; top: -2px; }

/* Signature Events page: the grid. */
.ks-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr));
    gap: 30px;
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 20px;
}
.ks-empty { max-width: 640px; margin: 0 auto; padding: 0 20px; text-align: center; font-family: 'League Spartan', sans-serif; font-size: 19px; color: #3D2A18; }
.ks-empty-title { font-size: 26px; margin-bottom: .4rem; }
.ks-manage { max-width: 1400px; margin: 24px auto 0; padding: 0 20px; }

/* Home page and Mabee Lodge: one row. */
.ks-featured { padding: 0 0 40px; }
.ks-featured .featured-title { margin-bottom: 30px; padding: 6px 4px; }
.ks-featured .featured-title-text { font-size: clamp(30px, 5vw, 50px); }
.ks-row-wrap { position: relative; max-width: 1200px; margin: 0 auto; padding: 0 56px; }
.ks-row {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: calc((100% - 48px) / 3);
    gap: 24px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    padding: 12px 4px 18px;
    scrollbar-width: thin;
}
.ks-row > .ks-card { scroll-snap-align: start; }
.ks-row .event-image { height: 200px; }
.ks-row .title-text { font-size: 24px; }
.ks-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 6px rgba(0, 0, 0, .3);
    cursor: pointer;
    display: grid;
    place-items: center;
    z-index: 3;
}
.ks-arrow[hidden] { display: none; }
.ks-arrow img { height: 22px; }
.ks-prev { left: 4px; }
.ks-next { right: 4px; }
.ks-arrow:focus-visible { outline: 3px solid #3D2A18; outline-offset: 2px; }
.ks-all { text-align: center; margin: 10px 0 0; }
.ks-all a {
    font-family: 'League Spartan', sans-serif;
    font-size: 19px;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: #3D2A18;
    border-bottom: 2px solid #3D2A18;
    text-decoration: none;
    padding-bottom: 3px;
}
@media (max-width: 991px) { .ks-row { grid-auto-columns: calc((100% - 24px) / 2); } }
@media (max-width: 600px) {
    .ks-row-wrap { padding: 0 16px; }
    .ks-row { grid-auto-columns: 85%; }
    .ks-arrow { display: none !important; }
    .ks-card .event-image { height: 220px; }
}
@media (prefers-reduced-motion: reduce) {
    .ks-row { scroll-behavior: auto; }
    .ks-card.card { transition: none; }
}

/* Event page. */
.ks-page-type {
    margin: 0 0 .2rem;
    font-family: 'League Spartan', sans-serif;
    font-size: 17px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #7a5a3a;
}
.ks-facts { display: flex; flex-wrap: wrap; gap: 10px 36px; margin: 1rem 0 1.4rem; padding: 14px 18px; background: #EEE7D4; }
.ks-facts div { min-width: 0; }
.ks-facts dt { font-family: 'League Spartan', sans-serif; font-weight: 400; font-size: 14px; letter-spacing: .12em; text-transform: uppercase; color: #7a5a3a; }
.ks-facts dd { margin: 0; font-family: 'League Spartan', sans-serif; font-size: 20px; color: #3D2A18; }
.ks-page .eventImage { width: 100%; height: auto; }
.ks-back { text-align: center; margin-top: 25px; }
.ks-notice { max-width: 1200px; margin: 0 auto 20px; padding: 14px 18px; background: #fff7e6; border-left: 4px solid #b7791f; font-family: 'League Spartan', sans-serif; font-size: 18px; color: #3D2A18; }
.ks-notice.ks-ended { background: #f6f2ea; border-left-color: #3D2A18; }
.ks-notice-title { font-size: 22px; margin: 0 0 .2rem; }
.ks-notice p { margin: 0; }
.ks-page .ks-manage { text-align: center; }

/* Card image framing (01.00.00): the editor's focus point and zoom, or the whole image on tan. */
.ks-img-frame { overflow: hidden; }
.ks-img-frame .event-image { transition: none; }
.ks-img-frame.ks-whole { background: #EEE7D4; }
.ks-img-frame.ks-whole .event-image { object-fit: contain; transform: none !important; }
