/* =========================================================
   Ingenieurbüro Held – Joomla 6 / Cassiopeia Child
   user.css – finaler Arbeitsstand
   ========================================================= */


/* ---------------------------------------------------------
   01. Grundvariablen
   --------------------------------------------------------- */

:root {
    --held-blue: #20469A;
    --held-blue-dark: #173678;
    --held-text: #232323;
    --held-grey: #5f6670;
    --held-muted: #5f6673;
    --held-light: #f5f5f5;
    --held-white: #ffffff;

    /*
       Einheitliches Layout:
       Gesamtbreite: 1272 px
       Innenabstand: 15 px links/rechts
       Nutzbare Innenbreite: 1242 px
    */
    --held-container: 1272px;
    --held-max-width: 1272px;
    --held-content-width: 1242px;
    --held-gutter: 15px;

    --cassiopeia-color-primary: #20469A;
    --cassiopeia-color-link: #20469A;
    --cassiopeia-color-hover: #173678;
}

/* ---------------------------------------------------------
   Sticky Footer: Footer bei kurzen Seiten unten halten
   --------------------------------------------------------- */

html,
body {
    min-height: 100%;
}

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

/* Hauptbereich füllt den verfügbaren Platz zwischen Header und Footer */
body.site > .site-grid {
    flex: 1 0 auto;
    width: 100%;
}

/* Header und Footer behalten ihre natürliche Höhe */
body.site > .container-header,
body.site > .container-footer {
    flex-shrink: 0;
}

/* Footer wird bei wenig Inhalt nach unten geschoben */
body.site > .container-footer {
    margin-top: auto;
}


/* ---------------------------------------------------------
   02. Open Sans einbinden
   --------------------------------------------------------- */

/*
   Erwarteter Font-Pfad:
   /media/templates/site/cassiopeia_extended/fonts/
*/

@font-face {
    font-family: "Open Sans";
    font-style: normal;
    font-weight: 300;
    font-display: swap;
    src: url("../fonts/open-sans-v29-latin-300.woff2") format("woff2"),
         url("../fonts/open-sans-v29-latin-300.woff") format("woff");
}

@font-face {
    font-family: "Open Sans";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("../fonts/open-sans-v29-latin-regular.woff2") format("woff2"),
         url("../fonts/open-sans-v29-latin-regular.woff") format("woff");
}

@font-face {
    font-family: "Open Sans";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("../fonts/open-sans-v29-latin-600.woff2") format("woff2"),
         url("../fonts/open-sans-v29-latin-600.woff") format("woff");
}

@font-face {
    font-family: "Open Sans";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("../fonts/open-sans-v29-latin-700.woff2") format("woff2"),
         url("../fonts/open-sans-v29-latin-700.woff") format("woff");
}

@font-face {
    font-family: "Open Sans";
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url("../fonts/open-sans-v29-latin-800.woff2") format("woff2"),
         url("../fonts/open-sans-v29-latin-800.woff") format("woff");
}


/* ---------------------------------------------------------
   03. Grundschrift und Typografie
   --------------------------------------------------------- */

html {
    scroll-behavior: smooth;
}

body {
    font-family: "Open Sans", Arial, Helvetica, sans-serif;
    font-size: 16px;
    font-weight: 400;
    line-height: 1.4;
    color: var(--held-text);
    background: var(--held-white);
}

p {
    line-height: 1.4;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: "Open Sans", Arial, Helvetica, sans-serif;
    line-height: 1.25;
    font-weight: 700;
}

h1,
h2 {
    color: var(--held-blue);
}

h1 {
    font-weight: 800;
}

h2 {
    font-size: 32px;
    font-weight: 600;
}

h3 {
    font-size: 28px;
    font-weight: 600;
}

h4 {
    font-size: 24px;
    font-weight: 600;
}

h5 {
    font-size: 18px;
    font-weight: 600;
}

h6 {
    font-size: 16px;
    font-weight: 600;
}

a {
    color: var(--held-blue);
}

a:hover,
a:focus {
    color: var(--held-blue-dark);
}


/* ---------------------------------------------------------
   04. Grundbreiten vereinheitlichen
   --------------------------------------------------------- */

.container-topbar .grid-child,
.container-header .grid-child,
.container-footer .grid-child,
.site-grid {
    max-width: var(--held-max-width);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--held-gutter);
    padding-right: var(--held-gutter);
}

.container-component,
main {
    max-width: none;
}


/* ---------------------------------------------------------
   05. SP Page Builder als Hauptlayout
   --------------------------------------------------------- */

/* Cassiopeia-Layout für SP-Page-Builder-Seiten vollständig neutralisieren */
body.com-sppagebuilder .site-grid,
body.com_sppagebuilder .site-grid {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin-top: 0 !important;
    margin-right: 0 !important;
    margin-bottom: 0 !important;
    margin-left: 0 !important;
    padding-top: 0 !important;
    padding-right: 0 !important;
    padding-bottom: 0 !important;
    padding-left: 0 !important;
}

/* Component-/Main-Bereich ebenfalls volle Breite */
body.com-sppagebuilder .grid-child.container-component,
body.com_sppagebuilder .grid-child.container-component,
body.com-sppagebuilder .container-component,
body.com_sppagebuilder .container-component,
body.com-sppagebuilder main,
body.com_sppagebuilder main {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    margin-top: 0 !important;
    margin-right: 0 !important;
    margin-bottom: 0 !important;
    margin-left: 0 !important;
    padding-top: 0 !important;
    padding-right: 0 !important;
    padding-bottom: 0 !important;
    padding-left: 0 !important;
}

/* Joomla-Artikel-/Item-Wrapper neutralisieren */
body.com-sppagebuilder .com-content-article,
body.com_sppagebuilder .com-content-article,
body.com-sppagebuilder .item-page,
body.com_sppagebuilder .item-page {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

/* SP Page Builder selbst ohne Abstand und volle Breite */
body.com-sppagebuilder #sp-page-builder,
body.com_sppagebuilder #sp-page-builder,
body.com-sppagebuilder .sp-page-builder,
body.com_sppagebuilder .sp-page-builder,
body.com-sppagebuilder .sppb-page-content,
body.com_sppagebuilder .sppb-page-content {
    width: 100% !important;
    max-width: none !important;
    margin-top: 0 !important;
    margin-right: 0 !important;
    margin-bottom: 0 !important;
    margin-left: 0 !important;
    padding-top: 0 !important;
    padding-right: 0 !important;
    padding-bottom: 0 !important;
    padding-left: 0 !important;
}

/* Pagebuilder-Sections seitlich nicht verschieben */
body.com-sppagebuilder .sppb-section,
body.com_sppagebuilder .sppb-section {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}

/* Erste Section direkt unter den Header setzen */
body.com-sppagebuilder #sp-page-builder > .sppb-section:first-child,
body.com_sppagebuilder #sp-page-builder > .sppb-section:first-child,
body.com-sppagebuilder .sppb-page-content > .sppb-section:first-child,
body.com_sppagebuilder .sppb-page-content > .sppb-section:first-child {
    margin-top: 0 !important;
    padding-top: 0 !important;
}

/* Innere Inhaltsbreite der Pagebuilder-Zeilen exakt wie Header/Footer */
body.com-sppagebuilder .sppb-row-container,
body.com_sppagebuilder .sppb-row-container {
    width: 100%;
    max-width: var(--held-container);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--held-gutter);
    padding-right: var(--held-gutter);
    box-sizing: border-box;
}

/* ---------------------------------------------------------
   06. Cassiopeia-Standardbereiche neutralisieren
   --------------------------------------------------------- */

.container-banner,
.container-breadcrumbs,
.container-sidebar-left,
.container-sidebar-right {
    display: none;
}

.mod-login,
.login-greeting {
    display: none;
}


/* ---------------------------------------------------------
   07. Bilder und Medien
   --------------------------------------------------------- */

img,
svg,
video {
    max-width: 100%;
    height: auto;
}


/* ---------------------------------------------------------
   08. Buttons Grundstil
   --------------------------------------------------------- */

button,
.btn {
    font-family: "Open Sans", Arial, Helvetica, sans-serif;
}

.btn-primary {
    background-color: var(--held-blue);
    border-color: var(--held-blue);
    color: var(--held-white);
}

.btn-primary:hover,
.btn-primary:focus {
    background-color: var(--held-blue-dark);
    border-color: var(--held-blue-dark);
    color: var(--held-white);
}


/* ---------------------------------------------------------
   09. Topbar / Kontaktzeile über dem Header
   --------------------------------------------------------- */

.container-topbar {
    background: #ffffff !important;
    background-image: none !important;
    color: var(--held-grey);
    min-height: 30px;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none;
}

/* Cassiopeia-Struktur neutralisieren */
.container-topbar .grid-child {
    max-width: none !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
}

/* eigentliche Begrenzung auf Header-Breite */
.held-topbar-wrap {
    width: 100%;
    max-width: var(--held-container);
    margin-left: auto;
    margin-right: auto;
    padding: 5px var(--held-gutter);
    box-sizing: border-box;
}

.held-topbar {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 24px;
    font-size: 15px;
    line-height: 1.25;
    color: var(--held-grey);
}

.held-topbar a,
.held-topbar a:link,
.held-topbar a:visited {
    display: inline-flex;
    align-items: center;
    color: var(--held-grey) !important;
    text-decoration: none !important;
    font-size: 15px;
    line-height: 1.25;
    white-space: nowrap;
}

.held-topbar a:hover,
.held-topbar a:focus {
    color: var(--held-blue) !important;
    text-decoration: none !important;
}

/* SVG-Icons */
.held-topbar a::before {
    content: "";
    display: inline-block;
    width: 15px;
    height: 15px;
    margin-right: 6px;
    flex: 0 0 auto;
    background-repeat: no-repeat;
    background-position: center;
    background-size: contain;
}

.held-topbar .held-phone::before {
    background-image: url("../icons/held-phone.svg");
}

.held-topbar .held-mobile::before {
    background-image: url("../icons/held-mobile.svg");
}

.held-topbar .held-mail::before {
    background-image: url("../icons/held-mail.svg");
}


/* ---------------------------------------------------------
   10. Topbar responsive
   --------------------------------------------------------- */

@media (max-width: 991px) {
    .container-topbar {
        min-height: auto;
    }

    .held-topbar-wrap {
        padding-top: 6px;
        padding-bottom: 6px;
    }

    .held-topbar {
        justify-content: center;
        gap: 6px 18px;
        font-size: 15px;
        line-height: 1.35;
    }

    .held-topbar a,
    .held-topbar a:link,
    .held-topbar a:visited {
        font-size: 15px;
        line-height: 1.35;
    }

    .held-topbar a::before {
        width: 14px;
        height: 14px;
        margin-right: 6px;
    }
}

@media (max-width: 575px) {
    .held-topbar-wrap {
        padding: 9px 18px 8px 18px;
    }

    .held-topbar {
        justify-content: center;
        gap: 7px 18px;
        font-size: 16px !important;
        line-height: 1.35;
    }

    .held-topbar a,
    .held-topbar a:link,
    .held-topbar a:visited {
        font-size: 16px !important;
        line-height: 1.35;
    }

    .held-topbar a::before {
        width: 15px;
        height: 15px;
        margin-right: 6px;
    }

    .held-topbar .held-mail {
        flex-basis: 100%;
        justify-content: center;
    }
}

@media (max-width: 390px) {
    .held-topbar-wrap {
        padding-left: 14px;
        padding-right: 14px;
    }

    .held-topbar {
        gap: 6px 14px;
        font-size: 15px !important;
    }

    .held-topbar a,
    .held-topbar a:link,
    .held-topbar a:visited {
        font-size: 15px !important;
    }

    .held-topbar a::before {
        width: 14px;
        height: 14px;
        margin-right: 5px;
    }
}


/* ---------------------------------------------------------
   10. Header / Logo / Navigation
   --------------------------------------------------------- */

.metismenu.mod-menu .metismenu-item > a:focus,
.metismenu.mod-menu .metismenu-item > button:focus {
    outline: none !important;
}

.container-header {
    background: var(--held-blue) !important;
    background-image: none !important;
    box-shadow: none;
    padding: 0 !important;
    overflow: visible;
    position: relative;
    z-index: 20;
}

/* Logo-Bereich: gleiche Breite wie Inhalt */
.container-header .grid-child {
    max-width: var(--held-container);
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--held-gutter);
    padding-right: var(--held-gutter);
    box-sizing: border-box;
}

/* Logo */
.container-header .navbar-brand {
    padding-top: 16px;
    padding-bottom: 14px;
    margin: 0;
}

.container-header .navbar-brand img {
    width: 470px;
    max-width: 100%;
    height: auto;
}

.container-header .site-description {
    display: none;
}

/*
   Desktop-Navigation:
   gleiche Bezugsbreite wie Logo/Inhalt.
   Negativer margin-top zieht das Menü auf Logo-Höhe.
*/
.container-header .container-nav {
    max-width: var(--held-container);
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    margin-top: -62px;
    padding-left: var(--held-gutter);
    padding-right: var(--held-gutter);
    padding-bottom: 22px;
    box-sizing: border-box;
    display: flex;
    justify-content: flex-end;
    align-items: center;
}

/* Hauptmenü Desktop */
.container-header .mod-menu,
.container-header .metismenu.mod-menu {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 30px;
}

.container-header .mod-menu > li,
.container-header .metismenu.mod-menu > li {
    margin: 0;
}

.container-header .mod-menu > li > a,
.container-header .mod-menu > li > button,
.container-header .metismenu.mod-menu > li > a,
.container-header .metismenu.mod-menu > li > button {
    color: var(--held-white) !important;
    font-size: 16px;
    font-weight: 400;
    text-decoration: none;
    line-height: 1.2;
    padding: 0;
    background: transparent;
    border: 0;
}

.container-header .mod-menu > li > a:hover,
.container-header .mod-menu > li > button:hover,
.container-header .mod-menu > li.active > a,
.container-header .metismenu.mod-menu > li > a:hover,
.container-header .metismenu.mod-menu > li > button:hover,
.container-header .metismenu.mod-menu > li.active > a {
    color: var(--held-white) !important;
    text-decoration: none;
}


/* ---------------------------------------------------------
   11. Dropdown / Subnavigation
   --------------------------------------------------------- */

.container-header .metismenu.mod-menu > li > ul,
.container-header .metismenu.mod-menu .mm-collapse,
.container-header .metismenu.mod-menu .mm-collapsing,
.container-header .mod-menu__sub {
    background: rgba(20, 20, 20, 0.86) !important;
    border: none !important;
    border-radius: 2px !important;
    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.25) !important;
    min-width: 270px;
    padding: 12px !important;
    margin-top: 14px !important;
    z-index: 9999 !important;
}

/* Einträge im Dropdown */
.container-header .metismenu.mod-menu > li > ul li,
.container-header .metismenu.mod-menu .mm-collapse li,
.container-header .mod-menu__sub li {
    background: transparent !important;
}

/* Links im Dropdown */
.container-header .metismenu.mod-menu > li > ul a,
.container-header .metismenu.mod-menu .mm-collapse a,
.container-header .mod-menu__sub a {
    display: block !important;
    color: var(--held-white) !important;
    background: transparent !important;
    padding: 8px 14px !important;
    font-size: 16px !important;
    line-height: 1.35 !important;
    text-decoration: none !important;
    border-radius: 3px !important;
}

/* Hover und aktiver Unterpunkt */
.container-header .metismenu.mod-menu > li > ul a:hover,
.container-header .metismenu.mod-menu .mm-collapse a:hover,
.container-header .metismenu.mod-menu .mm-collapse li.active > a,
.container-header .mod-menu__sub a:hover,
.container-header .mod-menu__sub li.active > a {
    background: var(--held-blue) !important;
    color: var(--held-white) !important;
    text-decoration: none !important;
}


/* ---------------------------------------------------------
   12. Hauptnavigation ab 1200 px auf Hamburger umschalten
   --------------------------------------------------------- */

@media (max-width: 1200px) {

    .container-header {
        position: relative;
        overflow: visible;
    }

    /*
       Logo links halten.
       Headerhöhe bleibt stabil, Hamburger wird rechts positioniert.
    */
    .container-header .navbar-brand {
        min-height: 105px;
        padding-top: 14px;
        padding-bottom: 14px;
        display: flex;
        align-items: center;
        justify-content: flex-start;
    }

    .container-header .navbar-brand img {
        width: 470px;
        max-width: calc(100vw - 140px);
        height: auto;
    }

    /* Hamburger rechts positionieren */
    .container-header .container-nav {
        position: absolute;
        top: calc(50% + 8px);
        right: 30px;
        left: auto;
        transform: translateY(-50%);
        width: auto;
        max-width: none;
        margin: 0;
        padding: 0;
        display: flex;
        justify-content: flex-end;
        align-items: center;
        z-index: 1000;
    }

    /* Bootstrap/Cassiopeia: Desktop-Menü früher einklappen */
    .container-header .navbar-expand-lg .navbar-toggler {
        display: flex !important;
        align-items: center;
        justify-content: center;
        width: 58px;
        height: 44px;
        margin: 0;
        padding: 0;
        color: var(--held-white) !important;
        border: 1px solid rgba(255, 255, 255, 0.9);
        border-radius: 4px;
        background: transparent;
    }

    .container-header .navbar-expand-lg .navbar-collapse {
        display: none !important;
    }

    .container-header .navbar-expand-lg .navbar-collapse.show,
    .container-header .navbar-expand-lg .navbar-collapse.collapsing {
        display: block !important;
        position: absolute;
        top: 58px;
        right: 0;
        width: 320px;
        background: var(--held-blue);
        padding: 16px 0;
        box-shadow: 0 8px 20px rgba(0, 0, 0, 0.25);
        z-index: 9999;
    }

    /* Menü im aufgeklappten Hamburger vertikal darstellen */
    .container-header .navbar-collapse.show .mod-menu,
    .container-header .navbar-collapse.collapsing .mod-menu,
    .container-header .navbar-collapse.show .metismenu.mod-menu,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu {
        display: flex;
        flex-direction: column;
        align-items: stretch;
        justify-content: flex-start;
        gap: 0;
        width: 100%;
    }

    .container-header .navbar-collapse.show .mod-menu > li,
    .container-header .navbar-collapse.collapsing .mod-menu > li,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li {
        width: 100%;
    }

    .container-header .navbar-collapse.show .mod-menu > li > a,
    .container-header .navbar-collapse.show .mod-menu > li > button,
    .container-header .navbar-collapse.collapsing .mod-menu > li > a,
    .container-header .navbar-collapse.collapsing .mod-menu > li > button,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > a,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > button,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li > a,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li > button {
        display: flex !important;
        align-items: center !important;
        justify-content: space-between !important;
        width: 100% !important;
        padding: 11px 20px !important;
        color: var(--held-white) !important;
        font-size: 18px !important;
        line-height: 1.3 !important;
        text-align: left !important;
        text-decoration: none !important;
        background: transparent !important;
        border: 0 !important;
    }

    .container-header .navbar-collapse.show .mod-menu > li > a:hover,
    .container-header .navbar-collapse.show .mod-menu > li > button:hover,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > a:hover,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > button:hover {
        background: rgba(255, 255, 255, 0.12) !important;
    }

    /* Pfeile im Hamburger-Menü sauber neben dem Text */
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > button::after,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li > button::after,
    .container-header .navbar-collapse.show .mod-menu > li > button::after,
    .container-header .navbar-collapse.collapsing .mod-menu > li > button::after {
        position: static !important;
        display: inline-block !important;
        margin-left: 12px !important;
        margin-top: 0 !important;
        vertical-align: middle !important;
        transform: none !important;
    }

    .container-header .navbar-collapse.show .metismenu.mod-menu > li.mm-active > button::after,
    .container-header .navbar-collapse.show .mod-menu > li.mm-active > button::after {
        transform: rotate(180deg) !important;
    }

    /* Untermenüs im Hamburger */
    .container-header .navbar-collapse.show .mod-menu__sub,
    .container-header .navbar-collapse.show .mm-collapse,
    .container-header .navbar-collapse.show .mm-collapsing {
        position: static !important;
        width: 100% !important;
        min-width: 0 !important;
        margin: 0 !important;
        padding: 0 0 8px 0 !important;
        background: rgba(0, 0, 0, 0.18) !important;
        box-shadow: none !important;
        border-radius: 0 !important;
    }

    .container-header .navbar-collapse.show .mod-menu__sub a,
    .container-header .navbar-collapse.show .mm-collapse a {
        padding: 9px 28px !important;
        color: var(--held-white) !important;
        font-size: 16px !important;
        line-height: 1.35;
        background: transparent !important;
    }

    .container-header .navbar-collapse.show .mod-menu__sub a:hover,
    .container-header .navbar-collapse.show .mm-collapse a:hover {
        background: rgba(255, 255, 255, 0.12) !important;
    }
}


/* ---------------------------------------------------------
   13. Smartphone: Header / Hamburger finalisieren
   --------------------------------------------------------- */

@media (max-width: 575px) {
    .container-header .navbar-brand img {
        width: 340px;
        max-width: calc(100vw - 110px);
    }

    .container-header .container-nav {
        top: calc(50% + 30px) !important;
        right: 24px;
        transform: translateY(-50%) !important;
    }

    .container-header .navbar-expand-lg .navbar-collapse.show,
    .container-header .navbar-expand-lg .navbar-collapse.collapsing {
        right: -8px;
        width: min(320px, calc(100vw - 36px));
    }
}

@media (max-width: 390px) {
    .container-header .container-nav {
        top: calc(50% + 28px) !important;
        right: 18px;
    }
}


/* ---------------------------------------------------------
   14. Footer
   --------------------------------------------------------- */

.container-footer {
    background: var(--held-blue) !important;
    background-image: none !important;
    color: #d6d6d6 !important;
    margin-top: 0;
    padding: 0 !important;
    box-shadow: none;
}

/* Cassiopeia-Footer vollflächig neutralisieren */
.container-footer .grid-child {
    max-width: none !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    display: block !important;
}

.container-footer .moduletable,
.container-footer .mod-custom {
    margin: 0 !important;
    padding: 0 !important;
}

/* Footer-Inhalt exakt auf Header-/Content-Breite */
.held-footer {
    width: 100%;
    max-width: var(--held-container);
    margin-left: auto;
    margin-right: auto;
    padding: 34px var(--held-gutter);
    box-sizing: border-box;

    display: grid;
    grid-template-columns: 1fr 1fr 0.8fr;
    column-gap: 70px;
    align-items: start;

    background: var(--held-blue);
    color: #d6d6d6;
    font-size: 14px;
    line-height: 1.45;
}

.held-footer p {
    margin: 0;
    line-height: 1.45;
}

.held-footer strong {
    color: #ffffff;
    font-weight: 600;
}

.held-footer a,
.held-footer a:link,
.held-footer a:visited {
    color: #ffffff !important;
    text-decoration: none !important;
}

.held-footer a:hover,
.held-footer a:focus {
    color: #ffffff !important;
    text-decoration: underline !important;
}

/* Rechtliche Links */
.held-footer-links ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.held-footer-links li {
    margin: 0 0 8px 0;
    padding: 0;
}

.held-footer-links li:last-child {
    margin-bottom: 0;
}

.held-footer-links a {
    display: inline-block;
}


/* Footer responsive */

@media (max-width: 991px) {
    .held-footer {
        grid-template-columns: 1fr 1fr;
        column-gap: 40px;
        row-gap: 28px;
        padding-top: 30px;
        padding-bottom: 30px;
    }

    .held-footer-links {
        grid-column: 1 / -1;
    }

    .held-footer-links ul {
        display: flex;
        flex-wrap: wrap;
        gap: 8px 24px;
    }

    .held-footer-links li {
        margin: 0;
    }
}

@media (max-width: 575px) {
    .held-footer {
        display: block;
        padding: 28px 24px;
        font-size: 14px;
        text-align: left;
    }

    .held-footer-address,
    .held-footer-sektor {
        margin-bottom: 24px;
    }

    .held-footer-links ul {
        display: block;
    }

    .held-footer-links li {
        margin-bottom: 8px;
    }
}


/* ---------------------------------------------------------
   15. Responsive Grundbreiten
   --------------------------------------------------------- */

@media (max-width: 1320px) {
    :root {
        --held-max-width: 100%;
        --held-content-width: calc(100% - 48px);
    }

    .container-topbar .grid-child,
    .container-header .grid-child,
    .container-footer .grid-child,
    .site-grid {
        max-width: 100%;
    }
}

@media (max-width: 767px) {
    :root {
        --held-content-width: calc(100% - 36px);
        --held-gutter: 18px;
    }

    body {
        font-size: 16px;
    }

    h1 {
        font-size: 2rem;
    }

    h2 {
        font-size: 1.7rem;
    }
}


/* ---------------------------------------------------------
   16. Hilfsklassen
   --------------------------------------------------------- */

.held-container {
    max-width: var(--held-content-width);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--held-gutter);
    padding-right: var(--held-gutter);
}

.held-fullwidth {
    width: 100%;
    max-width: none;
}

/* ---------------------------------------------------------
   17. Pagebuilder-Inhalte / Startseite
   --------------------------------------------------------- */

/* Überschriften-Links im Pagebuilder/Slider ohne Unterstreichung */
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h1 a:not([class]),
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h2 a:not([class]),
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h3 a:not([class]),
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h4 a:not([class]),
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h5 a:not([class]),
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h6 a:not([class]),
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h1 a:not([class]):hover,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h2 a:not([class]):hover,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h3 a:not([class]):hover,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h4 a:not([class]):hover,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h5 a:not([class]):hover,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h6 a:not([class]):hover,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h1 a:not([class]):focus,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h2 a:not([class]):focus,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h3 a:not([class]):focus,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h4 a:not([class]):focus,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h5 a:not([class]):focus,
#sp-page-builder .sppb-addon-text-block .sppb-addon-content h6 a:not([class]):focus {
    text-decoration: none !important;
}

a:not([class]) {
    text-decoration: underline;
}

/* Header-Menü: aktive Unterstreichung entfernen */
.container-header .mod-menu > li.active > a,
.container-header .mod-menu > li.current > a,
.container-header .metismenu.mod-menu > li.active > a,
.container-header .metismenu.mod-menu > li.current > a,
.container-header .mod-menu > li.active > a:not([class]),
.container-header .metismenu.mod-menu > li.active > a:not([class]) {
    border-bottom: none !important;
    text-decoration: none !important;
}

/* ---------------------------------------------------------
   Links / Menüs / Buttons: Unterstreichungen global entfernen
   --------------------------------------------------------- */

/* Cassiopeia-Standard: unklassifizierte Links nicht unterstreichen */
a:not([class]),
a:not([class]):hover,
a:not([class]):focus,
a:not([class]):active {
    text-decoration: none !important;
}

/* Normale Links ebenfalls ohne Unterstreichung */
a,
a:link,
a:visited,
a:hover,
a:focus,
a:active {
    text-decoration: none !important;
}

/* Header-Menü: Cassiopeia-Unterstreichung per Pseudo-Element entfernen */
.container-header .metismenu > li > a::after,
.container-header .metismenu > li > button::before,
.container-header .metismenu > li.active > a::after,
.container-header .metismenu > li.active > button::before,
.container-header .metismenu > li > a:hover::after,
.container-header .metismenu > li > button:hover::before {
    content: none !important;
    display: none !important;
    background: transparent !important;
    height: 0 !important;
}

/* Header-Menü: Links selbst ohne Unterstreichung */
.container-header .metismenu a,
.container-header .metismenu a:hover,
.container-header .metismenu a:focus,
.container-header .metismenu button,
.container-header .metismenu button:hover,
.container-header .metismenu button:focus {
    text-decoration: none !important;
    box-shadow: none !important;
}

/* SP Page Builder Buttons und Button-Links ohne Unterstreichung */
.sppb-btn,
.sppb-btn:hover,
.sppb-btn:focus,
.sppb-btn:active,
a.sppb-btn,
a.sppb-btn:hover,
a.sppb-btn:focus,
a.sppb-btn:active,
.btn,
.btn:hover,
.btn:focus,
.btn:active,
a.btn,
a.btn:hover,
a.btn:focus,
a.btn:active {
    text-decoration: none !important;
    box-shadow: none !important;
}


/* SP Page Builder Default-Button: weiß, grau, Hover blau */
.sppb-btn-default,
a.sppb-btn-default,
.sppb-btn.sppb-btn-default,
a.sppb-btn.sppb-btn-default {
    background-color: #ffffff !important;
    border: 1px solid #b8bec8 !important;
    color: var(--held-grey) !important;
    text-decoration: none !important;
    box-shadow: none !important;
}

/* Hover / Focus / Active */
.sppb-btn-default:hover,
.sppb-btn-default:focus,
.sppb-btn-default:active,
a.sppb-btn-default:hover,
a.sppb-btn-default:focus,
a.sppb-btn-default:active,
.sppb-btn.sppb-btn-default:hover,
.sppb-btn.sppb-btn-default:focus,
.sppb-btn.sppb-btn-default:active,
a.sppb-btn.sppb-btn-default:hover,
a.sppb-btn.sppb-btn-default:focus,
a.sppb-btn.sppb-btn-default:active {
    background-color: #ffffff !important;
    border-color: var(--held-blue) !important;
    color: var(--held-blue) !important;
    text-decoration: none !important;
    box-shadow: none !important;
}

/* Default-Button optisch etwas ruhiger */
.sppb-btn-default.sppb-btn-sm,
a.sppb-btn-default.sppb-btn-sm {
    padding: 4px 10px !important;
    font-size: 14px !important;
    line-height: 1.4 !important;
    border-radius: 4px !important;
}


/* ---------------------------------------------------------
   Header-Menü: Dropdown-Pfeil als sauberer Kontur-Chevron
   --------------------------------------------------------- */

/* alte Dreieck-/Pseudo-Darstellung neutralisieren */
.container-header .metismenu.mod-menu > li.deeper > button::after,
.container-header .metismenu.mod-menu > li.parent > button::after,
.container-header .metismenu.mod-menu > li.deeper > a::after,
.container-header .metismenu.mod-menu > li.parent > a::after,
.container-header .dropdown-toggle::after {
    content: "" !important;
    display: inline-block !important;

    width: 10px !important;
    height: 10px !important;
    margin-left: 12px !important;

    border: 0 !important;
    border-right: 2px solid currentColor !important;
    border-bottom: 2px solid currentColor !important;

    background: transparent !important;
    box-sizing: border-box !important;

    position: relative !important;
    top: -2px !important;

    transform: rotate(45deg) !important;
    transform-origin: 50% 50% !important;

    opacity: 0.85;
    transition: transform 0.2s ease, top 0.2s ease;
}

/* geöffnet: Chevron nach oben drehen */
.container-header .metismenu.mod-menu > li.mm-active > button::after,
.container-header .metismenu.mod-menu > li.mm-active > a::after,
.container-header .metismenu.mod-menu > li.open > button::after,
.container-header .metismenu.mod-menu > li.open > a::after,
.container-header .metismenu.mod-menu > li.deeper > button[aria-expanded="true"]::after,
.container-header .metismenu.mod-menu > li.parent > button[aria-expanded="true"]::after,
.container-header .metismenu.mod-menu > li.deeper > a[aria-expanded="true"]::after,
.container-header .metismenu.mod-menu > li.parent > a[aria-expanded="true"]::after {
    transform: rotate(-135deg) !important;
    top: 2px !important;
}

/* sicherstellen, dass der Menübutton den Pfeil nicht abschneidet */
.container-header .metismenu.mod-menu > li.deeper > button,
.container-header .metismenu.mod-menu > li.parent > button,
.container-header .metismenu.mod-menu > li.deeper > a,
.container-header .metismenu.mod-menu > li.parent > a {
    overflow: visible !important;
    display: inline-flex !important;
    align-items: center !important;
}

/* ---------------------------------------------------------
   Mobile Navigation: Hintergrund und Dropdown-Pfeil korrigieren
   --------------------------------------------------------- */

@media (max-width: 1200px) {

    /* mobiles Menü optisch ruhiger */
    .container-header .navbar-expand-lg .navbar-collapse.show,
    .container-header .navbar-expand-lg .navbar-collapse.collapsing {
        background: #173678 !important;
        box-shadow: 0 18px 35px rgba(0, 0, 0, 0.28) !important;
    }

    /* Menüeinträge */
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > a,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > button,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li > a,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li > button {
        color: #ffffff !important;
        background: transparent !important;
        text-decoration: none !important;
    }

    .container-header .navbar-collapse.show .metismenu.mod-menu > li > a:hover,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li > button:hover {
        background: rgba(255, 255, 255, 0.10) !important;
    }

    /* mobilen Dropdown-Pfeil sauber als Chevron nach unten darstellen */
    .container-header .navbar-collapse.show .metismenu.mod-menu > li.deeper > button::after,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li.parent > button::after,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li.deeper > button::after,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu > li.parent > button::after {
        content: "" !important;
        display: inline-block !important;

        width: 10px !important;
        height: 10px !important;
        margin-left: auto !important;

        border: 0 !important;
        border-right: 2px solid currentColor !important;
        border-bottom: 2px solid currentColor !important;

        background: transparent !important;
        box-sizing: border-box !important;

        position: relative !important;
        top: -2px !important;

        transform: rotate(45deg) !important;
        transform-origin: 50% 50% !important;

        opacity: 0.9;
        transition: transform 0.2s ease, top 0.2s ease;
    }

    /* geöffnet: Chevron nach oben */
    .container-header .navbar-collapse.show .metismenu.mod-menu > li.mm-active > button::after,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li.deeper > button[aria-expanded="true"]::after,
    .container-header .navbar-collapse.show .metismenu.mod-menu > li.parent > button[aria-expanded="true"]::after {
        transform: rotate(-135deg) !important;
        top: 3px !important;
    }

    /* Submenü im mobilen Menü etwas absetzen */
    .container-header .navbar-collapse.show .mod-menu__sub,
    .container-header .navbar-collapse.show .mm-collapse,
    .container-header .navbar-collapse.show .mm-collapsing {
        background: rgba(0, 0, 0, 0.16) !important;
    }
}


/* ---------------------------------------------------------
   Desktop-Dropdowns: rechtsbündig ausrichten, damit sie nicht aus dem Fenster laufen
   --------------------------------------------------------- */

@media (min-width: 1201px) {

    .container-header .metismenu.mod-menu > li {
        position: relative !important;
    }

    .container-header .metismenu.mod-menu > li > ul,
    .container-header .metismenu.mod-menu .mm-collapse,
    .container-header .metismenu.mod-menu .mm-collapsing,
    .container-header .metismenu.mod-menu .mod-menu__sub {
        left: auto !important;
        right: 0 !important;
        width: max-content !important;
        min-width: 270px !important;
        max-width: min(460px, calc(100vw - 40px)) !important;
        box-sizing: border-box !important;
    }

    .container-header .metismenu.mod-menu > li > ul a,
    .container-header .metismenu.mod-menu .mm-collapse a,
    .container-header .metismenu.mod-menu .mod-menu__sub a {
        white-space: normal !important;
        overflow-wrap: normal !important;
        hyphens: none !important;
    }
}


/* ---------------------------------------------------------
   Mobile Navigation: lange Submenütexte umbrechen,
   aber keine Worttrennung
   --------------------------------------------------------- */

@media (max-width: 1200px) {

    /* Submenü-Links mehrzeilig erlauben, aber nur an Leerzeichen umbrechen */
    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub a,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse a,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapsing a,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu .mod-menu__sub a,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu .mm-collapse a,
    .container-header .navbar-collapse.collapsing .metismenu.mod-menu .mm-collapsing a {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;

        white-space: normal !important;
        overflow: visible !important;
        text-overflow: clip !important;

        overflow-wrap: normal !important;
        word-break: normal !important;
        hyphens: none !important;
        -webkit-hyphens: none !important;
        -ms-hyphens: none !important;

        line-height: 1.35 !important;
        text-align: left !important;
    }

    /* Submenü bei langen Einträgen etwas großzügiger */
    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse {
        padding: 14px 24px 16px 24px !important;
    }

    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub li,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse li {
        width: 100% !important;
    }
}


/* ---------------------------------------------------------
   Mobile Navigation: Submenü-Flächen kompakter ausrichten
   --------------------------------------------------------- */

@media (max-width: 1200px) {

    /* Submenü-Box: weniger Innenabstand links/rechts */
    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse {
        padding: 14px 14px 16px 14px !important;
    }

    /* Submenü-Einträge: volle Breite nutzen */
    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub li,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse li {
        width: 100% !important;
    }

    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub a,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse a {
        display: block !important;
        width: 100% !important;
        box-sizing: border-box !important;

        padding: 12px 18px !important;
        border-radius: 6px !important;

        white-space: normal !important;
        overflow-wrap: normal !important;
        word-break: normal !important;
        hyphens: none !important;
        text-align: left !important;
    }

    /* Aktiver Submenüpunkt */
    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub li.active > a,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse li.active > a,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mod-menu__sub li.current > a,
    .container-header .navbar-collapse.show .metismenu.mod-menu .mm-collapse li.current > a {
        background: var(--held-blue) !important;
        color: #ffffff !important;
    }
}