/*
 * Geher-Team Theme für Bootstrap 5.3
 * Farben und Abstände aus dem bisherigen Bootstrap-4-Theme (custom.css)
 */

:root {
    /* Grautöne */
    --bs-gray-100: #F5F5F5;
    --bs-gray-200: #E6E6E6;
    --bs-gray-300: #D2D2D2;
    --bs-gray-400: #B4B4B4;
    --bs-gray-600: #787878;
    --bs-gray-700: #5A5A5A;
    --bs-gray-800: #3C3C3C;
    --bs-gray-900: #1E1E1E;

    /* Theme-Farben */
    --bs-primary: #3366aa;
    --bs-primary-rgb: 51, 102, 170;
    --bs-secondary: #787878;
    --bs-secondary-rgb: 120, 120, 120;
    --bs-light: #F5F5F5;
    --bs-light-rgb: 245, 245, 245;
    --bs-dark: #3C3C3C;
    --bs-dark-rgb: 60, 60, 60;

    /* Text, Links, Rahmen */
    --bs-body-font-family: "Varela", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
    --bs-body-color: #1E1E1E;
    --bs-body-color-rgb: 30, 30, 30;
    --bs-link-color: #3366aa;
    --bs-link-color-rgb: 51, 102, 170;
    --bs-link-hover-color: #21436f;
    --bs-link-hover-color-rgb: 33, 67, 111;
    --bs-border-color: #D2D2D2;
    --bs-secondary-bg: #E6E6E6;
    --bs-tertiary-bg: #F5F5F5;
    --bs-focus-ring-color: rgba(51, 102, 170, 0.25);

    --geher-heading-font-family: "Varela Round", var(--bs-body-font-family);
}

/* Layout: Footer immer unten */

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

main {
    flex: 1;
}

/* Typografie */

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6,
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
    font-family: var(--geher-heading-font-family);
}

a {
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.btn:hover,
.nav-link:hover,
.navbar-brand:hover,
.dropdown-item:hover,
.page-link:hover,
.list-group-item-action:hover {
    text-decoration: none;
}

.date {
    font-weight: bold;
    margin-bottom: 0.5rem;
    display: block;
}

/* Navigation */

.navbar {
    --bs-navbar-color: #1E1E1E;
    --bs-navbar-hover-color: rgba(30, 30, 30, 0.7);
    --bs-navbar-active-color: #1E1E1E;
    --bs-navbar-brand-color: #1E1E1E;
    --bs-navbar-brand-hover-color: #1E1E1E;
    box-shadow: 0 10px 15px 0 #dddddd;
    z-index: 2;
    margin-bottom: 30px;
}

.navbar-brand img {
    height: 56px;
    width: auto;
}

/* Aktiver Menüpunkt: blauer Balken an der Unterkante der Navbar */
.navbar-nav .nav-link {
    position: relative;
}

.navbar-nav .nav-link.active::before {
    content: "";
    position: absolute;
    background-color: var(--bs-primary);
}

/* Mobil (aufgeklapptes Menü): Balken links neben dem Eintrag */
@media (max-width: 991.98px) {
    .navbar-nav .nav-link {
        padding-left: 0.75rem;
    }

    .navbar-nav .nav-link.active::before {
        top: 0.25rem;
        bottom: 0.25rem;
        left: 0;
        width: 4px;
    }
}

/* Desktop: Menüpunkte füllen die volle Navbar-Höhe, Balken sitzt unten */
@media (min-width: 992px) {
    .navbar {
        --bs-navbar-padding-y: 0;
    }

    .navbar > .container,
    .navbar-expand-lg .navbar-collapse,
    .navbar-expand-lg .navbar-nav {
        align-items: stretch;
    }

    .navbar-brand {
        padding-top: 0.75rem;
        padding-bottom: 0.75rem;
    }

    .navbar-expand-lg .navbar-nav .nav-link {
        display: flex;
        align-items: center;
        height: 100%;
        padding-right: 0.75rem;
        padding-left: 0.75rem;
    }

    .navbar-nav .nav-link.active::before {
        left: 0.75rem;
        right: 0.75rem;
        bottom: 0;
        height: 4px;
    }
}

.dropdown-menu {
    --bs-dropdown-link-color: #1E1E1E;
    --bs-dropdown-link-hover-color: #111111;
    --bs-dropdown-link-hover-bg: #F5F5F5;
    --bs-dropdown-link-active-color: #ffffff;
    --bs-dropdown-link-active-bg: #3366aa;
}

/* Footer */

.footer {
    min-height: 60px;
    display: flex;
    align-items: center;
    background-color: #E6E6E6;
}

.footer-nav a {
    color: var(--bs-body-color);
}

.footer-nav a:hover,
.footer-nav a[aria-current="page"] {
    color: var(--bs-primary);
}

/* Buttons */

.btn-primary {
    --bs-btn-bg: #3366aa;
    --bs-btn-border-color: #3366aa;
    --bs-btn-hover-bg: #2a548d;
    --bs-btn-hover-border-color: #274e83;
    --bs-btn-active-bg: #274e83;
    --bs-btn-active-border-color: #244979;
    --bs-btn-disabled-bg: #3366aa;
    --bs-btn-disabled-border-color: #3366aa;
    --bs-btn-focus-shadow-rgb: 51, 102, 170;
}

.btn-secondary {
    --bs-btn-bg: #787878;
    --bs-btn-border-color: #787878;
    --bs-btn-hover-bg: #656565;
    --bs-btn-hover-border-color: #5f5f5f;
    --bs-btn-active-bg: #5f5f5f;
    --bs-btn-active-border-color: #585858;
    --bs-btn-disabled-bg: #787878;
    --bs-btn-disabled-border-color: #787878;
    --bs-btn-focus-shadow-rgb: 120, 120, 120;
}

.btn-light {
    --bs-btn-color: #1E1E1E;
    --bs-btn-bg: #F5F5F5;
    --bs-btn-border-color: #F5F5F5;
    --bs-btn-hover-color: #1E1E1E;
    --bs-btn-hover-bg: #e2e2e2;
    --bs-btn-hover-border-color: #dcdcdc;
    --bs-btn-active-color: #1E1E1E;
    --bs-btn-active-bg: #dcdcdc;
    --bs-btn-active-border-color: #d5d5d5;
    --bs-btn-focus-shadow-rgb: 245, 245, 245;
}

.btn-dark {
    --bs-btn-bg: #3C3C3C;
    --bs-btn-border-color: #3C3C3C;
    --bs-btn-hover-bg: #292929;
    --bs-btn-hover-border-color: #232323;
    --bs-btn-active-bg: #232323;
    --bs-btn-active-border-color: #1c1c1c;
    --bs-btn-focus-shadow-rgb: 60, 60, 60;
}

.btn-outline-primary {
    --bs-btn-color: #3366aa;
    --bs-btn-border-color: #3366aa;
    --bs-btn-hover-bg: #3366aa;
    --bs-btn-hover-border-color: #3366aa;
    --bs-btn-active-bg: #3366aa;
    --bs-btn-active-border-color: #3366aa;
    --bs-btn-disabled-color: #3366aa;
    --bs-btn-disabled-border-color: #3366aa;
    --bs-btn-focus-shadow-rgb: 51, 102, 170;
}

.btn-outline-secondary {
    --bs-btn-color: #787878;
    --bs-btn-border-color: #787878;
    --bs-btn-hover-bg: #787878;
    --bs-btn-hover-border-color: #787878;
    --bs-btn-active-bg: #787878;
    --bs-btn-active-border-color: #787878;
    --bs-btn-disabled-color: #787878;
    --bs-btn-disabled-border-color: #787878;
    --bs-btn-focus-shadow-rgb: 120, 120, 120;
}

.btn-link {
    --bs-btn-color: #3366aa;
    --bs-btn-hover-color: #21436f;
    --bs-btn-active-color: #21436f;
}

/* Formulare */

.form-control:focus,
.form-select:focus {
    border-color: #83a8da;
    box-shadow: 0 0 0 0.25rem rgba(51, 102, 170, 0.25);
}

.form-check-input:checked {
    background-color: #3366aa;
    border-color: #3366aa;
}

.form-check-input:focus {
    border-color: #83a8da;
    box-shadow: 0 0 0 0.25rem rgba(51, 102, 170, 0.25);
}

/* Weitere Komponenten */

.nav-pills {
    --bs-nav-pills-link-active-bg: #3366aa;
}

.pagination {
    --bs-pagination-color: #3366aa;
    --bs-pagination-hover-color: #21436f;
    --bs-pagination-hover-bg: #E6E6E6;
    --bs-pagination-focus-color: #21436f;
    --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(51, 102, 170, 0.25);
    --bs-pagination-active-bg: #3366aa;
    --bs-pagination-active-border-color: #3366aa;
}

.list-group {
    --bs-list-group-active-bg: #3366aa;
    --bs-list-group-active-border-color: #3366aa;
}

.progress {
    --bs-progress-bar-bg: #3366aa;
}

.breadcrumb {
    --bs-breadcrumb-divider-color: #787878;
    --bs-breadcrumb-item-active-color: #787878;
}

/* News-Liste */

.news-card,
.event-card {
    --bs-card-border-color: #D2D2D2;
    overflow: hidden;
    transition: box-shadow 0.15s ease-in-out;
}

.news-card:hover {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1);
}

/* Bilder: Originalformat, aber höchstens 3:2 hoch (höhere werden mittig beschnitten) */
.news-image {
    display: block;
    container-type: inline-size;
}

.news-image img {
    display: block;
    width: 100%;
    height: auto;
    max-height: calc(100cqw * 2 / 3);
    object-fit: cover;
}

.news-card .card-title a {
    color: var(--bs-body-color);
}

.news-card .card-title a:hover {
    color: var(--bs-link-hover-color);
    text-decoration: none;
}

/* News-Detail */

.news-detail-back {
    color: var(--bs-secondary);
}

.news-detail-meta {
    color: var(--bs-secondary);
}

.news-category {
    background-color: rgba(51, 102, 170, 0.1);
    color: #3366aa;
    font-weight: 400;
}

.news-detail-hero img {
    border-radius: var(--bs-border-radius);
}

.news-detail-hero figcaption,
.news-detail-video figcaption {
    margin-top: 0.5rem;
    font-size: 0.875rem;
    color: var(--bs-secondary);
}

.news-detail-body {
    font-size: 1.0625rem;
    line-height: 1.7;
}

.news-detail-body img {
    max-width: 100%;
    height: auto;
}

.news-gallery-item {
    display: block;
    overflow: hidden;
    border-radius: var(--bs-border-radius);
}

.news-gallery-item img {
    display: block;
    width: 100%;
    height: auto;
    transition: transform 0.25s ease-in-out;
}

.news-gallery-item:hover img {
    transform: scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
    .news-gallery-item img {
        transition: none;
    }
}

/* Termine (Calendarize) */

.event-card {
    transition: box-shadow 0.15s ease-in-out;
}

.event-list .event-card:hover {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.1);
}

.event-card .card-title a {
    color: var(--bs-body-color);
}

.event-card .card-title a:hover {
    color: var(--bs-link-hover-color);
    text-decoration: none;
}

.event-date-tile {
    width: 4.5rem;
    padding: 0.5rem 0.25rem;
    border-radius: var(--bs-border-radius);
    background-color: var(--bs-primary);
    color: #ffffff;
    line-height: 1.1;
    align-self: flex-start;
}

.event-date-day {
    display: block;
    font-family: var(--geher-heading-font-family);
    font-size: 1.75rem;
}

.event-date-month {
    display: block;
    text-transform: uppercase;
    font-size: 0.875rem;
}

.event-date-year {
    display: block;
    font-size: 0.75rem;
    opacity: 0.8;
}

.event-canceled .event-date-tile {
    background-color: var(--bs-secondary);
}

.event-canceled .card-title {
    text-decoration: line-through;
}

.event-facts {
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: 1.5rem;
    row-gap: 0.25rem;
}

.event-facts dt {
    font-weight: 400;
    color: var(--bs-secondary);
}

.event-facts dd {
    margin-bottom: 0;
}

.event-detail-back {
    color: var(--bs-secondary);
}

/* Titelbereich (Spalte "Titel") über die volle Breite */

.page-title {
    position: relative;
    margin-top: -30px; /* schließt direkt an die Navbar an (deren margin-bottom) */
    margin-bottom: 30px;
    padding: 3rem 0;
    background-color: var(--bs-light);
}

.page-title-content {
    position: relative;
    z-index: 1;
}

.page-title-content .frame {
    margin: 0;
}

.page-title-content > :last-child > :last-child,
.page-title-content h1:last-child,
.page-title-content h2:last-child,
.page-title-content p:last-child {
    margin-bottom: 0;
}

.page-title-image {
    display: flex;
    align-items: flex-end;
    min-height: clamp(320px, 60vh, 680px);
    padding: 4rem 0 3rem;
    background-color: var(--bs-dark);
    color: #ffffff;
}

.page-title-image a {
    color: #ffffff;
    text-decoration: underline;
}

.page-title-bg {
    position: absolute;
    inset: 0;
    overflow: hidden;
}

.page-title-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Verlauf für lesbaren Text auf dem Bild */
.page-title-bg::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0.15) 60%, rgba(0, 0, 0, 0) 100%);
}

.page-title-image h1,
.page-title-image .h1 {
    font-size: clamp(2.5rem, 5vw, 4.5rem);
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}

/*
 * Inhaltselemente (fluid_styled_content)
 * Ersatz für das optionale Set "Fluid Styled Content CSS": Flexbox statt Floats, responsiv
 */

/* Ausrichtung von Überschriften und Text */

.ce-headline-left,
.ce-align-left {
    text-align: left;
}

.ce-headline-center,
.ce-align-center {
    text-align: center;
}

.ce-headline-right,
.ce-align-right {
    text-align: right;
}

/* Abstände (Erscheinungsbild > Abstand davor/danach) */

.frame-space-before-extra-small { margin-top: 1rem; }
.frame-space-before-small { margin-top: 2rem; }
.frame-space-before-medium { margin-top: 3rem; }
.frame-space-before-large { margin-top: 4rem; }
.frame-space-before-extra-large { margin-top: 5rem; }
.frame-space-after-extra-small { margin-bottom: 1rem; }
.frame-space-after-small { margin-bottom: 2rem; }
.frame-space-after-medium { margin-bottom: 3rem; }
.frame-space-after-large { margin-bottom: 4rem; }
.frame-space-after-extra-large { margin-bottom: 5rem; }

/* Rahmen (Erscheinungsbild > Rahmen) */

.frame-ruler-before::before {
    content: "";
    display: block;
    border-top: var(--bs-border-width) solid var(--bs-border-color);
    margin-bottom: 2rem;
}

.frame-ruler-after::after {
    content: "";
    display: block;
    border-bottom: var(--bs-border-width) solid var(--bs-border-color);
    margin-top: 2rem;
}

@media (min-width: 768px) {
    .frame-indent {
        margin-left: 15%;
        margin-right: 15%;
    }

    .frame-indent-left {
        margin-left: 33%;
    }

    .frame-indent-right {
        margin-right: 33%;
    }
}

/* Bildergalerie (Bilder, Text & Bilder, Text & Medien) */

.ce-textpic,
.ce-image {
    --ce-gap: 1rem;
    --ce-text-margin: 1.5rem;
    display: flow-root;
    margin-bottom: 1rem;
}

.ce-gallery {
    --ce-columns: 1;
}

.ce-gallery[data-ce-columns="2"] { --ce-columns: 2; }
.ce-gallery[data-ce-columns="3"] { --ce-columns: 3; }
.ce-gallery[data-ce-columns="4"] { --ce-columns: 4; }
.ce-gallery[data-ce-columns="5"] { --ce-columns: 5; }
.ce-gallery[data-ce-columns="6"] { --ce-columns: 6; }

/* Mobil: ab drei Spalten nur zwei Bilder nebeneinander */
@media (max-width: 767.98px) {
    .ce-gallery[data-ce-columns="3"],
    .ce-gallery[data-ce-columns="4"],
    .ce-gallery[data-ce-columns="5"],
    .ce-gallery[data-ce-columns="6"] {
        --ce-columns: 2;
    }
}

.ce-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--ce-gap);
    margin-bottom: var(--ce-gap);
}

.ce-row:last-child {
    margin-bottom: 0;
}

.ce-column {
    flex: 0 1 auto;
    min-width: 0;
}

/* Mehrere Spalten: gleich breite Spalten */
.ce-gallery:not([data-ce-columns="1"]) .ce-column {
    flex: 0 0 calc((100% - (var(--ce-columns) - 1) * var(--ce-gap)) / var(--ce-columns));
}

.ce-center .ce-row {
    justify-content: center;
}

.ce-right .ce-row {
    justify-content: flex-end;
}

.ce-gallery figure {
    margin: 0;
}

.ce-gallery img,
.ce-gallery video {
    display: block;
    max-width: 100%;
    height: auto;
}

.ce-gallery iframe {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    border: 0;
}

.ce-gallery figcaption {
    margin-top: 0.5rem;
    font-size: 0.875rem;
    color: var(--bs-secondary);
}

.ce-center .ce-gallery figcaption {
    text-align: center;
}

.ce-right .ce-gallery figcaption {
    text-align: right;
}

/* Rahmen um Bilder (Checkbox "Mit Rahmen") */
.ce-border img,
.ce-border iframe {
    padding: 0.25rem;
    background-color: var(--bs-body-bg);
    border: var(--bs-border-width) solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

/* Klick-Vergrößern */
.ce-gallery a.lightbox {
    display: block;
    overflow: hidden;
    border-radius: var(--bs-border-radius);
    cursor: zoom-in;
}

.ce-gallery a.lightbox img {
    transition: transform 0.25s ease-in-out;
}

.ce-gallery a.lightbox:hover img {
    transform: scale(1.04);
}

@media (prefers-reduced-motion: reduce) {
    .ce-gallery a.lightbox img {
        transition: none;
    }
}

/* Position: über / unter dem Text */
.ce-above .ce-gallery {
    margin-bottom: var(--ce-text-margin);
}

.ce-below .ce-gallery {
    margin-top: var(--ce-text-margin);
}

.ce-image .ce-gallery {
    margin-top: 0;
    margin-bottom: 0;
}

.ce-bodytext > :last-child {
    margin-bottom: 0;
}

/* Position: im Text (links / rechts), auf kleinen Bildschirmen über dem Text */
.ce-intext .ce-gallery {
    margin-bottom: var(--ce-text-margin);
}

@media (min-width: 768px) {
    .ce-intext.ce-left .ce-gallery,
    .ce-intext.ce-right .ce-gallery {
        width: fit-content;
        max-width: 50%;
    }

    .ce-intext.ce-left .ce-gallery {
        float: left;
        margin-right: var(--ce-text-margin);
    }

    .ce-intext.ce-right .ce-gallery {
        float: right;
        margin-left: var(--ce-text-margin);
    }

    /* "Kein Umfließen": Text bleibt in eigener Spalte neben den Bildern */
    .ce-intext.ce-nowrap {
        display: flex;
        align-items: flex-start;
        gap: var(--ce-text-margin);
    }

    .ce-intext.ce-nowrap.ce-right {
        flex-direction: row-reverse;
    }

    .ce-intext.ce-nowrap .ce-gallery {
        float: none;
        flex: 0 1 auto;
        margin: 0;
    }

    .ce-intext.ce-nowrap .ce-bodytext {
        flex: 1 1 0;
        min-width: 0;
    }

    .ce-intext.ce-left .ce-bodytext ul,
    .ce-intext.ce-left .ce-bodytext ol {
        overflow: auto;
    }
}

/* Tabellen (Optik wie Bootstrap .table) */

.frame-type-table {
    overflow-x: auto;
}

.ce-table {
    width: 100%;
    margin-bottom: 1rem;
    vertical-align: top;
    border-color: var(--bs-border-color);
}

.ce-table caption {
    padding-top: 0.5rem;
    padding-bottom: 0.5rem;
    color: var(--bs-secondary);
    caption-side: bottom;
}

.ce-table th,
.ce-table td {
    padding: 0.5rem;
    vertical-align: top;
    border-bottom: var(--bs-border-width) solid var(--bs-border-color);
}

.ce-table thead th {
    vertical-align: bottom;
    border-bottom: calc(var(--bs-border-width) * 2) solid var(--bs-gray-400);
}

.ce-table-striped tbody tr:nth-of-type(odd) > * {
    background-color: var(--bs-tertiary-bg);
}

.ce-table-bordered th,
.ce-table-bordered td {
    border: var(--bs-border-width) solid var(--bs-border-color);
}

/* Aufzählungen */

dl.ce-bullets dt {
    font-weight: 700;
}

dl.ce-bullets dd {
    margin-bottom: 0.75rem;
}

/* Dateilinks */

.ce-uploads {
    margin: 0 0 1rem;
    padding: 0;
    list-style: none;
}

.ce-uploads li {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 0;
    border-bottom: var(--bs-border-width) solid var(--bs-border-color);
}

.ce-uploads li:first-child {
    border-top: var(--bs-border-width) solid var(--bs-border-color);
}

.ce-uploads img {
    flex: 0 0 auto;
    max-width: 150px;
    height: auto;
}

.ce-uploads span {
    display: block;
}

.ce-uploads-description,
.ce-uploads-filesize {
    font-size: 0.875rem;
    color: var(--bs-secondary);
}
