﻿/* Schrift einbinden */
@font-face {
    font-family: "ContentNotoSans";
    src: url("/fonts/NotoSans-Regular.ttf") format("truetype");
    font-display: swap;
}

/* ===================== */
/* Theme-Variablen Light */
/* ===================== */
:root {
    color-scheme: light;
    --content-font: "ContentNotoSans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, "Noto Sans", "Liberation Sans", sans-serif;
    /* Flächen */
    --content-bg: #f7fafc; /* sehr hell, fast weißgrau */
    --content-surface: #ffffff; /* Flächen/Karten */
    --content-tint: #e9f2fb; /* zarte, graublaue Fläche */
    --content-border: #e0e2e7; /* Rahmen hellgrau */
    /* Text */
    --content-text: #1f2937; /* Haupttext (dunkelgrau) */
    --content-muted: #6b7280; /* sekundärer Text (mittelgrau) */
    /* Akzente */
    --content-primary: #2b6cb0; /* seriöses, gedämpftes Blau */
    --content-primary-600: #245a92; /* dunkleres Blau für Hover/Fokus */
    --content-primary-50: #f0f6fd; /* sehr helles Blau für Flächen */
    --content-focus: #90cdf4; /* Fokus-Ring/Akzent */
    /* Navbar/Dropdown */
    --content-menu-bar-bg: #f8f9fae6; /* leicht transparentes Grau */
    --content-menu-bar-border-col: #d9dbd6dd; /* dezente Kante */
    --content-menu-bar-ddmenu-bg: #7593d97c; /* halbtransparentes graublau */
    /* Schatten */
    --content-shadow: 0 4px 14px rgba(0,0,0,0.08);
    /* Neu: Menüs & Inputs/Buttons für Theme-Toggle */
    --content-nav-fg: #1f2937;
    --content-nav-hover-bg: rgba(0,0,0,0.06);
    --content-dd-fg: #1f2937;
    --content-input-bg: #ffffff;
    --content-input-fg: #1f2937;
    --content-input-border: #e0e2e7;
    --content-input-placeholder: #94a3b8;
    --content-button-primary-fg: #ffffff;
    --content-button-secondary-bg: #ffffff;
    --content-button-secondary-fg: #2b6cb0;
    --content-button-secondary-border: #cfe2f6;
}

/* ===================== */
/* Theme-Variablen Dark  */
/* (per <html class="content-dark"> aktiviert) */
/* ===================== */
.content-dark {
    color-scheme: dark;
    --content-font: "ContentNotoSans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, "Noto Sans", "Liberation Sans", sans-serif;
    /* Flächen */
    --content-bg: #0f141a;
    --content-surface: #141a21;
    --content-tint: #0b1220;
    --content-border: #2a3340;
    /* Text */
    --content-text: #e6edf5;
    --content-muted: #9aa9bd;
    /* Akzente */
    --content-primary: #6fb0ff;
    --content-primary-600: #4d94e8;
    --content-primary-50: #0f213a;
    --content-focus: #2b6cb0;
    /* Navbar/Dropdown */
    --content-menu-bar-bg: rgba(26,34,46,0.88);
    --content-menu-bar-border-col: #3a63a3;
    --content-menu-bar-ddmenu-bg: rgba(26,34,46,0.94);
    /* Schatten kräftiger */
    --content-shadow: 0 6px 20px rgba(0,0,0,0.45);
    /* Neue Theme-abhängige Zusätze */
    --content-nav-fg: #e6edf5;
    --content-nav-hover-bg: rgba(255,255,255,0.12);
    --content-dd-fg: #e6edf5;
    --content-input-bg: #1a222c;
    --content-input-fg: #e6edf5;
    --content-input-border: #334155;
    --content-input-placeholder: #8aa0b8;
    --content-button-primary-fg: #ffffff;
    --content-button-secondary-bg: #1e2733;
    --content-button-secondary-fg: #e6edf5;
    --content-button-secondary-border: #3b4f6b;
}

.content-body {
    min-height: 100%;
    background-color: var(--content-bg);
    background-image: linear-gradient(180deg, var(--content-bg), var(--content-tint) 1200px);
    color: var(--content-text);
    transition: background-color .2s ease, color .2s ease, background-image .2s ease;
}

/* ===================== */
/* Seiten-/Grundlayout   */
/* ===================== */
.content-page {
    font-family: var(--content-font);
    color: var(--content-text);
    background: linear-gradient(180deg, var(--content-bg), var(--content-tint) 1200px);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Überschriften */
.content-h1,
.content-h2,
.content-h3 {
    margin: 0 0 0.5rem 0;
    line-height: 1.25;
    font-weight: 600;
    color: var(--content-text);
}

.content-h1 {
    font-size: clamp(1.8rem, 3vw, 2.4rem);
    letter-spacing: 0.1px;
}

.content-h2 {
    font-size: clamp(1.4rem, 2.5vw, 1.8rem);
    color: #243446;
}

.content-h3 {
    font-size: clamp(1.15rem, 2vw, 1.35rem);
    color: #2c3e50;
}

/* Zusammenfassung */
.content-summary {
    background: var(--content-primary-50);
    border: 1px solid var(--content-border);
    color: #1f3550;
    border-radius: 12px;
    padding: 1rem 1.25rem;
    margin: 0.5rem 0 1.25rem 0;
}

/* Lauftext */
.content-body {
    font-size: 1rem;
    line-height: 1.65;
    color: var(--content-text);
}

    .content-body p {
        margin: 0 0 0.9rem 0;
    }

    .content-body small,
    .content-muted {
        color: var(--content-muted);
    }

/* Karten/Boxen */
.content-card {
    background: var(--content-surface);
    border: 1px solid var(--content-border);
    border-radius: 14px;
    box-shadow: var(--content-shadow);
    overflow: hidden;
    font-family: var(--content-font);
    margin-left: min(1rem,3%); /* resposive  ;-) */
    margin-right: min(1rem,3%); /* resposive  ;-) */ 
}

.content-card-title {
    padding: min(2rem,1%);
    background: linear-gradient(180deg, #e6e9fe, #eef4fb);
    border-bottom: 1px solid var(--content-border);
    font-weight: 600;
    font-size: clamp(1rem, 1.5vw,1.26rem);
    color: #213c59;
    white-space: nowrap; /* kein Zeilenumbruch */
    overflow: hidden; /* Überlauf abschneiden */
    text-overflow: ellipsis; /* "..." anzeigen */
}

    .content-card-title:hover {
        background: linear-gradient(180deg, #f6f9fe, #eef4fb);
    }

/* Basis: IMMER vorhanden (auch im offenen Zustand) */
.content-card-body {
    /* WICHTIG: numerischer Startwert, nicht auto/none */
    max-height: 1000px; /* nimm etwas, das sicher groß genug ist */
    overflow: hidden; /* verhindert “Überquellen” während der Animation */
    transition: max-height 0.33s ease;
}

    /* ZU-Zustand: Zusatzklasse – wird zu .content-card-body hinzugefügt */
    .content-card-body.content-card-body-eingeklappt {
        max-height: 100px;
    }

.content-card-body {
    padding: min(3rem,3%); /* resposive Padding ;-) */
    font-size: clamp(0.93rem, 0.94vw,0.94rem);
    text-align: justify;
    line-height: 1.1rem; 
}

.content-card-body-titel {
    
    font-size: clamp(1rem, 1.1vw,1.1rem);
    font-weight:600;
}

.content-card-body-vorspann {
    font-style: italic;
    font-size: clamp(0.94rem, 1vw,1rem);
    text-align: left;
    line-height: 1.33rem;
}

/* Schleier  über eingeklappter Karte -------------------------------------------------*/
.content-card-body-eingeklappt {
    max-height: 100px;
    overflow: hidden;
    position: relative; /* Fade-Bereich: hier anpassen */
    --fade-start: 0px; /* ab hier beginnt das Ausblenden */
    --fade-end: 140px; /* bis hier vollständig verschwunden */
    cursor: pointer; 
}

 

/* Sauber: echtes Ausblenden per Masking (unterstützte Browser) */
@supports (-webkit-mask-image: linear-gradient(#000,#000)) or (mask-image: linear-gradient(#000,#000)) {
    .content-card-body-eingeklappt::after {
        background: none;
    }

    .content-card-body-eingeklappt {
        -webkit-mask-image: linear-gradient( to bottom, rgba(0,0,0,1) 0, rgba(0,0,0,1) var(--fade-start), rgba(0,0,0,0) var(--fade-end), rgba(0,0,0,0) 100% );
        mask-image: linear-gradient( to bottom, rgba(0,0,0,1) 0, rgba(0,0,0,1) var(--fade-start), rgba(0,0,0,0) var(--fade-end), rgba(0,0,0,0) 100% );
        -webkit-mask-repeat: no-repeat;
        mask-repeat: no-repeat;
    }
}
/* Fallback ohne Masking: Overlay in Kartenfarbe (weich von start -> end, danach voll) */

.content-card-body-eingeklappt::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    background: linear-gradient( to bottom, transparent 0, transparent var(--fade-start), rgb(from var(--content-surface) r g b / 0) var(--fade-start), rgb(from var(--content-surface) r g b / 1) var(--fade-end), rgb(from var(--content-surface) r g b / 1) 100% );
}

/* Bild in TextBox --------------------------------------------*/
.content-card-image-container {
    display: flex;
    flex-direction: row;
    justify-content: space-around;
    overflow: clip;
    background: linear-gradient(180deg, var(--content-bg), var(--content-tint) 300px);
}

.content-card-image-image {
    max-width: 300px;
    height: auto;
    max-height: 300px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
}

.content-card-image-credit {
    max-width: 100%;
    text-align: center;
    font-size: 0.5rem;
}

/* ===================== */
/* Buttons (Theme-fähig) */
/* ===================== */

/* Buttons, auch native <button>, skalieren mit html { font-size } */
.content-button,
.content-nav-key, /* Top-Level Menü-Buttons */
.content-submenu-item { /* Dropdown-Menü-Buttons */
    font-size: 1rem; /* skaliert mit - A + */
}


.content-button {
    --_padY: 0.6rem;
    --_padX: 1.0rem;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: var(--_padY) var(--_padX);
    border-radius: 10px;
    border: 1px solid transparent;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    transition: transform .02s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease, color .18s ease;
    user-select: none;
}

    .content-button:focus-visible {
        outline: none;
        box-shadow: 0 0 0 4px var(--content-focus);
    }

/* Primary */
.content-button-primary {
    background: var(--content-primary);
    color: var(--content-button-primary-fg);
    border-color: var(--content-primary);
}

    .content-button-primary:hover {
        background: var(--content-primary-600);
        border-color: var(--content-primary-600);
    }

    .content-button-primary:active {
        transform: translateY(1px);
    }

/* Secondary */
.content-button-secondary {
    background: var(--content-button-secondary-bg);
    color: var(--content-button-secondary-fg);
    border-color: var(--content-button-secondary-border);
}

    .content-button-secondary:hover {
        /* Fallback für Browser ohne color-mix */
        background: #f0f0f0;
        border-color: var(--content-primary);
        /* Moderne Browser */
        background: rgba(255, 255, 255, 0.15); /* 15% Weiß drübergelegt */
    }

    .content-button-secondary:active {
        transform: translateY(1px);
    }

/* Subtle */
.content-button-subtle {
    background: transparent;
    color: var(--content-primary);
    border-color: transparent;
}

    .content-button-subtle:hover {
        background: #f3f7fc;
        border-color: #e6eef9;
    }

    /* Disabled für ALLE Varianten – auch wenn .content-button nicht gesetzt ist */
    button.content-button-primary:disabled,
    button.content-button-secondary:disabled,
    button.content-button-subtle:disabled,
    button.content-button:disabled,
    .content-button-primary.disabled,
    .content-button-secondary.disabled,
    .content-button-subtle.disabled,
    .content-button.disabled,
    button.content-button-primary[disabled],
    button.content-button-secondary[disabled],
    button.content-button-subtle[disabled],
    button.content-button[disabled] {
        background: #d9d9d9 !important; /* deutlich hellgrau */
        color: #9aa0a6 !important; /* blasser Text */
        border-color: #c7c7c7 !important; /* dezenter Rand */
        opacity: 1; /* klar, nicht “ausgewaschen” */
        cursor: not-allowed;
        transform: none !important;
        pointer-events: none; /* keine Hover/Clicks */
        
    }

        /* Kinder erben die graue Farbe trotz Inline-Styles */
        button[class*="content-button"]:disabled *,
        .content-button.disabled * {
            color: inherit !important;
            fill: currentColor !important; /* SVG-Icons */
            stroke: currentColor !important;
        }

/* Button Icon */
.content-button-icon {
    width: 1.1em;
    height: 1.1em;
    display: inline-block;
    flex: 0 0 auto;
}

/* ===================== */
/* Inputs/Textareas      */
/* ===================== */
.content-input,
.content-textarea{
    width: 100%;
    padding: 0.6rem 0.75rem;
    border-radius: 10px;
    border: 1px solid var(--content-input-border);
    background: var(--content-input-bg);
    color: var(--content-input-fg);
    transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease, color .18s ease;
    font-size: 1rem; /* skaliert mit html { font-size:% } aus JS */
}

.content-textarea {
    min-height: 120px;
    resize: vertical;
}

    .content-input::placeholder,
    .content-textarea::placeholder {
        color: var(--content-input-placeholder);
    }

    .content-input:focus,
    .content-textarea:focus {
        outline: none;
        border-color: var(--content-primary);
        box-shadow: 0 0 0 4px var(--content-focus);
        background: var(--content-input-bg);
    }

/* Links */
.content-link {
    color: var(--content-primary);
    text-decoration: none;
    border-bottom: 1px solid rgba(43,108,176,0.25);
    padding-bottom: 1px; 
}

    .content-link:hover {
        color: var(--content-primary-600);
        border-bottom-color: rgba(36,90,146,0.45); 
        cursor:pointer;
        font-weight:600;
    }

/* Helfer */
.content-section {
    margin-top:60px;
}

.content-stack > * + * {
    margin-top: 0.75rem;
}

.content-grid {
    display: grid;
    gap: 1rem;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    align-items: stretch; /* sorgt dafür, dass Kinder-Elemente gleich hoch werden */
}

/* Spaltenbreiten 1 - 12 */
.content-col-1 {
    grid-column: span 1;
}

.content-col-2 {
    grid-column: span 2;
}

.content-col-3 {
    grid-column: span 3;
}

.content-col-4 {
    grid-column: span 4;
}

.content-col-5 {
    grid-column: span 5;
}

.content-col-6 {
    grid-column: span 6;
}

.content-col-7 {
    grid-column: span 7;
}

.content-col-8 {
    grid-column: span 8;
}

.content-col-9 {
    grid-column: span 9;
}

.content-col-10 {
    grid-column: span 10;
}

.content-col-11 {
    grid-column: span 11;
}

.content-col-12 {
    grid-column: span 12;
}

.content-col-element {
    grid-column: span 4;
    height: 100%; /* selbst volle Zeilenhöhe */
    display: flex; /* Inhalt auf volle Höhe strecken können */
    flex-direction: column;
}
    /* Direktkinder (z. B. Karten) auch auf volle Höhe strecken */
    .content-col-element > * {
        height: 100%;
    }
/* ===================== */
/* Navbar / Menü         */
/* ===================== */

/* Host (vom JS gesetzt) */
.content-navbar-host {
    position: relative;
    z-index: 1000;
    position:fixed;
    width:100%;
    top:0px;
}

/* Navbar */
.content-navbar {
    position: sticky;
    top: 0;
    z-index: 1000;
    font-family: var(--content-font);
    background-color: var(--content-menu-bar-bg);
    border-top: 2px solid var(--content-menu-bar-border-col);
    border-bottom: 2px solid var(--content-menu-bar-border-col);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    overflow: visible;
    position: relative;
    color: var(--content-nav-fg);
}

    /* 5px-Gradient oben & unten */
    .content-navbar::before,
    .content-navbar::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        height: 5px;
        pointer-events: none;
    }

    .content-navbar::before {
        top: 0;
        background: linear-gradient(to bottom, var(--content-menu-bar-border-col), var(--content-menu-bar-bg));
    }

    .content-navbar::after {
        bottom: 0;
        background: linear-gradient(to top, var(--content-menu-bar-border-col), var(--content-menu-bar-bg));
    }

/* Innenlayout */
.content-nav-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 6px 10px;
    flex-wrap: nowrap;
    overflow: visible;
    position: relative;
    z-index: 1;
}

/* Logo */
.content-brand {
    flex: 0 0 auto;
    margin-left: 10px;
    display: flex;
    align-items: center;
}

.content-logo {
    display: block;
    max-height: 50px;
    height: auto;
    width: auto;
}

/* Burger */
/* Burger: exakt 30x30, ohne Rand, ohne Hover-Hintergrund, iOS-kompatibel */
.content-burger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    padding: 0;
    margin: 0;
    background: transparent !important; /* kein graues Kästchen */
    border: 0 !important; /* kein Rand */
    border-radius: 0; /* keine Rundung */
    outline: none;
    box-shadow: none;
    -webkit-appearance: none; /* iOS Standard-Button-Deko aus */
    appearance: none;
    color: var(--content-nav-fg); /* steuert SVG-Farbe (currentColor) */
    line-height: 0; /* keine Zusatzhöhe */
}

    /* SVG im Burger fix auf 30x30 und ohne Extra-Spacing */
    .content-burger svg {
        width: 30px;
        height: 30px;
        display: block;
    }

    /* Kein Hover-Hintergrund */
    .content-burger:hover {
        background: transparent !important;
    }

/* Menü rechts (Desktop) */
.content-nav-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: flex-end;
    margin-left: auto;
    white-space: nowrap;
    flex-wrap: nowrap;
    overflow: visible !important;
}

/* Top-Level Item */
.content-nav-item {
    position: relative;
    flex: 0 0 auto;
}

    .content-nav-item.has-children > .content-nav-key::after {
        content: "▾";
        margin-left: 6px;
        font-size: .9em;
        opacity: .8;
        display: inline-block;
        vertical-align: middle;
    }

/* Top-Level Button */
.content-nav-key {
    display: inline-flex;
    align-items: center;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    line-height: 1;
    padding: 10px 8px;
    margin: 0;
    border-radius: 12px;
    cursor: pointer;
    transition: background-color .15s ease;
}

    .content-nav-key:hover {
        background: var(--content-nav-hover-bg);
    }

/* Login-Link & Theme-Toggle */
.content-auth-link {
    font-weight: 700;
    text-decoration: none;
    color: inherit;
    padding: 10px 8px;
    border-radius: 10px;
}

    .content-auth-link:hover {
        background: var(--content-nav-hover-bg);
    }

.content-theme-toggle {
    border: none;
    background: transparent;
    padding: 8px;
    border-radius: 10px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

    .content-theme-toggle:hover {
        background: var(--content-nav-hover-bg);
    }

/* Textgrößen-Steuerung (ohne Deko für -/+) */
.content-textscale {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.content-textscale-btn {
    cursor: pointer; /* nur Funktion, keine Deko */
    user-select: none;
    background: none;
    border: none;
    padding: 0;
    margin: 0;
}

.content-textscale-label {
    font-weight: 700;
    line-height: 1;
}

/* Submenu (Dropdown) */
.content-submenu {
    position: absolute;
    top: 100%;
    left: 0;
    margin-top: 0;
    transform: translateY(6px);
    display: none;
    flex-direction: column;
    min-width: 200px;
    padding: 8px;
    background: var(--content-menu-bar-ddmenu-bg);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border-radius: 12px;
    box-shadow: 0 6px 18px rgba(0,0,0,0.12);
    z-index: 1100;
    overflow: visible;
    color: var(--content-dd-fg);
}

.content-nav-item.open > .content-submenu {
    display: flex;
}

/* Hover-Bridge (verhindert Lücke) */
.content-nav-item.has-children {
    position: relative;
}

    .content-nav-item.has-children::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        top: 100%;
        height: 10px;
        background: transparent;
        pointer-events: auto;
    }

/* Submenu Items */
.content-submenu-li {
    list-style: none;
}

.content-submenu-item {
    width: 100%;
    text-align: left;
    display: inline-flex;
    align-items: center;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    line-height: 1;
    padding: 8px 10px;
    border-radius: 10px;
    cursor: pointer;
    transition: background-color .15s ease;
}

    .content-submenu-item:hover {
        background: rgba(255,255,255,0.3);
    }

/* ============ */
/* Mobile <=900 */
/* ============ */
@media (max-width: 1200px) {
    .content-burger {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        order: 3;
        margin-left: auto;
    }

    .content-nav-list {
        order: 2;
        position: absolute;
        left: 0;
        right: 0;
        top: 100%;
        display: none;
        flex-direction: column;
        gap: 4px;
        padding: 10px;
        margin: 0;
        background: var(--content-menu-bar-bg);
        backdrop-filter: blur(8px);
        -webkit-backdrop-filter: blur(8px);
        border-bottom-left-radius: 14px;
        border-bottom-right-radius: 14px;
        box-shadow: 0 8px 20px rgba(0,0,0,0.12);
        color: var(--content-nav-fg);
    }

        .content-nav-list.open {
            display: flex;
        }

    .content-nav-item {
        width: 100%;
    }

    .content-nav-key {
        width: 100%;
        display: flex;
        justify-content: space-between;
        align-items: center;
    }

    .content-submenu {
        position: static;
        transform: none;
        display: none;
        padding: 6px;
        box-shadow: none;
        background: var(--content-menu-bar-ddmenu-bg);
        color: var(--content-dd-fg);
    }

    .content-nav-item.open > .content-submenu {
        display: flex;
    }
}

/* ===================== */
/* Desktop Sicherungen   */
/* ===================== */
@media (min-width: 1201px) {
    .content-burger {
        display: none !important;
    }

    .content-nav-list {
        overflow: visible !important;
    }

    .content-nav-inner, .content-navbar {
        overflow: visible;
    }

        .content-navbar, .content-navbar * {
            box-sizing: border-box;
        }
}


/* Text vorlesen ------------------------------------------------------------------------------------------------------------------------------------------------------------*/
.tts-btn {
    display:flex; 
    flex-direction:row;
    gap:5px;
    font-size: 1.0rem;
    cursor: pointer;
}


/* Content Slider ------------------------------------------------------------------------------------------------------------------------------------------------------------*/
/********* Grundlayout *********/
.content-slider {
    width: 100%;
    max-width: 666px;
    min-width: 300px;
    margin: 0 auto;
    position: relative;
    font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
    user-select: none;
    z-index:1;
}


/* --------------- SLIDER WRAPPER (layout-neutral) --------------- */
/* Hintergrund-Linien: von unten nach oben bei 0,30,57,82,105,126,145,162px */
.content-slider-wrapper::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(to top, transparent 30px, #ccc 30px 31px, transparent 31px), /* Linie bei 30 */
    linear-gradient(to top, transparent 57px, #ccc 57px 58px, transparent 58px), /* Linie bei 57 */
    linear-gradient(to top, transparent 82px, #ccc 82px 83px, transparent 83px), /* Linie bei 82 */
    linear-gradient(to top, transparent 105px, #ccc 105px 106px, transparent 106px), /* Linie bei 105 */
    linear-gradient(to top, transparent 126px, #ccc 126px 127px, transparent 127px), /* Linie bei 126 */
    linear-gradient(to top, transparent 145px, #ccc 145px 146px, transparent 146px), /* Linie bei 145 */
    linear-gradient(to top, transparent 162px, #ccc 162px 163px, transparent 163px), /* Linie bei 162 */
    linear-gradient(to top, transparent 179px, #ccc 179px 180px, transparent 180px), /* Linie bei 179 */
    linear-gradient(to top, transparent 195px, #ccc 195px 196px, transparent 196px), /* Linie bei 195 */
    linear-gradient(to top, transparent 210px, #ccc 210px 211px, transparent 211px), /* Linie bei 210 */
    linear-gradient(to top, transparent 224px, #ccc 224px 225px, transparent 225px), /* Linie bei 224 */
    linear-gradient(to top, transparent 237px, #ccc 237px 238px, transparent 238px), /* Linie bei 237 */
    linear-gradient(to top, transparent 249px, #ccc 249px 250px, transparent 250px), /* Linie bei 249 */
    linear-gradient(to top, transparent 260px, #ccc 260px 261px, transparent 261px), /* Linie bei 260 */
    linear-gradient(to top, transparent 270px, #ccc 270px 271px, transparent 271px); /* Linie bei 270 */

    background-repeat: no-repeat;
    background-size: 100% 100%;
    z-index: 0;
    pointer-events: none;
}


.content-slider-wrapper {
    position: relative;
    isolation: isolate;
}

    .content-slider-wrapper > * {
        position: relative;
        z-index: 1;
    }

/* --------------- ELEMENTE LIEGEN OBEN --------------- */
.content-slider,
.cs-side,
.cs-nav,
.cs-image-clip,
.cs-floating-card {
    position: relative;
    z-index: 1;
}

 
.cs-stage {
    position: relative;
    padding: 18px;
}

/********* Bild-Wrapper (bestimmt Größe), Flügel liegen außerhalb *********/
.cs-image-wrap {
    /* Steuer-Variablen */
    --side-w: 160px; /* Breite der seitlichen Vorschaubilder */
    --side-gap: 5px; /* Abstand der Flügel zum Bild */
    --card-border: rgba(0,0,0,0.15);
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    /* Overflow sichtbar, damit die Flügel außen sichtbar sind */
    overflow: visible;
}

/* Clip-Container fürs eigentliche Hauptbild + Overlays, mit runden Ecken */
.cs-image-clip {
    position: absolute;
    inset: 0;
    border-radius: 27px;
    border: 6px solid var(--card-border);
    border-collapse: collapse;
    overflow: hidden;
    box-shadow: 0 10px 24px rgba(0,0,0,0.12);
    background: #f7f7f9; /* Fallback-Hintergrund, falls Bild fehlt */
}

/* Hauptbild selbst, unten 10% in Transparenz */
.cs-image {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    
    z-index: 1;
    
}

/********* Überzeile (oben/rechts bündig; nur BR stark gerundet) *********/
.cs-ueberzeile {
    position: absolute;
    top: -7px;
    left: -7px;
    background: #fff;
    border: 8px solid var(--card-border);
    border-radius: 22px 0 22px 0; /* nur rechts-unten rund */
    border-collapse:collapse;
    padding: 8px 12px;
    font-weight: 700;
    font-size: 1.1rem;
    box-shadow: 0 2px 4px rgba(0,0,0,0.08);
    z-index: 8888;
    opacity:0.94;
    color: black;
}

/********* Foto-Credit im Bild, unten rechts; beeinflusst Größe nicht *********/
.cs-credit {
    position: absolute;
    bottom: 8px;
    left: 8px; /* IM Bild (nicht außen) */
    writing-mode: vertical-rl; /* vertikaler Text von unten nach oben */
    text-orientation: mixed;
    font-size: 0.62rem;
    line-height: 1;
    color: rgba(0,0,0,0.65);
    white-space: nowrap;
    pointer-events: none;
    text-shadow: 0 0 2px rgba(255,255,255,0.6); /* leichte Lesbarkeit über Bild */
}

/********* Seitliche Vorschaubilder (Trapez, nach außen) *********/
/* Gemeinsame Basis für beide Flügel */
.cs-side {
    position: absolute;
    top: 5%;
    height: 90%;
    width: 300px;
    background-size: cover;
    background-position: center;
    filter: saturate(0.9) brightness(0.95);
    cursor: pointer;
    opacity: 0.95;
    will-change: transform;
    z-index: 1; /* ausdrücklich über den Linien */
    overflow: hidden; /* wichtig fürs Overlay */
    
}
    /* Overlay auf die Flügel: an der Außenkante in die Seiten-Hintergrundfarbe ausblenden */
    .cs-side::after {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        background: transparent; /* wird pro Seite überschrieben */
        /* leichte Unschärfe optional, wenn der Übergang noch softer sein soll */
        /* filter: blur(0.0001px);  */
    }

/* Masken AUS – wir blenden per Overlay, nicht per Transparenz */
.cs-side-left,
.cs-side-right {
    -webkit-mask-image: none !important;
    mask-image: none !important;
}



/* Linker Flügel: von links (Außenkante) -> BG-Farbe, zur Mitte hin transparent */
.cs-side-left {
    position: relative;
    left: calc(-1 * (var(--side-w) - var(--side-gap)));
    /* 3D-Kippung: linke Kante „nahe“, rechts verjüngt */
    transform-origin: left center;
    transform: perspective(900px) rotateY(12deg);
    /* ~10% Trapez-Verjüngung der rechten Kante */
    --taper: 10%;
    clip-path: polygon(0% 0%, 0% 100%, calc(100% - var(--taper)) 100%, calc(100% - var(--taper)) 0%); 
    border-radius: 22px 0 0 22px;
    overflow: clip; /* Schatten darf außerhalb sichtbar sein */
    /* Boden-Schatten (ohne Wrapper) */
    filter: drop-shadow(0 14px 18px rgba(0,0,0,.18)) drop-shadow(0 4px 6px rgba(0,0,0,.12));
}

    .cs-side-left::after {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        /* links 50% Deckkraft, nach rechts zu 100% transparent */
        background: linear-gradient( to right, rgb(from var(--content-bg) r g b / 0.53) 0%, rgb(from var(--content-bg) r g b / 0.73) 50% );
    }

/* Rechter Flügel: von rechts (Außenkante) -> BG-Farbe, zur Mitte hin transparent */
.cs-side-right {
    right: calc(-1 * (var(--side-w) + var(--side-gap)));
    /* 3D-Kippung: linke Kante „nahe“, rechts verjüngt */
    transform-origin: right center;
    transform: perspective(900px) rotateY(12deg);
    /* ~10% Trapez-Verjüngung der rechten Kante */
    --taper: 10%;
    clip-path: polygon( 0% calc(0% + var(--taper)), /* X: nahe rechts (100%-taper), Y: ganz oben (0%) */
    0% calc(100% - var(--taper)), /* X: über die rechte Kante hinaus, Y: ganz oben */
    100% 100%, /* X: ganz links, Y: ganz unten */
    100% 0% /* X: ganz links, Y: ganz oben */
    );
    width: calc(300px - calc(-1 * (var(--side-w) + var(--side-gap))));
    border-radius: 0 22px 22px 0;
    overflow: visible; /* Schatten darf außerhalb sichtbar sein */
    /* Boden-Schatten (ohne Wrapper) */
    filter: drop-shadow(0 14px 18px rgba(0,0,0,.18)) drop-shadow(0 4px 6px rgba(0,0,0,.12));
}

    .cs-side-right::after {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        /* links 50% Deckkraft, nach rechts zu 100% transparent */
        background: linear-gradient( to left, rgb(from var(--content-bg) r g b / 0.53) 0%, rgb(from var(--content-bg) r g b / 0.73) 50% );
    }




/********* Schwebende Karte (rechts, ragt etwas heraus) *********/
.cs-floating-card {
    position: absolute;
    /* Bezugsfläche ist .cs-stage (relativ), wir verankern an Bildposition */
    left: 50%;
    top: 50%;
    transform: translate(12%, 12%); 
    background: linear-gradient(180deg, rgba(255,255,255,0.94), rgba(250,250,252,0.77));
    padding: 16px 18px;
    box-shadow: 0 18px 34px rgba(0,0,0,0.18);
    max-width: min(70%, 260px);
    z-index: 99;
    border: 6px solid;
    border-radius:22px;
    border-collapse: collapse;
    border-color: rgba(0,0,77,0.3);
    word-break:break-all;
}

.cs-blowup {
    font-size: 1.05rem;
    font-weight: 600;
    margin-bottom: 10px;
    color: #111;
}

.cs-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border-radius: 999px;
    border: 2px solid rgba(0,0,0,0.3);
    background: transparent;
    padding: 8px 14px;
    font-size: 0.98rem;
    font-weight: 600;
    cursor: pointer;
    transition: transform 120ms ease, box-shadow 120ms ease, border-color 120ms ease;
}

    .cs-link:hover {
        transform: translateY(-1px);
        box-shadow: 0 6px 16px rgba(0,0,0,0.12);
        border-color: rgba(0,0,0,0.5);
    }

.cs-arrow {
    display: inline-block;
    transition: transform 120ms ease;
}

.cs-link:hover .cs-arrow {
    transform: translateX(3px);
}

/********* Navigation ganz außen *********/
.cs-nav {
    position: absolute;
    top: 50%;
    width: 48px;
    height: 48px;
    margin-top: -24px; /* exakt zentriert */
    border-radius: 999px;
    border: 5px solid rgba(0,0,77,0.3);
    background: rgba(255,255,255,0.9);
    display: flex;
    flex-direction:row;
    align-items:center;
    justify-content:center;
    cursor: pointer;
    transition: background 120ms ease, transform 120ms ease, box-shadow 120ms ease;
    backdrop-filter: blur(4px);
    z-index: 3;
}

    .cs-nav:hover {
        background: rgba(255,255,255,0.95);
        transform: translateY(-1px);
        box-shadow: 0 10px 22px rgba(0,0,0,0.15);
    }

.cs-nav-left {
    left: -70px;
    color:black;
}

.cs-nav-right {
    right: -70px;
    color: black;
}

/********* Leere Ansicht *********/
.cs-empty {
    padding: 24px;
    text-align: center;
    color: #666;
}

/* Mehr abstand in der mobilen Ansicht, da sonst Karte im Haupt-Bild drübersteht*/

.cs-mobile-spacer{
    margin-top:0px;
}

/********* Mobile Tweaks *********/
@media (max-width: 900px) {
    .cs-nav {
        width: 42px;
        height: 42px;
        margin-top: -21px;
    }

    .cs-blowup {
        font-size: 0.9rem;
    }

    .cs-floating-card {
        left: 10%;
        top:56%;
        width:70%;
        transform: translate(6%, 10%);
        max-width: 70%;
    }    
}

@media (max-width: 550px) {
    .cs-mobile-spacer {
        margin-top: 100px;
    }
}

@media (max-width: 1000px)
{
    .cs-nav-left {
        left: 10px;
    }

    .cs-nav-right {
        right: 10px;
    }

    .cs-side-left{
        display:none;
    }

    .cs-side-right {
        display: none;
    }
    .content-slider-shell,
    .content-slider-bg {
        --side-w: 0px;
        --side-gap: 0px;
        --nav-bleed: 14px;
    }

    .content-col-element {
        grid-column: span 12;
    }
}


/* --- Bildwechsel: 3D-Rotation / sanfter Zoom/Fade --- */
.cs-image-clip {
    perspective: 1000px; /* für spürbare Tiefe */
}

.cs-image,
.cs-ueberzeile,
.cs-credit {
    backface-visibility: hidden;
    transform-style: preserve-3d;
    will-change: transform, opacity;
}

/* Vorwärts (Next / AutoSlide) */
.cs-image-clip.animate-right .cs-image,
.cs-image-clip.animate-right .cs-ueberzeile,
.cs-image-clip.animate-right .cs-credit {
    animation: csSpinInRight 520ms cubic-bezier(.2,.65,.25,1);
}

/* Rückwärts (Prev) */
.cs-image-clip.animate-left .cs-image,
.cs-image-clip.animate-left .cs-ueberzeile,
.cs-image-clip.animate-left .cs-credit {
    animation: csSpinInLeft 520ms cubic-bezier(.2,.65,.25,1);
}

@keyframes csSpinInRight {
    0% {
        transform: rotateY(18deg) scale(0.98);
        opacity: 0.0;
    }

    40% {
        transform: rotateY(6deg) scale(0.99);
        opacity: 0.85;
    }

    100% {
        transform: rotateY(0deg) scale(1.00);
        opacity: 1.0;
    }
}

@keyframes csSpinInLeft {
    0% {
        transform: rotateY(-18deg) scale(0.98);
        opacity: 0.0;
    }

    40% {
        transform: rotateY(-6deg) scale(0.99);
        opacity: 0.85;
    }

    100% {
        transform: rotateY(0deg) scale(1.00);
        opacity: 1.0;
    }
}

/* Dezente Bewegung der Seitenflügel während der Animation (Parallax-Gefühl) */
.cs-image-clip.animate-right ~ .cs-side.cs-side-left,
.cs-image-clip.animate-right ~ .cs-side.cs-side-right {
    animation: csSidesNodRight 520ms ease;
}

.cs-image-clip.animate-left ~ .cs-side.cs-side-left,
.cs-image-clip.animate-left ~ .cs-side.cs-side-right {
    animation: csSidesNodLeft 520ms ease;
}

@keyframes csSidesNodRight {
    0% {
        transform: translateX(-4px) perspective(900px) rotateY(var(--ry, 0deg)) scale(0.9);
        filter: brightness(0.92);
    }

    50% {
        transform: translateX( 0px) perspective(900px) rotateY(var(--ry, 0deg)) scale(0.9);
        filter: brightness(1.0);
    }

    100% {
        transform: translateX( 0px) perspective(900px) rotateY(var(--ry, 0deg)) scale(0.9);
        filter: brightness(0.98);
    }
}

@keyframes csSidesNodLeft {
    0% {
        transform: translateX(4px) perspective(900px) rotateY(var(--ry, 0deg)) scale(0.9);
        filter: brightness(0.92);
    }

    50% {
        transform: translateX(0px) perspective(900px) rotateY(var(--ry, 0deg)) scale(0.9);
        filter: brightness(1.0);
    }

    100% {
        transform: translateX(0px) perspective(900px) rotateY(var(--ry, 0deg)) scale(0.9);
        filter: brightness(0.98);
    }
}

/* Seitliche Basis-RY als CSS-Var setzen, damit die Parallax-Keyframes nicht die Rotation zerstören */
.cs-side-left {
    --ry: 28deg;
}

.cs-side-right {
    --ry: -28deg;
}

/* Barrierefreiheit: Weniger Bewegung respektieren */
@media (prefers-reduced-motion: reduce) {
    .cs-image-clip.animate-right .cs-image,
    .cs-image-clip.animate-left .cs-image,
    .cs-image-clip.animate-right .cs-ueberzeile,
    .cs-image-clip.animate-left .cs-ueberzeile,
    .cs-image-clip.animate-right .cs-credit,
    .cs-image-clip.animate-left .cs-credit {
        animation: none !important;
        opacity: 1 !important;
        transform: none !important;
    }

    .cs-image-clip.animate-right ~ .cs-side,
    .cs-image-clip.animate-left ~ .cs-side {
        animation: none !important;
    }
}


/* => verhindert Bild-Grabbing/Drag-Ghost, Long-Press-Menüs etc. */
.cs-image,
.cs-side {
    -webkit-user-drag: none;
    pointer-events: none; /* klicks fangen wir über Container */
}

.cs-image-clip,
.cs-stage,
.cs-image-wrap {
    /* Erlaubt vertikales Scrollen (pan-y), blockt horizontale Browser-Geste,
       sodass unser Swipe-Handler die horizontale Geste exklusiv bekommt. */
    touch-action: pan-y;
    -ms-touch-action: pan-y;
}

    /* Während aktivem Swipe dezente visuelle Rückmeldung */
    .cs-image-clip.swiping .cs-image,
    .cs-image-clip.swiping .cs-ueberzeile,
    .cs-image-clip.swiping .cs-credit {
        transition: transform 60ms linear; /* kleine, weiche Schritte */
        will-change: transform;
    }

/* Optional: Cursor-Hinweis am Desktop */
@media (pointer: fine) {
    .cs-image-clip {
        cursor: grab;
    }

        .cs-image-clip.swiping {
            cursor: grabbing;
        }
}


/* 2025 09 21 Content-Animationen */
/* Ausgangszustand – JS steuert progress-gesteuert transform/opacity */
/* Standard: sichtbar, falls JS nicht lädt */ 
.content-soft-fade-in {
    /* absichtlich keine opacity/transform */
}

    /* Erst wenn JS das Element aktiviert, gilt die Startpose */
    .content-soft-fade-in.softfade-active {
        transform: scale(0.3);
        opacity: 0;
        will-change: transform, opacity;
    }

/* Barrierefreiheit */
@media (prefers-reduced-motion: reduce) {
    .content-soft-fade-in,
    .content-soft-fade-in.softfade-active {
        transform: none !important;
        opacity: 1 !important;
        transition: none !important;
    }
}

