.flex-page {
    background: #fff;
    clear: both;
    color: #23272d;
    display: block;
    width: 100%;
}

/* Keep shared navigation typography consistent with the legacy page templates. */
.flex-page .breadcrumb,
.flex-page .breadcrumb a,
.flex-page .breadcrumb span {
    font-family: "PT Serif", Georgia, serif;
    font-weight: 400;
}

@media (min-width: 992px) {
    header .menu {
        border: 0;
        box-shadow: none;
        position: relative;
        z-index: 10;
    }

    header .menu::after {
        background: #2e2e2e;
        bottom: -3px;
        content: "";
        display: block;
        height: 3px;
        left: 0;
        position: absolute;
        right: 0;
    }
}

.flex-page .flex-header-baner {
    background-color: #2b2b2b;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    clear: both;
    display: block;
    margin-top: 0;
    opacity: 1;
    overflow: hidden;
    position: relative;
    width: 100%;
}

.flex-page .flex-header-baner .header_overlay {
    background: #2b2b2b !important;
    bottom: 0;
    height: auto;
    left: 0;
    min-height: 0;
    opacity: 0.8;
    position: absolute;
    right: 0;
    top: 0;
    width: 100%;
}

.flex-page .flex-header-baner > .container {
    position: relative;
    z-index: 1;
}

.flex-page .flex-header-baner .centered {
    text-align: center;
}

.flex-page .flex-header-baner h1 {
    background-image: none;
    display: table;
    isolation: isolate;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0;
    padding-right: 0;
    position: relative;
    text-align: center;
}

.flex-page .flex-header-baner .flex-header-title-accent {
    bottom: auto;
    color: inherit;
    display: inline-block;
    font: inherit;
    isolation: isolate;
    left: auto;
    letter-spacing: inherit;
    opacity: 1;
    padding: 0;
    position: relative;
    right: auto;
    text-transform: inherit;
    top: auto;
    width: auto;
}

.flex-page .flex-header-title-accent::before {
    background: #ff4646;
    content: "";
    height: 8px;
    left: -31px;
    position: absolute;
    top: 58%;
    transform: translateY(-50%);
    width: 59px;
    z-index: -1;
}

.flex-page .flex-header-baner h2 {
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.flex-page .flex-header-baner .flex-header-eyebrow {
    left: 50%;
    right: auto;
    text-align: center;
    transform: translateX(-50%);
    width: max-content;
}

.flex-page .flex-block {
    box-sizing: border-box;
    padding: 72px 0;
}

.flex-page .flex-block > .container > header,
.flex-page .flex-block header {
    border: 0 !important;
    box-shadow: none !important;
}

.flex-page .flex-block header::before,
.flex-page .flex-block header::after {
    display: none !important;
}

.flex-page .flex-block h1,
.flex-page .flex-block h2,
.flex-page .flex-block h3 {
    color: inherit;
    font-family: "Playfair Display", Georgia, serif;
    font-weight: 700;
    line-height: 1.15;
    margin-top: 0;
}

.flex-page .flex-block h2 {
    font-size: 42px;
    margin-bottom: 28px;
}

.flex-page p {
    font-size: 17px;
    line-height: 1.75;
}

.flex-eyebrow {
    color: #b49255;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px !important;
    font-weight: 700;
    letter-spacing: 0.2em;
    margin-bottom: 14px;
    text-transform: uppercase;
}

.flex-hero {
    align-items: center;
    background-color: #252b33;
    background-position: center;
    background-size: cover;
    color: #fff;
    display: flex;
    min-height: 560px;
    overflow: hidden;
    position: relative;
}

.flex-hero__overlay {
    background: linear-gradient(90deg, rgba(15, 18, 22, 0.82), rgba(15, 18, 22, 0.34));
    inset: 0;
    position: absolute;
}

.flex-hero__content {
    position: relative;
    z-index: 1;
}

.flex-hero h1 {
    color: #fff;
    font-size: clamp(52px, 7vw, 92px);
    max-width: 900px;
}

.flex-lead {
    max-width: 680px;
}

.flex-lead p {
    font-size: 22px;
}

.flex-button {
    background: #222831;
    border: 1px solid #222831;
    color: #fff;
    display: inline-block;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.12em;
    margin-top: 22px;
    padding: 15px 24px;
    text-transform: uppercase;
    transition: background-color 0.2s ease, color 0.2s ease;
}

.flex-button:hover,
.flex-button:focus {
    background: #b49255;
    border-color: #b49255;
    color: #fff;
    text-decoration: none;
}

.flex-button--light {
    background: #fff;
    border-color: #fff;
    color: #222831;
}

.flex-section-header {
    padding-bottom: 34px !important;
}

.flex-align-center {
    text-align: center;
}

.flex-align-left {
    text-align: left;
}

.flex-copy--narrow {
    margin: 0 auto;
    max-width: 780px;
}

.flex-copy--wide {
    max-width: 1040px;
}

.flex-tone-gray {
    background: #f2f2f0;
}

.flex-tone-dark {
    background: #222831;
    color: #fff;
}

.flex-image-text__grid {
    align-items: center;
    display: grid;
    gap: 64px;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.flex-image-text__media img {
    display: block;
    height: auto;
    width: 100%;
}

.flex-image-right .flex-image-text__media {
    order: 2;
}

.flex-image-right .flex-image-text__copy {
    order: 1;
}

.flex-festival-intro {
    background: #f9f9f9;
    padding: 100px 0 !important;
}

.flex-festival-intro__header {
    background: none;
    border: 0;
    height: auto;
    margin-bottom: 58px;
    text-align: center;
}

.flex-page .flex-block .flex-festival-intro__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0;
    position: relative;
}

.flex-festival-intro__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-festival-intro__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    line-height: 18.5px;
    margin: 0 auto;
    max-width: 880px;
}

.flex-festival-intro__card {
    background: #fff;
    display: grid;
    grid-template-columns: 290px minmax(0, 1fr);
    width: 100%;
}

.flex-festival-intro__media {
    height: 100%;
}

.flex-festival-intro__media img {
    display: block;
    height: 100%;
    min-height: 290px;
    object-fit: cover;
    width: 100%;
}

.flex-festival-intro__content {
    padding: 64px;
}

.flex-page .flex-block .flex-festival-intro__content h3 {
    color: #403D38;
    font-size: 28px;
    line-height: 1.1;
    margin: 0 0 5px;
}

.flex-festival-intro__content time {
    color: #777;
    display: block;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    letter-spacing: 4px;
    line-height: 18.5px;
    margin: 8px 0 27px;
}

.flex-festival-intro__text,
.flex-festival-intro__text p {
    color: #777;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 14px;
    letter-spacing: 1px;
    line-height: 20px;
}

.flex-festival-intro__text p:last-child {
    margin-bottom: 0;
}

.flex-festival-intro__action {
    margin-top: 56px;
    text-align: center;
}

.flex-festival-intro__button {
    border: 1px solid #ddd;
    color: #ff4646;
    display: inline-block;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 5px;
    min-width: 282px;
    padding: 20px 40px;
    position: relative;
    text-align: center;
    text-transform: uppercase;
    transition: all 0.3s ease;
}

.flex-festival-intro__button::after {
    background: url('../img/arrow_dark.png') no-repeat center;
    content: "";
    height: 13px;
    position: absolute;
    right: -30px;
    top: 20px;
    width: 45px;
}

.flex-festival-intro__button:hover,
.flex-festival-intro__button:focus {
    background: #ff4646;
    border-color: #ff4646;
    color: #fff;
    text-decoration: none;
}

.flex-two-columns-image {
    background: #fff;
    padding: 100px 0 !important;
}

.flex-two-columns-image__header {
    background: none;
    height: auto;
    margin-bottom: 58px;
}

.flex-page .flex-block .flex-two-columns-image__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 14px;
    position: relative;
}

.flex-two-columns-image__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-two-columns-image__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    letter-spacing: 4px;
    line-height: 18.5px;
    margin: 14px 0 0;
    text-transform: uppercase;
}

.flex-two-columns-image__grid {
    display: grid;
    gap: 64px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-bottom: 56px;
}

.flex-two-columns-image__column,
.flex-two-columns-image__column p,
.flex-two-columns-image__column li {
    color: #777;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 15px;
    font-weight: 700;
    line-height: 27px;
}

.flex-two-columns-image__column--strong,
.flex-two-columns-image__column--strong p,
.flex-two-columns-image__column--strong li {
    color: #403d38;
}

.flex-two-columns-image__column p:last-child {
    margin-bottom: 0;
}

.flex-two-columns-image__image {
    display: block;
    height: auto;
    width: 100%;
}

.flex-partners-logos {
    background: #fff;
    padding: 100px 0 !important;
    text-align: center;
}

.flex-partners-logos__header {
    background: none;
    height: auto;
    margin-bottom: 48px;
}

.flex-page .flex-block .flex-partners-logos__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 14px;
    position: relative;
}

.flex-partners-logos__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-partners-logos__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    line-height: 18.5px;
    margin: 0;
}

.flex-partners-logos__grid {
    overflow: hidden;
    width: 100%;
}

.flex-partners-logos__track,
.flex-partners-logos__group {
    align-items: center;
    display: flex;
}

.flex-partners-logos__track {
    justify-content: center;
    width: 100%;
}

.flex-partners-logos__group {
    flex-wrap: wrap;
    gap: 36px;
    justify-content: center;
}

.flex-partners-logos__group:not(:first-child) {
    display: none;
}

.flex-partners-logos__item {
    align-items: center;
    display: flex;
    justify-content: center;
}

.flex-partners-logos__item a {
    display: block;
}

.flex-partners-logos__item img {
    display: block;
    height: auto;
    max-height: 90px;
    max-width: 220px;
    width: auto;
}

@keyframes flex-partners-scroll {
    from { transform: translate3d(0, 0, 0); }
    to { transform: translate3d(-25%, 0, 0); }
}

.flex-organizers {
    background: #f9f9f9;
    padding: 100px 0 !important;
}

.flex-organizers__header {
    background: none;
    height: auto;
    margin: 0;
}

.flex-organizers__top {
    align-items: center;
    display: grid;
    gap: 48px;
    grid-template-columns: minmax(0, 1fr) auto;
    margin-bottom: 48px;
}

.flex-page .flex-block .flex-organizers__header h2 {
    color: #403d38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 8px;
    position: relative;
}

.flex-organizers__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-organizers__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
}

.flex-organizers__logos {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    gap: 30px;
    justify-content: flex-end;
}

.flex-organizers__logo img {
    display: block;
    height: auto;
    max-height: 72px;
    max-width: 200px;
    width: auto;
}

.flex-organizers__people {
    display: grid;
    gap: 24px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.flex-organizer {
    background: #fff;
    display: grid;
    grid-template-columns: 180px minmax(0, 1fr);
    min-height: 210px;
}

.flex-organizer__image {
    height: 100%;
    min-height: 210px;
    object-fit: cover;
    width: 100%;
}

.flex-organizer__content {
    align-self: center;
    min-width: 0;
    padding: 30px 32px;
}

.flex-page .flex-block .flex-organizer__content h3 {
    color: #403d38;
    font-size: 22px;
    margin: 0 0 12px;
    overflow-wrap: anywhere;
    text-transform: uppercase;
}

.flex-organizer__role,
.flex-organizer__contact,
.flex-organizer__contact p,
.flex-organizer__contact a {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    font-weight: 400;
    letter-spacing: 4px;
    line-height: 18.57px;
    overflow-wrap: anywhere;
}

.flex-organizer__role {
    margin: 0;
    white-space: pre-line;
}

.flex-organizer__contact a {
    text-decoration: underline;
}

.flex-organizer__contact {
    margin-top: 10px;
}

.flex-organizer__contact p:last-child {
    margin-bottom: 0;
}

.flex-organizers__description {
    display: grid;
    gap: 54px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 48px;
}

.flex-organizers__description,
.flex-organizers__description p,
.flex-organizers__description li {
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 15px;
    font-weight: 700;
    line-height: 27px;
}

.flex-organizers__description > div:first-child,
.flex-organizers__description > div:first-child p,
.flex-organizers__description > div:first-child li {
    color: #403d38;
}

.flex-organizers__description > div:last-child,
.flex-organizers__description > div:last-child p,
.flex-organizers__description > div:last-child li {
    color: #777777;
}

.flex-document-content {
    background: #F9F9F9;
    padding: 100px 0 !important;
}

.flex-youtube-video {
    background: #fff;
    padding: 100px 0 !important;
}

.flex-youtube-video__frame {
    aspect-ratio: 16 / 9;
    background: #f4f4f4;
    overflow: hidden;
    position: relative;
    width: 100%;
}

.flex-youtube-video__frame iframe {
    border: 0;
    height: 100%;
    inset: 0;
    position: absolute;
    width: 100%;
}

.flex-document-content__header {
    background: none;
    height: auto;
    margin-bottom: 42px;
}

.flex-page .flex-block .flex-document-content__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0;
    position: relative;
}

.flex-document-content__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-document-content__body,
.flex-document-content__body p,
.flex-document-content__body li {
    color: #777777;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 14px;
    line-height: 1.6;
}

.flex-document-content__body h2,
.flex-document-content__body h3,
.flex-document-content__body h4 {
    color: #403D38;
    font-family: "PT Sans", Arial, sans-serif;
    font-weight: 700;
}

.flex-document-content__body ol,
.flex-document-content__body ul {
    padding-left: 22px;
}

.flex-document-content__downloads {
    margin-top: 44px;
}

.flex-page .flex-block .flex-document-content__downloads h3 {
    color: #403D38;
    font-family: "Playfair Display", Georgia, serif;
    font-size: 20px;
    margin: 0 0 22px;
}

.flex-document-content__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 48px;
}

.flex-document-content__button {
    border: 1px solid #ddd;
    color: #ff4646;
    display: inline-block;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 5px;
    min-width: 250px;
    padding: 20px 40px;
    position: relative;
    text-align: center;
    text-transform: uppercase;
    transition: all 0.3s ease;
}

.flex-document-content__button::after {
    background: url('../img/arrow_dark.png') no-repeat center;
    content: "";
    height: 13px;
    position: absolute;
    right: -30px;
    top: 20px;
    width: 45px;
}

.flex-document-content__button:hover,
.flex-document-content__button:focus {
    background: #ff4646;
    border-color: #ff4646;
    color: #fff;
    text-decoration: none;
}

.flex-pdf-flipbook {
    background: #F9F9F9;
    padding: 100px 0 !important;
}

.flex-pdf-flipbook__header {
    background: none;
    height: auto;
    margin-bottom: 42px;
}

.flex-page .flex-block .flex-pdf-flipbook__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 14px;
    position: relative;
}

.flex-pdf-flipbook__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-pdf-flipbook__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    margin: 0;
}

.flex-pdf-flipbook__list {
    display: grid;
    gap: 0;
}

.flex-pdf-flipbook__card {
    align-items: center;
    background: #fff;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    min-height: 345px;
    overflow: hidden;
    position: relative;
}

.flex-pdf-flipbook__card--reverse .flex-pdf-flipbook__cover {
    order: 2;
}

.flex-pdf-flipbook__card--reverse .flex-pdf-flipbook__content {
    order: 1;
}

.flex-pdf-flipbook__cover {
    align-self: stretch;
    background: #ecebea;
    min-height: 345px;
}

.flex-pdf-flipbook__cover img {
    height: 100%;
    object-fit: cover;
    transition: transform 0.45s ease;
    width: 100%;
}

.flex-pdf-flipbook__content {
    align-items: flex-start;
    background: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 345px;
    padding: 56px 64px;
}

.flex-page .flex-block .flex-pdf-flipbook__content h3 {
    color: #403D38;
    font-size: 28px;
    line-height: 1.1;
    margin: 0;
    text-transform: uppercase;
}

.flex-pdf-flipbook__subheader {
    color: #c1c1c1;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 12px;
    letter-spacing: 5px;
    line-height: 1.5;
    margin: 14px 0 0;
}

.flex-pdf-flipbook__description {
    margin-top: 30px;
}

.flex-pdf-flipbook__description,
.flex-pdf-flipbook__description p {
    color: #777777;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 14px;
    letter-spacing: 1px;
    line-height: 1.55;
}

.flex-pdf-flipbook__description p {
    margin: 0 0 10px;
}

.flex-pdf-flipbook__arrow {
    background: url('../img/arrow.png') no-repeat left center;
    border: 0;
    cursor: pointer;
    height: 13px;
    margin-top: 30px;
    padding: 0;
    width: 45px;
}

.flex-pdf-flipbook__trigger,
.flex-pdf-flipbook__card .flex-pdf-flipbook__trigger {
    cursor: pointer;
    height: 100% !important;
    inset: 0;
    margin: 0 !important;
    max-width: none !important;
    opacity: 0;
    padding: 0 !important;
    position: absolute !important;
    width: 100% !important;
    z-index: 2;
}

.flex-pdf-flipbook__card:hover .flex-pdf-flipbook__cover img {
    transform: scale(1.025);
}

.flex-pdf-flipbook__card:focus-within {
    outline: 2px solid #ff4646;
    outline-offset: 4px;
}

.flex-pdf-flipbook__actions {
    margin-top: 28px;
}

.flex-pdf-flipbook__download {
    border: 1px solid #ddd;
    color: #ff4646;
    display: inline-block;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 3px;
    padding: 20px 32px;
    text-align: center;
    text-transform: uppercase;
    transition: all 0.3s ease;
}

.flex-pdf-flipbook__download:hover,
.flex-pdf-flipbook__download:focus {
    background: #ff4646;
    border-color: #ff4646;
    color: #fff;
    text-decoration: none;
}

.flex-contact-info {
    background: #F9F9F9;
    padding: 100px 0 !important;
}

.flex-contact-info__inner {
    max-width: 720px;
}

.flex-contact-info__header {
    background: none;
    height: auto;
    margin-bottom: 42px;
}

.flex-page .flex-block .flex-contact-info__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 14px;
    position: relative;
}

.flex-contact-info__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-contact-info__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    margin: 0;
}

.flex-contact-info__content,
.flex-contact-info__content p,
.flex-contact-info__content a {
    color: #403D38;
    font-family: "PT Serif", Georgia, serif;
    font-size: 14px;
    line-height: 1.75;
}

.flex-contact-info__content a {
    text-decoration: underline;
}

.flex-contact-info__social {
    border-top: 1px solid #ddd;
    margin-top: 44px;
    padding-top: 28px;
}

.flex-contact-info__social a {
    align-items: center;
    color: #403D38;
    display: inline-flex;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 14px;
    gap: 18px;
}

.flex-contact-info__social a:hover,
.flex-contact-info__social a:focus {
    color: #ff4646;
    text-decoration: none;
}

.flex-contact-info__social img {
    display: block;
    height: auto;
    max-height: 40px;
    max-width: 48px;
    object-fit: contain;
    width: auto;
}

.flex-participants-list {
    background: #F9F9F9;
    padding: 100px 0 !important;
}

.flex-participants-list__header {
    background: none;
    height: auto;
    margin-bottom: 58px;
}

.flex-page .flex-block .flex-participants-list__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 14px;
    position: relative;
}

.flex-participants-list__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-participants-list__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    margin: 0;
}

.flex-participant {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    position: relative;
}

.flex-participant__media {
    overflow: hidden;
}

.flex-participant--reverse .flex-participant__media { order: 2; }
.flex-participant--reverse .flex-participant__content { order: 1; }

.flex-participant__media img {
    display: block;
    height: 100%;
    min-height: 360px;
    object-fit: cover;
    transition: transform 0.35s ease;
    width: 100%;
}

.flex-participant:hover .flex-participant__media img,
.flex-participant:focus-within .flex-participant__media img {
    transform: scale(1.025);
}

.flex-participant__content {
    background: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 360px;
    padding: 56px 64px;
}

.flex-page .flex-block .flex-participant__content h3 {
    color: #403D38;
    font-size: 28px;
    margin: 0 0 5px;
}

.flex-participant__content span {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 12px;
    letter-spacing: 4px;
    margin-bottom: 28px;
    text-transform: uppercase;
}

.flex-participant__content div,
.flex-participant__content p {
    color: #777777;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 14px;
    line-height: 1.6;
}

.flex-participant__content::after {
    background: url('../img/arrow.png') no-repeat left center;
    content: "";
    display: block;
    flex: 0 0 auto;
    height: 13px;
    margin-top: 24px;
    width: 45px;
}

.flex-participant__link {
    display: block;
    inset: 0;
    position: absolute;
    z-index: 2;
}

.flex-participant__link:focus {
    outline: 0;
}

.flex-participants-list__years,
.flex-gallery-albums__years {
    margin-top: 72px;
}

.flex-page .flex-block .flex-participants-list__years h3,
.flex-page .flex-block .flex-gallery-albums__years h3 {
    color: #403D38;
    font-size: 20px;
    margin: 0 0 24px;
}

.flex-participants-list__year-buttons,
.flex-gallery-albums__year-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 48px;
}

.flex-participants-list__year-button,
.flex-gallery-albums__year-button {
    border: 1px solid #ddd;
    color: #ff4646;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 5px;
    min-width: 150px;
    padding: 20px 32px;
    position: relative;
    text-align: center;
}

.flex-participants-list__year-button::after,
.flex-gallery-albums__year-button::after {
    background: url('../img/arrow_dark.png') no-repeat center;
    content: "";
    height: 13px;
    position: absolute;
    right: -30px;
    top: 20px;
    width: 45px;
}

.flex-participants-list__year-button:hover,
.flex-participants-list__year-button:focus,
.flex-gallery-albums__year-button:hover,
.flex-gallery-albums__year-button:focus {
    background: #ff4646;
    border-color: #ff4646;
    color: #fff;
    text-decoration: none;
}

.flex-cards__title,
.flex-cards__intro,
.flex-gallery > .container > h2 {
    text-align: center;
}

.flex-cards__intro {
    margin: 0 auto 38px;
    max-width: 760px;
}

.flex-cards__grid {
    display: grid;
    gap: 28px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.flex-card {
    background: #fff;
    box-shadow: 0 10px 36px rgba(18, 24, 31, 0.08);
}

.flex-card__image {
    aspect-ratio: 16 / 10;
    display: block;
    object-fit: cover;
    width: 100%;
}

.flex-card__body {
    padding: 28px;
}

.flex-card__body h3 {
    font-size: 26px;
}

.flex-text-link {
    color: #806536;
    display: inline-block;
    font-weight: 700;
    margin-top: 12px;
    text-transform: uppercase;
}

.flex-gallery__grid {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.flex-gallery-albums {
    background: #F9F9F9;
    padding: 100px 0 !important;
}

.flex-gallery-albums__header {
    background: none;
    height: auto;
    margin-bottom: 58px;
}

.flex-page .flex-block .flex-gallery-albums__header h2 {
    color: #403D38;
    font-size: 60px;
    isolation: isolate;
    line-height: 1.1;
    margin: 0 0 14px;
    position: relative;
}

.flex-gallery-albums__header h2::before {
    background: #ff4646;
    content: "";
    display: inline-block;
    height: 8px;
    margin-right: -22px;
    position: relative;
    top: -3px;
    vertical-align: middle;
    width: 59px;
    z-index: -1;
}

.flex-gallery-albums__header p {
    color: #949494;
    font-family: "PT Sans", Arial, sans-serif;
    font-size: 13px;
    margin: 0;
}

.flex-gallery-album {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    position: relative;
}

.flex-gallery-album--reverse .flex-gallery-album__cover { order: 2; }
.flex-gallery-album--reverse .flex-gallery-album__content { order: 1; }

.flex-gallery-album__cover {
    background: #eee;
    border: 0;
    cursor: pointer;
    min-height: 345px;
    overflow: hidden;
    padding: 0;
}

.flex-gallery-album__cover img {
    display: block;
    height: 100%;
    min-height: 345px;
    object-fit: cover;
    transition: transform 0.35s ease;
    width: 100%;
}

.flex-gallery-album__cover:hover img,
.flex-gallery-album__cover:focus img,
.flex-gallery-album:hover .flex-gallery-album__cover img,
.flex-gallery-album:focus-within .flex-gallery-album__cover img {
    transform: scale(1.025);
}

.flex-gallery-album__content {
    align-items: flex-start;
    background: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 345px;
    padding: 56px 64px;
}

.flex-page .flex-block .flex-gallery-album__content h3 {
    color: #403D38;
    font-size: 28px;
    line-height: 1.1;
    margin: 0 0 28px;
    text-transform: uppercase;
}

.flex-gallery-album__arrow {
    background: url('../img/arrow.png') no-repeat left center;
    border: 0;
    cursor: pointer;
    height: 13px;
    padding: 0;
    width: 45px;
}

.flex-gallery-album__link {
    background: transparent;
    border: 0;
    cursor: pointer;
    inset: 0;
    padding: 0;
    position: absolute;
    z-index: 2;
}

.flex-gallery-album__link:focus {
    outline: 0;
}

.flex-gallery__grid img {
    aspect-ratio: 1 / 1;
    display: block;
    object-fit: cover;
    width: 100%;
}

.flex-cta {
    color: #fff;
}

.flex-cta--dark {
    background: #222831;
}

.flex-cta--gold {
    background: #9f7d43;
}

.flex-cta__inner {
    align-items: center;
    display: flex;
    gap: 60px;
    justify-content: space-between;
}

.flex-cta__inner h2 {
    color: #fff;
    margin-bottom: 12px;
}

.flex-cta__inner .flex-button {
    flex: 0 0 auto;
    margin-top: 0;
}

.flex-empty {
    min-height: 420px;
}

@media (max-width: 991px) {
    .flex-page .flex-block {
        padding: 56px 0;
    }

    .flex-image-text__grid,
    .flex-cards__grid,
    .flex-gallery__grid {
        grid-template-columns: 1fr 1fr;
    }

    .flex-image-right .flex-image-text__media,
    .flex-image-right .flex-image-text__copy {
        order: initial;
    }

    .flex-festival-intro__card {
        grid-template-columns: 240px minmax(0, 1fr);
    }

    .flex-festival-intro__media img {
        height: 100%;
        min-height: 260px;
    }

    .flex-festival-intro__content {
        padding: 38px;
    }

    .flex-two-columns-image__grid {
        gap: 40px;
    }

    .flex-organizer {
        grid-template-columns: 145px minmax(0, 1fr);
    }

    .flex-organizers__top {
        align-items: start;
        grid-template-columns: 1fr;
    }

    .flex-organizers__logos {
        justify-content: flex-start;
    }

    .flex-organizers__people {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .flex-page .flex-header-eyebrow {
        display: none;
    }

    .flex-page .flex-block {
        padding-top: 48px !important;
    }

    .flex-page .flex-block header {
        border: 0;
        text-align: center;
    }

    .flex-page .flex-block h2 {
        font-size: 34px;
    }

    .flex-hero {
        min-height: 460px;
    }

    .flex-image-text__grid,
    .flex-cards__grid,
    .flex-gallery__grid {
        gap: 24px;
        grid-template-columns: 1fr;
    }

    .flex-cta__inner {
        align-items: flex-start;
        flex-direction: column;
        gap: 26px;
    }

    .flex-festival-intro {
        padding: 70px 0 !important;
    }

    .flex-page .flex-block .flex-festival-intro__header h2 {
        font-size: 38px;
    }

    .flex-festival-intro__header h2::before,
    .flex-two-columns-image__header h2::before,
    .flex-partners-logos__header h2::before,
    .flex-organizers__header h2::before,
    .flex-document-content__header h2::before,
    .flex-pdf-flipbook__header h2::before,
    .flex-contact-info__header h2::before,
    .flex-participants-list__header h2::before,
    .flex-gallery-albums__header h2::before {
        display: none;
    }

    .flex-festival-intro__card {
        grid-template-columns: 1fr;
    }

    .flex-festival-intro__media img {
        height: auto;
        min-height: 0;
    }

    .flex-festival-intro__content {
        padding: 30px 24px;
    }

    .flex-two-columns-image {
        padding: 70px 0 !important;
    }

    .flex-page .flex-block .flex-two-columns-image__header h2 {
        font-size: 38px;
    }

    .flex-two-columns-image__grid {
        grid-template-columns: 1fr;
    }

    .flex-partners-logos {
        padding: 70px 0 !important;
    }

    .flex-page .flex-block .flex-partners-logos__header h2 {
        font-size: 38px;
    }

    .flex-partners-logos__grid {
        margin-left: -15px;
        margin-right: -15px;
        width: calc(100% + 30px);
    }

    .flex-partners-logos__track {
        animation: flex-partners-scroll 22s linear infinite;
        justify-content: flex-start;
        width: max-content;
        will-change: transform;
    }

    .flex-partners-logos__group,
    .flex-partners-logos__group:not(:first-child) {
        display: flex;
        flex-wrap: nowrap;
        gap: 28px;
        padding-right: 28px;
    }

    .flex-partners-logos__item img {
        max-height: 70px;
        max-width: 160px;
    }

    .flex-organizers { padding: 70px 0 !important; }
    .flex-page .flex-block .flex-organizers__header h2 { font-size: 38px; }
    .flex-organizers__top { align-items: start; gap: 28px; grid-template-columns: 1fr; margin-bottom: 34px; }
    .flex-organizers__logos { gap: 22px; justify-content: flex-start; }
    .flex-organizers__logo img { max-height: 58px; max-width: 145px; }
    .flex-organizers__people { gap: 14px; grid-template-columns: 1fr; }
    .flex-organizer { grid-template-columns: 92px minmax(0, 1fr); min-height: 128px; }
    .flex-organizer__image { min-height: 128px; }
    .flex-organizer__content { padding: 20px 18px; }
    .flex-page .flex-block .flex-organizer__content h3 {
        font-family: "Playfair Display", Georgia, serif;
        font-size: 16px;
        font-weight: 700;
        letter-spacing: 0;
        line-height: 24px;
        margin-bottom: 8px;
        text-transform: uppercase;
    }
    .flex-organizer__role,
    .flex-organizer__contact,
    .flex-organizer__contact p,
    .flex-organizer__contact a {
        font-size: 12px;
        font-weight: 400;
        letter-spacing: 2px;
        line-height: 16px;
    }
    .flex-organizers__description { gap: 24px; grid-template-columns: 1fr; margin-top: 34px; }

    .flex-document-content {
        padding: 70px 0 !important;
    }

    .flex-pdf-flipbook {
        padding: 70px 0 !important;
    }

    .flex-youtube-video {
        padding: 48px 0 !important;
    }

    .flex-page .flex-block .flex-document-content__header h2 {
        font-size: 38px;
    }

    .flex-page .flex-block .flex-pdf-flipbook__header h2 {
        font-size: 38px;
    }

    .flex-pdf-flipbook__card {
        grid-template-columns: 1fr;
    }

    .flex-pdf-flipbook__card--reverse .flex-pdf-flipbook__cover,
    .flex-pdf-flipbook__card--reverse .flex-pdf-flipbook__content {
        order: initial;
    }

    .flex-pdf-flipbook__cover,
    .flex-pdf-flipbook__cover img {
        min-height: 0;
    }

    .flex-pdf-flipbook__cover img {
        aspect-ratio: 16 / 10;
        height: auto;
    }

    .flex-pdf-flipbook__content {
        min-height: 210px;
        padding: 36px 24px;
    }

    .flex-pdf-flipbook__download {
        box-sizing: border-box;
        width: 100%;
    }

    .flex-document-content__actions {
        align-items: flex-start;
        flex-direction: column;
        gap: 26px;
        width: 100%;
    }

    .flex-document-content__button,
    .flex-festival-intro__button {
        box-sizing: border-box;
        letter-spacing: 3px;
        min-width: 0;
        padding: 24px 18px;
        width: 100%;
    }

    .flex-document-content__button::after,
    .flex-festival-intro__button::after {
        display: none;
    }

    .flex-contact-info { padding: 70px 0 !important; }
    .flex-page .flex-block .flex-contact-info__header h2 { font-size: 38px; }

    .flex-participants-list { padding: 70px 0 !important; }
    .flex-page .flex-block .flex-participants-list__header h2 { font-size: 38px; }
    .flex-participant { grid-template-columns: 1fr; }
    .flex-participant--reverse .flex-participant__media,
    .flex-participant--reverse .flex-participant__content { order: initial; }
    .flex-participant__media img { height: auto; min-height: 0; }
    .flex-participant__content { min-height: 0; padding: 36px 24px; }
    .flex-participants-list__year-buttons,
    .flex-gallery-albums__year-buttons { flex-direction: column; gap: 26px; }
    .flex-participants-list__year-button,
    .flex-gallery-albums__year-button { box-sizing: border-box; width: 100%; }
    .flex-participants-list__year-button::after,
    .flex-gallery-albums__year-button::after { display: none; }

    .flex-gallery-albums { padding: 70px 0 !important; }
    .flex-page .flex-block .flex-gallery-albums__header h2 { font-size: 38px; }
    .flex-gallery-album { grid-template-columns: 1fr; }
    .flex-gallery-album--reverse .flex-gallery-album__cover,
    .flex-gallery-album--reverse .flex-gallery-album__content { order: initial; }
    .flex-gallery-album__cover,
    .flex-gallery-album__cover img { min-height: 0; }
    .flex-gallery-album__cover img { height: auto; }
    .flex-gallery-album__content { min-height: 0; padding: 36px 24px; }

}

@media (prefers-reduced-motion: reduce) and (max-width: 640px) {
    .flex-partners-logos__track {
        animation: none;
        justify-content: center;
        width: 100%;
    }

    .flex-partners-logos__group {
        flex-wrap: wrap;
        justify-content: center;
        padding-right: 0;
    }

    .flex-partners-logos__group:not(:first-child) {
        display: none;
    }
}
