/* ==========================================================================
   CSS Variables
   ========================================================================== */

:root {
    --pv-border-radius: 20px;
    --pv-color-green: #33cc99;
    --pv-color-yellow: #ffcc00;
    --pv-color-red: #cc6666;
    --pv-color-gray: #1e1e1e;
    --pv-color-black: #000;
    --pv-color-white: #fff;
    --pv-font-family: Nexa Text, Helvetica, Arial, sans-serif;
    --pv-box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);
    --pv-divider-pattern-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 20 16' fill='none' stroke='black' stroke-width='3' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cg transform='translate(-12.000000,0)'%3E%3Cpath d='M28,0L10,18'/%3E%3Cpath d='M18,0L0,18'/%3E%3Cpath d='M48,0L30,18'/%3E%3Cpath d='M38,0L20,18'/%3E%3C/g%3E%3C/svg%3E");
    --pv-divider-pattern-size: 8px;
    --pv-header-height: 3rem;
    --pv-safe-area-top: env(safe-area-inset-top, 0px);
    --pv-safe-area-bottom: env(safe-area-inset-bottom, 0px);
    --pv-sticky-top-offset: calc(var(--pv-header-height) + var(--pv-safe-area-top) + 1.25rem);
    --pv-anchor-scroll-offset: calc(var(--pv-header-height) + var(--pv-safe-area-top) + 3rem);
    --pv-sticky-footer-btn-height: 2.25rem;
    --pv-info-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 192 512' aria-hidden='true'%3E%3Cpath d='M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z'/%3E%3C/svg%3E");
    --pv-clock-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M256 0a256 256 0 1 1 0 512A256 256 0 1 1 256 0zM232 120V256c0 8 4 15.5 10.7 20l96 64c9.4 6.3 22.1 3.8 28.4-5.6s3.8-22.1-5.6-28.4L280 243.2V120c0-13.3-10.7-24-24-24s-24 10.7-24 24z'/%3E%3C/svg%3E");
    --pv-shopping-cart-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 18c-1.1 0-1.99.9-1.99 2S5.9 22 7 22s2-.9 2-2-.9-2-2-2zM1 2v2h2l3.6 7.59-1.35 2.45c-.16.28-.25.61-.25.96 0 1.1.9 2 2 2h12v-2H7.42c-.14 0-.25-.11-.25-.25l.03-.12.9-1.63h7.45c.75 0 1.41-.41 1.75-1.03l3.58-6.49c.08-.14.12-.31.12-.48 0-.55-.45-1-1-1H5.21l-.94-2H1zm16 16c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2z'/%3E%3C/svg%3E");
    --pv-trash-icon-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z'/%3E%3C/svg%3E");
    --pv-menu-width: 80px;
    --pv-content-padding-x: 4vw;
    --pv-content-max-width: 100%;
    /* Logo – same box model as website .header-logo-2025 (subpages) */
    --pv-logo-width: 180px;
    --pv-logo-aspect-ratio: 3332.9 / 2076.1;
    --pv-logo-offset-top: -55px;
    --pv-logo-box-height: calc(var(--pv-logo-width) / (3332.9 / 2076.1));
}

/* ==========================================================================
   Fonts
   ========================================================================== */

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-Light.woff') format('woff');
    font-weight: 300;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-LightItalic.woff') format('woff');
    font-weight: 300;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-Regular.woff') format('woff');
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-RegularItalic.woff') format('woff');
    font-weight: 400;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-Bold.woff') format('woff');
    font-weight: 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-BoldItalic.woff') format('woff');
    font-weight: 700;
    font-style: italic;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-Black.woff') format('woff');
    font-weight: 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Nexa Text';
    src: url('https://www.parookaville.com/_assets/6113f0d4ba0964d34b2e9b3f4c3d2774/Fonts/NexaText/NexaText-BlackItalic.woff') format('woff');
    font-weight: 900;
    font-style: italic;
    font-display: swap;
}

/* ==========================================================================
   Base
   ========================================================================== */

html {
    font-size: 1rem
}
body {
    font-family: var(--pv-font-family);
    font-size: unset;
    line-height: 1.65rem;
}

body.v2 {
    color: var(--pv-color-white);
    background-color: var(--pv-color-black);
    scroll-padding-top: var(--pv-anchor-scroll-offset);
}

html:has(body.v2) {
    scroll-padding-top: var(--pv-anchor-scroll-offset);
}

@media (prefers-reduced-motion: no-preference) {
    html:has(body.v2),
    body.v2 {
        scroll-behavior: smooth;
    }
}

p {
    margin: 1em 0
}

a {
    color: var(--pv-color-green, #33cc99);
    transition-property: color;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
    text-decoration: none;
}
a:hover {
    color: var(--pv-color-white, #fff);
    text-decoration: none;
}

/* TicketPay: sichtbaren Browser/Bootstrap-Focus-Rahmen bei Link-Clicks entfernen */
body.v2 a:focus,
body.v2 a:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}

/* Native select dropdowns – system light popup (Windows/Chrome: avoid white-on-white) */
body.v2 select {
    color-scheme: light;
}

body.v2 select option {
    color: var(--pv-color-black);
    background-color: var(--pv-color-white);
}

/* White boxes – links: black + underline; hover/focus: green, no underline */
body.v2 .wrap:not(.accordions) .wrap_content .well a,
body.v2 .wrap:not(.accordions) .wrap_content .well .items a,
body.v2 .modal .modal-body a:not(.btn),
body.v2 #content main .jumbotron.jumbotron-textonly a,
body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main a {
    color: var(--pv-color-black) !important;
    text-decoration: underline !important;
    text-underline-offset: 0.12em;
}

body.v2 .wrap:not(.accordions) .wrap_content .well a :is(span, u, em, i, strong, b, font),
body.v2 .wrap:not(.accordions) .wrap_content .well .items a :is(span, u, em, i, strong, b, font),
body.v2 .modal .modal-body a:not(.btn) :is(span, u, em, i, strong, b, font),
body.v2 #content main .jumbotron.jumbotron-textonly a :is(span, u, em, i, strong, b, font) {
    color: inherit !important;
    text-decoration: none !important;
}

body.v2 .wrap:not(.accordions) .wrap_content .well a:hover,
body.v2 .wrap:not(.accordions) .wrap_content .well .items a:hover,
body.v2 .modal .modal-body a:not(.btn):hover,
body.v2 #content main .jumbotron.jumbotron-textonly a:hover,
body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main a:hover,
body.v2 .wrap:not(.accordions) .wrap_content .well a:hover :is(span, u, em, i, strong, b, font),
body.v2 .wrap:not(.accordions) .wrap_content .well .items a:hover :is(span, u, em, i, strong, b, font),
body.v2 .modal .modal-body a:not(.btn):hover :is(span, u, em, i, strong, b, font),
body.v2 #content main .jumbotron.jumbotron-textonly a:hover :is(span, u, em, i, strong, b, font),
body.v2 .wrap:not(.accordions) .wrap_content .well a:focus,
body.v2 .wrap:not(.accordions) .wrap_content .well .items a:focus,
body.v2 .modal .modal-body a:not(.btn):focus,
body.v2 #content main .jumbotron.jumbotron-textonly a:focus,
body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main a:focus,
body.v2 .wrap:not(.accordions) .wrap_content .well a:focus :is(span, u, em, i, strong, b, font),
body.v2 .wrap:not(.accordions) .wrap_content .well .items a:focus :is(span, u, em, i, strong, b, font),
body.v2 .modal .modal-body a:not(.btn):focus :is(span, u, em, i, strong, b, font),
body.v2 #content main .jumbotron.jumbotron-textonly a:focus :is(span, u, em, i, strong, b, font) {
    color: var(--pv-color-green) !important;
    text-decoration: none !important;
}

/* Light surfaces – black typography (TicketPay CMS often injects inline #333) */
body.v2 .wrap:not(.accordions) .wrap_content .well,
body.v2 .wrap:not(.accordions) .wrap_content .well .items {
    color: var(--pv-color-black) !important;
}

body.v2 .wrap:not(.accordions) .wrap_content .well :is(p, div, span, em, i, strong, b, font, u, li, td, th, small, h1, h2, h3, h4, h5, h6),
body.v2 .wrap:not(.accordions) .wrap_content .well .items :is(p, div, span, em, i, strong, b, font, u, li, td, th, small, h1, h2, h3, h4, h5, h6) {
    color: var(--pv-color-black) !important;
}

/* Dark accordion ticket copy – white (override inline #333 on dark wells) */
body.v2 .wrap.accordions .wrap_content .well .items .description,
body.v2 .wrap.accordions .wrap_content .well .items .description :is(p, div, span, em, i, strong, b, font, u, li, td, th, small) {
    color: var(--pv-color-white) !important;
}

body.v2 .wrap.accordions .wrap_content .well .items .description a,
body.v2 .wrap.accordions .wrap_content .well .items .description a :is(span, u, em, i, strong, b, font) {
    color: var(--pv-color-green) !important;
}


/* ==========================================================================
   Hero
   ========================================================================== */

:root {
    --pv-hero-gap-status-input: 3.5rem;
}

body.v2:has(.cover) {
    background-color: var(--pv-color-black);
}

.cover {
    --hero-mobile-height: 8rem;
    --hero-desktop-height: 15rem;
    --pv-hero-meta-size: clamp(0.9375rem, 3vw, 1.25rem);

    position: relative;
    overflow: visible;
    background: transparent;
}

/* Fixed viewport layer: image + gradient, height via aspect-ratio */
.cover .cover-bg {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    z-index: 0;
    pointer-events: none;
}

body.v2:has(.navbar) .cover .cover-bg {
    left: var(--pv-menu-width);
    width: calc(100% - var(--pv-menu-width));
}

@media screen and (max-width: 1023px) {
    .cover .cover-bg {
        aspect-ratio: 4 / 5;
    }
}

.cover .cover-content {
    padding: 0;
    position: relative;
    margin-top: calc(var(--pv-header-height) + var(--pv-safe-area-top));
}
.cover .cover-content > .row {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0;
    padding: 0;
    height: var(--hero-mobile-height);
}

@media (min-width: 64rem) {
    .cover .cover-content > .row {
        height: var(--hero-desktop-height);
    }
}

/* Desktop: fixed hero height & typography */
@media (min-width: 768px) {
    :root {
        --pv-hero-gap-status-input: 4.5rem;
    }

    .cover {
        --hero-desktop-height: 21rem;
        --pv-hero-meta-size: 1.125rem;
    }

    .cover .cover-content > .row {
        height: var(--hero-desktop-height);
        min-height: var(--hero-desktop-height);
    }

    .cover .cover-content h2.text-uppercase {
        font-size: 2.75rem;
        line-height: 1.1;
    }
}

@media (min-width: 1200px) {
    .cover {
        --hero-desktop-height: 22rem;
    }

    .cover .cover-content h2.text-uppercase {
        font-size: 3rem;
    }
}
/* Page Hero Container */
.cover .cover-content > .row > *:first-child{
    width: 100%;
    text-align: center;
}
/*
 * Top bar – mirrors website .header > .container
 * TicketPay DOM: .wrapper-right > (.wrapper-right-logo + .wrapper-right-info)
 * Desktop only – mobile layout in @media (max-width: 767px) below
 */
@media (min-width: 768px) {
    /* Logo Container – col holds logo/nav in DOM, visual layout via fixed .wrapper-right */
    .cover .cover-content > .row > *:last-child {
        position: absolute;
        top: 0;
        right: 0;
        width: 100%;
        height: 0;
        overflow: visible;
        pointer-events: none;
    }

    .cover.show_own_header .wrapper-right {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        height: calc(var(--pv-header-height) + var(--pv-safe-area-top));
        z-index: 110;
        overflow: visible;
        pointer-events: none;
        bottom: auto;
    }
}

@media (min-width: 1024px) {
    body.v2:has(.navbar) .cover.show_own_header .wrapper-right {
        left: var(--pv-menu-width);
    }
}

@media (min-width: 768px) {
    :root {
        --pv-logo-width: 200px;
        --pv-logo-offset-top: -65px;
        --pv-logo-box-height: calc(var(--pv-logo-width) / (3332.9 / 2076.1));
    }

    .cover.show_own_header .wrapper-right::before {
        display: none;
    }

    /* Top nav bar (website: .header .container) */
    .cover.show_own_header .wrapper-right .wrapper-right-info {
        position: absolute;
        top: var(--pv-safe-area-top);
        right: 0;
        left: 0;
        height: var(--pv-header-height);
        min-height: var(--pv-header-height);
        max-height: var(--pv-header-height);
        background: var(--pv-color-gray);
        box-shadow: 0 0 20px #000;
        padding: 0 var(--pv-content-padding-x);
        display: flex;
        align-items: center;
        justify-content: center;
        overflow: hidden;
        pointer-events: auto;
        bottom: auto;
    }

    /* Logo – matches website .header-logo-2025 on subpages (logo.css) */
    .cover.show_own_header .wrapper-right .wrapper-right-logo {
        position: absolute;
        top: var(--pv-logo-offset-top);
        left: 50%;
        right: auto;
        transform: translateX(-50%);
        width: var(--pv-logo-width);
        aspect-ratio: var(--pv-logo-aspect-ratio);
        min-height: 0 !important;
        height: auto;
        margin: 0;
        padding: 0;
        float: none !important;
        z-index: 1;
        pointer-events: auto;
        display: block !important;
        line-height: 0;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group {
        width: 100%;
        max-width: var(--pv-content-max-width);
        margin: 0 auto !important;
        padding-left: var(--pv-content-padding-x);
        padding-right: var(--pv-content-padding-x);
        box-sizing: border-box;
        justify-content: flex-end;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn {
        color: var(--pv-color-white);
        opacity: 1;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn:hover,
    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn:focus {
        color: var(--pv-color-green);
        opacity: 1;
        background: none;
    }
}

.cover.show_own_header .wrapper-right .wrapper-right-logo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center bottom;
    filter: drop-shadow(0 0 20px #000);
}

.cover.show_own_header .wrapper-right .wrapper-right-info .btn-group {
    margin: 0 !important;
    display: flex;
    align-items: center;
    height: 100%;
}

.cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn > i {
    display: none !important;
}

.cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn {
    background: none;
    border: none;
    color: #fff;
    opacity: 0.5;
    padding: 0.5rem 0.75rem;
    font-size: 14px;
    line-height: 1;
    border-radius: var(--pv-border-radius);
    height: auto;
    min-height: unset;
}

.cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn:hover {
    color: var(--pv-color-green);
    opacity: 1;
}

.cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn:focus,
.cover.show_own_header .wrapper-right .wrapper-right-info .btn-group .btn:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}

@media (min-width: 1600px) {
    :root {
        --pv-content-max-width: 1440px;
    }
}

@media (min-width: 1920px) {
    :root {
        --pv-content-max-width: 1600px;
    }
}

/* Mobile: fixes Logo oben, grüne Pill-Nav im Hero unter Location */
@media (max-width: 767px) {
    :root {
        --pv-anchor-scroll-offset: calc(
            max(
                var(--pv-header-height),
                calc(var(--pv-logo-offset-top) + var(--pv-logo-box-height))
            ) + var(--pv-safe-area-top) + 3rem
        );
    }

    .cover .cover-content {
        overflow: visible;
        margin-top: calc(var(--pv-logo-offset-top) + var(--pv-logo-box-height) + 0.25rem);
    }

    .cover .cover-content > .row {
        flex-direction: column;
        align-items: center;
        justify-content: center;
        height: auto;
        min-height: calc(var(--hero-mobile-height) + var(--pv-hero-meta-size) + 2.5rem);
        padding: 0.5rem 0 0.5rem;
        overflow: visible;
    }

    .cover .cover-content > .row > *:first-child {
        order: 1;
        width: 100%;
    }

    .cover .cover-content > .row > *:last-child {
        order: 2;
        position: static;
        height: auto;
        width: 100%;
        pointer-events: auto;
        text-align: center;
    }

    .cover.show_own_header .wrapper-right {
        position: static;
        height: 0;
        overflow: visible;
        pointer-events: none;
        background: transparent;
        box-shadow: none;
        float: none !important;
        text-align: center !important;
    }

    .cover .cover-content > .row > *:last-child .wrapper-right {
        width: 100%;
    }

    /* Grauer Streifen hinter Logo */
    .cover.show_own_header .wrapper-right::before {
        content: "";
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        height: var(--pv-header-height);
        background: var(--pv-color-gray);
        box-shadow: 0 0 20px #000;
        z-index: 115;
        pointer-events: none;
        transform: translateZ(0);
    }

    .cover.show_own_header .wrapper-right .wrapper-right-logo {
        display: block !important;
        position: fixed;
        top: var(--pv-logo-offset-top);
        left: 50%;
        right: auto;
        width: var(--pv-logo-width);
        aspect-ratio: var(--pv-logo-aspect-ratio);
        min-height: 0 !important;
        height: auto;
        margin: 0;
        padding: 0;
        float: none !important;
        transform: translateX(-50%) translateZ(0);
        z-index: 116;
        pointer-events: auto;
        line-height: 0;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info {
        display: flex;
        justify-content: center;
        align-items: center;
        width: 100%;
        position: static;
        top: auto;
        left: auto;
        right: auto;
        height: auto;
        min-height: unset;
        max-height: none;
        background: transparent;
        box-shadow: none;
        padding: 0.75rem 4vw 0;
        overflow: visible;
        pointer-events: auto;
    }

    /* Grüne Pill-Nav: Breite nach Text, Trennlinien per Border */
    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm {
        --pv-mobile-nav-pill-height: 2.5rem;
        display: inline-flex !important;
        flex-wrap: nowrap;
        align-items: stretch;
        justify-content: center;
        gap: 0;
        width: auto;
        max-width: calc(100vw - 8vw);
        min-height: var(--pv-mobile-nav-pill-height);
        height: auto;
        margin-left: auto !important;
        margin-right: auto !important;
        margin-top: 0 !important;
        padding: 0;
        border-radius: 9999px;
        overflow: hidden;
        background-color: var(--pv-color-green);
        box-shadow: 0 0 12px rgba(0, 0, 0, 0.35);
        vertical-align: middle;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        flex: 0 0 auto;
        width: auto;
        position: relative;
        float: none !important;
        border: none !important;
        border-radius: 0 !important;
        background: transparent !important;
        color: var(--pv-color-black) !important;
        opacity: 1 !important;
        font-weight: 900;
        text-transform: uppercase;
        padding: 0 0.75rem !important;
        font-size: 0.6875rem !important;
        line-height: 1 !important;
        height: auto !important;
        min-height: var(--pv-mobile-nav-pill-height) !important;
        min-width: unset;
        white-space: nowrap !important;
        overflow: visible;
        box-sizing: border-box;
        text-align: center;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn > i {
        display: none !important;
        width: 0 !important;
        height: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        overflow: hidden;
        font-size: 0 !important;
        line-height: 0 !important;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn > span,
    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn #cart_button_amount_top {
        display: inline !important;
        white-space: nowrap !important;
        line-height: 1 !important;
        font-size: inherit !important;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm #event_scroll2continue {
        display: none !important;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn + .btn {
        border-left: 1px solid rgba(0, 0, 0, 0.22) !important;
    }

    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn:hover,
    .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm > .btn:focus {
        background-color: rgba(0, 0, 0, 0.08) !important;
        color: var(--pv-color-black) !important;
        opacity: 1 !important;
    }
}

.cover .cover-content  h2 {
    font-weight: 900;
    margin-bottom: 0.25rem !important;
}

.cover .cover-content h2.text-uppercase::before {
    content: "TICKETSHOP";
    display: block;
    font-size: var(--pv-hero-meta-size);
    font-weight: 400;
    letter-spacing: 0.2em;
    line-height: 1.2;
    margin-bottom: 0.35rem;
}

.cover .cover-content > .row > *:first-child > p {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.05rem;
    margin-top: 0;
    margin-bottom: 0;
    font-size: var(--pv-hero-meta-size);
    line-height: 1.15;
}

.cover .cover-content .header_details.event_time_info {
    display: block;
    white-space: nowrap;
    line-height: 1.15;
    font-weight: 400;
}

.cover .cover-content .header_details.event_location_info {
    display: inline-block;
    overflow: hidden;
    white-space: nowrap;
    line-height: 1.15;
    font-weight: 400;
    /* TicketPay renders "| VENUE" when the city field is empty.
       Negative text-indent clips the separator; padding-left must stay 0,
       otherwise overflow:hidden does not clip into the padding box. */
    text-indent: -0.58em;
    padding-left: 0;
}

@media (min-width: 768px) {
    .cover .cover-content .header_details.event_time_info,
    .cover .cover-content .header_details.event_location_info {
        font-weight: 900;
    }
}

.cover-bg {
    opacity: 1;
}

.cover-bg:after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
        rgba(0, 0, 0, 0) 0%,
        rgba(0, 0, 0, 0.4) 10%,
        rgba(0, 0, 0, 0.5) 65%,
        rgba(0, 0, 0, 1) 100%
    );
}

.cover .cover-bg .cover-innerbg {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center center;
}

/* ==========================================================================
   Container
   ========================================================================== */

.container {
    width: 100% !important;
    max-width: var(--pv-content-max-width) !important;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--pv-content-padding-x);
    padding-right: var(--pv-content-padding-x);
    box-sizing: border-box;
}

/* ==========================================================================
   Checkout progress
   ========================================================================== */

.checkout-progress-row {
    margin-top: 0;
    margin-bottom: 1rem;
}

body.v2:has(.cover) .checkout-progress-row {
    margin-top: 1rem;
}

@media (min-width: 768px) {
    body.v2:has(.cover) .checkout-progress-row {
        margin-top: -6.75rem;
        margin-bottom: var(--pv-hero-gap-status-input) !important;
    }
}

@media (min-width: 1200px) {
    body.v2:has(.cover) .checkout-progress-row {
        margin-top: -5.25rem;
    }
}

.checkout-progress-row > [class*="col-"] {
    padding-left: 2px;
    padding-right: 2px;
}

.checkout-progress-row .pi-callout {
    margin: 0;
}

/* FA circle-number icons are not available locally – render steps via CSS */
.checkout-progress-row .pi-callout i.h2 {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    margin: 0 0 6px;
    padding: 0;
    line-height: 1;
    font-size: 0;
    font-style: normal;
    font-family: Nexa Text, Helvetica, Arial, sans-serif !important;
    border-radius: 50%;
    box-sizing: border-box;
}

.checkout-progress-row .pi-callout i.h2::before {
    font-size: 1rem;
    font-weight: 900;
    line-height: 1;
    font-family: inherit;
}

.checkout-progress-row > [class*="col-"]:nth-child(2) .pi-callout i.h2::before { content: "1"; }
.checkout-progress-row > [class*="col-"]:nth-child(3) .pi-callout i.h2::before { content: "2"; }
.checkout-progress-row > [class*="col-"]:nth-child(4) .pi-callout i.h2::before { content: "3"; }
.checkout-progress-row > [class*="col-"]:nth-child(5) .pi-callout i.h2::before { content: "4"; }
.checkout-progress-row > [class*="col-"]:nth-child(6) .pi-callout i.h2::before { content: "5"; }

.checkout-progress-row .pi-callout-success {
    color: var(--pv-color-green);
}

.checkout-progress-row .pi-callout-success i.h2 {
    background-color: var(--pv-color-green);
    color: var(--pv-color-black);
    border: 2px solid var(--pv-color-green);
}

.checkout-progress-row .pi-callout-success i.h2::before {
    color: var(--pv-color-black);
}

.checkout-progress-row .pi-callout-success h5 {
    color: var(--pv-color-green);
}

.checkout-progress-row .pi-callout-success::after,
.checkout-progress-row .pi-callout-default::after {
    display: none;
    content: none;
}

.checkout-progress-row .pi-callout-default {
    color: var(--pv-color-white);
}

.checkout-progress-row .pi-callout-default i.h2 {
    background-color: transparent;
    color: var(--pv-color-white);
    border: 2px solid var(--pv-color-white);
}

.checkout-progress-row .pi-callout-default i.h2::before {
    color: var(--pv-color-white);
}

.checkout-progress-row .pi-callout-default h5,
.checkout-progress-row .pi-callout-default h4 {
    color: var(--pv-color-white);
}

.checkout-progress-row > [class*="col-"]:first-child,
.checkout-progress-row > [class*="col-"]:last-child {
    display: none;
}

@media (max-width: 767px) {
    .checkout-progress-row {
        display: flex;
        flex-wrap: nowrap;
        align-items: flex-start;
        justify-content: space-between;
        gap: clamp(0.375rem, 1.75vw, 0.625rem);
        margin-bottom: 0.75rem;
    }

    .checkout-progress-row > [class*="col-"] {
        flex: 1 1 0;
        min-width: 0;
        width: auto !important;
        max-width: none !important;
        float: none;
        padding-left: 0.125rem;
        padding-right: 0.125rem;
    }

    .checkout-progress-row .pi-callout {
        height: auto;
        min-height: 0;
        padding: 0;
        margin: 0;
    }

    .checkout-progress-row .pi-callout i.h2 {
        width: 2rem;
        height: 2rem;
        margin: 0 auto 4px;
        border-width: 2px;
    }

    .checkout-progress-row .pi-callout i.h2::before {
        font-size: 0.875rem;
    }

    .checkout-progress-row .pi-callout h5 {
        display: block !important;
        margin: 0;
        font-size: clamp(0.5rem, 2.35vw, 0.625rem);
        line-height: 1.05;
        font-weight: 600;
        word-break: break-word;
        hyphens: auto;
    }
}

@media (max-width: 374px) {
    .checkout-progress-row .pi-callout i.h2 {
        width: 1.875rem;
        height: 1.875rem;
    }

    .checkout-progress-row .pi-callout i.h2::before {
        font-size: 0.8125rem;
    }

    .checkout-progress-row .pi-callout h5 {
        font-size: 0.5rem;
    }
}

@media (min-width: 768px) and (max-width: 991px) {
    .checkout-progress-row .pi-callout i.h2 {
        width: 2.625rem;
        height: 2.625rem;
    }

    .checkout-progress-row .pi-callout i.h2::before {
        font-size: 1.125rem;
    }
}

@media (min-width: 768px) {
    .checkout-progress-row {
        display: flex;
        flex-wrap: nowrap;
        align-items: flex-start;
        justify-content: center;
        gap: clamp(0.75rem, 2vw, 1.5rem);
    }

    .checkout-progress-row > [class*="col-"] {
        flex: 0 1 auto;
        width: auto !important;
        max-width: none !important;
        float: none;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }

    .checkout-progress-row .pi-callout {
        height: auto;
        min-height: 0;
        padding-top: 4px;
        padding-bottom: 4px;
    }

    .checkout-progress-row .pi-callout i.h2 {
        width: 2.75rem;
        height: 2.75rem;
        margin-bottom: 8px;
    }

    .checkout-progress-row .pi-callout i.h2::before {
        font-size: 1.25rem;
    }

    .checkout-progress-row .pi-callout h5 {
        font-size: 1rem;
        line-height: 1.15;
    }
}

@media (min-width: 992px) {
    .checkout-progress-row .pi-callout i.h2 {
        width: 3rem;
        height: 3rem;
        margin-bottom: 10px;
    }

    .checkout-progress-row .pi-callout i.h2::before {
        font-size: 1.375rem;
    }

    .checkout-progress-row .pi-callout h5 {
        font-size: 1.0625rem;
    }
}

/* ==========================================================================
   Content
   ========================================================================== */

#content {
    position: relative;
    margin: 2vw 0;
    min-height: 650px;
}

@media (min-width: 768px) {
    #content {
        margin-top: 2rem;
        margin-bottom: 2rem;
    }
}

body.v2:has(.cover) #content {
    position: relative;
    z-index: 1;
    background: transparent;
    margin-top: 0.5rem;
}

@media (max-width: 767px) {
    body.v2:has(.cover) #content {
        margin-top: 0.5rem;
        padding-top: 0;
    }

    body.v2:has(.cover) .checkout-progress-row {
        margin-top: 0.75rem;
    }
}

@media (min-width: 768px) {
    body.v2:has(.cover) #content {
        margin-top: 0;
    }
}

body.v2 .wrap:not(.accordions) .wrap_heading h2 {
    font-size: 8vw;
    line-height: 1.2;
    text-transform: uppercase;
    color: #33cc99;
    font-weight: 300;
    margin-bottom: 1.5rem;
}

@media (min-width: 768px) {
    body.v2 .wrap:not(.accordions) .wrap_heading h2 {
        font-size: 3vw;
    }
}

@media only screen and (max-width: 768px) {
    body.v2 .wrap:not(.accordions) .wrap_content .well {
        margin-bottom: 30px;
        padding: 0;
        background-color: #fff;
        border: 0 none;
        box-shadow: var(--pv-box-shadow);
        border-radius: 20px;
    }
    body.v2 .wrap:not(.accordions) .wrap_content .well .items {
        display: block;
        padding: 15px;
        background: none;
        border-radius: 20px;
    }
}

.well {
    border-radius: 20px;
    padding: clamp(1.25rem, 2vw, 2.5rem);
}



/* Card / Panel */
.container .jumbotron, .container-fluid .jumbotron {
    border-radius: var(--pv-border-radius) !important;
    background-color: var(--pv-color-gray);
    color: var(--pv-color-white);
    border: none;
    box-shadow: var(--pv-box-shadow);
}

/* Unified content box shadow – overrides TicketPay colored glows */
body.v2 .container .jumbotron,
body.v2 .container-fluid .jumbotron,
body.v2 .jumbotron.jumbotron-default,
body.v2 .jumbotron.jumbotron-success,
body.v2 .jumbotron.jumbotron-danger,
body.v2 #content main > .row .well.well-light,
body.v2 #content main > .row .well.well-shadow,
body.v2 #paymentchoose .well,
body.v2 #klarna_container .well,
body.v2 .wrap:not(.accordions) .wrap_content .well,
body.v2 .promoCode,
body.v2 .cart .cartSet .cartWrap {
    box-shadow: var(--pv-box-shadow) !important;
}
.jumbotron.jumbotron-less-padding {
    padding: max(2vw, 1rem);
}
.jumbotron p {
    margin: 0;
}
.jumbotron .fa-check {
    color: var(--pv-color-green);
}

/* Page 2 (Zusatzartikel) – Warenkorb-Hinweis oben */
body.v2 #content main .jumbotron.jumbotron-textonly {
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    padding: 0.875rem 1rem;
    margin-bottom: 1rem;
}

body.v2 #content main .jumbotron.jumbotron-textonly p {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0;
    font-size: clamp(0.75rem, 2.2vw, 0.875rem);
    line-height: 1.45;
    font-weight: 400;
    color: var(--pv-color-black) !important;
}

body.v2 #content main .jumbotron.jumbotron-textonly .fa-check {
    flex: 0 0 auto;
    align-self: center;
    font-size: 1.5rem;
    line-height: 1;
    color: var(--pv-color-green) !important;
}

.jumbotron h1 {
    font-size: clamp(1.25rem, 2vw, 2rem);
    line-height: 1.2;
    text-transform: uppercase;
    font-weight: 900;
}

/* TicketPay highlight dates / deadlines (<mark> in jumbotron, modals, …) */
body.v2 mark,
body.v2 .jumbotron mark,
body.v2 h4 mark,
body.v2 .modal mark,
body.v2 #content mark {
    background: var(--pv-color-red) !important;
    background-color: var(--pv-color-red) !important;
    color: var(--pv-color-white) !important;
    padding: 0.1em 0.4em;
    font-weight: 700;
}

/* HR */
.jumbotron > hr {
    background-color: currentColor;
    border: none;
    height: 10px;
    margin: max(2vw, 1rem) 0;
    display: block;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 20 16' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cg transform='translate(-12.000000,0)'%3E%3Cpath d='M28,0L10,18'/%3E%3Cpath d='M18,0L0,18'/%3E%3Cpath d='M48,0L30,18'/%3E%3Cpath d='M38,0L20,18'/%3E%3C/g%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none' overflow='visible' height='100%' viewBox='0 0 20 16' fill='none' stroke='black' stroke-width='4' stroke-linecap='square' stroke-miterlimit='10'%3E%3Cg transform='translate(-12.000000,0)'%3E%3Cpath d='M28,0L10,18'/%3E%3Cpath d='M18,0L0,18'/%3E%3Cpath d='M48,0L30,18'/%3E%3Cpath d='M38,0L20,18'/%3E%3C/g%3E%3C/svg%3E");
    -webkit-mask-size: 10px 100%;
    mask-size: 10px 100%;
    -webkit-mask-repeat: repeat-x;
    mask-repeat: repeat-x;
}

/* ==========================================================================
   Button
   ========================================================================== */

.btn {
    display: inline-block;
    border-radius: 9999px;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
    padding-top: 1rem;
    padding-bottom: 1rem;
    text-align: center;
    font-size: 1rem;
    font-weight: 900;
    text-transform: uppercase;
    line-height: 1;
    text-overflow: ellipsis;
    overflow: hidden;
    max-width: 100%;
}

/* ==========================================================================
   Button Group
   ========================================================================== */

.btn-sm,
.btn-group-sm > .btn {
    border-radius: var(--pv-border-radius);
    padding: 0.5rem 0.75rem;
    font-size: 14px;
    line-height: 1.5;
}
.btn-default {
    border: none;
    background-color: #f2f2f2;
    color: var(--pv-color-black);
}
.btn-brand,
.btn-ok {
    background-color: var(--pv-color-yellow) !important;
    color: var(--pv-color-black) !important;
}
.btn-brand:hover,
.btn-ok:hover {
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

/* Checkout / continue actions in page content (not sticky footer) */
body.v2 #content .btn-brand.btn-continue,
body.v2 #content .btn.btn-brand.btn-continue {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2 #content .btn-brand.btn-continue:hover,
body.v2 #content .btn-brand.btn-continue:focus,
body.v2 #content .btn-brand.btn-continue:focus-visible,
body.v2 #content .btn.btn-brand.btn-continue:hover,
body.v2 #content .btn.btn-brand.btn-continue:focus,
body.v2 #content .btn.btn-brand.btn-continue:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}
.btn-group > .btn:last-of-type {
    border-top-right-radius: var(--pv-border-radius) !important;
    border-bottom-right-radius: var(--pv-border-radius) !important;
}


/* ==========================================================================
   Input Group
   ========================================================================== */

.input-group > .form-control,
.input-group > .input-group-btn .btn {
    min-height: 50px;
}

/* Freischaltcode – website-style pill (input + docked green button) */
.input-group.input-split:has(#redeem_coupon) {
    display: flex !important;
    flex-wrap: nowrap;
    align-items: stretch;
    width: 100%;
    border-radius: 9999px;
    overflow: hidden;
    border: 1px solid var(--pv-color-white);
    background-color: var(--pv-color-white);
    box-shadow: none;
}

body.v2 #content main .input-group.input-split:has(#redeem_coupon) .form-control,
body.v2 #content main #redeem_coupon.form-control,
.input-group.input-split:has(#redeem_coupon) .form-control {
    flex: 1 1 auto;
    min-width: 0;
    width: 1%;
    display: block !important;
    float: none !important;
    margin: 0 !important;
    clear: none !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    min-height: 50px;
    padding: 0.625rem 1.25rem;
    font-size: 1rem;
    line-height: 1.25;
}

body.v2 #content main .input-group.input-split:has(#redeem_coupon) .form-control:focus,
body.v2 #content main #redeem_coupon.form-control:focus,
.input-group.input-split:has(#redeem_coupon) .form-control:focus {
    border: none !important;
    box-shadow: none !important;
    outline: none;
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2 #content main .input-group.input-split:has(#redeem_coupon) .form-control::placeholder,
body.v2 #content main #redeem_coupon.form-control::placeholder,
.input-group.input-split:has(#redeem_coupon) .form-control::placeholder {
    color: rgba(0, 0, 0, 0.45);
}

.input-group.input-split:has(#redeem_coupon) .input-group-btn {
    display: flex !important;
    flex: 0 0 auto;
    width: auto !important;
    margin: 0 !important;
    clear: none !important;
    vertical-align: middle;
}

.input-group.input-split:has(#redeem_coupon) .input-group-btn .btn,
.input-group.input-split:has(#redeem_coupon) #button_coupon {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    font-weight: 900;
    text-transform: uppercase;
    white-space: nowrap;
    min-height: 50px;
    min-width: auto;
    height: 100%;
    padding: 0.625rem 1rem;
    font-size: 0.8125rem;
    line-height: 1;
    box-shadow: none !important;
}

.input-group.input-split:has(#redeem_coupon) #button_coupon::after {
    color: inherit;
}

.input-group.input-split:has(#redeem_coupon) .input-group-btn .btn:hover,
.input-group.input-split:has(#redeem_coupon) .input-group-btn .btn:focus,
.input-group.input-split:has(#redeem_coupon) #button_coupon:hover,
.input-group.input-split:has(#redeem_coupon) #button_coupon:focus {
    background-color: var(--pv-color-black) !important;
    color: var(--pv-color-white) !important;
}

@media (max-width: 768px) {
    .input-group.input-split:has(#redeem_coupon) .form-control,
    .input-group.input-split:has(#redeem_coupon) .input-group-btn {
        display: flex !important;
        margin-bottom: 0 !important;
        clear: none !important;
    }

    .input-group.input-split:has(#redeem_coupon) .form-control {
        font-size: 1rem;
        padding: 0.625rem 1rem;
    }

    .input-group.input-split:has(#redeem_coupon) .input-group-btn .btn,
    .input-group.input-split:has(#redeem_coupon) #button_coupon {
        padding: 0.625rem 0.75rem;
        font-size: 0.6875rem;
    }
}

@media (min-width: 769px) {
    .input-group.input-split:has(#redeem_coupon) .form-control {
        font-size: 1.125rem;
        padding: 0.75rem 1.5rem;
    }

    .input-group.input-split:has(#redeem_coupon) .input-group-btn .btn,
    .input-group.input-split:has(#redeem_coupon) #button_coupon {
        padding: 0.75rem 1.125rem;
        font-size: 0.875rem;
    }
}


/* ==========================================================================
   Accordions – match website .cb__accordion / .cb__accordion-ticket
   ========================================================================== */

.accordions {
    --inner-padding: clamp(1.25rem, 2vw, 2.5rem);
    --inner-padding-half: clamp(0.75rem, 1vw, 1.25rem);
    border-radius: var(--pv-border-radius);
}

body.v2 .wrap.accordions {
    border-bottom: none;
    margin: 0 0 clamp(1.25rem, 2vw, 2.5rem);
    box-shadow: var(--pv-box-shadow);
}

body.v2 .wrap.accordions[id],
body.v2 .wrap.accordions .wrap_heading,
body.v2 .wrap.accordions .wrap_content .well > .items[id] {
    scroll-margin-top: var(--pv-anchor-scroll-offset);
}

body.v2 #stickyfooter {
    scroll-margin-top: var(--pv-anchor-scroll-offset);
}

body.v2 .wrap.accordions .wrap_heading {
    padding: var(--inner-padding);
    background-color: rgb(30, 30, 30);
    border-radius: inherit;
    box-shadow: none !important;
}

.accordions:first-of-type .wrap_heading {
    border-top-left-radius: var(--pv-border-radius);
    border-top-right-radius: var(--pv-border-radius);
}

.accordions:last-of-type .wrap_heading {
    border-bottom-left-radius: var(--pv-border-radius);
    border-bottom-right-radius: var(--pv-border-radius);
}

body.v2 .wrap.accordions .wrap_content {
    margin-top: calc(var(--pv-border-radius) * -1);
    border-top: var(--pv-border-radius) solid rgb(30, 30, 30);
    box-shadow: none !important;
    /* Disable TicketPay slideToggle height animation (jQuery .slideToggle('fast')) */
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    transition: none !important;
}

body.v2 #content .wrap.accordions .wrap_content .well,
body.v2 #content main .wrap.accordions .wrap_content .well,
body.v2 .wrap.accordions .wrap_content .well,
body.v2 #content .wrap.accordions .wrap_content .well.well-light,
body.v2 #content main .wrap.accordions .wrap_content .well.well-light,
body.v2 .wrap.accordions .wrap_content .well.well-light,
body.v2 #content .wrap.accordions .wrap_content .well.well-shadow,
body.v2 #content main .wrap.accordions .wrap_content .well.well-shadow,
body.v2 .wrap.accordions .wrap_content .well.well-shadow {
    margin-bottom: 0;
    padding: var(--inner-padding);
    padding-top: var(--pv-border-radius) !important;
    background-color: rgb(30, 30, 30) !important;
    color: var(--pv-color-white);
    border: none !important;
    box-shadow: none !important;
    border-bottom-left-radius: var(--pv-border-radius);
    border-bottom-right-radius: var(--pv-border-radius);
}

/* Category heading */
body.v2 .wrap.accordions .wrap_heading h2,
body.v2 .wrap.accordions .wrap_heading h2.text-system {
    font-size: clamp(1.25rem, 2vw, 3rem);
    line-height: 1;
    text-transform: uppercase;
    font-weight: 900;
    position: relative;
    gap: var(--inner-padding-half);
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    transition-property: color;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
    color: var(--pv-color-white) !important;
    margin-bottom: 0;
}

body.v2 .wrap.accordions .wrap_heading:hover h2,
body.v2 .wrap.accordions .wrap_heading:hover h2.text-system {
    color: var(--pv-color-green) !important;
}

body.v2 .wrap.accordions .wrap_content .well .items .description em {
    font-size: 0.875rem;
    line-height: 1.25rem;
}

body.v2 .wrap.accordions .wrap_content .well .items .description {
    font-size: inherit;
    line-height: 1.5;
}

/* Readmore – fade when collapsed */
body.v2 .wrap.accordions .wrap_content .well .items .description[data-readmore][aria-expanded="false"] {
    position: relative;
}

body.v2 .wrap.accordions .wrap_content .well .items .description[data-readmore][aria-expanded="false"]::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 2.5rem;
    background: linear-gradient(to bottom, rgba(30, 30, 30, 0), rgb(30, 30, 30));
    pointer-events: none;
}

/* Readmore toggle */
body.v2 .wrap.accordions .wrap_content .well .items .description + a[data-readmore-toggle] {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: auto !important;
    margin-top: 0.75rem;
    padding: 0.4rem 0.875rem;
    font-size: 0.75rem;
    line-height: 1;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--pv-color-black) !important;
    text-decoration: none !important;
    background-color: var(--pv-color-green);
    border: 2px solid var(--pv-color-green);
    border-radius: 9999px;
    cursor: pointer;
    transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
                border-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
                color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

body.v2 .wrap.accordions .wrap_content .well .items .description + a[data-readmore-toggle]:hover,
body.v2 .wrap.accordions .wrap_content .well .items .description + a[data-readmore-toggle]:focus {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-white);
    border-color: var(--pv-color-white);
    text-decoration: none !important;
}

body.v2 .wrap.accordions .wrap_content .well .items .description + a[data-readmore-toggle]::after {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 0.75rem;
    height: 0.75rem;
    background-color: currentColor;
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-image: url('data:image/svg+xml,<svg viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path fill="%23ffffff" d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c-9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.4-24.6 9.4-33.8 0z"/></svg>');
    mask-image: url('data:image/svg+xml,<svg viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path fill="%23ffffff" d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c-9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.4-24.6 9.4-33.8 0z"/></svg>');
    transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

body.v2 .wrap.accordions .wrap_content .well .items .description[aria-expanded="true"] + a[data-readmore-toggle]::after {
    transform: rotate(180deg);
}

@media (min-width: 1024px) {
    body.v2 .wrap.accordions .wrap_content .well .items .description + a[data-readmore-toggle] {
        padding: 0.5rem 1rem;
        font-size: 0.875rem;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .description + a[data-readmore-toggle]::after {
        width: 0.875rem;
        height: 0.875rem;
    }
}

/* Green chevron arrow */
body.v2 .wrap.accordions .wrap_heading h2::before {
    transition-property: transform;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
    display: block;
    content: "";
    background-color: var(--pv-color-green);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-image: url('data:image/svg+xml,<svg viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path fill="%23ffffff" d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>');
    mask-image: url('data:image/svg+xml,<svg viewBox="0 0 320 512" xmlns="http://www.w3.org/2000/svg"><path fill="%23ffffff" d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>');
    width: var(--inner-padding);
    height: var(--inner-padding);
    flex-shrink: 0;
}

body.v2 .wrap.accordions .wrap_heading h2:has(.fa-minus-circle)::before {
    transform: rotate(90deg);
}

body.v2 .wrap.accordions .wrap_heading h2 i.i.fa {
    display: none;
}

/* Ticket name */
body.v2 .wrap.accordions .wrap_content .well .items .headline {
    margin: 0;
    padding: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items .headline h3 {
    margin: 0;
    padding: 0;
    text-transform: uppercase;
    font-weight: 900;
    color: var(--pv-color-white);
    line-height: 1.15;
}

body.v2 .wrap.accordions .wrap_content .well .items .headline.mb-15 {
    margin-bottom: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items .cross_out_code.hide {
    display: none !important;
}

body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"] {
    margin: 0;
    padding: 0;
    min-width: 0;
    max-width: 100%;
}

/* Ticket row: stacked by default, side-by-side via container query when wide enough */
body.v2 .wrap.accordions .wrap_content .well .items {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    column-gap: 1rem;
    row-gap: 0.75rem;
    align-items: start;
    border-top: none !important;
    border-bottom: none !important;
    min-width: 0;
    overflow: visible;
}

body.v2 .wrap.accordions .wrap_content .well .items > .row {
    display: contents;
}

/* Page 2 (Zusatzartikel): content row is wrapped in .variant */
body.v2 .wrap.accordions .wrap_content .well .items > .variant {
    display: contents;
}

body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row {
    display: contents;
}

body.v2 .wrap.accordions .wrap_content .well .items > .row > [class*="col-"],
body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > [class*="col-"] {
    width: 100% !important;
    max-width: 100%;
    float: none !important;
    padding-left: 0;
    padding-right: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items > .row:first-child > .col-md-12,
body.v2 .wrap.accordions .wrap_content .well .items > .row:first-child > .col-sm-12 {
    grid-column: 1;
    grid-row: 1;
    min-width: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items > .row:last-child > .col-md-9,
body.v2 .wrap.accordions .wrap_content .well .items > .row:last-child > .col-sm-8,
body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > .col-md-9,
body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > .col-sm-8 {
    grid-column: 1;
    grid-row: 2;
    min-width: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items > .row:last-child > .col-md-3,
body.v2 .wrap.accordions .wrap_content .well .items > .row:last-child > .col-sm-4,
body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > .col-md-3,
body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > .col-sm-4 {
    grid-column: 1;
    grid-row: 3;
    align-self: stretch;
    justify-self: stretch;
    width: 100% !important;
    min-width: 0;
    max-width: 100%;
}

@media (min-width: 992px) {
    body.v2 .wrap.accordions .wrap_content .well .items {
        grid-template-columns: minmax(0, 1fr) clamp(220px, 30%, 320px);
        row-gap: 0.375rem;
    }

    body.v2 .wrap.accordions .wrap_content .well .items > .row:last-child > .col-md-3,
    body.v2 .wrap.accordions .wrap_content .well .items > .row:last-child > .col-sm-4,
    body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > .col-md-3,
    body.v2 .wrap.accordions .wrap_content .well .items > .variant > .row > .col-sm-4 {
        grid-column: 2;
        grid-row: 1 / span 2;
        align-self: start;
        position: sticky;
        top: var(--pv-sticky-top-offset);
        z-index: 1;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row:has(.article_image),
    body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row:has(.article_image) {
        --pv-carousel-right-gap: 0;
        width: 100%;
        max-width: 100%;
    }

    /* Page 2 ArticleExtra: native TicketPay offset aligns under price – reset in our grid */
    body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row > [class*="col-md-offset-"],
    body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row > [class*="col-sm-offset-"] {
        margin-left: 0 !important;
        width: 100% !important;
        max-width: 100%;
    }
}

@media (min-width: 992px) and (max-width: 1199px) {
    body.v2 .wrap.accordions .wrap_content .well .items .article-box {
        padding: 0.875rem 1rem;
    }
}

body.v2 .wrap.accordions .wrap_content .well .items .stockStatus {
    float: none;
    margin: 0;
}

/* TicketPay gibt dem Stock-Status mobil eine helle Box (#f5f5f5 + #ddd-Rahmen),
   was mit der weißen Schrift unlesbar wird. Für den normalen Verkaufsphasen-Text
   neutralisieren, damit er wie auf Desktop transparent/lesbar bleibt. */
body.v2 .wrap.accordions .wrap_content .well .items .cartSectiondetails .stockStatus {
    background: transparent !important;
    border: none !important;
    text-align: left;
    letter-spacing: normal;
    padding-left: 0;
    padding-right: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items .stockStatus.out {
    white-space: nowrap;
}

/* Striped divider between tickets inside an accordion
   gap-before: previous ticket → divider | gap-after: divider → title */
body.v2 .wrap.accordions .wrap_content .well .items + .items,
body.v2 .wrap.accordions .wrap_content .well .items + div + .items {
    --pv-ticket-divider-gap-before: 0.625rem;
    --pv-ticket-divider-gap-after: 1.5rem;
    position: relative;
    overflow: visible !important;
    margin-top: calc(var(--pv-ticket-divider-gap-before) + var(--pv-divider-pattern-size) + var(--pv-ticket-divider-gap-after)) !important;
    padding-top: 0 !important;
    border: none !important;
    border-top: none !important;
    box-shadow: none !important;
}

body.v2 .wrap.accordions .wrap_content .well .items + .items::before,
body.v2 .wrap.accordions .wrap_content .well .items + div + .items::before {
    content: "";
    position: absolute;
    top: calc(-1 * (var(--pv-ticket-divider-gap-after) + var(--pv-divider-pattern-size)));
    left: 0;
    right: 0;
    height: var(--pv-divider-pattern-size);
    background-color: var(--pv-color-black);
    border: none;
    pointer-events: none;
    -webkit-mask-image: var(--pv-divider-pattern-url);
    mask-image: var(--pv-divider-pattern-url);
    -webkit-mask-size: var(--pv-divider-pattern-size) 100%;
    mask-size: var(--pv-divider-pattern-size) 100%;
    -webkit-mask-repeat: repeat-x;
    mask-repeat: repeat-x;
}

/* --- Mischwarenkorb: mehrere .variant-Blöcke in einem .items ---
   TicketPay liefert bei Add-ons mit mehreren Bezugsartikeln mehrere .variant im
   selben .items. Das globale .items-Grid würde alle Beschreibungen/Kaufboxen in
   dieselben Grid-Zellen legen (Überlagerung). Daher wird jede .variant hier zu
   einem eigenen Layout-Block, sodass die Tickets sauber untereinander liegen. */
body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) {
    grid-template-columns: minmax(0, 1fr);
}

body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    column-gap: 1rem;
    row-gap: 0.75rem;
    align-items: start;
    min-width: 0;
    border: none !important;
}

body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row {
    display: contents;
}

body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-md-9,
body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-sm-8 {
    grid-column: 1;
    grid-row: 1;
}

body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-md-3,
body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-sm-4 {
    grid-column: 1;
    grid-row: 2;
    position: static;
}

@media (min-width: 992px) {
    body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant {
        grid-template-columns: minmax(0, 1fr) clamp(220px, 30%, 320px);
        row-gap: 0.375rem;
    }

    body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-md-9,
    body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-sm-8 {
        grid-column: 1;
        grid-row: 1;
    }

    body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-md-3,
    body.v2 .wrap.accordions .wrap_content .well .items:has(.variant + .variant) > .variant > .row > .col-sm-4 {
        grid-column: 2;
        grid-row: 1;
        align-self: start;
        position: sticky;
        top: var(--pv-sticky-top-offset);
        z-index: 1;
    }
}

/* Trennstrich zwischen den einzelnen Varianten (analog zum Ticket-Trenner) */
body.v2 .wrap.accordions .wrap_content .well .items > .variant + .variant {
    --pv-ticket-divider-gap-before: 0.625rem;
    --pv-ticket-divider-gap-after: 1.5rem;
    position: relative;
    overflow: visible !important;
    margin-top: calc(var(--pv-ticket-divider-gap-before) + var(--pv-divider-pattern-size) + var(--pv-ticket-divider-gap-after)) !important;
}

body.v2 .wrap.accordions .wrap_content .well .items > .variant + .variant::before {
    content: "";
    position: absolute;
    top: calc(-1 * (var(--pv-ticket-divider-gap-after) + var(--pv-divider-pattern-size)));
    left: 0;
    right: 0;
    height: var(--pv-divider-pattern-size);
    background-color: var(--pv-color-black);
    border: none;
    pointer-events: none;
    -webkit-mask-image: var(--pv-divider-pattern-url);
    mask-image: var(--pv-divider-pattern-url);
    -webkit-mask-size: var(--pv-divider-pattern-size) 100%;
    mask-size: var(--pv-divider-pattern-size) 100%;
    -webkit-mask-repeat: repeat-x;
    mask-repeat: repeat-x;
}

/* TicketPay-style purchase frame */
body.v2 .wrap.accordions .wrap_content .well .items .article-box {
    --pv-cart-control-height: 2.625rem;
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    column-gap: 0;
    align-items: center;
    margin: 0;
    padding: 1rem clamp(0.875rem, 1.5cqi, 2rem);
    border: 1px solid rgba(255, 255, 255, 0.18) !important;
    border-radius: 8px;
    background-color: rgba(0, 0, 0, 0.22) !important;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04);
    overflow: visible;
    box-sizing: border-box;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box::before {
    display: none;
    content: none;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box .price_quantity_box {
    grid-column: 1;
    min-width: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"]:not(:has(.article-box)) {
    margin: 0;
    padding: 0;
    border: none !important;
    border-radius: 0;
    background-color: transparent !important;
    box-shadow: none !important;
    overflow: visible;
    box-sizing: border-box;
}

body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"]:not(:has(.article-box)) {
    display: flex;
    align-items: center;
    justify-content: stretch;
    width: 100%;
}

body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"]:not(:has(.article-box)) .stockStatus {
    flex: 1 1 auto;
    width: 100%;
    display: block;
    text-align: center;
}

body.v2 .wrap.accordions .price_quantity_box {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 1rem;
    width: 100%;
    min-width: 0 !important;
    max-width: 100%;
    margin: 0;
    padding: 0;
    text-align: center;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    float: none !important;
}

body.v2 .wrap.accordions .price_quantity_box .clearfix:not(.show_quantity:has(> .stockStatus.out))::before,
body.v2 .wrap.accordions .price_quantity_box .clearfix:not(.show_quantity:has(> .stockStatus.out))::after {
    content: none !important;
    display: none !important;
}

body.v2 .wrap.accordions .price_quantity_box .show_price {
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 0.375rem 0.5rem;
    margin: 0;
    padding: 0;
    width: 100%;
    font-size: clamp(1.125rem, 1.25vw, 1.5rem);
    line-height: 1.2;
    text-align: right;
    white-space: normal;
    float: none !important;
    background: none !important;
    border: none !important;
}

body.v2 .wrap.accordions .price_quantity_box .show_price small {
    font-size: clamp(0.875rem, 1vw, 1.125rem);
    line-height: 1.2;
}

body.v2 .wrap.accordions .price_quantity_box .show_price small s,
body.v2 .wrap.accordions .price_quantity_box .show_price small s font {
    color: var(--pv-color-red) !important;
    text-decoration: line-through;
}

body.v2 .wrap.accordions .price_quantity_box > [id^="quantity_box"] {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-start;
    column-gap: 0;
    row-gap: 0.375rem;
    width: 100%;
}

body.v2 .wrap.accordions .price_quantity_box .show_quantity,
body.v2 .wrap.accordions .price_quantity_box .show_quantity.clearfix {
    order: 1;
    flex: 0 0 4.25rem;
    width: 4.25rem;
    margin: 0 !important;
    padding: 0 !important;
    text-align: center;
    float: none !important;
    clear: none !important;
    border: none !important;
    border-top: none !important;
    border-bottom: none !important;
    background: none !important;
    box-shadow: none !important;
}

body.v2 .wrap.accordions .price_quantity_box [id^="quantity_box"] > div:has(h5) {
    order: 3;
    flex: 1 1 100%;
    width: 100%;
    min-width: 100%;
    max-width: 100%;
    margin: 0;
}

body.v2 .wrap.accordions .price_quantity_box h5 {
    margin: 0;
    padding: 0;
    font-size: 1rem;
    font-weight: 400;
    line-height: 1.3;
    color: rgba(255, 255, 255, 0.85);
    text-align: right;
    white-space: normal;
}

body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"].hide {
    display: flex !important;
}

body.v2 .wrap.accordions .price_quantity_box:has(> .show_button[id^="cart_buttons"]:not(.hide)) [id^="reserve_button"] {
    display: none !important;
}

body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"] {
    order: 2;
    flex: 1 1 0;
    display: flex !important;
    align-items: stretch;
    margin: 0 !important;
    padding: 0;
    width: auto !important;
    min-width: 0;
    float: none !important;
    clear: none !important;
    border: none;
}

body.v2 .wrap.accordions .price_quantity_box > .show_button[id^="cart_buttons"] {
    order: unset;
    flex: 0 0 auto;
    align-self: flex-end;
    margin: 0.375rem 0 0 !important;
    padding: 0;
    width: auto !important;
    max-width: 100%;
}

body.v2 #content main .wrap.accordions .price_quantity_box .show_quantity .form-control,
body.v2 .wrap.accordions .price_quantity_box .show_quantity .form-control {
    width: 100%;
    min-width: 0 !important;
    max-width: 100%;
    height: var(--pv-cart-control-height);
    min-height: var(--pv-cart-control-height);
    margin: 0;
    padding: 0 1.625rem 0 0.625rem;
    font-size: 0.875rem;
    font-weight: 700;
    line-height: 1;
    text-align: center;
    color: var(--pv-color-white);
    background-color: transparent !important;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="white"/></svg>') !important;
    background-repeat: no-repeat;
    background-size: 18px;
    background-position: right 9px center;
    border-radius: 9999px 0 0 9999px !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-right: none !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

body.v2 .wrap.accordions .price_quantity_box .show_button .add-button,
body.v2 .wrap.accordions .price_quantity_box .add-button {
    --pv-add-button-font-family: var(--pv-font-family);
    --pv-add-button-font-size: clamp(0.6875rem, 1vw, 0.8125rem);
    --pv-add-button-font-weight: 900;
    --pv-add-button-letter-spacing: 0.01em;
    --pv-add-button-text-transform: uppercase;
    width: 100%;
    min-width: 0;
    max-width: none;
    height: var(--pv-cart-control-height);
    min-height: var(--pv-cart-control-height);
    padding: 0 0.875rem;
    font-family: var(--pv-add-button-font-family);
    font-size: var(--pv-add-button-font-size);
    font-weight: var(--pv-add-button-font-weight);
    line-height: 1;
    letter-spacing: var(--pv-add-button-letter-spacing);
    text-transform: var(--pv-add-button-text-transform);
    white-space: nowrap;
    border-radius: 0 9999px 9999px 0 !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-left: none !important;
    margin: 0;
    background-color: rgba(255, 255, 255, 0.18) !important;
    color: rgba(255, 255, 255, 0.45) !important;
    cursor: not-allowed;
    pointer-events: none;
    box-shadow: none;
}

body.v2 .wrap.accordions .price_quantity_box .add-button::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 1.125rem;
    height: 1.125rem;
    background-color: currentColor;
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-image: var(--pv-shopping-cart-icon-mask);
    mask-image: var(--pv-shopping-cart-icon-mask);
}

html:lang(nl) body.v2 .wrap.accordions .price_quantity_box .show_button .add-button,
html:lang(nl) body.v2 .wrap.accordions .price_quantity_box .add-button {
    font-size: 0 !important;
    line-height: 0 !important;
    color: transparent;
}

html:lang(nl) body.v2 .wrap.accordions .price_quantity_box .show_button .add-button::after,
html:lang(nl) body.v2 .wrap.accordions .price_quantity_box .add-button::after {
    content: "In winkelwagen";
    display: inline;
    font-family: var(--pv-add-button-font-family);
    font-size: var(--pv-add-button-font-size);
    font-weight: var(--pv-add-button-font-weight);
    font-style: normal;
    line-height: 1;
    letter-spacing: var(--pv-add-button-letter-spacing);
    text-transform: var(--pv-add-button-text-transform);
    white-space: nowrap;
}

html:lang(nl) body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"].hide .add-button::after {
    color: rgba(255, 255, 255, 0.45);
}

html:lang(nl) body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"]:not(.hide) .add-button::after {
    color: var(--pv-color-black);
}

html:lang(nl) body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"]:not(.hide) .add-button:hover::after {
    color: var(--pv-color-black);
}

body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"]:not(.hide) .add-button {
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-left: none !important;
    cursor: pointer;
    pointer-events: auto;
}

body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"]:not(.hide) .add-button:hover {
    background-color: var(--pv-color-yellow) !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-left: none !important;
    color: var(--pv-color-black) !important;
}

body.v2 .wrap.accordions .price_quantity_box .show_button .btn .fa,
body.v2 .wrap.accordions .price_quantity_box .add-button .fa {
    display: none;
}

body.v2 .wrap.accordions .price_quantity_box > .show_button .remove-button {
    width: auto !important;
    min-width: 0;
    max-width: 100%;
    min-height: var(--pv-cart-control-height);
    height: var(--pv-cart-control-height);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    align-self: flex-end;
    border-radius: 9999px;
    font-weight: 900;
    text-transform: uppercase;
    font-size: 0.75rem;
    padding: 0 1rem;
    border: 2px solid rgba(255, 255, 255, 0.35);
    background: transparent;
    color: var(--pv-color-white) !important;
    white-space: nowrap;
}

body.v2 .wrap.accordions .price_quantity_box > .show_button .remove-button::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 0.875rem;
    height: 0.875rem;
    background-color: currentColor;
    -webkit-mask-image: var(--pv-trash-icon-mask);
    mask-image: var(--pv-trash-icon-mask);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

body.v2 .wrap.accordions .price_quantity_box .show_button .remove-button:hover,
body.v2 .wrap.accordions .price_quantity_box .show_button .remove-button:focus {
    border-color: var(--pv-color-red);
    background: transparent;
    color: var(--pv-color-red) !important;
}

@media (min-width: 768px) {
    body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"] {
        width: 100%;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .article-box {
        width: 100%;
        min-width: 0 !important;
        max-width: 100%;
        box-sizing: border-box;
    }

    body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"]:not(:has(.article-box)) {
        width: 100%;
        min-width: 0 !important;
        max-width: 100%;
        padding: 0;
        box-sizing: border-box;
    }

    /* Zeile 1: Preis | Zeile 2: Select + Button | Zeile 3: Verfügbarkeit */
    body.v2 .wrap.accordions .price_quantity_box .show_price {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        flex-wrap: nowrap;
        gap: 0.25rem 0.375rem;
        font-size: clamp(1.0625rem, 1.15vw, 1.3125rem);
        line-height: 1.15;
        white-space: nowrap;
        justify-content: flex-end;
    }

    body.v2 .wrap.accordions .price_quantity_box .show_price small {
        font-size: clamp(0.8125rem, 0.9vw, 0.9375rem);
        white-space: nowrap;
    }

    body.v2 .wrap.accordions .price_quantity_box > [id^="quantity_box"] {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: flex-start;
        align-items: stretch;
        column-gap: 0;
        row-gap: 0.375rem;
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    body.v2 .wrap.accordions .price_quantity_box .show_quantity .form-control {
        min-width: 0 !important;
        width: 100% !important;
        padding: 0 1.5rem 0 0.5rem;
        font-size: 0.8125rem;
    }

    body.v2 .wrap.accordions .price_quantity_box h5 {
        font-size: 1rem;
        line-height: 1.2;
        text-align: right;
    }
}

body.v2 .wrap.accordions .packagedetail i.fa {
    color: var(--pv-color-green);
}

/* Ticket image carousel – styled like accordion swiper on parookaville.com */
body.v2 .wrap.accordions .article_image {
    --pv-carousel-nav-size: 28px;
    --pv-carousel-nav-bg: rgba(204, 204, 204, 0.7);
    --pv-carousel-nav-offset: 0.5rem;
    position: relative;
    margin: 0;
    max-width: 100%;
}

body.v2 .wrap.accordions .article_image .carousel {
    width: 100% !important;
    height: auto !important;
    max-width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: var(--pv-border-radius);
    overflow: hidden;
    background-color: var(--pv-color-black);
    position: relative;
    align-content: unset !important;
}

body.v2 .wrap.accordions .article_image .carousel-inner {
    height: 100%;
    border-radius: inherit;
}

body.v2 .wrap.accordions .article_image .carousel-inner > .item {
    height: 100%;
}

body.v2 .wrap.accordions .article_image .carousel-inner > .item img {
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    display: block !important;
    object-fit: cover;
    object-position: center;
}

/* Single article image (no carousel) – match slider chrome */
body.v2 .wrap.accordions .article_image:has(> img) {
    aspect-ratio: 16 / 9;
    border-radius: var(--pv-border-radius);
    overflow: hidden;
    background-color: var(--pv-color-black);
}

body.v2 .wrap.accordions .article_image > img {
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    max-height: none !important;
    margin: 0 !important;
    display: block !important;
    object-fit: cover;
    object-position: center;
}

body.v2 .wrap.accordions .article_image .carousel-indicators {
    display: none !important;
}

body.v2 .wrap.accordions .article_image .carousel:not(:has(.carousel-inner > .item:nth-child(2))) .carousel-control {
    display: none !important;
}

body.v2 .wrap.accordions .article_image .carousel-control {
    position: absolute;
    top: auto !important;
    bottom: var(--pv-carousel-nav-offset);
    width: var(--pv-carousel-nav-size) !important;
    height: var(--pv-carousel-nav-size) !important;
    opacity: 0.7;
    background: none !important;
    background-image: none !important;
    filter: drop-shadow(0 0 8px rgba(0, 0, 0, 0.5));
    text-shadow: none;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    transition: opacity 150ms ease;
}

body.v2 .wrap.accordions .article_image .carousel-control:hover,
body.v2 .wrap.accordions .article_image .carousel-control:focus {
    opacity: 0.9;
    outline: none;
}

body.v2 .wrap.accordions .article_image .carousel-control.left {
    left: var(--pv-carousel-nav-offset) !important;
    right: auto !important;
    border-radius: 50% 0 0 50%;
    background-color: var(--pv-carousel-nav-bg) !important;
}

body.v2 .wrap.accordions .article_image .carousel-control.right {
    left: calc(var(--pv-carousel-nav-offset) + var(--pv-carousel-nav-size)) !important;
    right: auto !important;
    border-radius: 0 50% 50% 0;
    background-color: var(--pv-carousel-nav-bg) !important;
}

body.v2 .wrap.accordions .article_image .carousel-control .icon-prev,
body.v2 .wrap.accordions .article_image .carousel-control .icon-next,
body.v2 .wrap.accordions .article_image .carousel-control .fa {
    display: none !important;
}

body.v2 .wrap.accordions .article_image .carousel-control::before {
    font-family: Nexa Text, Helvetica, Arial, sans-serif;
    font-weight: 400;
    font-size: 1.375rem;
    line-height: 1;
    color: var(--pv-color-black);
}

body.v2 .wrap.accordions .article_image .carousel-control.left::before {
    content: '<';
}

body.v2 .wrap.accordions .article_image .carousel-control.right::before {
    content: '>';
}

body.v2 .wrap.accordions .article_image .carousel-control .glyphicon {
    display: none !important;
}

/* Bild-Slider volle Breite, Beschreibung darunter */
body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row:has(.article_image),
body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row:has(.article_image) {
    --pv-carousel-right-gap: 1.25rem;
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0.75rem;
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: calc(100% - var(--pv-carousel-right-gap));
    max-width: calc(100% - var(--pv-carousel-right-gap));
}

body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row:has(.article_image) > .col-md-4,
body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row:has(.article_image) > .col-sm-4,
body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row:has(.article_image) > .col-md-8,
body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row:has(.article_image) > .col-sm-8 {
    flex: 0 0 auto;
    width: 100% !important;
    max-width: 100%;
    float: none !important;
    padding: 0;
}

body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row:has(.article_image) > br,
body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row:has(.article_image) > br {
    display: none !important;
}

@media (min-width: 768px) {
    body.v2 .wrap.accordions .article_image {
        --pv-carousel-nav-size: 38px;
        --pv-carousel-nav-offset: 0.75rem;
        margin-bottom: 0;
    }

    body.v2 .wrap.accordions .article_image .carousel-control::before {
        font-size: 1.5rem;
    }
}

@media only screen and (max-width: 767px) {
    body.v2 .wrap.accordions .article_image {
        --pv-carousel-nav-size: 36px;
        --pv-carousel-nav-offset: 0.625rem;
    }

    body.v2 .wrap.accordions .article_image .carousel-control::before {
        font-size: 1.25rem;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .col-md-9 > .row:has(.article_image),
    body.v2 .wrap.accordions .wrap_content .well .items .col-sm-8 > .row:has(.article_image) {
        gap: 0.375rem;
        --pv-carousel-right-gap: 0;
        width: 100%;
        max-width: 100%;
    }

    body.v2 #content .wrap.accordions .wrap_content .well,
    body.v2 #content main .wrap.accordions .wrap_content .well,
    body.v2 .wrap.accordions .wrap_content .well,
    body.v2 #content .wrap.accordions .wrap_content .well.well-light,
    body.v2 #content main .wrap.accordions .wrap_content .well.well-light,
    body.v2 .wrap.accordions .wrap_content .well.well-light,
    body.v2 #content .wrap.accordions .wrap_content .well.well-shadow,
    body.v2 #content main .wrap.accordions .wrap_content .well.well-shadow,
    body.v2 .wrap.accordions .wrap_content .well.well-shadow {
        margin-bottom: 0;
        padding: var(--inner-padding);
        padding-top: var(--pv-border-radius) !important;
        background-color: rgb(30, 30, 30) !important;
        border: none;
        box-shadow: none !important;
        border-bottom-left-radius: var(--pv-border-radius);
        border-bottom-right-radius: var(--pv-border-radius);
    }

    body.v2 .wrap.accordions .wrap_content .well .items {
        padding: 0;
        background: none;
        border-radius: 0;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .article-box {
        width: 100%;
        max-width: none;
        grid-template-columns: minmax(0, 1fr);
        align-items: center;
        box-sizing: border-box;
    }

    body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"]:not(:has(.article-box)) {
        width: 100%;
        max-width: none;
        padding: 0;
        box-sizing: border-box;
    }

    /* Mobil wie Desktop: Preis oben rechts, Select + Button darunter */
    body.v2 .wrap.accordions .price_quantity_box {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        justify-content: center;
        gap: 0.875rem;
    }

    body.v2 .wrap.accordions .price_quantity_box .show_price {
        width: 100%;
        margin-left: 0;
        font-size: 1.125rem;
        line-height: 1.15;
        justify-content: flex-end;
        text-align: right;
    }

    body.v2 .wrap.accordions .price_quantity_box h5 {
        text-align: right;
        font-size: 1rem;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .stockStatus {
        justify-self: stretch;
    }
}

/* Icon colors default */
.heading h1, .jumbotron h1, .text-system, .listing-filter .listing-view-action span.active, .final, .color, .color i, span.color, i.color, a.color, .btn-ok, .btn-ok:hover, .btn-ok:focus, .btn-ok:active, .paginate .pagination li a {
    color: var(--pv-color-green) !important;
}


/* Tooltip – Visa badge info (Bootstrap, container: body via ticketpay-anchor.js) */
.tooltip {
    z-index: 1100;
    opacity: 1 !important;
}

.tooltip-inner {
    max-width: 15rem;
    padding: 0.75rem 1rem;
    border-radius: var(--pv-border-radius);
    border: 2px solid var(--pv-color-white);
    background-color: var(--pv-color-white);
    color: var(--pv-color-black);
    font-size: 0.8125rem;
    font-weight: 400;
    line-height: 1.35;
    text-align: center;
    text-transform: none;
    box-shadow: none;
}

.tooltip.top .tooltip-arrow {
    border-top-color: var(--pv-color-white);
    border-width: 6px 6px 0;
    margin-left: -6px;
}

.tooltip.bottom .tooltip-arrow {
    border-bottom-color: var(--pv-color-white);
}

body.v2 .label.label-default.label-tooltip {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    margin: 0;
    padding: 0.2rem 0.5rem;
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 1;
    text-transform: none;
    letter-spacing: 0;
    color: var(--pv-color-white) !important;
    background-color: rgba(110, 110, 110, 0.95);
    border: none;
    border-radius: 4px;
    cursor: help;
    vertical-align: middle;
}

body.v2 .wrap.accordions .price_quantity_box .show_price {
    border: none !important;
    border-top: none !important;
    border-bottom: none !important;
}

body.v2 .wrap.accordions .price_quantity_box .show_quantity {
    margin: 0 !important;
    border: none !important;
    border-top: none !important;
    border-bottom: none !important;
}

body.v2 .wrap.accordions .price_quantity_box .show_button {
    margin: 0 !important;
}

/* Quantity Box */
body.v2 .price_quantity_box {
    background: none;
    border: none;
    color: inherit;
    text-align: right;
}

body.v2 .price_quantity_box .show_price {
    padding: 0;
    color: #33cc99;
    font-weight: 900;
    font-size: 1.5rem;
    text-align: right;
    white-space: nowrap;
    display: flex;
    justify-content: end;
    gap: 0.5rem;
}
body.v2 .price_quantity_box .show_price small s {
    color: red;
}

body.v2 .price_quantity_box .show_quantity {
    border: none;
    padding: 0;
    margin: 1.5rem 0;
    text-align: right;
    box-shadow: none;
}

body.v2 .price_quantity_box .show_quantity .form-control {
    text-align: center;
    border-radius: 9999px;
    border-width: 1px;
    border-color: rgb(255 255 255 / 1);
    background-color: transparent;
    color: white;
    padding-left: 1rem;
    padding-right: 1rem;
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
    box-shadow: none;
    height: unset;
    width: unset;
    min-width: 100px;
    margin-left: auto;
    margin-right: 0;

    /* Custom Select Arrow */
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="white"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 20px;
    cursor: pointer;
    padding-right: 2rem;
}

body.v2 .price_quantity_box .show_button {
    padding: 0;
    margin-top: 1rem;
}

body.v2 .wrap.accordions .price_quantity_box .show_button .btn,
body.v2 .wrap.accordions .add-button {
    border-radius: 9999px;
    font-weight: 900;
    text-transform: uppercase;
}

body.v2 .wrap.accordions .price_quantity_box [id^="reserve_button"]:not(.hide) .add-button {
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2 .wrap.accordions .price_quantity_box .show_button .btn:not(.remove-button):hover,
body.v2 .wrap.accordions .price_quantity_box .add-button:hover {
    background-color: var(--pv-color-yellow) !important;
    color: var(--pv-color-black) !important;
}

/* Badge – Nicht verfügbar */
body.v2 .wrap.accordions .wrap_content .well .items .stockStatus.out,
body.v2 .wrap .wrap_content .well .items .stockStatus.out {
    display: inline-block;
    border: none;
    border-radius: 9999px;
    padding: 0.5rem 1rem;
    text-align: center;
    font-size: 1rem;
    font-weight: 900;
    text-transform: uppercase;
    line-height: 1;
    background-color: rgb(204 102 102 / 1);
    color: black !important;
    cursor: not-allowed;
}

/* Vorgeplant / Coming Soon – stockStatus ersetzt die Mengenauswahl */
body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) {
    display: flex;
    align-items: center;
    justify-content: stretch;
    grid-template-columns: unset;
    column-gap: 0;
    margin: 0;
    padding: 0;
    border: none !important;
    border-radius: 0;
    background-color: transparent !important;
    box-shadow: none !important;
    width: 100%;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out)::before {
    display: none;
    content: none;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .price_quantity_box {
    grid-column: unset;
    width: 100%;
    min-width: 0;
    align-items: stretch;
    gap: 0.5rem;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .show_price {
    display: none !important;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .show_quantity {
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    flex: 1 1 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
    position: static;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .show_quantity::before,
body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .show_quantity::after {
    content: none !important;
    display: none !important;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .show_quantity > .stockStatus.out {
    display: flex !important;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    max-width: 100%;
    min-height: var(--pv-cart-control-height);
    box-sizing: border-box;
    margin: 0;
    padding: 0.625rem 1.125rem;
    border: none;
    border-radius: 9999px;
    font-size: clamp(0.75rem, 1vw, 0.875rem);
    letter-spacing: 0.04em;
    line-height: 1;
    white-space: nowrap;
    background-color: var(--pv-color-yellow);
    color: var(--pv-color-black) !important;
    cursor: default;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.show_quantity > .stockStatus.out) .show_quantity > .stockStatus.out::before {
    content: "" !important;
    display: block !important;
    flex-shrink: 0;
    width: 1rem;
    height: 1rem;
    background-color: var(--pv-color-black);
    -webkit-mask-image: var(--pv-clock-icon-mask);
    mask-image: var(--pv-clock-icon-mask);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
}

/* Vorübergehend nicht verfügbar (Reservierung / Wartezustand) */
body.v2 .wrap.accordions .wrap_content .well .items .stockStatus.tempout,
body.v2 .wrap .wrap_content .well .items .stockStatus.tempout {
    display: block;
    width: 100%;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: none !important;
    border-radius: 0;
    background: transparent !important;
    box-shadow: none !important;
    text-align: left;
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
    hyphens: auto;
    font-size: clamp(0.6875rem, 2.4vw, 0.8125rem);
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: 0;
    text-transform: none;
    color: var(--pv-color-white) !important;
    cursor: wait;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box > .temp-soldout {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    width: 100%;
    align-self: center;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box > .stockStatus.tempout,
body.v2 .wrap.accordions .wrap_content .well .items .article-box > .temp-soldout.stockStatus.tempout {
    grid-column: 2;
    grid-row: 1;
    min-width: 0;
    width: 100%;
    align-self: center;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box .temp-soldout .stockStatus.tempout {
    width: 100%;
    min-width: 0;
}

/* Lade-Indikator – TicketPay-.line-Balken ausblenden, eigener Shimmer */
body.v2 .wrap.accordions .stockStatus.tempout::before,
body.v2 .wrap .stockStatus.tempout::before {
    content: "";
    display: block;
    width: min(100%, 5rem);
    height: 0.75rem;
    margin: 0 0 0.5rem;
    border-radius: 9999px;
    background: linear-gradient(
        90deg,
        rgba(255, 255, 255, 0.14) 0%,
        rgba(255, 255, 255, 0.14) 38%,
        var(--pv-color-green) 50%,
        rgba(255, 255, 255, 0.14) 62%,
        rgba(255, 255, 255, 0.14) 100%
    );
    background-size: 220% 100%;
    animation: pv-tempout-shimmer 1.15s linear infinite;
}

body.v2 .wrap.accordions .wrap_content .well .items .article-box .stockStatus.tempout::before,
body.v2 .wrap.accordions .wrap_content .well .items .article-box > .temp-soldout.stockStatus.tempout::before {
    margin-left: 0;
}

@keyframes pv-tempout-shimmer {
    0% {
        background-position: 100% 0;
    }

    100% {
        background-position: -100% 0;
    }
}

body.v2 .wrap.accordions .stockStatus.tempout > .line:not(:last-of-type),
body.v2 .wrap .stockStatus.tempout > .line:not(:last-of-type) {
    display: none !important;
}

body.v2 .wrap.accordions .stockStatus.tempout > .line:last-of-type,
body.v2 .wrap .stockStatus.tempout > .line:last-of-type {
    display: block !important;
    margin-top: 0.25rem;
    font-size: 0.6875rem;
    font-weight: 400;
    line-height: 1.3;
    color: rgba(255, 255, 255, 0.72) !important;
    text-transform: none;
    letter-spacing: 0;
}

@media (max-width: 767px) {
    /* TicketPay-Mobile: weißer stockStatus-Kasten neutralisieren */
    body.v2 .wrap.accordions .wrap_content .well .items .temp-soldout,
    body.v2 .wrap.accordions .wrap_content .well .items .temp-soldout.stockStatus.tempout,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box .temp-soldout,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box .stockStatus.tempout,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box .temp-soldout .stockStatus.tempout,
    body.v2 .wrap.accordions .wrap_content .well .items .stockStatus.tempout,
    body.v2 .wrap .wrap_content .well .items .stockStatus.tempout {
        display: block !important;
        float: none !important;
        width: 100% !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 !important;
        border: none !important;
        border-radius: 0 !important;
        background: transparent !important;
        background-color: transparent !important;
        box-shadow: none !important;
        letter-spacing: 0 !important;
        text-transform: none !important;
        text-align: center;
        color: var(--pv-color-white) !important;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.temp-soldout),
    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(> .stockStatus.tempout),
    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.temp-soldout .stockStatus.tempout),
    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(> .temp-soldout.stockStatus.tempout) {
        grid-template-columns: 1fr;
        justify-items: center;
        text-align: center;
        padding: 0.875rem 0.75rem;
        gap: 0.5rem;
        border: 1px solid rgba(255, 255, 255, 0.18) !important;
        border-radius: 8px;
        background-color: rgba(0, 0, 0, 0.22) !important;
        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04);
    }

    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.temp-soldout)::before,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(> .stockStatus.tempout)::before,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(.temp-soldout .stockStatus.tempout)::before,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box:has(> .temp-soldout.stockStatus.tempout)::before {
        grid-column: 1;
        grid-row: 1;
        justify-self: center;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .article-box > .temp-soldout,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box > .stockStatus.tempout,
    body.v2 .wrap.accordions .wrap_content .well .items .article-box > .temp-soldout.stockStatus.tempout {
        grid-column: 1;
        grid-row: 2;
        width: 100%;
        text-align: center;
    }

    body.v2 .wrap.accordions .wrap_content .well .items .stockStatus.tempout,
    body.v2 .wrap .wrap_content .well .items .stockStatus.tempout {
        font-size: 0.6875rem;
        line-height: 1.35;
        text-align: center;
    }

    body.v2 .wrap.accordions .stockStatus.tempout::before,
    body.v2 .wrap .stockStatus.tempout::before {
        margin-left: auto;
        margin-right: auto;
        margin-bottom: 0.5rem;
    }

    body.v2 .wrap.accordions .stockStatus.tempout > .line:not(:last-of-type),
    body.v2 .wrap .stockStatus.tempout > .line:not(:last-of-type) {
        margin-bottom: 0;
    }

    body.v2 .wrap.accordions .stockStatus.tempout > .line:last-of-type,
    body.v2 .wrap .stockStatus.tempout > .line:last-of-type,
    body.v2 .wrap.accordions .stockStatus.tempout .line,
    body.v2 .wrap .stockStatus.tempout .line {
        font-size: 0.625rem;
        color: rgba(255, 255, 255, 0.72) !important;
    }

    body.v2 .wrap.accordions .wrap_content .well .items [id^="form_article_"]:not(:has(.article-box)) .stockStatus.tempout {
        padding: 0.875rem 0.75rem !important;
        border: 1px solid rgba(255, 255, 255, 0.18) !important;
        border-radius: 8px;
        background-color: rgba(0, 0, 0, 0.22) !important;
        box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.04);
        text-align: center;
    }
}

/* ==========================================================================
   bottom Total
   ========================================================================== */

#shopping_cart {
    margin-top: clamp(1.25rem, 2vw, 2.5rem);
    margin-right: clamp(1.25rem, 2vw, 2.5rem);
}
.subtotal li {
    list-style-type: none;
    padding: .25em 0;
}
.subtotal .totallabel,
.subtotal .value {
    color: var(--pv-color-white);
}
.subtotal li.final {
    margin-top: 1em;
    padding: 1em 0;
    font-weight: 900;
    border-top-color: var(--pv-color-green) !important;
}
#sum_calculated {
    /* Cap so amounts like 10.000,00 € stay on one line in the cart column */
    font-size: clamp(1.25rem, 2vw, 1.75rem);
    white-space: nowrap;
}

/* ==========================================================================
   Sticky footer (Countdown + Warenkorb + Weiter)
   ========================================================================== */

body.v2 #stickyfooter {
    background: var(--pv-color-black);
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.45);
    color: var(--pv-color-white);
    z-index: 105;
    /* TicketPay: feste height:52px – Inhalt würde unten rauslaufen */
    height: auto !important;
    min-height: 0 !important;
    padding: 0 !important;
}

body.v2 #stickyfooter .orderstuff_layout {
    padding-top: 0.875rem;
    padding-bottom: max(1.125rem, calc(var(--pv-safe-area-bottom) + 1rem));
    padding-left: 0;
    padding-right: 0;
}

body.v2 #stickyfooter #initorder_layout.btn-continue,
body.v2 #stickyfooter .btn-brand.btn-continue {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    -webkit-text-fill-color: var(--pv-color-black) !important;
    text-transform: uppercase;
    border-left: none !important;
    padding: 0 1rem !important;
    transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
        border-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
        color 150ms cubic-bezier(0.4, 0, 0.2, 1),
        filter 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

/* TicketPay-Chevron (content: "\276f") per ::after */
body.v2 #stickyfooter #initorder_layout.btn-continue::after,
body.v2 #stickyfooter .btn-brand.btn-continue::after {
    color: var(--pv-color-black) !important;
}

body.v2 #stickyfooter #initorder_layout.btn-continue:hover,
body.v2 #stickyfooter #initorder_layout.btn-brand.btn-continue:hover,
body.v2 #stickyfooter .btn-continue:hover,
body.v2 #stickyfooter .btn-brand.btn-continue:hover,
body.v2 #stickyfooter #initorder_layout.btn-continue:focus,
body.v2 #stickyfooter #initorder_layout.btn-brand.btn-continue:focus,
body.v2 #stickyfooter .btn-continue:focus,
body.v2 #stickyfooter .btn-brand.btn-continue:focus,
body.v2 #stickyfooter #initorder_layout.btn-continue:focus-visible,
body.v2 #stickyfooter #initorder_layout.btn-brand.btn-continue:focus-visible,
body.v2 #stickyfooter .btn-continue:focus-visible,
body.v2 #stickyfooter .btn-brand.btn-continue:focus-visible {
    background-color: var(--pv-color-yellow) !important;
    border-color: var(--pv-color-yellow) !important;
    color: var(--pv-color-black) !important;
    filter: none;
}

body.v2 #stickyfooter #stickyfooter-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.625rem;
    /* TicketPay: line-height:46px schiebt Buttons über den Footer-Rand */
    line-height: 1 !important;
}

body.v2 #stickyfooter #stickyfooter-inner::before,
body.v2 #stickyfooter #stickyfooter-inner::after {
    content: none !important;
    display: none !important;
}

body.v2 #stickyfooter .pull-left,
body.v2 #stickyfooter .pull-right {
    float: none !important;
    width: auto;
}

body.v2 #stickyfooter .pull-right {
    margin-left: auto;
}

body.v2 #stickyfooter .pull-left > span.hidden-xs {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: 0.8125rem;
    line-height: 1.2;
    color: rgba(255, 255, 255, 0.8);
}

body.v2 #stickyfooter .pull-left:has(.countDownTimer) > span.hidden-xs {
    display: none !important;
}

body.v2 #stickyfooter .pull-left .btn-group,
body.v2 #stickyfooter .pull-right .btn-group {
    display: inline-flex;
    align-items: stretch;
    gap: 0;
    margin: 0 !important;
    float: none !important;
    overflow: hidden;
    vertical-align: middle;
}

body.v2 #stickyfooter .pull-left .btn-group {
    border-radius: 9999px;
}

body.v2 #stickyfooter .pull-right .btn-group {
    border-radius: 9999px;
}

/* SSL-Schloss-Button ausblenden – Countdown reicht */
body.v2 #stickyfooter .pull-left .btn-group > .btn:not(.countDownTimer) {
    display: none !important;
}

body.v2 #stickyfooter #initorder_layout {
    display: none;
}

body.v2 #stickyfooter #initorder_layout:not([style*="display: none"]) {
    display: inline-flex !important;
}

body.v2 #stickyfooter #stickyfooter-inner .btn {
    border: none !important;
    min-height: unset !important;
    height: var(--pv-sticky-footer-btn-height) !important;
    padding: 0 0.875rem !important;
    font-size: 0.8125rem !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    display: inline-flex;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: none !important;
}

body.v2 #stickyfooter .btn > i,
body.v2 #stickyfooter .btn > .fa {
    display: none !important;
}

body.v2 #stickyfooter .countDownTimer {
    background: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    border-radius: 9999px !important;
    min-width: 4.25rem;
    letter-spacing: 0.02em;
    gap: 0.375rem;
}

body.v2 #stickyfooter .countDownTimer::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 0.875rem;
    height: 0.875rem;
    background-color: currentColor;
    -webkit-mask-image: var(--pv-clock-icon-mask);
    mask-image: var(--pv-clock-icon-mask);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

body.v2 #stickyfooter .countDownTimer.text-danger {
    color: var(--pv-color-red) !important;
}

/* Pill-Form über btn-group (overflow:hidden) – Kinder ohne eigene Rundung */
body.v2 #stickyfooter .pull-right .btn-group > .btn {
    border-radius: 0 !important;
}

body.v2 #stickyfooter .pull-right .btn-group > .btn:last-of-type {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

body.v2 #stickyfooter #show_shopping_cart {
    background: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    white-space: nowrap;
    gap: 0.375rem;
}

body.v2 #stickyfooter #show_shopping_cart::before {
    content: "";
    display: block;
    flex-shrink: 0;
    width: 0.875rem;
    height: 0.875rem;
    background-color: currentColor;
    -webkit-mask-image: var(--pv-shopping-cart-icon-mask);
    mask-image: var(--pv-shopping-cart-icon-mask);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

body.v2 #stickyfooter .btn-continue:active,
body.v2 #stickyfooter .btn-brand.btn-continue:active {
    filter: brightness(0.92);
}

@media (max-width: 767px) {
    body.v2 #stickyfooter {
        --pv-sticky-footer-btn-height: 2.375rem;
    }

    body.v2 #stickyfooter .orderstuff_layout {
        padding-top: 0.75rem;
        padding-bottom: max(1rem, calc(var(--pv-safe-area-bottom) + 0.875rem));
        padding-left: 0;
        padding-right: 0;
    }

    body.v2 #stickyfooter #stickyfooter-inner {
        gap: 0.625rem;
    }

    body.v2 #stickyfooter #stickyfooter-inner .btn {
        font-size: 0.75rem !important;
        padding: 0 0.75rem !important;
    }

    body.v2 #stickyfooter .countDownTimer {
        min-width: 4rem;
    }

    body.v2 #stickyfooter #show_shopping_cart {
        max-width: 8.5rem;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    body.v2 #stickyfooter .btn-continue {
        padding: 0 0.875rem !important;
    }
}

/* ==========================================================================
   Modal
   ========================================================================== */

/* Über fixiertem TicketPay-Header (bis z-index 125) und TYPO3-Nav */
body.v2.modal-open .modal {
    z-index: 1300 !important;
}

body.v2.modal-open .modal-backdrop,
body.v2.modal-open > .modal-backdrop,
body.modal-open > .modal-backdrop {
    z-index: 1290 !important;
}

/* Portal: navigation below modals; invoice modal is nested in navbar (exception below) */
body.v2.modal-open:has(.navbar.navbar-default) .navbar.navbar-default {
    z-index: 100 !important;
}

body.v2.modal-open:has(.navbar.navbar-default):has(#modal_invoice.modal.in) .navbar.navbar-default,
body.v2.modal-open:has(.navbar.navbar-default):has(#modal_invoice.modal.show) .navbar.navbar-default {
    z-index: 1310 !important;
}

body.v2.modal-open:has(.navbar.navbar-default):has(#modal_invoice.modal.in) .modal-backdrop,
body.v2.modal-open:has(.navbar.navbar-default):has(#modal_invoice.modal.show) .modal-backdrop,
body.v2.modal-open:has(.navbar.navbar-default):has(#modal_invoice.modal.in) > .modal-backdrop,
body.v2.modal-open:has(.navbar.navbar-default):has(#modal_invoice.modal.show) > .modal-backdrop {
    z-index: 1280 !important;
}

body.v2.modal-open:has(.navbar.navbar-default) #modal_invoice.modal.in,
body.v2.modal-open:has(.navbar.navbar-default) #modal_invoice.modal.show {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1320 !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 1rem;
    overflow-x: hidden;
    overflow-y: auto;
}

body.v2.modal-open:has(.navbar.navbar-default) #modal_invoice .modal-dialog {
    position: relative;
    z-index: 1;
}

/* Personalization / AJAX modals (often injected into #content or #modal-holder) */
body.v2.modal-open:has(.navbar.navbar-default) #content .modal.in:not(#modal_invoice),
body.v2.modal-open:has(.navbar.navbar-default) #content .modal.show:not(#modal_invoice),
body.v2.modal-open:has(.navbar.navbar-default) #modal-holder .modal.in,
body.v2.modal-open:has(.navbar.navbar-default) #modal-holder .modal.show {
    position: fixed !important;
    inset: 0 !important;
    z-index: 1300 !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 1rem;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

body.v2.modal-open:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li {
    position: relative;
    z-index: 1;
}

/* Modals werden oft in #content injiziert – dort z-index:1 sonst unter dem Header */
body.v2.modal-open:has(.cover) #content {
    z-index: 1300;
}

body.v2.modal-open:has(.navbar.navbar-default):has(.cover) #content {
    z-index: auto;
}

body.v2.modal-open .cover.show_own_header .wrapper-right {
    z-index: 100 !important;
}

/* Meetch Ticketversicherung – iframe popup above header, sticky footer, shop modals */
body.v2 .upc-modal {
    z-index: 1400 !important;
}

body.v2:has(.upc-modal) #content {
    z-index: 1400;
}

body.v2:has(.upc-modal) .cover.show_own_header .wrapper-right {
    z-index: 100 !important;
}

body.v2.modal-open .modal-dialog {
    margin: clamp(4.5rem, 15vw, 6rem) auto 1rem;
    max-width: calc(100% - 2rem);
}

@media (min-width: 768px) {
    body.v2.modal-open .modal-dialog {
        width: min(42rem, calc(100% - 2rem));
        margin-top: calc(var(--pv-header-height) + var(--pv-safe-area-top) + 1.5rem);
        margin-bottom: 2rem;
    }
}

.modal-content {
    border: none;
    border-radius: var(--pv-border-radius);
    overflow: hidden;
}

.modal-header {
    padding: max(1vw, 1rem) max(2vw, 1rem);
    border-top-left-radius: var(--pv-border-radius);
    border-top-right-radius: var(--pv-border-radius);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-direction: row-reverse;
    margin: 0;
    background: rgba(238, 238, 238, 1);
    border: none;
}
.modal-header:before, .modal-header:after {
    display: none;
    content: "";
}
.modal-title {
    font-size: clamp(1.25rem, 2vw, 1.75rem);
    font-weight: 900;
    text-transform: uppercase;
    line-height: 1.1;
    margin: 0;
    padding: 0;
    color: var(--pv-color-black) !important;
}

.modal-header .close {
    margin: 0;
    min-width: 2.5rem;
    min-height: 2.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 1.5rem;
    line-height: 1;
    opacity: 1;
    text-transform: lowercase;
}

.modal-body {
    padding: max(2vw, 1rem);
    background: #fff;
    color: var(--pv-color-black);
}

/* Modals – black headlines/body (override global .text-system green) */
body.v2 .modal .modal-title,
body.v2 .modal .modal-body,
body.v2 .modal .modal-body .text-system,
body.v2 .modal .modal-body h1,
body.v2 .modal .modal-body h2,
body.v2 .modal .modal-body h3,
body.v2 .modal .modal-body h4,
body.v2 .modal .modal-body h5,
body.v2 .modal .modal-body h6,
body.v2 .modal .modal-body p,
body.v2 .modal .modal-body li,
body.v2 .modal .modal-body label,
body.v2 .modal .modal-body .well,
body.v2 .modal .modal-body .well h1,
body.v2 .modal .modal-body .well h2,
body.v2 .modal .modal-body .well h3,
body.v2 .modal .modal-body .well h4,
body.v2 .modal .modal-body .well .text-system {
    color: var(--pv-color-black) !important;
}

body.v2 .modal .modal-body :is(span, div, em, i, strong, b, font, u, small, td, th, blockquote),
body.v2 .modal .modal-body .well :is(span, div, em, i, strong, b, font, u, small, td, th) {
    color: var(--pv-color-black) !important;
}

body.v2 .modal .modal-header .close {
    color: var(--pv-color-black) !important;
}

body.v2 .modal .modal-body a.color {
    color: var(--pv-color-black) !important;
    text-decoration: underline !important;
}

body.v2 .modal .modal-body a.color:hover,
body.v2 .modal .modal-body a.color:focus {
    color: var(--pv-color-green) !important;
    text-decoration: none !important;
}

.modal-footer {
    padding: max(1vw, 1rem) max(2vw, 1rem);
    border-bottom-left-radius: var(--pv-border-radius);
    border-bottom-right-radius: var(--pv-border-radius);
    background: rgba(238, 238, 238, 1);
    border: none;
}

body.v2 .modal-footer .btn-default {
    border-radius: 9999px;
    font-weight: 900;
    text-transform: uppercase;
}

/* Modals – green action buttons on light background */
body.v2 .modal .btn-brand,
body.v2 .modal .btn.btn-brand,
body.v2 .modal .btn-ok,
body.v2 .modal .btn.btn-ok,
body.v2 .modal a.btn-brand,
body.v2 .modal button.btn-brand,
body.v2 .modal input.btn-brand {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    font-weight: 900;
    text-transform: uppercase;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2 .modal .btn-brand:hover,
body.v2 .modal .btn.btn-brand:hover,
body.v2 .modal .btn-brand:focus,
body.v2 .modal .btn.btn-brand:focus,
body.v2 .modal .btn-brand:focus-visible,
body.v2 .modal .btn-ok:hover,
body.v2 .modal .btn.btn-ok:hover,
body.v2 .modal .btn-ok:focus,
body.v2 .modal .btn.btn-ok:focus,
body.v2 .modal .btn-ok:focus-visible,
body.v2 .modal a.btn-brand:hover,
body.v2 .modal a.btn-brand:focus,
body.v2 .modal button.btn-brand:hover,
body.v2 .modal button.btn-brand:focus,
body.v2 .modal input.btn-brand:hover,
body.v2 .modal input.btn-brand:focus {
    background-color: var(--pv-color-black) !important;
    border-color: var(--pv-color-black) !important;
    color: var(--pv-color-white) !important;
}

body.v2 .modal .btn-brand .fa,
body.v2 .modal .btn.btn-brand .fa,
body.v2 .modal .btn-ok .fa,
body.v2 .modal .btn.btn-ok .fa,
body.v2 .modal .btn-brand i.fa,
body.v2 .modal .btn-ok i.fa {
    color: inherit !important;
}

/* Modals – standalone form fields (help modal etc., not split input groups) */
body.v2 .modal .modal-body .form-control {
    display: block;
    width: 100%;
    min-height: 2.75rem;
    padding: 0.5rem 1rem;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--pv-color-black);
    background-color: var(--pv-color-white);
    background-image: none;
    border: 1px solid #ccc;
    border-radius: 9999px;
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}

body.v2 .modal .modal-body .form-control::placeholder {
    color: rgba(0, 0, 0, 0.45);
}

body.v2 .modal .modal-body .form-control:focus {
    border-color: var(--pv-color-green);
    box-shadow: 0 0 0 1px var(--pv-color-green);
    outline: none;
}

/* Help modal etc. – pill split (input + submit), mirrors Freischaltcode */
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: stretch;
    width: 100%;
    max-width: 100%;
    margin: 0;
    border-radius: 9999px;
    overflow: hidden;
    border: 1px solid #ccc;
    background-color: var(--pv-color-white);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    gap: 0;
    box-sizing: border-box;
}

body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)):focus-within {
    border-color: var(--pv-color-green);
    box-shadow: 0 0 0 1px var(--pv-color-green);
}

body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .form-control,
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn,
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-addon {
    display: block !important;
    float: none !important;
    margin: 0 !important;
    clear: none !important;
}

body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .form-control {
    flex: 1 1 auto;
    min-width: 0;
    width: 1% !important;
    max-width: none;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    min-height: 2.75rem;
    padding: 0.5rem 1rem;
    background-color: var(--pv-color-white);
    color: var(--pv-color-black);
}

body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .form-control:focus {
    border: none !important;
    box-shadow: none !important;
    outline: none;
}

body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn,
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-addon {
    display: flex !important;
    flex: 0 0 auto;
    width: auto !important;
    vertical-align: middle;
    white-space: nowrap;
}

body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn .btn,
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn .btn-brand,
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn .btn-ok,
body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn button {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-height: 2.75rem;
    height: 100%;
    margin: 0 !important;
    padding: 0.625rem 1rem;
    border: none !important;
    border-radius: 0 !important;
    white-space: nowrap;
    font-size: clamp(0.6875rem, 2vw, 0.8125rem);
    line-height: 1.1;
    overflow: visible;
    text-overflow: unset;
    max-width: none;
    width: auto !important;
}

body.v2 .modal .modal-body .well {
    border: none;
    border-radius: var(--pv-border-radius);
    background-color: rgba(238, 238, 238, 1);
    box-shadow: none;
    padding: 1rem;
    margin-bottom: 1rem;
}

body.v2 .modal .modal-body .well:last-child {
    margin-bottom: 0;
}

body.v2 .modal .modal-body .well > hr,
body.v2 .modal .modal-body hr.less-margin {
    margin: 1rem 0;
}

/* Portal modals – readable text on light modal chrome (see stronger override at end of file) */
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-content,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-header,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-footer,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal .modal-content,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal .modal-header,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal .modal-body,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal .modal-footer,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"].modal .modal-content,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"].modal .modal-header,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"].modal .modal-body,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"].modal .modal-footer,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-content,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-header,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-body,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-footer {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-title,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal .modal-title,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"].modal .modal-title,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-title {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-header .close,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal .modal-header .close,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"].modal .modal-header .close,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-header .close {
    color: var(--pv-color-black) !important;
}

/* Event time modal: TicketPay serves malformed markup – the second ".col-md-6"
   ("Ende der Veranstaltung") is nested INSIDE the first one (missing closing
   </div>). Bootstrap's float grid then renders "Ende" as a narrow, indented
   half-width column that wraps. Neutralize every column in this modal to a
   clean, full-width stacked block so both date blocks align identically,
   regardless of the broken nesting.
   Scoped via the clock icon in the title (:has) so it works no matter which id
   the modal gets on shop vs. portal; #time kept as an extra fallback. */
body.v2 #time .modal-body .row,
body.v2 #time .modal-body .col-md-6,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body .row,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body .col-md-6 {
    display: block;
    float: none;
    width: 100%;
    margin: 0;
    padding: 0;
}

/* Bootstrap's .row clearfix pseudo-elements add stray boxes – disable them. */
body.v2 #time .modal-body .row::before,
body.v2 #time .modal-body .row::after,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body .row::before,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body .row::after {
    display: none;
}

/* Spacing between the two date blocks (nested or sibling markup). */
body.v2 #time .modal-body .col-md-6 .col-md-6,
body.v2 #time .modal-body .col-md-6 + .col-md-6,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body .col-md-6 .col-md-6,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body .col-md-6 + .col-md-6 {
    margin-top: 0.75rem;
}

body.v2 #time .modal-body h4,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body h4 {
    margin-top: 0;
    margin-bottom: 0.25rem;
}

body.v2 #time .modal-body p,
body.v2 .modal:has(.modal-title .fa-clock-o) .modal-body p {
    margin: 0;
}

/* ==========================================================================
   Info icon (ticketshop/info.svg)
   ========================================================================== */

.fa-info::before,
.fa-info-circle::before {
    content: "" !important;
    display: inline-block;
    width: 0.75em;
    height: 0.875em;
    vertical-align: -0.05em;
    background-color: currentColor;
    -webkit-mask-image: var(--pv-info-icon-mask);
    mask-image: var(--pv-info-icon-mask);
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    -webkit-mask-position: center;
    mask-position: center;
}

.label-tooltip .fa-info,
.label-tooltip .fa-info-circle {
    margin-right: 0.25em;
}

/* ==========================================================================
   Alert
   ========================================================================== */

.alert {
    padding: 1rem 2rem;
    margin-bottom: 20px;
    border: none;
    border-radius: var(--pv-border-radius);
    font-weight: bold;
}

.alert-danger {
    color: white;
    background-color: var(--pv-color-red);
    border: none;
}

.alert-info {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-green);
    border: none;
}

.alert-info .fa-info,
.alert-info .fa-info-circle {
    flex-shrink: 0;
}

.alert-info .fa-info::before,
.alert-info .fa-info-circle::before {
    width: 0.875rem;
    height: 1rem;
}

.alert-warning {
    color: var(--pv-color-black);
    background-color: var(--pv-color-yellow);
    border: none;
}

.alert-success {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-green) !important;
    border: none;
}

.alert-success :is(p, strong, span, em, i, small, .fa, a:not(:hover):not(:focus)) {
    color: var(--pv-color-black) !important;
}

body.v2 #content main .alert {
    padding: 0.75rem 1.25rem;
    margin-bottom: 1.25rem;
    font-weight: 400;
}

body.v2 #content main .alert p {
    margin: 0;
}

body.v2 #content main .alert p + p {
    margin-top: 0.5rem;
}


/* ==========================================================================
   Page - Checkout (Kundendaten, Bezahlmethode)
   ========================================================================== */

body.v2 #content main > .row .well.well-light,
body.v2 #paymentchoose .well,
body.v2 #klarna_container .well {
    background-color: var(--pv-color-gray);
    color: var(--pv-color-white);
    border: none;
    margin-bottom: clamp(1.25rem, 2vw, 2.5rem);
}

body.v2 #content main > .row .well.well-light h2,
body.v2 #paymentchoose .well h2,
body.v2 #klarna_container .well h2 {
    font-size: clamp(1.25rem, 2vw, 2rem);
    line-height: 1.2;
    text-transform: uppercase;
    font-weight: 900;
    margin-top: 0;
    margin-bottom: 1rem;
}

body.v2 #content main .well.well-light hr.less-margin,
body.v2 #paymentchoose .well hr.less-margin,
body.v2 #klarna_container .well hr.less-margin {
    display: none !important;
    margin: 0 !important;
    height: 0 !important;
}

body.v2 #content main > .row#ticketchoose .well h2,
body.v2 #content main > .row#customerdata .well h2 {
    margin-bottom: 1rem;
}

body.v2 #content main .control-label {
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.875rem;
    margin-bottom: 0.5rem;
}

body.v2 #content main .asterisk {
    color: var(--pv-color-red);
}

body.v2 #content main .form-group {
    margin-bottom: 1.25rem;
}

/* Checkout inputs – newsletter style (transparent, white outline) */
body.v2 #content main .form-control:not(.show_quantity_select):not(#redeem_coupon) {
    min-height: 3rem;
    padding: 0.5rem 1rem;
    color: var(--pv-color-white);
    background-color: transparent;
    background-image: none;
    border: 1px solid rgba(255, 255, 255, 0.85);
    border-radius: 9999px;
    box-shadow: none;
    -webkit-box-shadow: none;
}

body.v2 #content main .form-control:not(.show_quantity_select):not(#redeem_coupon)::placeholder {
    color: rgba(255, 255, 255, 0.75);
}

body.v2 #content main .form-control:not(.show_quantity_select):not(#redeem_coupon):focus {
    border-color: var(--pv-color-green);
    box-shadow: 0 0 0 1px var(--pv-color-green);
    outline: none;
    background-color: transparent;
    color: var(--pv-color-white);
}

body.v2 #content main select.form-control:not(.show_quantity_select) {
    color: var(--pv-color-white);
    background-color: transparent;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="white"/></svg>');
}

body.v2 .has-error .form-control:not(.show_quantity_select) {
    border-color: var(--pv-color-red) !important;
    box-shadow: 0 0 0 1px var(--pv-color-red) !important;
}

body.v2 #content main .checkbox {
    padding-left: 0;
    margin: 0;
}

body.v2 #content main .checkbox label {
    font-weight: 400;
    cursor: pointer;
}

body.v2 #content main .bs-callout {
    border-radius: var(--pv-border-radius);
    padding: clamp(0.875rem, 1.25vw, 1.25rem);
    margin: 0;
    border: 2px solid transparent;
    background-color: rgba(255, 255, 255, 0.05) !important;
    box-shadow: none;
    transition: border-color 150ms ease, background-color 150ms ease;
    cursor: pointer;
}

body.v2 #content main .bs-callout-default {
    border-color: transparent;
    background-color: rgba(255, 255, 255, 0.05) !important;
}

body.v2 #content main .bs-callout-default:hover {
    border-color: rgba(51, 204, 153, 0.4);
}

body.v2 #content main .bs-callout-default:has(input:checked) {
    border-color: var(--pv-color-green) !important;
    background-color: rgba(51, 204, 153, 0.1) !important;
}

body.v2 #content main .bs-callout label {
    display: block;
    position: relative;
    padding-left: calc(1.25rem + 0.75rem);
    margin: 0;
    cursor: pointer;
    color: var(--pv-color-white);
    font-weight: 900;
    text-transform: uppercase;
    font-size: 0.875rem;
    line-height: 1.3;
}

body.v2 #content main .bs-callout .font-default {
    display: block;
    margin-top: 0.375rem;
    color: var(--pv-color-white);
    font-size: 0.8125rem;
    line-height: 1.5;
    font-weight: 400;
    text-transform: none;
    min-width: 0;
}

body.v2 #content main .bs-callout .font-default b {
    color: var(--pv-color-white);
    font-weight: 700;
}

body.v2 #content main .bs-callout a.color:hover,
body.v2 #content main .bs-callout a.color:focus {
    color: var(--pv-color-white) !important;
    text-decoration: underline;
}

body.v2 #content main .bs-callout-danger {
    border-color: var(--pv-color-red) !important;
    background-color: rgba(204, 102, 102, 0.15) !important;
}

body.v2 #content main .bs-callout-danger input[type="checkbox"] {
    accent-color: var(--pv-color-red);
    box-shadow: 0 0 0 2px rgba(217, 83, 79, 0.65);
    border-radius: 2px;
}

body.v2 #content main .bs-callout input[type="checkbox"] {
    position: absolute;
    left: 0;
    top: 0.125rem;
    width: 1.25rem;
    height: 1.25rem;
    margin: 0;
    accent-color: var(--pv-color-green);
    cursor: pointer;
}

/* MyTicket Portal: Checkbox im Umpersonalisierungs-Flow (DOM hat kein "#content main") */
body.v2:has(.navbar.navbar-default) #content #personalize_box {
    border-radius: var(--pv-border-radius);
    padding: clamp(0.875rem, 1.25vw, 1.25rem);
    margin: 0;
    border: 2px solid transparent;
    background-color: rgba(255, 255, 255, 0.05) !important;
    box-shadow: none;
    transition: border-color 150ms ease, background-color 150ms ease;
    cursor: pointer;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box:hover {
    border-color: rgba(51, 204, 153, 0.4);
}

body.v2:has(.navbar.navbar-default) #content #personalize_box:has(input:checked) {
    border-color: var(--pv-color-green) !important;
    background-color: rgba(51, 204, 153, 0.1) !important;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box.bs-callout-danger {
    border-color: var(--pv-color-red) !important;
    background-color: rgba(204, 102, 102, 0.15) !important;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box label {
    display: block;
    position: relative;
    padding-left: calc(1.25rem + 0.75rem);
    margin: 0;
    cursor: pointer;
    color: var(--pv-color-white);
    font-weight: 900;
    text-transform: uppercase;
    font-size: 0.875rem;
    line-height: 1.3;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box .font-default {
    display: block;
    margin-top: 0.375rem;
    color: var(--pv-color-white);
    font-size: 0.8125rem;
    line-height: 1.5;
    font-weight: 400;
    text-transform: none;
    min-width: 0;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box .font-default b {
    color: var(--pv-color-white);
    font-weight: 700;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box input[type="checkbox"] {
    position: absolute;
    left: 0;
    top: 0.125rem;
    width: 1.25rem;
    height: 1.25rem;
    margin: 0;
    accent-color: var(--pv-color-green);
    cursor: pointer;
}

body.v2:has(.navbar.navbar-default) #content #personalize_box.bs-callout-danger input[type="checkbox"] {
    accent-color: var(--pv-color-red);
}

body.v2 #content main #customerdata .form-group:has(.bs-callout) {
    margin-bottom: 0.625rem;
}

body.v2 #content main #customerdata .form-group:has(.bs-callout):last-of-type {
    margin-bottom: 1.25rem;
}

body.v2 #content main #abort_button {
    border-radius: 9999px;
    border: 1px solid rgba(255, 255, 255, 0.35);
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.75rem;
    padding: 0.5rem 1rem;
    transition: color 150ms ease, border-color 150ms ease, background-color 150ms ease;
}

body.v2 #content #abort_button:hover,
body.v2 #content #abort_button:focus,
body.v2 #content #abort_button:focus-visible {
    color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    background-color: var(--pv-color-red) !important;
    box-shadow: none !important;
}

body.v2 #content .iti {
    width: 100%;
}

body.v2 #content .iti .iti__selected-country {
    border-radius: 9999px 0 0 9999px;
}

/* Ticketversicherung */
body.v2 #content main .well.well-light:has(#insurance_form) .row > .col-md-4.text-right img {
    display: inline-block;
    padding: 0.5rem 0.75rem;
    background-color: var(--pv-color-white);
    border-radius: calc(var(--pv-border-radius) * 0.5);
    box-sizing: content-box;
}

body.v2 #content main .well.well-light:has(#insurance_form) a:not(.btn):hover,
body.v2 #content main .well.well-light:has(#insurance_form) a:not(.btn):focus {
    color: var(--pv-color-white) !important;
    text-decoration: underline;
}

body.v2 #content main #insurance_form .radio label {
    color: var(--pv-color-white);
    font-weight: 400;
    cursor: pointer;
}

body.v2 #content main #insurance_form .radio input[type="radio"] {
    accent-color: var(--pv-color-green);
    cursor: pointer;
}

/* Page 4 – Bezahlmethode */
body.v2 #content main > .row:has(#paymentchoose) {
    margin-bottom: 1rem;
}

@media (min-width: 992px) {
    body.v2 #content main > .row:has(#paymentchoose) > .col-md-4 {
        padding-right: 0.75rem;
    }

    body.v2 #content main > .row:has(#paymentchoose) > .col-md-8 {
        padding-left: 0.75rem;
    }
}

body.v2 #paymentchoose .well.well-minheight {
    min-height: 0;
}

body.v2 #paymentchoose .well > form > .form-group {
    margin-bottom: 0;
}

body.v2 #paymentchoose .form-group .form-group {
    margin-bottom: 0.625rem;
}

body.v2 #paymentchoose .form-group .form-group:last-child {
    margin-bottom: 0;
}

/* Payment methods */
body.v2 .paymentmethod {
    position: relative !important;
    display: grid !important;
    height: auto !important;
    min-height: 0;
    grid-template-columns: auto auto 1fr;
    grid-template-rows: auto auto;
    gap: 0.5rem 0.875rem;
    align-items: center;
    padding: clamp(0.875rem, 1.25vw, 1.25rem);
    margin-bottom: 0.625rem;
    border-radius: var(--pv-border-radius);
    background-color: rgba(255, 255, 255, 0.05) !important;
    border: 2px solid transparent;
    transition: border-color 150ms ease, background-color 150ms ease;
    cursor: pointer;
    font-weight: 600;
}

body.v2 .paymentmethod:hover {
    border-color: rgba(51, 204, 153, 0.4);
}

/* MyTicket Portal (Umpersonalisierung): Zahlungslogos ohne Radios/Text
   -> nebeneinander in einzelnen Boxen anzeigen, keine Hover-Hervorhebung. */
body.v2 .paymentmethod:not(:has(.paymentmethod_radio)) {
    display: flex !important;
    flex-wrap: wrap;
    gap: 0.75rem;
    height: auto !important;
    min-height: 0;
    padding: 0 !important;
    margin-bottom: 0.625rem;
    background-color: transparent !important;
    border: none !important;
    cursor: default;
    transition: none !important;
}

body.v2 .paymentmethod:not(:has(.paymentmethod_radio)):hover {
    border-color: transparent !important;
    background-color: transparent !important;
}

body.v2 .paymentmethod:not(:has(.paymentmethod_radio)) .paymentmethod_image {
    grid-column: auto !important;
    grid-row: auto !important;
    position: static !important;
    width: 7.5rem;
    height: 3.5rem;
    margin: 0 !important;
    padding: 0.5rem 0.75rem !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    background-color: transparent !important;
    border: none !important;
    border-radius: var(--pv-border-radius);
    cursor: default !important;
    line-height: 1 !important;
}

body.v2 .paymentmethod:not(:has(.paymentmethod_radio)) .paymentmethod_image img {
    max-width: 100% !important;
    max-height: 2.25rem !important;
    width: auto;
    height: auto;
}

@media (max-width: 767px) {
    /* Portal info logos (Umpersonalisierung etc.) – all payment icons in one row */
    body.v2 .paymentmethod:not(:has(.paymentmethod_radio)) {
        flex-wrap: nowrap;
        gap: 0.375rem;
        width: 100%;
    }

    body.v2 .paymentmethod:not(:has(.paymentmethod_radio)) .paymentmethod_image {
        flex: 1 1 0;
        min-width: 0;
        width: auto !important;
        height: auto;
        min-height: 2.5rem;
        padding: 0.25rem 0.125rem !important;
    }

    body.v2 .paymentmethod:not(:has(.paymentmethod_radio)) .paymentmethod_image img {
        max-height: 1.625rem !important;
    }
}

body.v2 .paymentmethod:has(input:checked),
body.v2 .paymentmethod.paymentmethod-checked {
    border-color: var(--pv-color-green) !important;
    background-color: rgba(51, 204, 153, 0.1) !important;
}

body.v2 .paymentmethod_radio,
body.v2 .paymentmethod_image,
body.v2 .paymentmethod_extra {
    position: static !important;
    top: auto !important;
    left: auto !important;
    right: auto !important;
    width: auto !important;
    height: auto !important;
    line-height: inherit !important;
    text-align: left !important;
}

body.v2 .paymentmethod_radio {
    grid-row: 1 / 3;
}

body.v2 .paymentmethod_image {
    grid-column: 2;
    grid-row: 1 / 3;
    line-height: normal !important;
}

body.v2 .paymentmethod_image img {
    max-height: 2.5rem;
    width: auto;
    max-width: 100px;
}

body.v2 .paymentmethod_text {
    grid-column: 3;
    grid-row: 1;
    position: static !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    display: block !important;
    height: auto !important;
    line-height: 1.3 !important;
    padding: 0 !important;
    font-weight: 900;
    text-transform: uppercase;
    margin: 0 !important;
    cursor: pointer;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
}

/* PayPal markup: <div class="paymentmethod_text"><label style="font-weight: normal">… */
body.v2 .paymentmethod_text label {
    display: block;
    margin: 0 !important;
    padding: 0 !important;
    font-weight: 900 !important;
    text-transform: uppercase;
    line-height: 1.3 !important;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    cursor: pointer;
}

body.v2 .paymentmethod.paymentmethod-checked .paymentmethod_text,
body.v2 .paymentmethod:has(input:checked) .paymentmethod_text {
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
}

body.v2 .paymentmethod_extra {
    grid-column: 3;
    grid-row: 2;
    font-size: 0.875rem;
}

body.v2 .paymentmethod_extra .text-success {
    color: var(--pv-color-green) !important;
}

/* OPPWA / VR Pay Copy & Pay – Kreditkartenformular (wpwl-*)
   TicketPay addClass('form-control') – höhere Spezifität nötig. */
body.v2 .wpwl-container,
body.v2 .wpwl-form {
    --pv-wpwl-field-height: 3rem;
    color: var(--pv-color-white);
    font-family: var(--pv-font-family);
}

/* OPPWA floats/clears außer Kraft setzen */
body.v2 .wpwl-clearfix::before,
body.v2 .wpwl-clearfix::after {
    content: none !important;
    display: none !important;
}

body.v2 .wpwl-label,
body.v2 .wpwl-wrapper,
body.v2 .wpwl-brand,
body.v2 .wpwl-button {
    float: none !important;
}

body.v2 .wpwl-group {
    display: grid;
    grid-template-columns: 1fr;
    align-items: center;
    column-gap: 1rem;
    row-gap: 0.375rem;
    margin: 0 0 1rem;
    padding: 0;
    border: none;
    width: 100%;
}

body.v2 .wpwl-group-brand {
    grid-template-columns: minmax(0, 1fr) auto;
}

body.v2 .wpwl-group-brand .wpwl-label {
    grid-column: 1 / -1;
}

body.v2 .wpwl-group-brand .wpwl-wrapper {
    grid-column: 1;
}

body.v2 .wpwl-group-brand .wpwl-brand {
    grid-column: 2;
}

body.v2 .wpwl-group-submit {
    margin-top: 1.25rem;
    margin-bottom: 0;
    justify-items: end;
}

body.v2 .wpwl-label {
    width: auto;
    max-width: none;
    margin: 0;
    padding: 0;
    color: var(--pv-color-white) !important;
    font-weight: 700;
    text-transform: uppercase;
    font-size: 0.875rem;
    line-height: 1.3;
}

body.v2 .wpwl-label small {
    display: inline;
    font-size: 0.75rem;
    font-weight: 400;
    text-transform: none;
    color: rgba(255, 255, 255, 0.7);
}

body.v2 .wpwl-label small a {
    color: var(--pv-color-green) !important;
    text-decoration: none;
}

body.v2 .wpwl-label small a:hover,
body.v2 .wpwl-label small a:focus {
    color: var(--pv-color-white) !important;
    text-decoration: underline;
}

body.v2 .wpwl-wrapper {
    width: 100%;
    min-width: 0;
    max-width: 100%;
}

body.v2 .wpwl-brand,
body.v2 .wpwl-brand-card {
    /* OPPWA-Sprite: Position nicht anfassen – feste Logo-Fläche + weißer Rahmen */
    display: block !important;
    box-sizing: content-box !important;
    margin: 0.35rem !important;
    padding: 0 !important;
    background-color: var(--pv-color-white) !important;
    border: none !important;
    border-radius: 0.375rem !important;
    box-shadow: 0 0 0 0.35rem var(--pv-color-white);
    overflow: visible;
    align-self: center;
}

/*
 * OPPWA setzt ab 480px:
 *   .wpwl-wrapper-brand, .wpwl-brand-card { width: 33.33333333%; }
 * Das quetscht das Logo zu einem schmalen Streifen – zurück auf feste Logo-Größe.
 */
@media (min-width: 480px) {
    body.v2 .wpwl-wrapper-brand {
        width: auto !important;
        max-width: none !important;
    }

    body.v2 .wpwl-brand-card,
    body.v2 .wpwl-brand.wpwl-brand-card {
        width: 65px !important;
        height: 40px !important;
        max-width: 65px !important;
        flex: 0 0 65px !important;
    }
}

/* Inputs / selects – wie Käuferdaten (transparent, weiße Outline) */
body.v2 .wpwl-control,
body.v2 .wpwl-control.form-control,
body.v2 #content main .wpwl-control.form-control,
body.v2 #content main .wpwl-form .form-control {
    display: block;
    box-sizing: border-box !important;
    width: 100%;
    height: var(--pv-wpwl-field-height) !important;
    min-height: var(--pv-wpwl-field-height) !important;
    max-height: var(--pv-wpwl-field-height) !important;
    padding: 0.5rem 1rem !important;
    margin: 0;
    font-size: 1rem;
    line-height: 1.65rem;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    background-image: none !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}

/* Einheitliche Placeholder-Farbe (Native-Felder; Firefox braucht opacity) */
body.v2 .wpwl-control::placeholder,
body.v2 .wpwl-control.form-control::placeholder,
body.v2 #content main .wpwl-form .form-control::placeholder,
body.v2 .wpwl-control-expiry::placeholder,
body.v2 .wpwl-control-cardHolder::placeholder,
body.v2 input.wpwl-control::placeholder {
    color: rgba(255, 255, 255, 0.75) !important;
    opacity: 1 !important;
}

body.v2 .wpwl-control::-webkit-input-placeholder,
body.v2 input.wpwl-control::-webkit-input-placeholder {
    color: rgba(255, 255, 255, 0.75) !important;
    opacity: 1 !important;
}

body.v2 .wpwl-control::-moz-placeholder,
body.v2 input.wpwl-control::-moz-placeholder {
    color: rgba(255, 255, 255, 0.75) !important;
    opacity: 1 !important;
}

body.v2 .wpwl-control:focus,
body.v2 .wpwl-control.form-control:focus,
body.v2 #content main .wpwl-form .form-control:focus {
    border-color: var(--pv-color-green) !important;
    box-shadow: 0 0 0 1px var(--pv-color-green) !important;
    outline: none;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
}

body.v2 select.wpwl-control,
body.v2 select.wpwl-control.form-control,
body.v2 #content main .wpwl-form select.form-control {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 2.5rem !important;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="white"/></svg>') !important;
    background-repeat: no-repeat !important;
    background-position: right 10px center !important;
    background-size: 20px !important;
    cursor: pointer;
    color-scheme: light;
}

body.v2 select.wpwl-control option,
body.v2 #content main .wpwl-form select.form-control option {
    color: var(--pv-color-black);
    background-color: var(--pv-color-white);
}

/*
 * PCI iframes (Kartennummer / CVV): Innen-Padding geht nur über den Wrapper,
 * weil der Iframe-Inhalt vom Payment-Provider kommt.
 */
body.v2 .wpwl-wrapper-cardNumber,
body.v2 .wpwl-wrapper-cvv {
    display: flex !important;
    align-items: center;
    box-sizing: border-box !important;
    height: var(--pv-wpwl-field-height) !important;
    min-height: var(--pv-wpwl-field-height) !important;
    padding: 0 1rem !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px !important;
    background-color: transparent !important;
    overflow: hidden;
}

body.v2 .wpwl-wrapper-cardNumber:focus-within,
body.v2 .wpwl-wrapper-cvv:focus-within {
    border-color: var(--pv-color-green) !important;
    box-shadow: 0 0 0 1px var(--pv-color-green);
}

body.v2 .wpwl-wrapper-cardNumber iframe.wpwl-control,
body.v2 .wpwl-wrapper-cvv iframe.wpwl-control,
body.v2 .wpwl-wrapper-cardNumber iframe.wpwl-control-iframe,
body.v2 .wpwl-wrapper-cvv iframe.wpwl-control-iframe {
    display: block;
    flex: 1 1 auto;
    box-sizing: border-box !important;
    width: 100% !important;
    height: 1.75rem !important;
    min-height: 1.75rem !important;
    max-height: 1.75rem !important;
    padding: 0 !important;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    background-color: transparent !important;
    box-shadow: none !important;
    overflow: hidden !important;
}

/* Fallback für andere wpwl-iframes (falls vorhanden) */
body.v2 iframe.wpwl-control:not(.wpwl-control-cardNumber):not(.wpwl-control-cvv),
body.v2 iframe.wpwl-control-iframe:not(.wpwl-control-cardNumber):not(.wpwl-control-cvv) {
    display: block;
    box-sizing: border-box !important;
    width: 100% !important;
    height: var(--pv-wpwl-field-height) !important;
    min-height: var(--pv-wpwl-field-height) !important;
    max-height: var(--pv-wpwl-field-height) !important;
    padding: 0 !important;
    margin: 0 !important;
    background-color: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px !important;
    overflow: hidden !important;
}

/* „Jetzt bezahlen“ – Grün → Hover Gelb */
body.v2 .wpwl-button,
body.v2 .wpwl-button-pay,
body.v2 button.wpwl-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--pv-wpwl-field-height);
    height: var(--pv-wpwl-field-height);
    padding: 0 1.5rem;
    margin: 0;
    border: none !important;
    border-radius: 9999px !important;
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    font-family: var(--pv-font-family);
    font-size: 0.875rem;
    font-weight: 900;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    cursor: pointer;
    box-shadow: none !important;
    transition: background-color 150ms ease, color 150ms ease;
}

body.v2 .wpwl-button:hover,
body.v2 .wpwl-button:focus,
body.v2 .wpwl-button-pay:hover,
body.v2 .wpwl-button-pay:focus,
body.v2 button.wpwl-button:hover,
body.v2 button.wpwl-button:focus {
    background-color: var(--pv-color-yellow) !important;
    color: var(--pv-color-black) !important;
    outline: none;
}

/* Kreditkarten-Box: Gesamtbetrag + Zurück */
body.v2 .well.well-light:has(.wpwl-form) > .mb-10 p,
body.v2 .well.well-light:has(.wpwl-container) > .mb-10 p {
    margin: 0;
    color: var(--pv-color-white);
    font-size: 1rem;
    font-weight: 700;
}

body.v2 .well.well-light:has(.wpwl-form) > a.btn.btn-default,
body.v2 .well.well-light:has(.wpwl-container) > a.btn.btn-default {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 2.75rem;
    padding: 0.5rem 1.25rem;
    margin-top: 0.5rem;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px !important;
    background-color: transparent !important;
    color: var(--pv-color-white) !important;
    font-weight: 900;
    text-transform: uppercase;
    font-size: 0.8125rem;
    text-decoration: none !important;
}

body.v2 .well.well-light:has(.wpwl-form) > a.btn.btn-default:hover,
body.v2 .well.well-light:has(.wpwl-form) > a.btn.btn-default:focus,
body.v2 .well.well-light:has(.wpwl-container) > a.btn.btn-default:hover,
body.v2 .well.well-light:has(.wpwl-container) > a.btn.btn-default:focus {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

@media (min-width: 768px) {
    body.v2 .wpwl-group {
        grid-template-columns: 10rem minmax(0, 1fr);
    }

    body.v2 .wpwl-group-brand {
        grid-template-columns: 10rem minmax(0, 1fr) auto;
    }

    body.v2 .wpwl-group-brand .wpwl-label {
        grid-column: 1;
    }

    body.v2 .wpwl-group-brand .wpwl-wrapper {
        grid-column: 2;
    }

    body.v2 .wpwl-group-brand .wpwl-brand {
        grid-column: 3;
    }

    body.v2 .wpwl-group-submit {
        grid-template-columns: 10rem minmax(0, 1fr);
    }

    body.v2 .wpwl-group-submit .wpwl-wrapper-submit {
        grid-column: 2;
        justify-self: end;
        width: auto;
    }
}

body.v2 .radio-styled input[type="radio"] {
    width: 1.25rem;
    height: 1.25rem;
    accent-color: var(--pv-color-green);
    cursor: pointer;
}

/* Order table */
body.v2 #content main .table {
    color: var(--pv-color-white);
    border-collapse: separate;
    border-spacing: 0;
}

body.v2 #content main .table > thead > tr > th {
    border-bottom: 1px solid rgba(255, 255, 255, 0.15);
    text-transform: uppercase;
    font-size: 0.6875rem;
    letter-spacing: 0.04em;
    font-weight: 900;
    padding: 0.5rem 0.75rem 0.75rem;
    color: rgba(255, 255, 255, 0.7);
}

body.v2 #content main .table > tbody > tr > td {
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    padding: 0.75rem;
    vertical-align: top;
}

body.v2 #content main .table > tbody > tr.active > td {
    background-color: transparent;
}

body.v2 #content main .table > tbody > tr.active > td,
body.v2 #content main .table > tbody > tr.bold > td {
    font-weight: 700;
}

body.v2 #content main .table > thead > tr > th:last-child {
    width: auto !important;
    min-width: 7.5rem;
}

body.v2 #content main .table > tbody > tr.finaltotal,
body.v2 #content main .table > tbody > tr.finaltotal > td {
    background-color: transparent !important;
}

body.v2 #content main .table > tbody > tr.finaltotal > td {
    font-weight: 900;
    font-size: clamp(1.125rem, 2vw, 1.5rem);
    color: var(--pv-color-green);
    border-top: 2px solid var(--pv-color-green);
    padding-top: 1rem;
    vertical-align: middle;
}

body.v2 #content main .table > tbody > tr.finaltotal > td:last-child,
body.v2 #content main .table > tbody > tr.finaltotal > td#total_amount {
    white-space: nowrap;
}

body.v2 #content main .table .line {
    font-size: 0.875rem;
    opacity: 0.7;
    margin-top: 0.25rem;
}

/* Page 5 – Bestätigung / Ergebnis */
body.v2 #content main .jumbotron.jumbotron-success {
    text-align: center;
}

body.v2 #content main .jumbotron.jumbotron-success h1,
body.v2 #content main .jumbotron.jumbotron-success p {
    text-align: center;
}

body.v2 #content main .jumbotron.jumbotron-success p {
    margin-bottom: 1rem;
}

body.v2 #content main .jumbotron.jumbotron-success .well {
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0;
    margin-top: 1.25rem;
    margin-bottom: 1.25rem;
}

body.v2 #content main .jumbotron.jumbotron-success .well img {
    display: block;
    max-width: min(100%, 42rem);
    height: auto;
    margin: 0 auto;
}

body.v2 #content main .jumbotron.jumbotron-success > hr {
    display: none !important;
    margin: 0 !important;
    height: 0 !important;
}

/* Page 7 – Bezahlung Umpersonalisierung info box */
body.v2 #content main .jumbotron.jumbotron-default > hr {
    display: none !important;
    margin: 0 !important;
    height: 0 !important;
}

body.v2 #content main .jumbotron.jumbotron-success .btn-box {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.75rem;
    margin-top: 1.25rem;
}

body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-default,
body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-info {
    transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
        border-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
        color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-info {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-default:hover,
body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-default:focus,
body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-default:focus-visible,
body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-info:hover,
body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-info:focus,
body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn-info:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

/* Vorkasse – bank transfer details as data table (readonly fields) */
body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]) {
    display: grid;
    grid-template-columns: minmax(9rem, 36%) 1fr;
    gap: 0.35rem 1.25rem;
    align-items: start;
    margin: 0;
    padding: 0.875rem 1rem;
    text-align: left;
    background-color: rgba(0, 0, 0, 0.22);
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

body.v2 #content main .jumbotron > hr.less-margin + .form-group:has(> .controls > input.form-control[readonly]),
body.v2 #content main .jumbotron > hr + .form-group:has(> .controls > input.form-control[readonly]):not(
        .form-group:has(> .controls > input.form-control[readonly])
        ~ .form-group:has(> .controls > input.form-control[readonly])
    ) {
    margin-top: 1rem;
    border-top-left-radius: var(--pv-border-radius) !important;
    border-top-right-radius: var(--pv-border-radius) !important;
}

body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]):has(+ hr) {
    border-bottom: none !important;
    border-bottom-left-radius: var(--pv-border-radius) !important;
    border-bottom-right-radius: var(--pv-border-radius) !important;
    margin-bottom: 0;
    overflow: hidden;
}

body.v2 #content main .jumbotron:has(.form-group > .controls > input.form-control[readonly]) > .btn {
    margin-top: 1.25rem;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2 #content main .jumbotron:has(.form-group > .controls > input.form-control[readonly]) > .btn.btn-default:hover,
body.v2 #content main .jumbotron:has(.form-group > .controls > input.form-control[readonly]) > .btn.btn-default:focus,
body.v2 #content main .jumbotron:has(.form-group > .controls > input.form-control[readonly]) > .btn.btn-default:focus-visible {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2 #content main .jumbotron:has(.form-group > .controls > input.form-control[readonly]) > .btn.btn-default:hover .fa,
body.v2 #content main .jumbotron:has(.form-group > .controls > input.form-control[readonly]) > .btn.btn-default:focus .fa {
    color: inherit !important;
}

body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]) .control-label {
    margin: 0;
    padding: 0;
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.4;
    color: rgba(255, 255, 255, 0.6);
    text-align: left;
}

body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]) .controls {
    margin: 0;
}

body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]) input.form-control[readonly] {
    display: block;
    width: 100%;
    min-width: 0 !important;
    min-height: 0 !important;
    height: auto;
    padding: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    background-color: transparent !important;
    color: var(--pv-color-white) !important;
    font-size: 0.9375rem;
    font-weight: 700;
    line-height: 1.4;
    cursor: text;
    user-select: all;
    -webkit-text-fill-color: var(--pv-color-white);
    opacity: 1;
}

body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]) input.form-control[readonly]:focus {
    outline: none;
    box-shadow: none !important;
}

@media (max-width: 575px) {
    body.v2 #content main .jumbotron .form-group:has(> .controls > input.form-control[readonly]) {
        grid-template-columns: 1fr;
        gap: 0.25rem;
    }
}

/* Legacy box layout (falls noch verwendet) */
.wrapper_all {
    padding: 0;
    background: none;
}

.box-grey.headline {
    padding: clamp(1rem, 2vw, 3rem);
}

.box-light, .box-dark, .box-darker, .box-grey, .box-coloured, .box-danger {
    border-radius: var(--pv-border-radius);
    padding: clamp(0.5rem, 1vw, 1.5rem);
    background-color: var(--pv-color-gray);
    color: var(--pv-color-white);
}

.ticket_details .box-light {
    background-color: var(--pv-color-gray);
}

.box-inner {
    padding: clamp(0.5rem, 1vw, 1.5rem);
}

.box-footer {
    margin: 0;
    padding: clamp(0.5rem, 1vw, 1.5rem);
    background-color: transparent;
}

#warning_open_cases {
    margin-top: 30px;
}

.box-inner h3 {
    font-size: clamp(1.25rem, 2vw, 2rem);
    line-height: 1.2;
    text-transform: uppercase;
    font-weight: 900;
}

.box-grey:has(+ .box-light) {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.box-grey + .box-light {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

.box-inner .quick_form form {
    margin: 0;
}

.data-wrapper .btn.link2details {
    width: auto;
}


/* Form */
.form-control {
    display: block;
    width: 100%;
    height: unset;
    padding: 0.5rem 1rem;
    font-size: 1rem;
    line-height: 1.65rem;
    color: black;
    background-color: #fff;
    background-image: none;
    border: 1px solid #ccc;
    border-radius: 9999px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.form-control:focus {
    border-color: var(--pv-color-green);
    box-shadow: 0 0 0 1px var(--pv-color-green);
}

select.form-control {
    /* Custom Select Arrow */
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="black"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 20px;
    cursor: pointer;
    padding-right: 2rem;
}

/* ==========================================================================
   Footer
   ========================================================================== */

body.v2 footer {
    color: rgba(255, 255, 255, 0.6);
    padding: 1.5rem 0 6rem;
    line-height: 1.35;
}

body.v2 footer a {
    color: rgba(255, 255, 255, 0.6);
}

body.v2 footer a:hover {
    color: var(--pv-color-green);
}

body.v2 footer .logowrapper {
    margin-bottom: 0.5rem;
}

body.v2 footer .footer-system-logo {
    display: block;
    margin: 0 auto;
}

body.v2.nocover footer .list-inline:has(> .nocover_link) {
    display: none;
}

body.v2 footer #modal_revocation:empty {
    display: none;
}

body.v2 footer .list-inline {
    margin: 0.375rem 0 0;
}

body.v2 footer #modal_revocation + ul.list-inline {
    margin-top: 0.875rem;
}

body.v2 footer .list-inline > li {
    padding: 0 0.75rem;
    line-height: 1.35;
}

@media (max-width: 767px) {
    body.v2 footer {
        padding-top: 1.75rem;
        line-height: 1.45;
    }

    body.v2 footer .logowrapper {
        margin-bottom: 0.75rem;
    }

    body.v2 footer .list-inline {
        margin-top: 0.625rem;
    }

    body.v2 footer #modal_revocation + ul.list-inline {
        margin-top: 1.125rem;
    }

    body.v2 footer .list-inline > li {
        padding: 0.2rem 0.5rem;
        line-height: 1.45;
    }
}

body.v2 footer .btn.btn-default[onclick*="start_revoc"] {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    width: auto !important;
    padding: 0.4rem 0.875rem;
    font-size: 0.75rem;
    line-height: 1;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--pv-color-black) !important;
    text-decoration: none !important;
    background-color: var(--pv-color-green) !important;
    border: 2px solid var(--pv-color-green) !important;
    border-radius: 9999px;
    cursor: pointer;
    transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
                border-color 150ms cubic-bezier(0.4, 0, 0.2, 1),
                color 150ms cubic-bezier(0.4, 0, 0.2, 1);
}

body.v2 footer .btn.btn-default[onclick*="start_revoc"]:hover,
body.v2 footer .btn.btn-default[onclick*="start_revoc"]:focus {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    text-decoration: none !important;
}

@media (min-width: 1024px) {
    body.v2 footer .btn.btn-default[onclick*="start_revoc"] {
        padding: 0.5rem 1rem;
        font-size: 0.875rem;
    }
}

/* ==========================================================================
   MyTicket Portal
   ========================================================================== */

body.v2:has(.navbar.navbar-default) {
    padding-left: 0 !important;
    padding-bottom: 0;
}

body.v2:has(.navbar.navbar-default) .cover .cover-bg {
    left: 0 !important;
    width: 100% !important;
}

@media (min-width: 1024px) {
    body.v2:has(.navbar.navbar-default) .cover.show_own_header .wrapper-right {
        left: 0 !important;
    }
}

/* Portal navigation – unified bar with equal tabs */
body.v2 .navbar.navbar-default {
    position: sticky;
    top: calc(var(--pv-header-height) + var(--pv-safe-area-top));
    left: 0;
    right: 0;
    bottom: auto;
    width: 100%;
    height: auto;
    padding: 0 0 1.5rem;
    margin: 0;
    background: transparent;
    border: none;
    box-shadow: none;
    z-index: 99;
}

@media (min-width: 768px) {
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default {
        --pv-portal-nav-gap: 1.25rem;
        margin-top: var(--pv-portal-nav-gap);
        top: calc(var(--pv-header-height) + var(--pv-safe-area-top) + var(--pv-portal-nav-gap));
    }
}

body.v2 .navbar.navbar-default .navbar-header {
    display: none;
}

body.v2 .navbar.navbar-default .navbar-collapse {
    padding: 0;
    margin: 0;
    border: none;
    box-shadow: none;
}

@media (min-width: 768px) {
    body.v2 .navbar.navbar-default .navbar-collapse {
        display: block !important;
        height: auto !important;
        overflow: visible;
    }
}

body.v2 .navbar.navbar-default > .container {
    width: 100%;
    max-width: 100%;
    padding: 0 var(--pv-content-padding-x);
}

/* Invoice modal lives inside .navbar-nav – hide from tab layout when closed */
body.v2 .navbar.navbar-default .navbar-nav > .modal:not(.in):not(.show),
body.v2 .navbar.navbar-default .navbar-nav > div.modal:not(.in):not(.show) {
    display: none !important;
}

body.v2.modal-open .navbar.navbar-default,
body.v2.modal-open .navbar.navbar-default .navbar-nav,
body.v2.modal-open .navbar.navbar-default .navbar-collapse {
    overflow: visible !important;
}

body.v2.modal-open .navbar.navbar-default .navbar-nav > .modal.in,
body.v2.modal-open .navbar.navbar-default .navbar-nav > .modal.show,
body.v2.modal-open .navbar.navbar-default .navbar-nav > div.modal.in,
body.v2.modal-open .navbar.navbar-default .navbar-nav > div.modal.show,
body.v2.modal-open #modal_invoice.modal {
    display: block !important;
}

body.v2 .navbar.navbar-default .navbar-nav {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0;
    float: none;
    margin: 0;
    padding: 0;
    width: 100%;
    background-color: var(--pv-color-gray);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 9999px;
    box-shadow: var(--pv-box-shadow);
    overflow: hidden;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li {
    flex: 1 1 0;
    min-width: 0;
    float: none;
    border: none;
    margin: 0;
    padding: 0;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li > a {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    width: 100%;
    min-height: 3.25rem;
    padding: 0.875rem 1rem;
    margin: 0;
    border-radius: 0;
    border: none !important;
    background-color: transparent !important;
    color: var(--pv-color-white) !important;
    font-size: 0.8125rem;
    font-weight: 900;
    line-height: 1.15;
    text-align: center;
    text-transform: uppercase;
    white-space: normal;
    transition: background-color 150ms ease, color 150ms ease;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li:first-child > a {
    border-top-left-radius: 9999px;
    border-bottom-left-radius: 9999px;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li:last-child > a {
    border-top-right-radius: 9999px;
    border-bottom-right-radius: 9999px;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li > a i.fa {
    font-size: 1.25rem;
    flex-shrink: 0;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li.active > a,
body.v2 .navbar.navbar-default .navbar-nav > .active > a,
body.v2 .navbar.navbar-default .navbar-nav > li.active > a:hover,
body.v2 .navbar.navbar-default .navbar-nav > li.active > a:focus,
body.v2 .navbar.navbar-default .navbar-nav > .active > a:hover,
body.v2 .navbar.navbar-default .navbar-nav > .active > a:focus {
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2 .navbar.navbar-default .nav.navbar-nav > li:not(.active) > a:hover,
body.v2 .navbar.navbar-default .nav.navbar-nav > li:not(.active) > a:focus {
    background-color: rgba(255, 255, 255, 0.12) !important;
    color: var(--pv-color-white) !important;
}

/* Bootstrap focus ring entfernen (sichtbarer Rahmen bei Klicks) */
body.v2 .navbar.navbar-default .navbar-nav > li > a:focus,
body.v2 .navbar.navbar-default .navbar-nav > li > a:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}

@media (min-width: 768px) {
    body.v2 .navbar.navbar-default .nav.navbar-nav > li > a {
        min-height: 4rem;
        padding: 1rem 1.25rem;
        font-size: 1rem;
        gap: 0.75rem;
    }

    body.v2 .navbar.navbar-default .nav.navbar-nav > li > a i.fa {
        font-size: 1.5rem;
    }
}

@media (min-width: 1024px) {
    body.v2 .navbar.navbar-default .nav.navbar-nav > li > a {
        min-height: 4.25rem;
        padding: 1.125rem 1.5rem;
        font-size: 1.0625rem;
    }
}

@media (max-width: 767px) {
    /* Option A: fixed bottom tab bar (portal only) */
    body.v2:has(.navbar.navbar-default) {
        --pv-portal-bottom-nav-height: calc(4.25rem + var(--pv-safe-area-bottom));
        padding-bottom: var(--pv-portal-bottom-nav-height);
    }

    body.v2:has(.navbar.navbar-default) .cover.show_own_header .wrapper-right .wrapper-right-info .btn-group.btn-group-sm {
        display: none !important;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default {
        position: fixed;
        top: auto;
        bottom: 0;
        left: 0;
        right: 0;
        padding: 0;
        margin: 0;
        z-index: 110;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default > .container {
        display: block;
        padding: 0;
        max-width: 100%;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-header {
        display: none !important;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-collapse,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-collapse.collapse:not(.in),
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-collapse.collapse.in {
        display: block !important;
        height: auto !important;
        overflow: visible;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-nav {
        flex-direction: row;
        align-items: stretch;
        width: 100%;
        max-width: 100%;
        margin: 0;
        padding: 0 0 var(--pv-safe-area-bottom);
        border: none;
        border-top: 1px solid rgba(255, 255, 255, 0.12);
        border-radius: 0;
        box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.45);
        overflow: hidden;
        min-height: 4.25rem;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li {
        flex: 1 1 0;
        min-width: 0;
        max-width: none;
        width: auto;
        margin: 0;
        border: none;
        border-right: 1px solid rgba(255, 255, 255, 0.08);
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li:last-child {
        border-right: none;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li > a {
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 0.3125rem;
        min-height: 4.25rem;
        height: 100%;
        padding: 0.5rem 0.25rem;
        font-size: clamp(0.5rem, 2.4vw, 0.625rem);
        font-weight: 800;
        line-height: 1.1;
        text-align: center;
        text-transform: uppercase;
        white-space: normal;
        hyphens: auto;
        overflow-wrap: anywhere;
        word-break: break-word;
        border-radius: 0 !important;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li:first-child > a,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li:last-child > a {
        border-radius: 0 !important;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li > a i.fa {
        width: auto;
        font-size: 1.25rem;
        line-height: 1;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li.active > a,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-nav > .active > a,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li.active > a:hover,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li.active > a:focus,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-nav > .active > a:hover,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-nav > .active > a:focus {
        background-color: var(--pv-color-green) !important;
        color: var(--pv-color-black) !important;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li.active > a i.fa,
    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .navbar-nav > .active > a i.fa {
        color: var(--pv-color-black) !important;
    }

    body.v2:has(.navbar.navbar-default) .navbar.navbar-default .nav.navbar-nav > li:not(.active) > a:active {
        background-color: rgba(255, 255, 255, 0.08) !important;
    }

    body.v2:has(.navbar.navbar-default) footer {
        padding-bottom: calc(1.5rem + var(--pv-portal-bottom-nav-height));
    }
}

/* Portal case-type banner (Umpersonalisierung, Rückgabe …) – redundant with the
   form card heading, hidden to avoid the duplicate label */
body.v2:has(.navbar.navbar-default) .navbar.navbar-default.navbar-casetype {
    display: none !important;
}

/* Portal content */
body.v2:has(.navbar.navbar-default) #content {
    margin-top: 0;
}

body.v2:has(.navbar.navbar-default) #content > .container {
    width: 100%;
    max-width: 100%;
}

@media (max-width: 767px) {
    /* Bootstrap .row (-15px margins) extends past .container padding → horizontal scroll */
    body.v2:has(.navbar.navbar-default) {
        overflow-x: clip;
    }

    body.v2:has(.navbar.navbar-default) #content > .container {
        padding-left: 0.75rem;
        padding-right: 0.75rem;
    }

    body.v2:has(.navbar.navbar-default) #content .wrapper_all > .row {
        margin-left: 0;
        margin-right: 0;
    }

    body.v2:has(.navbar.navbar-default) #content .wrapper_all > .row > [class*="col-"] {
        padding-left: 0;
        padding-right: 0;
        min-width: 0;
        max-width: 100%;
    }

    /* Section rows inside full-width cols (ticket_details, …) */
    body.v2:has(.navbar.navbar-default) #content .wrapper_all > .row [class*="col-"] > .row {
        margin-left: 0;
        margin-right: 0;
    }

    body.v2:has(.navbar.navbar-default) #content .wrapper_all > .row [class*="col-"] > .row > [class*="col-"] {
        padding-left: 0;
        padding-right: 0;
        min-width: 0;
        max-width: 100%;
    }

    body.v2:has(.navbar.navbar-default) #content .box-grey.headline .line,
    body.v2:has(.navbar.navbar-default) #content .box-grey.headline .line strong {
        overflow-wrap: anywhere;
        word-break: break-word;
    }
}

body.v2:has(.navbar.navbar-default) #content .wrapper_all .box-light,
body.v2:has(.navbar.navbar-default) #content .wrapper_all .box-grey,
body.v2:has(.navbar.navbar-default) #content .wrapper_all .box-grey.headline {
    background-color: var(--pv-color-gray) !important;
    color: var(--pv-color-white) !important;
    border: none !important;
    box-shadow: var(--pv-box-shadow) !important;
    margin-bottom: clamp(1.25rem, 2vw, 2rem);
    padding: 0 !important;
    overflow: hidden;
}

body.v2:has(.navbar.navbar-default) #content .box-inner,
body.v2:has(.navbar.navbar-default) #content .box-inner.box-inner-nopadding {
    background-color: transparent !important;
    color: var(--pv-color-white) !important;
    padding: clamp(1rem, 2vw, 1.5rem);
}

body.v2:has(.navbar.navbar-default) #content .box-inner h3 {
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
    margin-top: 0;
    padding-bottom: 0.75rem;
    margin-bottom: 1rem;
    color: var(--pv-color-green) !important;
}

/* Sidebar column heading (e.g. "Umpersonalisierung") lives in a narrow col-md-4.
   The default clamp scales up to 2rem, which pushes the long single word + icon
   onto a second line on desktop. Cap the size so it stays on one line
   (mobile is full-width and therefore unaffected). */
body.v2:has(.navbar.navbar-default) #content .col-md-4 .box-inner h3 {
    font-size: clamp(1rem, 1.3vw, 1.2rem);
}

body.v2:has(.navbar.navbar-default) #content .box-footer {
    background-color: transparent !important;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    padding: clamp(1rem, 2vw, 1.5rem);
}

/* MyTicket Portal: Inhalte in .box-dark (Formulare, Bezahl-Link, …) */
body.v2:has(.navbar.navbar-default) #content .box-dark label,
body.v2:has(.navbar.navbar-default) #content .box-dark .control-label {
    display: block;
    margin-bottom: 0.5rem;
    color: rgba(255, 255, 255, 0.75);
    font-size: 0.8125rem;
    font-weight: 700;
    line-height: 1.25;
    text-transform: uppercase;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-group {
    margin-bottom: 1.25rem;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-inner p,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-inner li {
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.5;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .alert {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.875rem 1rem;
    margin-bottom: 1rem;
    font-weight: 400;
    line-height: 1.45;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .alert p,
body.v2:has(.navbar.navbar-default) #content .box-dark .alert strong,
body.v2:has(.navbar.navbar-default) #content .box-dark .alert i.fa {
    margin: 0;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .alert-info {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .alert-success {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .alert-danger {
    color: var(--pv-color-white) !important;
    background-color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .alert-warning {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-yellow) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-inner ul {
    margin: 0.75rem 0;
    padding-left: 1.25rem;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-control {
    min-height: 3rem;
    padding: 0.5rem 1rem;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    background-image: none;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}

/* Bezahl-Link (readonly URL zum Kopieren) */
body.v2:has(.navbar.navbar-default) #content .box-dark .box-inner p > input.form-control[type="text"] {
    font-size: clamp(0.875rem, 2.5vw, 1rem);
    line-height: 1.35;
    cursor: text;
    user-select: all;
    text-overflow: ellipsis;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-inner p b {
    color: var(--pv-color-white);
    font-weight: 700;
}

body.v2:has(.navbar.navbar-default) #content .box-dark textarea.form-control {
    min-height: 6rem;
    border-radius: var(--pv-border-radius);
    resize: vertical;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-control::placeholder {
    color: rgba(255, 255, 255, 0.75);
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-control:focus {
    border-color: var(--pv-color-green) !important;
    box-shadow: 0 0 0 1px var(--pv-color-green) !important;
    outline: none;
    background-color: transparent !important;
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark select.form-control {
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="white"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 20px;
    padding-right: 2rem;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .has-error .form-control,
body.v2:has(.navbar.navbar-default) #content .box-dark .form-group.has-error .form-control {
    border-color: var(--pv-color-red) !important;
    box-shadow: 0 0 0 1px var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-group input[type="file"] {
    display: block;
    width: 100%;
    min-height: 3rem;
    padding: 0.5rem 1rem;
    color: rgba(255, 255, 255, 0.85) !important;
    background-color: transparent !important;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px;
    box-shadow: none !important;
    font-size: 0.8125rem;
    font-weight: 400;
    text-transform: none;
    line-height: 1.65;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-group input[type="file"]::file-selector-button {
    margin-right: 0.75rem;
    padding: 0.375rem 0.875rem;
    border: 1px solid var(--pv-color-white);
    border-radius: 9999px;
    background-color: var(--pv-color-white);
    color: var(--pv-color-black);
    font-size: 0.75rem;
    font-weight: 800;
    text-transform: uppercase;
    cursor: pointer;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-group input[type="file"]::file-selector-button:hover {
    background-color: var(--pv-color-green);
    border-color: var(--pv-color-green);
    color: var(--pv-color-black);
}

body.v2:has(.navbar.navbar-default) #content .box-dark .form-group input[type="file"]::-webkit-file-upload-button {
    margin-right: 0.75rem;
    padding: 0.375rem 0.875rem;
    border: 1px solid var(--pv-color-white);
    border-radius: 9999px;
    background-color: var(--pv-color-white);
    color: var(--pv-color-black);
    font-size: 0.75rem;
    font-weight: 800;
    text-transform: uppercase;
    cursor: pointer;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 0.75rem;
    margin: 0;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn, button.btn) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    flex: 1 1 0;
    min-width: 0;
    min-height: 2.75rem;
    padding: 0.75rem 0.625rem;
    border-radius: 9999px;
    font-size: clamp(0.5625rem, 2.2vw, 0.8125rem);
    font-weight: 800;
    line-height: 1;
    text-align: center;
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

@media (min-width: 768px) {
    body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn,
    body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn, button.btn) {
        gap: 0.5rem;
        padding: 0.75rem 1rem;
        font-size: 0.8125rem;
    }
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default {
    border: 1px solid var(--pv-color-white) !important;
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:focus-visible,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:focus-visible {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-default:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > a.btn.btn-default:focus i.fa {
    color: var(--pv-color-black) !important;
}

/* Primary actions in box-footer – green (Abbrechen bleibt rot) */
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']),
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']) {
    border: 1px solid var(--pv-color-green) !important;
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']) .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']) i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']) .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']) i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):hover,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):focus,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):focus-visible,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):hover,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):focus,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    filter: none !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger:not([value='cancel']):focus i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger, button.btn.btn-danger):not([value='cancel']):focus i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel'],
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']) {
    border: 1px solid var(--pv-color-red) !important;
    background-color: var(--pv-color-red) !important;
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel'] .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel'] i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']) .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']) i.fa {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:hover,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:focus,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:focus-visible,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):hover,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):focus,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    filter: none !important;
}

body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn.btn-danger[value='cancel']:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn.btn-danger[value='cancel'], button.btn.btn-danger[value='cancel']):focus i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-grey.headline .line,
body.v2:has(.navbar.navbar-default) #content .box-grey.headline .line strong {
    color: var(--pv-color-white);
}

body.v2:has(.navbar.navbar-default) #content .box-grey.headline > .line {
    padding: clamp(1rem, 2vw, 1.5rem);
}

body.v2:has(.navbar.navbar-default) #content .box-grey.headline #warning_open_cases {
    margin-top: 1rem;
}

body.v2:has(.navbar.navbar-default) #content .box-grey.headline .line.text-danger,
body.v2:has(.navbar.navbar-default) #content .box-grey.headline .line.text-danger strong {
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-inner .well.well-sm.groupby {
    margin: 0;
    padding: 0.875rem 1rem;
    font-weight: 800;
    text-transform: uppercase;
}

/* Portal: "Daten Personalisierung" Karte (Well) nicht hell anzeigen */
body.v2:has(.navbar.navbar-default) #content .box-inner .well.well-sm.secwrap {
    background-color: rgba(0, 0, 0, 0.22) !important;
    border: none !important;
    box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content .group-inner {
    margin-top: 0.75rem;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .data {
    background-color: rgba(0, 0, 0, 0.22) !important;
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
    border-radius: var(--pv-border-radius);
    box-shadow: none !important;
    padding: clamp(1rem, 2vw, 1.25rem);
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .data > .row.mb-10,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .data > .row.first_row {
    margin-bottom: 1rem;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .warning_box {
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0;
    margin: 0 0 0.75rem;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .warning_box .line,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .warning_box .line.line-label,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .warning_box.text-danger .line-label {
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.line-label {
    color: var(--pv-color-white);
    margin-bottom: 0.375rem;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.line-label > i.fa {
    color: var(--pv-color-green);
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.opencase,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.opencase[style] {
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.text-right {
    margin-top: 0.75rem;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    min-height: 2.75rem;
    padding: 0.75rem 1rem;
    border-radius: 9999px;
    font-size: 0.8125rem;
    font-weight: 800;
    line-height: 1.2;
    text-align: center;
    text-decoration: none !important;
    text-transform: uppercase;
    white-space: normal;
}

@media (min-width: 768px) {
    body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.text-right .link2details.w-75,
    body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.text-right .btn.link2details.w-75 {
        width: 75% !important;
        margin-left: auto;
    }
}

body.v2:has(.navbar.navbar-default) #content .well.groupby {
    background-color: rgba(255, 255, 255, 0.08) !important;
    border: none !important;
    box-shadow: none !important;
    color: var(--pv-color-white) !important;
    border-radius: var(--pv-border-radius);
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .line,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .line.line-label {
    color: var(--pv-color-white);
}

body.v2:has(.navbar.navbar-default) #content .text-black {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .text-danger,
body.v2:has(.navbar.navbar-default) #content .warning_box.text-danger,
body.v2:has(.navbar.navbar-default) #content .line.opencase {
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default {
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
    background: transparent !important;
    color: var(--pv-color-white) !important;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:focus-visible,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger {
    background-color: var(--pv-color-red) !important;
    border-color: var(--pv-color-red) !important;
    color: var(--pv-color-white) !important;
    cursor: pointer;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:focus-visible,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:hover,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:focus,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:focus-visible,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:hover,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:focus,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .btn-brand,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content .btn-brand:hover,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand:hover,
body.v2:has(.navbar.navbar-default) #content .btn-brand:focus,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand:focus,
body.v2:has(.navbar.navbar-default) #content .btn-brand:focus-visible,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

/* Umpersonalisieren – modal trigger, destructive action */
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"],
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"] {
    background-color: var(--pv-color-red) !important;
    border-color: var(--pv-color-red) !important;
    color: var(--pv-color-white) !important;
    cursor: pointer;
}

body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:hover,
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:focus,
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:focus-visible,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"]:hover,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"]:focus,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"]:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .secwrap .section-wrapper {
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    padding: 0.75rem 0;
}

body.v2:has(.navbar.navbar-default) #content .section-left {
    color: rgba(255, 255, 255, 0.6);
}

body.v2:has(.navbar.navbar-default) #content .section-right {
    color: var(--pv-color-white);
    font-weight: 700;
}

body.v2:has(.navbar.navbar-default) #content .box-grey:has(+ .box-light) {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    margin-bottom: 0 !important;
    box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content .box-grey + .box-light {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    margin-top: 0;
    box-shadow: none !important;
}

/* Stacked headline + ticket box – box-shadow only (filter breaks fixed modals in .quick_form) */
body.v2:has(.navbar.navbar-default) #content .col-md-8:has(> .box-grey.headline + .box-light) > .box-grey.headline,
body.v2:has(.navbar.navbar-default) #content .col-md-8:has(> .box-grey.headline + .box-light) > .box-light {
    box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content .col-md-8:has(> .box-grey.headline + .box-light) > .box-light {
    box-shadow: 0 12px 24px -6px rgba(0, 0, 0, 0.5) !important;
}

body.v2.modal-open:has(.navbar.navbar-default) #content .box-light:has(.modal.in),
body.v2.modal-open:has(.navbar.navbar-default) #content .box-light:has(.modal.show),
body.v2.modal-open:has(.navbar.navbar-default) #content .wrapper_all .box-light:has(.modal.in),
body.v2.modal-open:has(.navbar.navbar-default) #content .wrapper_all .box-light:has(.modal.show) {
    overflow: visible !important;
}

/* Portal icon colors – Font Awesome glyphs on production */
body.v2:has(.navbar.navbar-default) .data-wrapper .line.line-label:not(.text-danger) > i.fa {
    color: var(--pv-color-green);
}

body.v2:has(.navbar.navbar-default) .warning_box i.fa,
body.v2:has(.navbar.navbar-default) .line.text-danger > i.fa,
body.v2:has(.navbar.navbar-default) .line.opencase > i.fa {
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) .btn .fa,
body.v2:has(.navbar.navbar-default) .btn i.fa {
    color: inherit !important;
    transition: color 150ms ease;
}

/* Ticket actions */
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default i.fa {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:focus-visible .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-default:focus-visible i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper a.btn.link2details.btn-default:focus i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger i.fa {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:hover .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:focus .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:focus-visible .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-danger:focus-visible i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:hover .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:focus .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper div.btn.link2details.btn-danger:focus i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:hover .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:focus .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.link2details.btn-success:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:hover .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:focus .fa,
body.v2:has(.navbar.navbar-default) #content .data-wrapper .btn.btn-success:focus i.fa {
    color: var(--pv-color-black) !important;
}

/* Sidebar / footer actions */
body.v2:has(.navbar.navbar-default) #content .btn-brand .fa,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand .fa,
body.v2:has(.navbar.navbar-default) #content .btn-brand i.fa,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .btn-brand:hover .fa,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand:hover .fa,
body.v2:has(.navbar.navbar-default) #content .btn-brand:focus .fa,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand:focus .fa,
body.v2:has(.navbar.navbar-default) #content .btn-brand:focus-visible .fa,
body.v2:has(.navbar.navbar-default) #content .btn.btn-brand:focus-visible .fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"] .fa,
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"] i.fa,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"] .fa,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"] i.fa {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:hover .fa,
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:hover i.fa,
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:focus .fa,
body.v2:has(.navbar.navbar-default) #content a.btn.btn-brand.link2details[data-target^="#repersonalization_data_"]:focus i.fa,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"]:hover .fa,
body.v2:has(.navbar.navbar-default) #content a.button.btn-brand.link2details[data-target^="#repersonalization_data_"]:hover i.fa {
    color: var(--pv-color-black) !important;
}

/* Nav tabs */
body.v2:has(.navbar.navbar-default) .navbar-nav > li:not(.active) > a .fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li:not(.active) > a i.fa {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) .navbar-nav > li:not(.active) > a:hover .fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li:not(.active) > a:focus .fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li:not(.active) > a:hover i.fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li:not(.active) > a:focus i.fa {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) .navbar-nav > li.active > a .fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li.active > a i.fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li.active > a:hover .fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li.active > a:focus .fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li.active > a:hover i.fa,
body.v2:has(.navbar.navbar-default) .navbar-nav > li.active > a:focus i.fa {
    color: var(--pv-color-black) !important;
}

/* Portal personalization form (AJAX .quick_form) – no extra box, stays in ticket card */
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) {
    margin-top: 1rem;
    padding: 0;
    background: transparent !important;
    border: none !important;
    border-radius: 0;
    box-shadow: none !important;
    color: var(--pv-color-white);
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) form,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .data,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .well,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .panel,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .panel-body,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) fieldset,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) > .row,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"] {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) form {
    margin: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert {
    padding: 0.875rem 1rem;
    margin-bottom: 1rem;
    font-weight: 400;
    line-height: 1.45;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert:last-of-type {
    margin-bottom: 1.25rem;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert p {
    margin: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert p + p {
    margin-top: 0.5rem;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert-danger {
    color: var(--pv-color-white) !important;
    background-color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert-info {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert-success {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .alert-warning {
    color: var(--pv-color-black) !important;
    background-color: var(--pv-color-yellow) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) label,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .control-label {
    display: block;
    margin-bottom: 0.5rem;
    color: rgba(255, 255, 255, 0.75);
    font-size: 0.8125rem;
    font-weight: 700;
    line-height: 1.25;
    text-transform: uppercase;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .form-group {
    margin-bottom: 1.25rem;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row {
    margin-left: -0.5rem;
    margin-right: -0.5rem;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"] {
    padding-left: 0.5rem;
    padding-right: 0.5rem;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .form-control {
    min-height: 3rem;
    padding: 0.5rem 1rem;
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    background-image: none;
    border: 1px solid rgba(255, 255, 255, 0.85) !important;
    border-radius: 9999px;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .form-control::placeholder {
    color: rgba(255, 255, 255, 0.75);
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .form-control:focus {
    border-color: var(--pv-color-green) !important;
    box-shadow: 0 0 0 1px var(--pv-color-green) !important;
    outline: none;
    background-color: transparent !important;
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) select.form-control {
    color: var(--pv-color-white) !important;
    background-color: transparent !important;
    background-image: url('data:image/svg+xml;utf8,<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M6 9L12 15L18 9" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" stroke="white"/></svg>');
    background-repeat: no-repeat;
    background-position: right 10px center;
    background-size: 20px;
    padding-right: 2rem;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .has-error .form-control,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .form-group.has-error .form-control {
    border-color: var(--pv-color-red) !important;
    box-shadow: 0 0 0 1px var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .help-block,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .form-error {
    margin-top: 0.375rem;
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .iti {
    width: 100%;
}

/* Personalization form – action buttons */
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn-box {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1rem;
    row-gap: 0.75rem;
    align-items: stretch;
    margin-top: 0.25rem;
    margin-bottom: 0;
    width: 100%;
    box-sizing: border-box;
    text-align: left;
}

/* Production markup: .row > .col-md-4 > button (two separate cols) */
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > button.btn) {
    display: flex;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 0;
    margin-top: 0.25rem;
    margin-bottom: 0;
    margin-left: -0.5rem;
    margin-right: -0.5rem;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > button.btn) > input[type="hidden"] {
    display: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > button.btn) > [class*="col-"] {
    flex: 0 0 50%;
    width: 50%;
    max-width: 50%;
    min-width: 0;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    float: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(.btn-box) {
    margin-left: 0;
    margin-right: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"]:has(.btn-box) {
    padding-left: 0;
    padding-right: 0;
}

/* Fallback: both buttons direct in one col (no wrapper) */
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"]:has(> :is(a.btn, button.btn, input.btn) + :is(a.btn, button.btn, input.btn)) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 1rem;
    row-gap: 0.75rem;
    padding-left: 0;
    padding-right: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > :is(a.btn, button.btn, input.btn) + :is(a.btn, button.btn, input.btn)) {
    margin-left: 0;
    margin-right: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn-box > :is(a.btn, button.btn, input.btn),
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"] > :is(a.btn, button.btn, input.btn) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    width: 100%;
    max-width: none;
    min-width: 0;
    min-height: 2.75rem;
    margin: 0 !important;
    padding: 0.75rem 0.625rem;
    border-radius: 9999px;
    font-size: clamp(0.5625rem, 2.2vw, 0.8125rem);
    font-weight: 800;
    line-height: 1.15;
    text-align: center;
    text-transform: uppercase;
    white-space: normal;
    overflow: visible;
    text-overflow: unset;
    overflow-wrap: anywhere;
    box-sizing: border-box;
}

@media (min-width: 768px) {
    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn-box > :is(a.btn, button.btn, input.btn),
    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"] > :is(a.btn, button.btn, input.btn) {
        gap: 0.5rem;
        padding: 0.75rem 1rem;
        font-size: 0.8125rem;
    }
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) input.btn-default {
    border: 1px solid var(--pv-color-white) !important;
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:focus-visible,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:focus-visible {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-default:focus i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-default:focus i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) input.btn-danger,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) input.btn-success {
    border: 1px solid var(--pv-color-red) !important;
    background-color: var(--pv-color-red) !important;
    color: var(--pv-color-white) !important;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

/* MyTicket Portal: "Umpersonalisieren" statt rot -> grün */
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) input.btn-danger {
    border: 1px solid var(--pv-color-green) !important;
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success i.fa {
    color: var(--pv-color-white) !important;
}

/* MyTicket Portal: Icon-Farbe passend zu grün */
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger i.fa {
    color: var(--pv-color-black) !important;
}

/* MyTicket Portal (Umpersonalisierung starten): immer grün */
body.v2:has(.navbar.navbar-default) #content #process_personalize.btn.btn-danger {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content #process_personalize.btn.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content #process_personalize.btn.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content #process_personalize.btn.btn-danger:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    filter: none !important;
}

body.v2:has(.navbar.navbar-default) #content #process_personalize.btn.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content #process_personalize.btn.btn-danger i.fa {
    color: var(--pv-color-black) !important;
}

/* MyTicket Portal: Buttons in der box-footer sollen einen echten Hover haben */
body.v2:has(.navbar.navbar-default) #content .box-footer .btn {
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:hover,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:focus,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:focus-visible {
    background-color: var(--pv-color-green) !important;
    border-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:focus-visible .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-default:focus-visible i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    filter: none !important;
}

body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:hover .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:focus .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:focus-visible .fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:hover i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:focus i.fa,
body.v2:has(.navbar.navbar-default) #content .box-footer .btn.btn-danger:focus-visible i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:focus-visible,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:hover,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:focus,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:focus-visible,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger:focus-visible,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success:hover,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success:focus,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:hover i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:focus .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-danger:focus i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:hover i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:focus .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn.btn-success:focus i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-danger:hover i.fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) button.btn-success:hover i.fa {
    color: var(--pv-color-black) !important;
}

/* Portal ticket detail page (single ticket view) */
body.v2:has(.navbar.navbar-default) #content :is(.col-md-8, .wrapper_all) > .box-grey.text-center {
    padding: clamp(1rem, 2vw, 1.25rem) !important;
    box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(.col-md-8, .wrapper_all) > .box-grey.text-center h3 {
    margin: 0 0 0.375rem;
    padding: 0;
    border: none;
    color: var(--pv-color-white) !important;
    font-size: clamp(1rem, 2vw, 1.25rem);
    font-weight: 900;
    line-height: 1.25;
    text-transform: none;
}

body.v2:has(.navbar.navbar-default) #content :is(.col-md-8, .wrapper_all) > .box-grey.text-center h3 i.fa {
    color: var(--pv-color-green);
}

body.v2:has(.navbar.navbar-default) #content :is(.col-md-8, .wrapper_all) > .box-grey.text-center .line {
    margin: 0;
    color: rgba(255, 255, 255, 0.65);
    font-size: 0.875rem;
    line-height: 1.35;
}

body.v2:has(.navbar.navbar-default) #content :is(.col-md-8, .wrapper_all) > .box-grey.text-center:has(+ .box-light) + .box-light {
    box-shadow: 0 12px 24px -6px rgba(0, 0, 0, 0.45) !important;
}

body.v2:has(.navbar.navbar-default) #content .box-inner.box-inner-nopadding {
    padding: clamp(1.25rem, 2.5vw, 1.75rem);
}

body.v2:has(.navbar.navbar-default) #content .box-inner.box-inner-nopadding h3 {
    margin-bottom: 1.25rem;
    padding-bottom: 0.875rem;
    font-size: clamp(1rem, 2vw, 1.125rem);
    font-weight: 900;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

body.v2:has(.navbar.navbar-default) #content .secwrap .section-wrapper {
    padding: 0.875rem 0;
}

/* Footer action button (Download Ticket …) – TicketPay renders it inside the
   label/value grid with an empty left spacer, which visually indents it.
   Drop the grid so the button aligns flush with the box content. */
body.v2:has(.navbar.navbar-default) #content .box-footer .section-wrapper {
    display: block;
}

body.v2:has(.navbar.navbar-default) #content .box-footer .section-left {
    display: none;
}

body.v2:has(.navbar.navbar-default) #content .box-footer .section-right {
    float: none;
    width: 100%;
    text-align: left;
}

body.v2:has(.navbar.navbar-default) #content .secwrap .section-wrapper .text-success,
body.v2:has(.navbar.navbar-default) #content .section-right .text-success {
    color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content .ticket_details_closed {
    margin-top: clamp(1.25rem, 2vw, 1.75rem);
}

/* Status steps + Ticket-Historie: one outer box with nested step cards */
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-grey.text-center,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-light {
    box-shadow: none !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    background-color: var(--pv-color-gray) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-grey.text-center {
    position: relative;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    padding: clamp(0.875rem, 1.5vw, 1.125rem) clamp(1rem, 2vw, 1.5rem)
        calc(clamp(0.875rem, 1.5vw, 1.125rem) + var(--pv-divider-pattern-size) + 0.625rem) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-grey.text-center::after {
    content: "";
    position: absolute;
    left: clamp(1rem, 2vw, 1.5rem);
    right: clamp(1rem, 2vw, 1.5rem);
    bottom: clamp(0.875rem, 1.5vw, 1.125rem);
    height: var(--pv-divider-pattern-size);
    background-color: var(--pv-color-black);
    border: none;
    pointer-events: none;
    -webkit-mask-image: var(--pv-divider-pattern-url);
    mask-image: var(--pv-divider-pattern-url);
    -webkit-mask-size: var(--pv-divider-pattern-size) 100%;
    mask-size: var(--pv-divider-pattern-size) 100%;
    -webkit-mask-repeat: repeat-x;
    mask-repeat: repeat-x;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-light {
    border-radius: 0;
    padding: 0 !important;
    overflow: visible;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-grey.text-center + .box-light,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-light + .box-light {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-light:last-child {
    border-bottom-left-radius: var(--pv-border-radius);
    border-bottom-right-radius: var(--pv-border-radius);
    box-shadow: 0 12px 24px -6px rgba(0, 0, 0, 0.5) !important;
    margin-bottom: clamp(1.25rem, 2vw, 2rem) !important;
    overflow: hidden;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) > .col-md-12 > .box-light + .box-light .box-inner {
    padding-top: clamp(0.875rem, 1.5vw, 1rem);
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center h2,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center.text-danger h2 {
    margin: 0;
    padding: 0;
    border: none !important;
    color: var(--pv-color-white) !important;
    font-size: clamp(1rem, 2vw, 1.125rem);
    font-weight: 900;
    line-height: 1.25;
    text-transform: uppercase;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center h2 i.fa,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center.text-danger h2 i.fa {
    color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center h2 small,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center.text-danger h2 small,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-grey.text-center.text-danger h2 small.text-danger {
    display: block;
    margin-top: 0.375rem;
    color: rgba(255, 255, 255, 0.55) !important;
    font-size: 0.8125rem;
    font-weight: 400;
    line-height: 1.35;
    text-transform: none;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .text-success,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .fa-check {
    color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-light .box-inner {
    padding: clamp(0.875rem, 1.5vw, 1.125rem) clamp(1rem, 2vw, 1.5rem);
    border-top: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-inner > .row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1rem;
    margin: 0;
    padding: clamp(0.875rem, 1.5vw, 1rem);
    background-color: rgba(0, 0, 0, 0.18);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: var(--pv-border-radius);
    box-shadow: none;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-inner > .row + .row {
    margin-top: clamp(0.875rem, 1.5vw, 1rem);
    padding-top: clamp(0.875rem, 1.5vw, 1rem);
    position: relative;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-inner > .row + .row::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: var(--pv-divider-pattern-size);
    background-color: var(--pv-color-black);
    border: none;
    pointer-events: none;
    -webkit-mask-image: var(--pv-divider-pattern-url);
    mask-image: var(--pv-divider-pattern-url);
    -webkit-mask-size: var(--pv-divider-pattern-size) 100%;
    mask-size: var(--pv-divider-pattern-size) 100%;
    -webkit-mask-repeat: repeat-x;
    mask-repeat: repeat-x;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .box-inner > .row > [class*='col-'] {
    float: none;
    width: auto;
    max-width: none;
    flex: 1 1 auto;
    min-width: 0;
    padding: 0;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details {
    margin-left: auto;
    text-align: right;
    flex: 0 0 auto;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger {
    border: 1px solid var(--pv-color-green) !important;
    background-color: var(--pv-color-green) !important;
    color: var(--pv-color-black) !important;
    font-weight: 900;
    text-transform: uppercase;
    transition: background-color 150ms ease, border-color 150ms ease, color 150ms ease;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger .fa,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger i.fa {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:hover,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:focus,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:focus-visible {
    background-color: var(--pv-color-white) !important;
    border-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
    filter: none !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:hover .fa,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:hover i.fa,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:focus .fa,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details .btn.btn-danger:focus i.fa {
    color: var(--pv-color-black) !important;
}

/* Open cases nest status steps inside the first .box-light (not siblings like history) */
body.v2:has(.navbar.navbar-default) #content .ticket_details:has(> .col-md-12 > .box-grey.text-center) > .col-md-12 > .box-light > .box-light {
    border-radius: 0;
    padding: 0 !important;
    margin: clamp(0.875rem, 1.5vw, 1rem) 0 0 2.5rem !important;
    background-color: transparent !important;
    box-shadow: none !important;
}

body.v2:has(.navbar.navbar-default) #content .ticket_details:has(> .col-md-12 > .box-grey.text-center) > .col-md-12 > .box-light > .box-light .box-inner {
    padding-top: 0;
}

body.v2:has(.navbar.navbar-default) #content h3.without-border {
    margin: 0;
    padding: 0;
    border: none !important;
    color: var(--pv-color-white) !important;
    font-size: clamp(0.9375rem, 1.8vw, 1.0625rem);
    font-weight: 800;
    line-height: 1.25;
    text-transform: none;
}

body.v2:has(.navbar.navbar-default) #content h3.without-border i.fa {
    color: var(--pv-color-green);
}

body.v2:has(.navbar.navbar-default) #content h3.without-border small {
    display: block;
    margin-top: 0.375rem;
    color: rgba(255, 255, 255, 0.5);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    line-height: 1.4;
    text-transform: uppercase;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) h3.without-border,
body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) h3.without-border.text-danger {
    color: var(--pv-color-white) !important;
    text-transform: uppercase !important;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) h3.without-border i.fa {
    color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) #content .badge.badge-success {
    background-color: var(--pv-color-green) !important;
    border: none;
    border-radius: 9999px;
    color: var(--pv-color-black) !important;
    font-size: 0.6875rem;
    font-weight: 800;
    line-height: 1.2;
    padding: 0.375rem 0.75rem;
    text-transform: uppercase;
}

body.v2:has(.navbar.navbar-default) #content :is(
        .ticket_details_closed,
        .ticket_details:has(> .col-md-12 > .box-grey.text-center)
    ) .subcase-details :is(.badge.badge-default, .badge.badge-danger, .label.label-default, .label.label-danger) {
    background-color: var(--pv-color-red) !important;
    border: none;
    border-radius: 9999px;
    color: var(--pv-color-white) !important;
    font-size: 0.6875rem;
    font-weight: 800;
    line-height: 1.2;
    padding: 0.375rem 0.75rem;
    text-transform: uppercase;
}

/* Portal modals – final override after portal dark-theme rules (.section-right, .data-wrapper, …) */
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-content *,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body *,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-content *,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-body,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-body *,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:not(:has(.secwrap)) .modal-content *,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:not(:has(.secwrap)) .modal-body,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:not(:has(.secwrap)) .modal-body *,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-content *,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-body,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-body * {
    color: var(--pv-color-black) !important;
}

/* Daten Personalisierung – standard white modal */
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-content {
    background: #fff !important;
}

body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-header {
    background: rgba(238, 238, 238, 1) !important;
}

body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-body {
    background: #fff !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-body * {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) [id^="personalization_data_"].modal:not(#modal_invoice) .modal-title {
    color: var(--pv-color-black) !important;
}

/* Umpersonalisierung data cards (repersonalization_data_* + .secwrap): dark card */
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-content {
    background: transparent !important;
}

body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-header {
    background: transparent !important;
}

body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-body {
    background: rgba(0, 0, 0, 0.22) !important;
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-body * {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-content .text-system,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-content .text-system,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:not(:has(.secwrap)) .modal-content .text-system,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-content .text-system,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body h1,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body h2,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body h3,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-body h4 {
    color: var(--pv-color-black) !important;
}

/* Umpersonalisierung data cards: headings on dark modal body */
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-body h1,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-body h2,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-body h3,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-body h4 {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap).modal:not(#modal_invoice) .modal-title {
    color: var(--pv-color-white) !important;
}

body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-content .text-success,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-content .text-success,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-content .text-success,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-content .text-success {
    color: var(--pv-color-green) !important;
}

body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-content .text-danger,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-content .text-danger,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:has(.secwrap) .modal-content .text-danger,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-content .text-danger {
    color: var(--pv-color-red) !important;
}

body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-footer .btn-default,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-footer .btn-default,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:not(:has(.secwrap)) .modal-footer .btn-default,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-footer .btn-default,
body.v2:has(.navbar.navbar-default) .modal:not(#modal_invoice) .modal-footer .btn-default .fa,
body.v2:has(.navbar.navbar-default) [id^="personalization_data_"] .modal-footer .btn-default .fa,
body.v2:has(.navbar.navbar-default) [id^="repersonalization_data_"]:not(:has(.secwrap)) .modal-footer .btn-default .fa,
body.v2:has(.navbar.navbar-default) #modal-holder .modal .modal-footer .btn-default .fa {
    color: var(--pv-color-black) !important;
}

/* Portal modals – white chrome for all standard dialogs */
body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-content {
    background: #fff !important;
}

body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-header {
    background: rgba(238, 238, 238, 1) !important;
}

body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-body {
    background: #fff !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-body :is(span, div, em, i, strong, b, font, u, small, td, th, p, li),
body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-body .well :is(span, div, em, i, strong, b, font, u, small, td, th, p, li) {
    color: var(--pv-color-black) !important;
}

body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-footer {
    background: rgba(238, 238, 238, 1) !important;
}

body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-title,
body.v2:has(.navbar.navbar-default) :is(
        .modal:not(#modal_invoice):not([id^="repersonalization_data_"]:has(.secwrap)),
        #modal-holder .modal:not([id^="repersonalization_data_"]:has(.secwrap))
    ) .modal-header .close {
    color: var(--pv-color-black) !important;
}

/* MyTicket Portal: Checkbox-Danger Hintergrund wirklich durchsetzen */
body.v2:has(.navbar.navbar-default) #content #personalize_box.bs-callout-danger {
    background-color: rgba(204, 102, 102, 0.15) !important;
    border-color: var(--pv-color-red) !important;
}

/* TicketPay Widerrufsbelehrung (/revocation) – white document page */
body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) {
    background-color: var(--pv-color-white) !important;
    color: var(--pv-color-black) !important;
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) .cover {
    display: none;
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content {
    background-color: var(--pv-color-white);
    color: var(--pv-color-black);
    margin-top: 0;
    min-height: auto;
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main {
    padding: clamp(1.5rem, 3vw, 2.5rem) clamp(1rem, 2vw, 1.5rem);
    color: var(--pv-color-black);
    line-height: 1.6;
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main a {
    color: var(--pv-color-black);
    text-decoration: underline;
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main a:hover,
body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) #content > .container > main a:focus {
    color: var(--pv-color-green);
    text-decoration: none;
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) footer {
    background-color: var(--pv-color-white);
    color: var(--pv-color-black);
    border-top: 1px solid rgba(0, 0, 0, 0.08);
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) footer a {
    color: rgba(0, 0, 0, 0.65);
}

body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) footer a:hover,
body.v2:has(#content > .container > main:only-child):not(:has(.navbar.navbar-default)) footer a:focus {
    color: var(--pv-color-black);
}

/* ==========================================================================
   Mobile optimizations (≤ 767px)
   ========================================================================== */

@media (max-width: 767px) {
    /* Help modal – keep email field + button in one pill (override TicketPay input-split stack) */
    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) {
        flex-direction: row !important;
        flex-wrap: nowrap !important;
        align-items: stretch;
        border: 1px solid #ccc;
        border-radius: 9999px;
        overflow: hidden;
        background-color: var(--pv-color-white);
        box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
        gap: 0;
    }

    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)):focus-within {
        border-color: var(--pv-color-green);
        box-shadow: 0 0 0 1px var(--pv-color-green);
    }

    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .form-control,
    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn,
    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-addon {
        display: block !important;
        margin-bottom: 0 !important;
        clear: none !important;
        width: auto !important;
    }

    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .form-control {
        flex: 1 1 auto !important;
        width: 1% !important;
        border: none !important;
        border-radius: 0 !important;
        box-shadow: none !important;
        padding: 0.5rem 0.875rem;
        font-size: 1rem;
    }

    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .form-control:focus {
        border: none !important;
        box-shadow: none !important;
    }

    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn {
        display: flex !important;
        flex: 0 0 auto !important;
        width: auto !important;
    }

    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn .btn,
    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn .btn-brand,
    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn .btn-ok,
    body.v2 .modal .modal-body .input-group.input-split:not(:has(#redeem_coupon)) .input-group-btn button {
        width: auto !important;
        min-height: 2.75rem;
        padding: 0.625rem 0.75rem;
        border-radius: 0 !important;
        font-size: 0.6875rem;
        white-space: nowrap;
    }

    body.v2 .modal .modal-body .form-group .btn,
    body.v2 .modal .modal-body form > .btn,
    body.v2 .modal .modal-body .well .btn {
        width: 100%;
        max-width: 100%;
        white-space: normal;
        overflow: visible;
        text-overflow: unset;
    }

    /* Page buttons – slightly smaller so long labels fit */
    body.v2 #content .btn:not(.btn-sm):not(.countDownTimer):not(#stickyfooter .btn) {
        padding: 0.625rem 0.875rem;
        font-size: clamp(0.625rem, 2.5vw, 0.8125rem);
        line-height: 1.15;
    }

    body.v2 #content main .jumbotron > .btn,
    body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 0;
        padding: 0.5625rem 0.5rem;
        font-size: clamp(0.5625rem, 2.35vw, 0.6875rem);
        line-height: 1.1;
        letter-spacing: -0.01em;
        white-space: normal;
        overflow: visible;
        text-overflow: unset;
        hyphens: auto;
        overflow-wrap: anywhere;
    }

    body.v2 #content main .jumbotron:has(> .btn + .btn) > .btn {
        width: calc(50% - 0.375rem);
        max-width: calc(50% - 0.375rem);
    }

    body.v2 #content main .jumbotron:not(:has(> .btn + .btn)) > .btn {
        width: auto;
        max-width: 100%;
    }

    body.v2 #content main .jumbotron.jumbotron-success .btn-box {
        flex-direction: column;
        flex-wrap: nowrap;
        align-items: stretch;
        gap: 0.625rem;
    }

    body.v2 #content main .jumbotron.jumbotron-success .btn-box .btn {
        flex: 0 0 auto;
        width: 100%;
        max-width: 100%;
    }

    body.v2 #content main #abort_button {
        font-size: 0.6875rem;
        padding: 0.5rem 0.875rem;
    }

    /* Portal action rows – stack buttons full width on narrow screens */
    body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box,
    body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) {
        flex-direction: column;
        align-items: stretch;
        gap: 0.75rem;
    }

    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn-box,
    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"]:has(> :is(a.btn, button.btn, input.btn) + :is(a.btn, button.btn, input.btn)) {
        grid-template-columns: 1fr;
        row-gap: 0.75rem;
    }

    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > button.btn) {
        flex-direction: column;
        gap: 0;
        margin-left: -0.5rem;
        margin-right: -0.5rem;
    }

    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > button.btn) > [class*="col-"] {
        flex: 0 0 100%;
        width: 100%;
        max-width: 100%;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
        margin-bottom: 0.75rem;
    }

    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row:has(> [class*="col-"] > button.btn) > [class*="col-"]:last-child {
        margin-bottom: 0;
    }

    body.v2:has(.navbar.navbar-default) #content .box-dark .box-footer .btn-box .btn,
    body.v2:has(.navbar.navbar-default) #content .box-footer:has(> .btn) > :is(a.btn, button.btn),
    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .btn-box > :is(a.btn, button.btn, input.btn),
    body.v2:has(.navbar.navbar-default) #content :is(.quick_form, .validate_me) .row > [class*="col-"] > :is(a.btn, button.btn, input.btn) {
        width: 100%;
        max-width: none;
        padding: 0.625rem 0.5rem;
        font-size: clamp(0.5rem, 2.2vw, 0.6875rem);
        line-height: 1.15;
    }
}