/* A horizontal introduction and one sidebar share the same section targets. */
.site-navigation-enabled { --site-toolbar-height: 64px; }
.site-toolbar {
    position: fixed;
    inset: 0 0 auto;
    min-height: 64px;
    padding: 8px 16px;
    display: flex;
    align-items: center;
    gap: 12px;
    background: #fff;
    border-bottom: 1px solid #ddd;
    z-index: 20;
}
.site-toolbar .language-switcher {
    position: static;
    display: flex;
    align-items: center;
    margin: 0 0 0 auto;
    padding: 0;
    background: transparent;
}
.site-toolbar .language-switcher a {
    min-width: 36px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.site-toolbar .language-switcher span { margin: 0; }
.site-navigation-enabled #nav-top {
    height: auto;
    min-height: var(--site-toolbar-height);
    padding: 0;
}
.site-navigation-enabled #nav-top::before,
.site-navigation-enabled #nav-top::after,
.site-navigation-enabled #nav-top > nav,
.site-navigation-enabled .upper-sidenav { display: none; }
.site-navigation-enabled #sidenav {
    position: fixed;
    top: calc(var(--site-toolbar-height) + 16px);
    left: 24px;
    width: min(26vw, 330px);
    max-height: calc(100vh - var(--site-toolbar-height) - 32px);
    max-height: calc(100svh - var(--site-toolbar-height) - 32px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 12px;
    border: 1px solid #d8c4c4;
    border-radius: 10px;
    background: #fff;
    display: block;
    z-index: 19;
}
.site-navigation-enabled #sidenav .nav > li > a {
    font-size: 17px;
    line-height: 1.35;
    padding: 10px;
    overflow-wrap: anywhere;
}
.site-navigation-enabled #sidenav .subnav { margin: 0 0 5px 12px; }
.site-navigation-enabled #sidenav .subnav > li > a {
    padding: 8px;
    font-size: 15px;
    line-height: 1.35;
}
.site-navigation-enabled #sidenav hr { margin: 6px 0; }
.site-navigation-enabled #menu_button {
    position: static;
    flex: 0 0 44px;
    width: 44px;
    height: 44px;
    padding: 8px;
    border: 0;
    border-radius: 8px;
    background: #333;
    color: #fff;
    font-size: 22px;
    opacity: 1;
    display: none !important;
}
.site-nav-compact #menu_button { display: inline-flex !important; align-items: center; justify-content: center; }
.site-nav-compact #sidenav {
    left: 12px;
    width: min(380px, calc(100vw - 24px));
    display: none;
}
.site-nav-compact.site-nav-open #sidenav { display: block; }
.site-horizontal-capable #nav-top,
.site-nav-measuring #nav-top {
    padding: var(--site-toolbar-height) 24px 0;
    background: #fff;
    z-index: 6;
}
.site-horizontal-capable #nav-top > nav.site-horizontal,
.site-nav-measuring #nav-top > nav.site-horizontal {
    display: block;
    position: relative;
    min-height: 0;
    margin: 0;
    padding: 10px 0;
    border: 0;
}
.site-horizontal > .nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 8px;
    margin: 0;
}
.site-horizontal > .nav::before,
.site-horizontal > .nav::after,
.site-horizontal > .nav > hr { display: none; }
.site-horizontal > .nav > li { float: none; margin: 0; }
.site-horizontal > .nav > li > a {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: 10px;
    font-size: 17px;
    line-height: 1.35;
    white-space: nowrap;
}
.site-horizontal .horizontal-prices { display: flex; align-items: center; }
.horizontal-price-toggle {
    min-width: 36px;
    min-height: 44px;
    padding: 8px;
    border: 0;
    border-radius: 6px;
    background: #fff;
    color: #c11214;
    font-size: 18px;
}
.horizontal-price-toggle:hover { background: #eee; }
.site-horizontal .nav .subnav {
    position: absolute;
    top: 100%;
    left: 0;
    width: 300px;
    max-width: calc(100vw - 48px);
    margin: 0;
    padding: 8px;
    border: 1px solid #d8c4c4;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 6px 16px rgba(0,0,0,.12);
    z-index: 2;
}
.site-horizontal .nav .subnav > li > a { min-height: 44px; padding: 10px; }
.site-horizontal a:focus-visible,
.horizontal-price-toggle:focus-visible { outline: 3px solid #c11214; outline-offset: 2px; }
.site-navigation-enabled :where(#sidenav a, .site-toolbar a, .site-toolbar button, #up_button, .booking-direct):focus-visible {
    outline: 3px solid #c11214;
    outline-offset: 3px;
}
.site-navigation-enabled [data-navigation-focus]:focus-visible {
    outline: 2px solid #c11214;
    outline-offset: 4px;
}
.site-navigation-enabled :where([id]) { scroll-margin-top: calc(var(--site-toolbar-height) + 16px); }
.site-navigation-enabled #up_button { z-index: 18; }
.site-navigation-enabled [hidden] { display: none !important; }
.booking-direct { white-space: normal; max-width: 100%; }
.booking-direct-wrap { margin: 20px 0; }
.calendar-load-button { background: #fff; color: #c11214; border: 1px solid #c11214; white-space: normal; max-width: 100%; }
@media (min-width: 1200px) {
    .site-navigation-enabled .programmbloecke-inline-host .program-container {
        width: calc(66.666667% - 32px);
        margin-left: calc(33.333333% + 16px);
        margin-right: 16px;
    }
}

.booking-qr { margin: 24px 0; }
.booking-qr-image { display: block; width: 185px; max-width: 100%; height: auto; aspect-ratio: 1; background: #fff; border: 0; border-radius: 0; padding: 0; object-fit: contain; }
.booking-qr a:focus-visible { outline: 3px solid #c11214; outline-offset: 4px; }

/* One contact block: beside the desktop links, otherwise in the existing toolbar. */
/* Keep longer form labels clear of the fixed sidebar on narrower desktops. */
@media (min-width: 1200px) and (max-width: 1399px) {
    .site-navigation-enabled #FormMailer .control-label {
        margin-left: 33.33333333%;
        width: 8.33333333%;
        overflow-wrap: anywhere;
    }
}
.site-horizontal > .nav > .nav-contact-slot { margin-left: auto; }
.nav-contact-slot:empty { display: none; }
.site-horizontal-capable .nav-contact-slot:empty { display: block; width: var(--contact-width); min-height: var(--contact-height); }
.navigation-contact { display: grid; grid-template-columns: auto auto; align-items: center; gap: 4px 12px; flex: 0 0 auto; }
.navigation-contact a { font-style: normal; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; text-decoration: none; white-space: nowrap; font-size: 15px; line-height: 1.3; }
.navigation-contact .nav-phone { padding: 8px 4px; color: #333; }
.navigation-contact .nav-booking { padding: 10px 16px; border-radius: 8px; background: #c11214; color: #fff; font-weight: 700; }
.navigation-contact .nav-booking:hover { background: #941012; color: #fff; }
.navigation-contact .nav-phone:hover { color: #c11214; text-decoration: underline; }
.navigation-contact a:focus-visible { outline: 3px solid #c11214; outline-offset: 3px; }
.nav-contact-caption { grid-column: 1 / -1; margin: 0; color: #555; font-size: 13px; line-height: 1.5; text-align: right; font-style: normal; }
.site-toolbar .navigation-contact { gap: 8px; }
.site-toolbar .nav-contact-caption { display: none; }
@media (max-width: 767px) {
    .site-toolbar .nav-phone-number { display: none; }
    .site-toolbar .nav-phone { min-width: 44px; padding: 8px; font-size: 20px; }
}
@media (max-width: 639px) {
    .site-toolbar .nav-booking { display: none; }
    .site-toolbar .navigation-contact { display: flex; }
    .site-toolbar { gap: 8px; padding-inline: 12px; }
}
