.jokis-booking {
    --booking-navy: var(--jokis-navy, #153b67);
    --booking-navy-dark: #0c294b;
    --booking-brown: var(--jokis-brown, #865724);
    --booking-paper: var(--jokis-paper, #f7f2eb);
    --booking-sand: #e6d7c4;
    --booking-ink: #26313c;
    --booking-muted: #66717c;
    --booking-line: rgba(21, 59, 103, .14);
    --booking-heading: var(--jokis-font-heading, "Fraunces", Georgia, serif);
    --booking-body: var(--jokis-font-body, "Source Sans 3", Arial, sans-serif);
    scroll-margin-top: 110px;
    padding: clamp(64px, 8vw, 112px) max(16px, env(safe-area-inset-right)) clamp(72px, 9vw, 128px) max(16px, env(safe-area-inset-left));
    color: var(--booking-ink);
    background:
        radial-gradient(circle at 12% 0%, rgba(134, 87, 36, .08), transparent 32%),
        linear-gradient(180deg, #fbf8f4 0%, var(--booking-paper) 100%);
    font-family: var(--booking-body);
}

.jokis-booking *, .jokis-booking *::before, .jokis-booking *::after { box-sizing: border-box; }
.jokis-booking__inner { width: min(1180px, 100%); margin-inline: auto; }
.jokis-booking__header { width: min(760px, 100%); margin: 0 auto clamp(36px, 5vw, 64px); text-align: center; }
.jokis-booking__eyebrow { display: inline-block; margin-bottom: 12px; color: var(--booking-brown); font-size: .82rem; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; }
.jokis-booking__header h2 { margin: 0; color: var(--booking-navy); font-family: var(--booking-heading); font-size: clamp(2.15rem, 5vw, 4.65rem); font-weight: 600; line-height: 1.02; letter-spacing: -.035em; overflow-wrap: anywhere; text-wrap: balance; }
.jokis-booking__header p { max-width: 650px; margin: 20px auto 0; color: var(--booking-muted); font-size: clamp(1rem, 1.4vw, 1.18rem); line-height: 1.7; }

.jokis-booking__notice { display: flex; gap: 14px; align-items: flex-start; width: min(900px, 100%); margin: 0 auto 24px; padding: 18px 20px; border: 1px solid; border-radius: 16px; background: #fff; box-shadow: 0 12px 35px rgba(18, 39, 62, .06); }
.jokis-booking__notice > i { margin-top: 2px; font-size: 1.3rem; }
.jokis-booking__notice strong, .jokis-booking__notice span { display: block; }
.jokis-booking__notice strong { margin-bottom: 2px; color: var(--booking-navy); }
.jokis-booking__notice span { color: var(--booking-muted); line-height: 1.5; }
.jokis-booking__notice--success { border-color: rgba(34, 124, 79, .28); color: #227c4f; }
.jokis-booking__notice--info { border-color: rgba(21, 59, 103, .25); color: var(--booking-navy); }
.jokis-booking__notice--warning { border-color: rgba(166, 105, 23, .3); color: #a66917; }
.jokis-booking__notice--danger { border-color: rgba(176, 54, 54, .28); color: #b03636; }

.jokis-booking__list { display: grid; gap: 22px; }
.jokis-event { display: grid; grid-template-columns: 110px minmax(0, 1fr) minmax(260px, 330px); gap: clamp(20px, 3vw, 38px); align-items: start; padding: clamp(22px, 3vw, 34px); border: 1px solid var(--booking-line); border-radius: 24px; background: rgba(255, 255, 255, .88); box-shadow: 0 18px 48px rgba(19, 43, 70, .08); }
.jokis-event__date { display: grid; place-items: center; align-content: center; min-height: 106px; padding: 14px; border-radius: 18px; color: #fff; background: linear-gradient(145deg, var(--booking-navy), var(--booking-navy-dark)); box-shadow: 0 12px 26px rgba(21, 59, 103, .2); }
.jokis-event__day { font-family: var(--booking-heading); font-size: clamp(2.4rem, 4vw, 3.5rem); font-weight: 600; line-height: .9; }
.jokis-event__month { margin-top: 8px; font-size: .78rem; font-weight: 700; letter-spacing: .16em; }
.jokis-event__content { min-width: 0; }
.jokis-event__topline { display: flex; flex-wrap: wrap; gap: 5px 14px; margin-bottom: 8px; color: var(--booking-brown); font-size: .78rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.jokis-event__content h3 { margin: 0; color: var(--booking-navy); font-family: var(--booking-heading); font-size: clamp(1.65rem, 3vw, 2.65rem); font-weight: 600; line-height: 1.08; letter-spacing: -.025em; overflow-wrap: anywhere; text-wrap: balance; }
.jokis-event__description { margin-top: 12px; color: var(--booking-muted); font-size: 1rem; line-height: 1.65; }
.jokis-event__description > :last-child { margin-bottom: 0; }
.jokis-event__meta { display: flex; flex-wrap: wrap; gap: 10px 18px; margin-top: 18px; }
.jokis-event__meta span { display: inline-flex; gap: 8px; align-items: center; color: #4b5864; font-size: .94rem; }
.jokis-event__meta i { width: 16px; color: var(--booking-brown); text-align: center; }
.jokis-event__booking { min-width: 0; }
.jokis-event__availability { margin-bottom: 14px; padding: 13px 16px; border-radius: 14px; background: #edf6f0; color: #227c4f; }
.jokis-event__availability strong, .jokis-event__availability span { display: block; }
.jokis-event__availability strong { font-size: 1.2rem; line-height: 1.15; }
.jokis-event__availability span { margin-top: 2px; font-size: .85rem; }
.jokis-event__availability.is-low { background: #fff4e4; color: #9a5d11; }
.jokis-event__availability.is-empty { background: #f4eeee; color: #984444; }
.jokis-event__details { border: 1px solid var(--booking-line); border-radius: 14px; background: #fff; overflow: hidden; }
.jokis-event__details summary { display: flex; gap: 10px; align-items: center; justify-content: center; min-height: 50px; padding: 12px 16px; color: var(--booking-navy); cursor: pointer; font-weight: 700; list-style: none; }
.jokis-event__details summary::-webkit-details-marker { display: none; }
.jokis-event__details[open] summary { border-bottom: 1px solid var(--booking-line); background: var(--booking-paper); }

.jokis-booking-form { padding: 20px; }
.jokis-booking-form__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.jokis-booking-form__ticket-types { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; padding: 16px; border: 1px solid var(--booking-line); border-radius: 12px; background: var(--booking-paper); }
.jokis-booking-form__ticket-types .jokis-field label span { display: block; margin-top: 2px; font-size: .78rem; line-height: 1.35; }
.jokis-booking-form__tariff-note { grid-column: 1 / -1; display: flex; gap: 8px; align-items: flex-start; margin: 0; color: var(--booking-muted); font-size: .8rem; line-height: 1.45; }
.jokis-booking-form__tariff-note i { margin-top: 3px; color: var(--booking-brown); }
.jokis-field { min-width: 0; }
.jokis-field--full { grid-column: 1 / -1; }
.jokis-field label { display: block; margin-bottom: 6px; color: var(--booking-navy); font-size: .88rem; font-weight: 700; }
.jokis-field label span { color: var(--booking-muted); font-weight: 400; }
.jokis-field input, .jokis-field select, .jokis-field textarea { width: 100%; min-height: 46px; padding: 10px 12px; border: 1px solid rgba(21, 59, 103, .2); border-radius: 9px; color: var(--booking-ink); background: #fff; font: inherit; font-size: 16px; outline: none; }
.jokis-field textarea { min-height: 88px; resize: vertical; }
.jokis-field input:focus, .jokis-field select:focus, .jokis-field textarea:focus { border-color: var(--booking-navy); box-shadow: 0 0 0 3px rgba(21, 59, 103, .1); }
.jokis-check { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 10px; align-items: start; margin-top: 16px; color: var(--booking-muted); font-size: .86rem; line-height: 1.45; }
.jokis-check input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--booking-navy); }
.jokis-check a { color: var(--booking-navy); text-decoration: underline; text-underline-offset: 2px; }
.jokis-booking-form__footer { display: flex; gap: 16px; align-items: center; justify-content: space-between; margin-top: 18px; }
.jokis-booking-form__price span, .jokis-booking-form__price strong { display: block; }
.jokis-booking-form__price span { color: var(--booking-muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .08em; }
.jokis-booking-form__price strong { margin-top: 2px; color: var(--booking-navy); font-family: var(--booking-heading); font-size: 1.55rem; }
.jokis-paypal-button { display: inline-flex; gap: 10px; align-items: center; justify-content: center; min-height: 50px; padding: 12px 18px; border: 0; border-radius: 999px; color: #111; background: #ffc439; cursor: pointer; font-family: inherit; font-size: .92rem; font-weight: 800; transition: transform .18s ease, box-shadow .18s ease; }
.jokis-paypal-button:hover { transform: translateY(-1px); box-shadow: 0 9px 22px rgba(17, 17, 17, .13); }
.jokis-paypal-button i { color: #003087; font-size: 1.2rem; }
.jokis-booking-form__note { display: flex; gap: 7px; align-items: flex-start; margin: 14px 0 0; color: var(--booking-muted); font-size: .78rem; line-height: 1.45; }
.jokis-booking-form__note i { margin-top: 2px; color: var(--booking-navy); }
.jokis-booking-form__honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

.jokis-booking__empty { padding: clamp(36px, 6vw, 72px) 20px; border: 1px solid var(--booking-line); border-radius: 24px; background: rgba(255,255,255,.75); text-align: center; }
.jokis-booking__empty i { color: var(--booking-brown); font-size: 2.3rem; }
.jokis-booking__empty h3 { margin: 18px 0 8px; color: var(--booking-navy); font-family: var(--booking-heading); font-size: clamp(1.5rem, 3vw, 2.25rem); }
.jokis-booking__empty p { margin: 0; color: var(--booking-muted); }



/* Buchungs-Lightbox */
html.jokis-booking-lightbox-open,
body.jokis-booking-lightbox-open {
    overflow: hidden;
    overscroll-behavior: none;
}

.jokis-booking-lightbox {
    width: min(1280px, calc(100vw - 40px));
    height: min(920px, calc(100dvh - 40px));
    max-width: none;
    max-height: none;
    margin: auto;
    padding: 0;
    border: 0;
    border-radius: 26px;
    color: #26313c;
    background: transparent;
    box-shadow: 0 30px 90px rgba(5, 20, 38, .35);
    overflow: visible;
}

.jokis-booking-lightbox[open] {
    display: block;
}

.jokis-booking-lightbox::backdrop {
    background: rgba(7, 23, 40, .76);
    backdrop-filter: blur(7px);
    -webkit-backdrop-filter: blur(7px);
}

.jokis-booking-lightbox__panel {
    position: relative;
    width: 100%;
    height: 100%;
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: inherit;
    background: #f7f2eb;
    overflow: hidden;
}

.jokis-booking-lightbox__scroll {
    width: 100%;
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    -webkit-overflow-scrolling: touch;
}

.jokis-booking-lightbox__close {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 10;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    padding: 0;
    border: 1px solid rgba(21, 59, 103, .14);
    border-radius: 50%;
    color: #153b67;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 10px 30px rgba(12, 41, 75, .14);
    cursor: pointer;
    transition: transform .18s ease, color .18s ease, background-color .18s ease;
}

.jokis-booking-lightbox__close:hover,
.jokis-booking-lightbox__close:focus-visible {
    color: #fff;
    background: #153b67;
    transform: translateY(-1px);
    outline: none;
}

.jokis-booking-lightbox__close i {
    font-size: 1.2rem;
}

.jokis-booking--lightbox {
    min-height: 100%;
    scroll-margin-top: 0;
    padding-top: clamp(64px, 6vw, 88px);
    padding-right: clamp(20px, 4vw, 54px);
    padding-bottom: clamp(48px, 6vw, 80px);
    padding-left: clamp(20px, 4vw, 54px);
}

.jokis-booking--lightbox .jokis-booking__header {
    margin-bottom: clamp(30px, 4vw, 48px);
}

@media (prefers-reduced-motion: no-preference) {
    .jokis-booking-lightbox[open] .jokis-booking-lightbox__panel {
        animation: jokis-booking-lightbox-in .22s ease-out both;
    }

    @keyframes jokis-booking-lightbox-in {
        from { opacity: 0; transform: translateY(18px) scale(.985); }
        to { opacity: 1; transform: translateY(0) scale(1); }
    }
}

@media (max-width: 991.98px) {
    .jokis-booking { scroll-margin-top: 86px; }
    .jokis-event { grid-template-columns: 92px minmax(0, 1fr); }
    .jokis-event__booking { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(180px, .55fr) minmax(0, 1fr); gap: 16px; align-items: start; }
    .jokis-event__availability { margin-bottom: 0; }
}

@media (max-width: 767.98px) {
    .jokis-booking-form__ticket-types { grid-template-columns: 1fr; padding: 14px; }
    .jokis-booking { padding-inline: max(20px, env(safe-area-inset-left)); }
    .jokis-booking__header { text-align: left; }
    .jokis-booking__header p { margin-left: 0; }
    .jokis-event { grid-template-columns: 72px minmax(0, 1fr); gap: 16px; padding: 20px; border-radius: 20px; }
    .jokis-event__date { min-height: 78px; padding: 10px 6px; border-radius: 14px; }
    .jokis-event__day { font-size: 2.15rem; }
    .jokis-event__month { margin-top: 5px; font-size: .68rem; }
    .jokis-event__booking { display: block; }
    .jokis-event__availability { margin-bottom: 12px; }
    .jokis-booking-form { padding: 16px; }
    .jokis-booking-form__grid { grid-template-columns: 1fr; }
    .jokis-field--full { grid-column: auto; }
    .jokis-booking-form__footer { align-items: stretch; flex-direction: column; }
    .jokis-paypal-button { width: 100%; }
}

@media (max-width: 479.98px) {
    .jokis-booking { padding-inline: max(16px, env(safe-area-inset-left)); }
    .jokis-event { grid-template-columns: 1fr; }
    .jokis-event__date { display: flex; gap: 8px; justify-content: flex-start; width: max-content; min-height: 0; padding: 8px 12px; }
    .jokis-event__day { font-family: inherit; font-size: .9rem; font-weight: 800; line-height: 1; }
    .jokis-event__month { margin-top: 0; font-size: .72rem; }
    .jokis-event__topline { margin-top: -2px; }
    .jokis-booking__notice { padding: 16px; }
}


@media (max-width: 767.98px) {
    .jokis-booking-lightbox {
        width: 100vw;
        height: 100dvh;
        max-width: 100vw;
        max-height: 100dvh;
        margin: 0;
        border-radius: 0;
    }

    .jokis-booking-lightbox__panel {
        border: 0;
        border-radius: 0;
    }

    .jokis-booking-lightbox__close {
        top: max(12px, env(safe-area-inset-top));
        right: max(12px, env(safe-area-inset-right));
        width: 46px;
        height: 46px;
    }

    .jokis-booking--lightbox {
        padding-top: max(72px, calc(env(safe-area-inset-top) + 64px));
        padding-right: max(20px, env(safe-area-inset-right));
        padding-bottom: max(40px, env(safe-area-inset-bottom));
        padding-left: max(20px, env(safe-area-inset-left));
    }
}

@media (max-width: 479.98px) {
    .jokis-booking--lightbox {
        padding-right: max(16px, env(safe-area-inset-right));
        padding-left: max(16px, env(safe-area-inset-left));
    }
}
