/* ============================================================================
 * GCMS Cookie Manager v2 – neutrales Theme
 * ----------------------------------------------------------------------------
 * Wird zusätzlich (nicht statt) zu default*.css ausgeliefert, sobald für die
 * jeweilige Website `cookie_design_v2 = 1` in der Tabelle `Bereiche` gesetzt
 * ist. Greift nur auf die v2-Klasse `.gcms_cookie_v2` zu, damit das alte
 * Design für Bestandskunden unverändert weiterläuft.
 *
 * Primärfarbe ist konfigurierbar pro Website via DB-Feld
 * `cookie_primary_color` (CSS-Variable --gcms-cookie-primary, inline gesetzt
 * in parse/cookie.php). Default: neutraler Akzentton.
 * ========================================================================== */

.gcms_cookie_v2 {
    --gcms-cookie-primary: #1f2937;
    --gcms-cookie-primary-hover: #111827;
    --gcms-cookie-secondary: #4b4f55;
    --gcms-cookie-text: #0f172a;
    --gcms-cookie-text-light: #4b5563;
    --gcms-cookie-bg: #ffffff;
    --gcms-cookie-bg-light: #f8fafc;
    --gcms-cookie-border: #e5e7eb;
    --gcms-cookie-shadow: rgba(0, 0, 0, 0.12);
    --gcms-cookie-overlay: rgba(15, 23, 42, 0.55);
    --gcms-cookie-radius: 14px;
    --gcms-cookie-radius-small: 8px;
    --gcms-cookie-transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
    --gcms-cookie-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
        "Open Sans", "Helvetica Neue", Arial, sans-serif;

    /* Buttons: ohne definierte Primärfarbe neutral weiß mit schwarzer Schrift.
     * Ist in der Website eine Primärfarbe hinterlegt, überschreibt
     * parse/cookie_v2.php diese vier Variablen inline (Farbe + weiße Schrift). */
    --gcms-cookie-btn-bg: #ffffff;
    --gcms-cookie-btn-bg-hover: #f2f2f2;
    --gcms-cookie-btn-text: #000000;
    --gcms-cookie-btn-border: #000000;
}

/* ---------------------------------------------------------------------------
 * Overlay (Modal-Modus: blockiert die Seite)
 * ------------------------------------------------------------------------- */

body.gcms_cookie_modal_active {
    overflow: hidden;
}

#gcms_cookie_overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: var(--gcms-cookie-overlay, rgba(15, 23, 42, 0.55));
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    z-index: 111111110;
    animation: gcmsCookieFadeIn 0.25s ease-out;
}

#gcms_cookie_overlay.active {
    display: block;
}

@keyframes gcmsCookieFadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@keyframes gcmsCookieFadeOut {
    from { opacity: 1; }
    to   { opacity: 0; }
}

@keyframes gcmsCookieSlideUp {
    from { transform: translateY(100%); }
    to   { transform: translateY(0); }
}

@keyframes gcmsCookieSlideDown {
    from { transform: translateY(-100%); }
    to   { transform: translateY(0); }
}

@keyframes gcmsCookiePopupIn {
    from { transform: translate(-50%, -50%) scale(0.95); opacity: 0; }
    to   { transform: translate(-50%, -50%) scale(1);    opacity: 1; }
}

/* ---------------------------------------------------------------------------
 * Manager-Container (Basis)
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2#gcms_cookie_manager {
    position: fixed;
    z-index: 111111111;
    box-sizing: border-box;
    font-family: var(--gcms-cookie-font);
    color: var(--gcms-cookie-text);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    max-height: 90vh;
    /* dvh statt vh: iOS Safari/Chrome Android melden bei 100vh die Höhe VOR
     * Ein-/Ausblenden von Adressleiste/Toolbar. Dadurch kann die Box laut
     * Browser "passen" (kein Overflow -> kein Scrollbalken), obwohl unten
     * Inhalte (u. a. die Buttons) außerhalb des tatsächlich sichtbaren
     * Bereichs liegen und nicht erreichbar sind. dvh löst exakt das. */
    max-height: 90dvh;
    /* visible: box-shadow der Karte (v. a. Popup) darf nicht am Container
     * abgeschnitten werden; Scrollen bleibt auf #gcms_cookie_main. */
    overflow: visible;
    display: flex;
    flex-direction: column;
}

.gcms_cookie_v2#gcms_cookie_manager *,
.gcms_cookie_v2#gcms_cookie_manager *::before,
.gcms_cookie_v2#gcms_cookie_manager *::after {
    box-sizing: border-box;
}

/* GRADWERK FIX 2026-07-09: war fälschlicherweise ".gcms_cookie_v2#gcms_cookie_main"
 * (Verbund-Selektor OHNE Leerzeichen) - das würde ein einzelnes Element mit
 * BEIDEM verlangen: Klasse gcms_cookie_v2 UND id gcms_cookie_main. #gcms_cookie_main
 * trägt diese Klasse aber nie selbst (nur sein Elternelement #gcms_cookie_manager),
 * daher griff diese komplette Regel NIE - inkl. "flex/min-height/overflow-y:auto".
 * Genau das war der eigentliche Grund, warum die Cookie-Box auf keinem einzigen
 * Banner-Stil (oben/unten/popup) jemals intern scrollbar war, unabhängig von
 * vh/dvh: ohne "overflow-y:auto" gibt es schlicht keinen Scroll-Container, und
 * ohne "min-height:0" könnte ein Flex-Kind ohnehin nicht unter seine Inhaltshöhe
 * schrumpfen. Fix: Leerzeichen -> echter Nachfahren-Selektor. */
.gcms_cookie_v2 #gcms_cookie_main {
    background-color: var(--gcms-cookie-bg);
    outline: none;
    flex: 1 1 auto;
    min-height: 0;
    /* GRADWERK FIX 2026-07-09 (Nachtrag): "max-height" hier zusätzlich EXPLIZIT
     * gesetzt (deckungsgleich mit dem max-height des äußeren #gcms_cookie_manager).
     * Live-Test hat gezeigt: "flex:1 1 auto; min-height:0" allein reicht NICHT,
     * damit das Flex-Kind innerhalb eines nur per max-height (ohne feste height)
     * begrenzten Flex-Containers tatsächlich schrumpft - der Container wird zwar
     * korrekt auf max-height geclampt, das Kind bekommt dabei aber trotzdem seine
     * volle Inhaltshöhe zugewiesen (kein negativer freier Platz zum Shrinken wird
     * erkannt), overflow-y:auto lief dadurch leer. Mit einer eigenen, expliziten
     * max-height auf #gcms_cookie_main selbst entsteht zuverlässig ein Overflow,
     * unabhängig vom Banner-Stil (oben/unten/popup übersteuert das unten mit
     * einem noch präziseren, um das eigene Padding reduzierten Wert). */
    max-height: 90vh;
    max-height: 90dvh;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: var(--gcms-cookie-border) transparent;
}

.gcms_cookie_v2 #gcms_cookie_main::-webkit-scrollbar {
    width: 8px;
}
.gcms_cookie_v2 #gcms_cookie_main::-webkit-scrollbar-thumb {
    background-color: var(--gcms-cookie-border);
    border-radius: 20px;
}

/* Position: unten */
.gcms_cookie_v2.gcms_cookie_manager_bottom {
    bottom: 0;
    left: 0;
    right: 0;
    background-color: var(--gcms-cookie-bg);
    border-top: 1px solid var(--gcms-cookie-border);
    box-shadow: 0 -8px 24px var(--gcms-cookie-shadow);
    animation: gcmsCookieSlideUp 0.35s cubic-bezier(0.16, 1, 0.3, 1);
    /* iPhone Home-Indicator/Gesten-Leiste liegt sonst über den Buttons */
    padding-bottom: env(safe-area-inset-bottom, 0px);
}

.gcms_cookie_v2.gcms_cookie_manager_bottom #gcms_cookie_main {
    max-width: 1200px;
    margin: 0 auto;
    padding: 28px 40px 24px;
}

/* Position: oben */
.gcms_cookie_v2.gcms_cookie_manager_top {
    top: 0;
    left: 0;
    right: 0;
    background-color: var(--gcms-cookie-bg);
    border-bottom: 1px solid var(--gcms-cookie-border);
    box-shadow: 0 8px 24px var(--gcms-cookie-shadow);
    animation: gcmsCookieSlideDown 0.35s cubic-bezier(0.16, 1, 0.3, 1);
    /* Dynamic Island / Notch: Banner nicht darunter verstecken */
    padding-top: env(safe-area-inset-top, 0px);
}

.gcms_cookie_v2.gcms_cookie_manager_top #gcms_cookie_main {
    max-width: 1200px;
    margin: 0 auto;
    padding: 24px 40px;
}

/* Position: popup (zentriert)
 * Nur #gcms_cookie_main ist die sichtbare Karte (wie Mockup).
 * Äußerer #gcms_cookie_manager bleibt transparent – sonst Doppelrahmen
 * durch default*.css (box-shadow auf #gcms_cookie_main). */
/* GRADWERK FIX 2026-07-09: "#gcms_cookie_manager" ergänzt, damit die
 * Spezifität über der Basis-Regel ".gcms_cookie_v2#gcms_cookie_manager"
 * (Zeile ~92, max-height:90dvh) liegt - ein Selektor MIT ID gewinnt sonst
 * immer gegen einen ohne ID, unabhängig von Klassenanzahl/Reihenfolge. Ohne
 * diesen Fix wurde das hier vorgesehene max-height im Popup-Modus stumm vom
 * Basiswert überschrieben. */
.gcms_cookie_v2.gcms_cookie_manager_popup#gcms_cookie_manager {
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: calc(100% - 48px);
    max-width: 1000px;
    /* Vertikaler Puffer: Schatten der Karte + Abstand zum Viewport-Rand */
    padding: 28px 0;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    max-height: calc(100vh - 24px);
    max-height: calc(100dvh - 24px);
    animation: gcmsCookiePopupIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

.gcms_cookie_v2.gcms_cookie_manager_popup #gcms_cookie_main {
    padding: 36px 40px;
    background-color: var(--gcms-cookie-bg);
    border: 1px solid var(--gcms-cookie-border);
    border-radius: var(--gcms-cookie-radius);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25);
    outline: none;
    max-height: calc(100vh - 80px);
    max-height: calc(100dvh - 80px);
}

/* Schließanimation */
.gcms_cookie_v2.gcms_cookie_closing {
    animation: gcmsCookieFadeOut 0.25s ease-in forwards;
}

/* ---------------------------------------------------------------------------
 * Layout der zwei Blöcke (Info links, Buttons rechts)
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2 .gcms_cookie_einleitung {
    width: 100%;
}

.gcms_cookie_v2 #gcms_cookie_tblock {
    display: flex;
    gap: 36px;
    align-items: flex-start;
}

.gcms_cookie_v2 #gcms_cookie_tblock1 {
    flex: 1;
    min-width: 0;
}

.gcms_cookie_v2 #gcms_cookie_tblock2 {
    min-width: 260px;
    width: 260px;
}

.gcms_cookie_v2.gcms_cookie_manager_popup #gcms_cookie_tblock {
    flex-direction: column;
    gap: 24px;
}

.gcms_cookie_v2.gcms_cookie_manager_popup #gcms_cookie_tblock2 {
    width: 100%;
}

/* ---------------------------------------------------------------------------
 * Headline / Lauftext
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2 #gcms_cookie_einleitung_headline {
    font-size: 22px;
    font-weight: 700;
    line-height: 1.3;
    margin: 0 0 12px 0;
    color: var(--gcms-cookie-text);
}

.gcms_cookie_v2 #gcms_cookie_tblock1 > p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--gcms-cookie-text-light);
    margin: 0 0 18px 0;
}

.gcms_cookie_v2 #gcms_cookie_tblock1 a {
    color: var(--gcms-cookie-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* ---------------------------------------------------------------------------
 * Checkbox-Reihe (Kategorien)
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2 #gcms_cookie_leiste {
    margin: 0 0 16px 0;
}

.gcms_cookie_v2 #gcms_cookie_checks {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 32px;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container {
    position: relative;
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    padding: 0 0 0 32px;
    margin: 0;
    background: none;
    border: none;
    transition: var(--gcms-cookie-transition);
    user-select: none;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container input {
    position: absolute;
    opacity: 0;
    cursor: pointer;
    width: 0;
    height: 0;
    margin: 0;
    padding: 0;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_checkmark {
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    height: 22px;
    width: 22px;
    background-color: #fff;
    border: 1.5px solid #cbd5e1;
    border-radius: 5px;
    transition: var(--gcms-cookie-transition);
    box-sizing: border-box;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container:hover input ~ .gcms_cookie_checkbox_checkmark {
    border-color: var(--gcms-cookie-primary);
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container input:checked ~ .gcms_cookie_checkbox_checkmark {
    background-color: var(--gcms-cookie-primary);
    border-color: var(--gcms-cookie-primary);
}

.gcms_cookie_v2 .gcms_cookie_checkbox_checkmark::after {
    content: "";
    position: absolute;
    display: none;
    left: 50%;
    top: 45%;
    width: 6px;
    height: 11px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: translate(-50%, -50%) rotate(45deg);
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container input:checked ~ .gcms_cookie_checkbox_checkmark::after {
    display: block;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container input:disabled ~ .gcms_cookie_checkbox_checkmark {
    background-color: var(--gcms-cookie-secondary);
    border-color: var(--gcms-cookie-secondary);
    opacity: 0.7;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container input:disabled ~ .gcms_cookie_checkbox_checkmark::after {
    display: block;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_text {
    font-size: 14px;
    font-weight: 500;
    color: var(--gcms-cookie-text);
    margin: 0;
    padding: 0;
}

/* ---------------------------------------------------------------------------
 * Details-Toggler
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2 #gcms_cookie_toogle {
    margin-top: 8px;
}

/* Höhere Spezifität als #gcms_cookie_tblock1 a – kein Link-Unterstrich */
.gcms_cookie_v2 #gcms_cookie_tblock1 #gcms_cookie_toogler,
.gcms_cookie_v2 #gcms_cookie_toogler {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--gcms-cookie-primary);
    text-decoration: none;
    border: none;
    border-bottom: none;
    background: none;
    cursor: pointer;
    padding: 4px 0;
}

.gcms_cookie_v2 #gcms_cookie_tblock1 #gcms_cookie_toogler::after,
.gcms_cookie_v2 #gcms_cookie_toogler::after {
    content: "";
    display: inline-block;
    flex-shrink: 0;
    width: 0;
    height: 0;
    border-left: 0.42em solid transparent;
    border-right: 0.42em solid transparent;
    border-top: 0.48em solid currentColor;
    border-bottom: 0;
    transition: border-color 0.2s;
}

.gcms_cookie_v2 #gcms_cookie_tblock1 #gcms_cookie_toogler.active::after,
.gcms_cookie_v2 #gcms_cookie_toogler.active::after {
    border-top: 0;
    border-bottom: 0.48em solid currentColor;
}

.gcms_cookie_v2 #gcms_cookie_tblock1 #gcms_cookie_toogler:hover,
.gcms_cookie_v2 #gcms_cookie_toogler:hover {
    color: var(--gcms-cookie-primary-hover);
    text-decoration: none;
    border-bottom: none;
}

/* ---------------------------------------------------------------------------
 * Buttons
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2 .cookie_buttons {
    padding: 0;
}

.gcms_cookie_v2 .cookie_buttons_auswahl {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.gcms_cookie_v2 .cookie_buttons_auswahl a,
.gcms_cookie_v2 .cookie_buttons_auswahl button {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    margin: 0;
    width: 100%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 11px 14px;
    min-height: 44px;
    font-size: 12px;
    font-weight: 600;
    font-family: var(--gcms-cookie-font);
    color: var(--gcms-cookie-btn-text);
    background: var(--gcms-cookie-btn-bg);
    border: 1px solid var(--gcms-cookie-btn-border);
    border-radius: var(--gcms-cookie-radius-small);
    cursor: pointer;
    text-decoration: none;
    text-align: center;
    line-height: 1.3;
    transition: var(--gcms-cookie-transition);
    white-space: normal;
    hyphens: auto;
    text-transform: none;
    letter-spacing: normal;
}

.gcms_cookie_v2 .cookie_buttons_auswahl a:hover,
.gcms_cookie_v2 .cookie_buttons_auswahl button:hover {
    background: var(--gcms-cookie-btn-bg-hover);
    border-color: var(--gcms-cookie-btn-border);
    color: var(--gcms-cookie-btn-text);
}

/* DSGVO: alle drei Aktionen gleichwertig – einheitlich Primärfarbe (oben/unten/popup) */

/* ---------------------------------------------------------------------------
 * Details / Accordion
 * ------------------------------------------------------------------------- */

.gcms_cookie_v2 #gcms_cookie_details {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--gcms-cookie-border);
}

.gcms_cookie_v2 .gcms_cookie_accordion {
    display: block;
    width: 100%;
    text-align: left;
    border: 1px solid var(--gcms-cookie-border);
    background: var(--gcms-cookie-bg);
    border-radius: var(--gcms-cookie-radius-small);
    padding: 14px 16px;
    margin-bottom: 8px;
    cursor: pointer;
    transition: var(--gcms-cookie-transition);
}

.gcms_cookie_v2 .gcms_cookie_accordion:hover,
.gcms_cookie_v2 .gcms_cookie_accordion.gcms_cookie_active {
    background: var(--gcms-cookie-bg-light);
}

.gcms_cookie_v2 .gcms_cookie_accordion strong {
    display: block;
    font-size: 15px;
    color: var(--gcms-cookie-text);
    margin-bottom: 4px;
}

.gcms_cookie_v2 .gcms_cookie_accordion p {
    font-size: 13px;
    line-height: 1.6;
    color: var(--gcms-cookie-text-light);
    margin: 0;
}

.gcms_cookie_v2 .gcms_cookie_panel {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.3s ease;
    padding: 0 4px;
}

.gcms_cookie_v2 .gcms_cookie_panel.open {
    padding: 8px 4px 16px;
}

.gcms_cookie_v2 .gcms_cookie_name {
    font-weight: 600;
    margin: 12px 0 6px;
    font-size: 14px;
    color: var(--gcms-cookie-text);
}

.gcms_cookie_v2 .gcms_cookie_table {
    width: 100%;
    border-collapse: collapse;
    background: var(--gcms-cookie-bg-light);
    border-radius: var(--gcms-cookie-radius-small);
    overflow: hidden;
    font-size: 13px;
    margin-bottom: 4px;
}

.gcms_cookie_v2 .gcms_cookie_table td {
    padding: 8px 12px;
    border-bottom: 1px solid var(--gcms-cookie-border);
    vertical-align: top;
    color: var(--gcms-cookie-text-light);
}

.gcms_cookie_v2 .gcms_cookie_table td:first-child {
    font-weight: 600;
    width: 110px;
    color: var(--gcms-cookie-text);
}

.gcms_cookie_v2 .gcms_cookie_table tr:last-child td {
    border-bottom: 0;
}

.gcms_cookie_v2 .gcms_cookie_no_nentry {
    font-size: 13px;
    color: var(--gcms-cookie-text-light);
    font-style: italic;
    padding: 8px 0;
}

/* ---------------------------------------------------------------------------
 * Accessibility / Focus
 * ------------------------------------------------------------------------- */

/* Der Dialog-Container erhält beim Öffnen per JS programmatischen Fokus
 * (role=dialog, für Screenreader). Nur outline entfernen – box-shadow NICHT
 * zurücksetzen, sonst verschwindet der Positions-Schatten (oben/unten/popup)
 * beim Klick ins Banner und kehrt beim Klick auf den Hintergrund zurück. */
.gcms_cookie_v2#gcms_cookie_manager:focus,
.gcms_cookie_v2#gcms_cookie_manager:focus-visible,
.gcms_cookie_v2 #gcms_cookie_main:focus,
.gcms_cookie_v2 #gcms_cookie_main:focus-visible {
    outline: none;
}

/* Legacy blaue Fokus-Outline aus default*.css (#gcms_cookie_manager a:focus)
 * neutralisieren. ID-Spezifität nötig, sonst greift die Default-Regel weiter.
 * Sichtbarer Fokus kommt unten ausschließlich über :focus-visible. */
.gcms_cookie_v2#gcms_cookie_manager a:focus,
.gcms_cookie_v2#gcms_cookie_manager button:focus {
    outline: none;
}

.gcms_cookie_v2#gcms_cookie_manager a:focus-visible,
.gcms_cookie_v2#gcms_cookie_manager button:focus-visible {
    outline: 2px solid var(--gcms-cookie-primary);
    outline-offset: 2px;
}

.gcms_cookie_v2 .gcms_cookie_checkbox_container input:focus-visible ~ .gcms_cookie_checkbox_checkmark {
    box-shadow: 0 0 0 3px rgba(31, 41, 55, 0.2);
}

/* ---------------------------------------------------------------------------
 * Banner offen (oben/unten): Seite nicht mitscrollen, nur #gcms_cookie_main scrollt
 * ------------------------------------------------------------------------- */

body.gcms_cookie_body_v2_bottom.gcms_cookie_open,
body.gcms_cookie_body_v2_top.gcms_cookie_open {
    overflow: hidden;
}

html.gcms_cookie_scroll_lock,
body.gcms_cookie_scroll_lock {
    overflow: hidden;
    height: 100%;
}

body.gcms_cookie_scroll_lock {
    position: fixed;
    width: 100%;
    left: 0;
    top: 0;
}

/* ---------------------------------------------------------------------------
 * Responsive
 * ------------------------------------------------------------------------- */

@media (max-width: 900px) {
    .gcms_cookie_v2#gcms_cookie_manager #gcms_cookie_tblock {
        flex-direction: column;
        gap: 20px;
    }
    .gcms_cookie_v2 #gcms_cookie_tblock2 {
        min-width: 100%;
        width: 100%;
    }
    .gcms_cookie_v2 .cookie_buttons_auswahl {
        flex-direction: row;
        flex-wrap: wrap;
    }
    .gcms_cookie_v2 .cookie_buttons_auswahl a,
    .gcms_cookie_v2 .cookie_buttons_auswahl button {
        flex: 1 1 200px;
    }
    .gcms_cookie_v2.gcms_cookie_manager_bottom #gcms_cookie_main,
    .gcms_cookie_v2.gcms_cookie_manager_top #gcms_cookie_main {
        padding: 22px 22px 18px;
    }
    .gcms_cookie_v2.gcms_cookie_manager_popup #gcms_cookie_main {
        padding: 24px 22px;
    }
}

@media (max-width: 600px) {
    .gcms_cookie_v2 #gcms_cookie_einleitung_headline {
        font-size: 19px;
    }
    .gcms_cookie_v2 #gcms_cookie_checks {
        gap: 8px 12px;
    }
    .gcms_cookie_v2 .cookie_buttons_auswahl a,
    .gcms_cookie_v2 .cookie_buttons_auswahl button {
        flex: 1 1 100%;
        padding: 14px 16px;
        min-height: 50px;
        font-size: 13px;
    }
    .gcms_cookie_v2.gcms_cookie_manager_popup#gcms_cookie_manager {
        width: calc(100% - 16px);
        /* Mobile Popup: nicht mehr vertikal per translate(-50%) zentrieren.
         * Auf sehr kleinen Höhen (iPhone SE) blieb die Karte sonst zwar
         * rechnerisch begrenzt, Gesten erreichten aber nicht zuverlässig einen
         * echten Scroll-Container. Mit top+bottom bekommt der feste Container
         * eine konkrete verfügbare Höhe; #gcms_cookie_main kann darin sicher
         * overflowen. !important ist hier bewusst nötig, weil cookie_v2.php
         * die kritischen Popup-Positionswerte zusätzlich inline ausgibt. */
        left: 50% !important;
        right: auto !important;
        top: 8px !important;
        top: max(8px, env(safe-area-inset-top, 0px)) !important;
        bottom: auto !important;
        transform: translateX(-50%) !important;
        padding: 0 !important;
        max-height: none !important;
        height: calc(100vh - 16px) !important;
        height: calc(100dvh - 16px) !important;
        justify-content: center;
    }
    .gcms_cookie_v2#gcms_cookie_manager {
        max-height: 92vh;
        max-height: 92dvh;
    }
    .gcms_cookie_v2 #gcms_cookie_main {
        max-height: 92vh;
        max-height: 92dvh;
    }
    .gcms_cookie_v2.gcms_cookie_manager_popup #gcms_cookie_main {
        max-height: 100%;
    }
}

/* ---------------------------------------------------------------------------
 * Platzhalter für externe Inhalte (No-Reload)
 * ------------------------------------------------------------------------- */

.gcms_cookie_placeholder {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    min-height: 220px;
    padding: 28px 24px;
    background: var(--gcms-cookie-bg-light, #f8fafc);
    border: 1px dashed var(--gcms-cookie-border, #e5e7eb);
    border-radius: 10px;
    text-align: center;
    color: var(--gcms-cookie-text-light, #4b5563);
    font-family: var(--gcms-cookie-font, sans-serif);
}

.gcms_cookie_placeholder__icon {
    width: 40px;
    height: 40px;
    opacity: 0.55;
}

.gcms_cookie_placeholder__title {
    font-weight: 600;
    color: var(--gcms-cookie-text, #0f172a);
    font-size: 15px;
    margin: 0;
}

.gcms_cookie_placeholder__hint {
    font-size: 13px;
    line-height: 1.5;
    max-width: 460px;
    margin: 0;
}

.gcms_cookie_placeholder__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 18px;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    background: var(--gcms-cookie-primary, #1f2937);
    border: 1px solid var(--gcms-cookie-primary, #1f2937);
    border-radius: 8px;
    text-decoration: none;
    cursor: pointer;
    transition: all 0.2s;
}

.gcms_cookie_placeholder__btn:hover {
    background: var(--gcms-cookie-primary-hover, #111827);
    border-color: var(--gcms-cookie-primary-hover, #111827);
}

.gcms_cookie_placeholder__switch {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

/* ---------------------------------------------------------------------------
 * Mini-Cookie / externer Inhalt (unabhängig vom v2-Banner, immer stabil)
 * Kein .gcms_cookie_placeholder am Wrapper – sonst Flex-Konflikt nach Reload.
 * ------------------------------------------------------------------------- */

.gcms_extern {
    background-color: #dddbd9;
    padding: 5px 0;
    margin-bottom: 5px;
    display: block;
    text-align: left;
}

.gcms_extern_center {
    background-color: #fff;
    max-width: 306px;
    margin: 0 auto;
    padding: 10px;
}

.gcms_extern h2 {
    color: #000;
    font-size: 20px;
    margin: 0 0 10px;
    padding: 0;
}

.gcms_extern_text {
    color: #000;
    font-size: 13px;
    line-height: 15px;
}

.gcms_extern_toggle {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    column-gap: 10px;
    row-gap: 10px;
    margin: 12px 0;
}

.gcms_extern_toggle_text {
    font-size: 13px;
    color: #000;
    vertical-align: middle;
    padding: 0 0 0 10px;
    margin: 0;
    line-height: 1.3;
}

/* Label neben/unter dem Schieberegler – Abstand wenn umbrochen */
.gcms_extern_toggle .gcms_extern_toggle_text {
    flex: 1 1 auto;
    min-width: 120px;
}

.gcms_extern_desc {
    color: #807e7c;
    font-size: 12px;
    line-height: 15px;
    margin-top: 10px;
    clear: both;
}

.gcms_extern_desc a,
.gcms_extern_toggle_text a {
    color: #000;
    font-size: 12px;
    text-decoration: underline;
}

.gcms_extern_toggle1 {
    margin: 10px 0 10px 10px;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.gcms_extern_toggle1 div:nth-child(2) {
    margin-right: 10px;
}

.gcms_extern_toggle1 .gcms_extern_toggle_text {
    padding: 0;
}

.gcms_extern_switch {
    display: inline-flex;
    align-items: center;
    height: auto;
    min-height: 26px;
    padding-bottom: 6px;
    gap: 10px;
    flex: 0 0 auto;
    overflow: visible;
}

.gcms_extern_switch input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.gcms_extern_slider {
    position: relative;
    cursor: pointer;
    width: 65px;
    height: 14px;
    min-height: 14px;
    max-height: 14px;
    flex: 0 0 65px;
    background-color: #ccc;
    box-shadow: 0 0 1px #ccc;
    transition: 0.4s;
    border-radius: 16px;
}

.gcms_extern_slider:before {
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    left: 2px;
    bottom: -6px;
    background-color: #fff;
    transition: 0.4s;
    border-radius: 50%;
    border: solid 1px #dedede;
    box-shadow: 0 0 1px #dedede;
}

.gcms_extern_switch input:checked + .gcms_extern_slider {
    background-color: #4caf50;
    box-shadow: 0 0 1px #4caf50;
}

.gcms_extern_switch input:checked + .gcms_extern_slider:before {
    transform: translateX(35px);
    border: solid 1px #4caf50;
    box-shadow: 0 0 1px #4caf50;
}

.gcms_cookie_gated_active.gcms_extern {
    background: transparent;
    padding: 0;
    margin-bottom: 0;
}

/* Fallback: alter Markup-Mix mit beiden Klassen (gespeichertes Restore-HTML) */
.gcms_cookie_placeholder.gcms_extern {
    display: block;
    min-height: 0;
    padding: 5px 0;
    background: #dddbd9;
    border: none;
    border-radius: 0;
    text-align: left;
}

.gcms_cookie_placeholder.gcms_extern .gcms_extern_center {
    max-width: 100%;
}

.gcms_cookie_placeholder.gcms_extern .gcms_cookie_placeholder__icon,
.gcms_cookie_placeholder.gcms_extern .gcms_cookie_placeholder__btn {
    display: none;
}
