/* Horizontal festival navigation and shared footer */
.header-horizontal{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:32px;
    min-height:160px;
    padding:24px clamp(20px, 3.7vw, 48px);
}

.header-horizontal__brand{
    display:flex;
    align-items:center;
    gap:18px;
    color:#01344f;
}

.header-horizontal__brand:hover{
    text-decoration:none;
}

.header-horizontal__brand img{
    width:60px;
    height:98px;
    object-fit:contain;
}

.header-horizontal__brand span{
    max-width:220px;
    font-family:"Colo Pro", sans-serif;
    font-size:22px;
    line-height:1.1;
    text-transform:uppercase;
}

nav.header-horizontal__menu{
    position:static;
    z-index:auto;
    width:auto;
    height:auto;
    overflow:visible;
    padding:12px 32px;
}

nav.header-horizontal__menu::after{
    display:none;
}

.header-horizontal__menu{
    display:flex;
    align-items:center;
    gap:18px;
    border-radius:999px;
    background:rgba(255,255,255,.55);
}

.header-horizontal__menu a{
    color:#17365d;
    font-size:26px;
    padding-left:8px;
    white-space:nowrap;
}

.header-horizontal__menu a:hover,
.header-horizontal__menu a[aria-current="page"]{
    color:#d12129;
    text-decoration:none;
}

.header-horizontal__menu .header-horizontal__language{
    display:inline-flex;
    align-items:center;
    padding:0 4px;
    background:none;
}

.header-horizontal__language span{
    font-size:22px;
    line-height:1;
}

main{
    width:100%;
    max-width:1200px;
    margin:0 auto;
    padding:40px clamp(20px, 5vw, 64px);
}

main.map{
    max-width:none;
    margin:0;
    padding:0;
}

.location{
    left:0;
}

.site-footer,
#footer.site-footer{
    width:100%;
    margin:0;
    padding:0;
    background:#f5f2e5;
}

.site-footer__partners{
    padding-top:28px;
    text-align:center;
}

.site-footer__partners h2{
    margin:0 0 20px;
    color:#c62828;
    font-size:28px;
    line-height:1.1;
}

.site-footer__partners-strip{
    padding:24px 0;
    background:#fff;
}

.site-footer__partners-list{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-around;
    gap:24px;
    width:100%;
    max-width:1200px;
    margin:0 auto;
    padding:0 clamp(20px, 5vw, 64px);
}

.site-footer__partners-list .partner-img{
    display:flex;
    flex:0 1 180px;
    align-items:center;
    justify-content:center;
    aspect-ratio:2;
}

.site-footer__partners-list .partner-img img{
    width:100%;
    height:100%;
    object-fit:contain;
}

.site-footer__bottom{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:24px;
    max-width:1200px;
    margin:0 auto;
    padding:28px clamp(20px, 5vw, 64px);
}

.site-footer__logo img{
    width:56px;
    height:auto;
}

.site-footer #social{
    gap:16px;
    margin-bottom:14px;
}

.site-footer #social a{
    color:#01344f;
    font-size:22px;
}

.site-footer #social a:hover{
    color:#d12129;
}

/* Home page sections */
.single-page__section{
    padding:48px 0;
    scroll-margin-top:24px;
}

.single-page--home{
    max-width:none;
    margin:0;
    padding:0;
}

.single-page--home > .single-page__section:not(.home-feature){
    max-width:1200px;
    margin-right:auto;
    margin-left:auto;
    padding-right:clamp(20px, 5vw, 64px);
    padding-left:clamp(20px, 5vw, 64px);
}

.single-page__intro{
    padding-top:0;
}

.single-page__intro h1{
    margin-bottom:18px;
    color:#01344f;
    font-size:clamp(40px, 6vw, 72px);
    line-height:1.05;
}

.single-page__intro h2{
    color:#01344f;
    font-size:clamp(24px, 3vw, 36px);
    line-height:1.2;
}

.single-page__intro h3{
    color:#01344f;
    font-size:clamp(21px, 2.5vw, 30px);
    line-height:1.25;
}

.single-page__intro p{
    max-width:1000px;
    font-size:20px;
    line-height:1.5;
}

.home-feature{
    padding: 28px 0;
}

.home-feature__inner{
    position: relative;
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 24px clamp(20px, 3vw, 40px);
    box-sizing: border-box;
}

.home-feature--background-cream{
    background: #f5f2e5;
}

.home-feature--background-white{
    background: #fff;
}

.home-feature__content{
    min-width: 0;
    width: 100%;
}

.home-feature__content h1{
    margin: 0;
    color: #c62828;
    font-size: 42px;
    line-height: 1.1;
}

.home-feature__title{
    display: inline-block;
    position: relative;
    max-width: 100%;
    padding-bottom: 19px;
}

.home-feature__title::after{
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 30%;
    height: 11px;
    background: url("/skin/img/title-brush.svg") center / contain no-repeat;
}

.home-feature__text{
    color: #01344f;
    font-size: 20px;
    line-height: 1.3;
}

.home-feature__text p{
    margin: 0 0 14px;
}

.home-feature__text p:last-child{
    margin-bottom: 0;
}

.home-feature__text h3{
    color: #01344f;
    line-height: 1.3;
}

.home-feature--about .home-feature__content{
    display: grid;
    grid-template-rows: auto 1fr auto auto;
    gap: 24px;
    align-items: center;
    min-height: 380px;
    width: calc(50% - 20px);
    margin-left: auto;
}

.home-feature--about .home-feature__content h1{
    text-align: center;
    color: #01344f;
}

.home-feature--about .home-feature__text img{
    position: absolute;
    top: 0;
    left: clamp(20px, 3vw, 40px);
    width: calc(50% - 52px);
    height: 380px;
    object-fit: cover;
}

.home-feature--program .home-feature__content{
    display: grid;
    grid-template-rows: auto 1fr auto;
    gap: 24px;
    align-items: center;
    min-height: 380px;
    width: calc(50% - 20px);
    margin-right: auto;
}

.home-feature--program .home-feature__content h1{
    text-align: center;
}

.home-feature--program .home-feature__text img{
    position: absolute;
    top: 0;
    right: clamp(20px, 3vw, 40px);
    width: calc(50% - 52px);
    height: 380px;
    object-fit: cover;
}

.home-feature__text img{
    display: block;
    border: 2px solid #163a5f;
    border-radius: 26% 20% 25% 18% / 28% 24% 25% 24%;
    box-shadow: 0 0 0 4px #fff, 0 0 0 6px #163a5f;
    box-sizing: border-box;
}

.home-feature__text table{
    width: 100%;
    max-width: 100%;
    table-layout: fixed;
}

.home-feature__text th,
.home-feature__text td{
    overflow-wrap: anywhere;
}

.home-feature__button{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: max-content;
    min-width: 236px;
    min-height: 60px;
    max-width: 100%;
    margin: 0 auto;
    padding: 10px 24px;
    border: 2px solid #01344f;
    border-radius: 999px;
    color: #01344f;
    font-size: 20px;
    text-align: center;
    grid-column: 1;
    grid-row: 3;
}

.home-feature__button:hover{
    text-decoration: none;
    background: #01344f;
    color: #fff;
}

.home-feature--about .home-feature__button{
    grid-column: 1;
    grid-row: 3;
}

.home-feature__social{
    display: flex;
    justify-content: center;
    gap: 16px;
    grid-column: 1;
    grid-row: 4;
}

.home-feature__social a{
    color: #01344f;
    font-size: 24px;
}

.home-feature__social a:hover{
    color: #c62828;
    text-decoration: none;
}

@media (max-width: 1000px){
    .home-feature__inner{
        padding: 0 24px;
    }

    .home-feature{
        padding: 44px 0;
    }

    .home-feature--about .home-feature__content,
    .home-feature--program .home-feature__content{
        display: block;
        width: 100%;
        min-height: 0;
    }

    .home-feature__content h1{
        font-size: 38px;
        line-height: 1.1;
    }

    .home-feature--about .home-feature__text img{
        position: static;
        width: 100%;
        max-width: 100%;
        height: auto;
        aspect-ratio: 1.45;
        margin-top: 12px;
    }

    .home-feature--program .home-feature__text img{
        position: static;
        width: 100%;
        max-width: 100%;
        height: auto;
        aspect-ratio: 1.45;
        margin-top: 12px;
    }

    .home-feature__text h3{
        font-size: 16px;
        line-height: 1.3;
    }

    .home-feature__text{
        font-size: 16px;
    }

    .home-feature__button{
        margin: 20px auto 0;
    }

    .home-feature__social{
        margin-top: 20px;
    }
}

@media (max-width:760px){
    .header-horizontal{
        min-height:0;
        align-items:flex-start;
        flex-direction:column;
        gap:18px;
        padding:18px 20px 24px;
    }

    .header-horizontal__brand img{
        width:48px;
        height:78px;
    }

    .header-horizontal__brand span{
        max-width:240px;
        font-size:18px;
    }

    nav.header-horizontal__menu{
        width:100%;
        padding:10px 20px;
    }

    .header-horizontal__menu{
        flex-wrap:wrap;
        gap:8px 18px;
    }

    .header-horizontal__menu a{
        font-size:20px;
    }

    .header-horizontal__menu .header-horizontal__language{
        font-size:14px;
    }

    main{
        padding:28px 20px;
    }

    main.map{
        padding:0;
    }

    .single-page--home > .single-page__section:not(.home-feature){
        padding-right:20px;
        padding-left:20px;
    }

    .single-page__intro p{
        font-size:18px;
    }

    .site-footer__partners-list{
        gap:18px;
        padding-right:20px;
        padding-left:20px;
    }
}

@media (max-width:480px){
    .header-horizontal__menu{
        gap:8px 12px;
    }

    .header-horizontal__menu a{
        font-size:18px;
    }

    .site-footer__bottom{
        align-items:flex-start;
        flex-direction:column-reverse;
        padding:24px 20px;
    }

    .site-footer__partners-list .partner-img{
        flex-basis:130px;
    }
}


/* Event status: fully booked / canceled */
.registration-closed{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:stretch;
    text-align:center;
}

@media (max-width: 760px){
    .registration-closed{ flex:1 1 140px; }
}

.btn--disabled,
.button--disabled{
    opacity:.45;
    cursor:not-allowed;
    pointer-events:none;
}

/* Label overlays below the button so it doesn't change the row height */
.registration-closed small,
.registration-closed__text{
    position:absolute;
    top:100%;
    left:0;
    right:0;
    margin-top:2px;
    text-align:center;
    font-size:12px;
    line-height:1.2;
    color:#c62828;
    font-weight:600;
}

@media (max-width: 760px){
    #schedule .registration-closed .btn{
        flex:none;
    }

    #schedule .actions > .btn{
        align-self:flex-start;
    }

    .registration-closed small,
    .registration-closed__text{
        position:static;
        margin-top:4px;
        padding-bottom:8px;
    }
}

.event-cancelled{
    color:#c62828;
    font-weight:900 !important;
    text-transform:uppercase;
    font-size:14px;
    letter-spacing:.04em;
    margin-bottom:4px;
}
