/* ============================================================ */
/* MAIN.CSS – TECHNISCHES GERÜST */
/* ============================================================ */

/* ============================================================ */
/* 1. BOX MODEL */
/* ============================================================ */

*, *:before, *:after {
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
}

/* ============================================================ */
/* 2. CONTAINER */
/* ============================================================ */

.container {
    margin-left: auto;
    margin-right: auto;
    width: 60em;
}

.container.\31 25\25 {
    width: 100%;
    max-width: 75em;
    min-width: 60em;
}
.container.\37 5\25 { width: 45em; }
.container.\35 0\25 { width: 30em; }
.container.\32 5\25 { width: 15em; }

/* Container Responsive */
@media screen and (max-width: 1680px) {
    .container { width: 60em; }
    .container.\31 25\25 { width: 100%; max-width: 75em; min-width: 60em; }
    .container.\37 5\25 { width: 45em; }
    .container.\35 0\25 { width: 30em; }
    .container.\32 5\25 { width: 15em; }
}

@media screen and (max-width: 1280px) {
    .container { width: 60em; }
    .container.\31 25\25 { width: 100%; max-width: 75em; min-width: 60em; }
    .container.\37 5\25 { width: 45em; }
    .container.\35 0\25 { width: 30em; }
    .container.\32 5\25 { width: 15em; }
}

@media screen and (max-width: 980px) {
    .container { width: 90%; }
    .container.\31 25\25 { width: 100%; max-width: 112.5%; min-width: 90%; }
    .container.\37 5\25 { width: 67.5%; }
    .container.\35 0\25 { width: 45%; }
    .container.\32 5\25 { width: 22.5%; }
}

@media screen and (max-width: 840px) {
    .container { width: 90% !important; }
    .container.\31 25\25 { width: 100%; max-width: 112.5%; min-width: 90%; }
    .container.\37 5\25 { width: 67.5%; }
    .container.\35 0\25 { width: 45%; }
    .container.\32 5\25 { width: 22.5%; }
}

@media screen and (max-width: 736px) {
    .container { width: 100% !important; }
    .container.\31 25\25 { width: 100%; max-width: 125%; min-width: 100%; }
    .container.\37 5\25 { width: 75%; }
    .container.\35 0\25 { width: 50%; }
    .container.\32 5\25 { width: 25%; }
}

@media screen and (max-width: 480px) {
    .container { width: 100% !important; }
    .container.\31 25\25 { width: 100%; max-width: 125%; min-width: 100%; }
    .container.\37 5\25 { width: 75%; }
    .container.\35 0\25 { width: 50%; }
    .container.\32 5\25 { width: 25%; }
}

/* ============================================================ */
/* 3. GRID SYSTEM */
/* ============================================================ */

.row {
    border-bottom: solid 1px transparent;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    margin: 0 0 -1px -2em;
}

.row > * {
    float: left;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
    box-sizing: border-box;
    padding: 0 0 0 2em;
}

.row:after, .row:before {
    content: '';
    display: block;
    clear: both;
    height: 0;
}

.row.uniform > * > :first-child { margin-top: 0; }
.row.uniform > * > :last-child { margin-bottom: 0; }
.row.uniform > * { padding: 2em 0 0 2em; }
.row.uniform { margin: -2em 0 -1px -2em; }

.row.\30 \25 > * { padding: 0 0 0 0em; }
.row.\30 \25 { margin: 0 0 -1px 0em; }
.row.uniform.\30 \25 > * { padding: 0em 0 0 0em; }
.row.uniform.\30 \25 { margin: 0em 0 -1px 0em; }

.row.\32 00\25 > * { padding: 0 0 0 4em; }
.row.\32 00\25 { margin: 0 0 -1px -4em; }
.row.uniform.\32 00\25 > * { padding: 4em 0 0 4em; }
.row.uniform.\32 00\25 { margin: -4em 0 -1px -4em; }

.row.\31 50\25 > * { padding: 0 0 0 3em; }
.row.\31 50\25 { margin: 0 0 -1px -3em; }
.row.uniform.\31 50\25 > * { padding: 3em 0 0 3em; }
.row.uniform.\31 50\25 { margin: -3em 0 -1px -3em; }

.row.\35 0\25 > * { padding: 0 0 0 1em; }
.row.\35 0\25 { margin: 0 0 -1px -1em; }
.row.uniform.\35 0\25 > * { padding: 1em 0 0 1em; }
.row.uniform.\35 0\25 { margin: -1em 0 -1px -1em; }

.row.\32 5\25 > * { padding: 0 0 0 0.5em; }
.row.\32 5\25 { margin: 0 0 -1px -0.5em; }
.row.uniform.\32 5\25 > * { padding: 0.5em 0 0 0.5em; }
.row.uniform.\32 5\25 { margin: -0.5em 0 -1px -0.5em; }

/* Grid Spalten */
.\31 2u, .\31 2u\24 { width: 100%; clear: none; margin-left: 0; }
.\31 1u, .\31 1u\24 { width: 91.6666666667%; clear: none; margin-left: 0; }
.\31 0u, .\31 0u\24 { width: 83.3333333333%; clear: none; margin-left: 0; }
.\39 u, .\39 u\24 { width: 75%; clear: none; margin-left: 0; }
.\38 u, .\38 u\24 { width: 66.6666666667%; clear: none; margin-left: 0; }
.\37 u, .\37 u\24 { width: 58.3333333333%; clear: none; margin-left: 0; }
.\36 u, .\36 u\24 { width: 50%; clear: none; margin-left: 0; }
.\35 u, .\35 u\24 { width: 41.6666666667%; clear: none; margin-left: 0; }
.\34 u, .\34 u\24 { width: 33.3333333333%; clear: none; margin-left: 0; }
.\33 u, .\33 u\24 { width: 25%; clear: none; margin-left: 0; }
.\32 u, .\32 u\24 { width: 16.6666666667%; clear: none; margin-left: 0; }
.\31 u, .\31 u\24 { width: 8.3333333333%; clear: none; margin-left: 0; }

.\31 2u\24 + *, .\31 1u\24 + *, .\31 0u\24 + *, .\39 u\24 + *, .\38 u\24 + *, .\37 u\24 + *, .\36 u\24 + *, .\35 u\24 + *, .\34 u\24 + *, .\33 u\24 + *, .\32 u\24 + *, .\31 u\24 + * { clear: left; }

.\-11u { margin-left: 91.66667%; }
.\-10u { margin-left: 83.33333%; }
.\-9u { margin-left: 75%; }
.\-8u { margin-left: 66.66667%; }
.\-7u { margin-left: 58.33333%; }
.\-6u { margin-left: 50%; }
.\-5u { margin-left: 41.66667%; }
.\-4u { margin-left: 33.33333%; }
.\-3u { margin-left: 25%; }
.\-2u { margin-left: 16.66667%; }
.\-1u { margin-left: 8.33333%; }

/* Grid Responsive – gekürzt */
@media screen and (max-width: 1680px) {
    .row > * { padding: 0 0 0 2em; }
    .row { margin: 0 0 -1px -2em; }
    .row.uniform > * { padding: 2em 0 0 2em; }
    .row.uniform { margin: -2em 0 -1px -2em; }
    /* ... weitere Grid-Responsive-Regeln ... */
}

/* ============================================================ */
/* 4. KEYFRAMES */
/* ============================================================ */

@-moz-keyframes reveal-header { 0% { top: -5em; } 100% { top: 0; } }
@-webkit-keyframes reveal-header { 0% { top: -5em; } 100% { top: 0; } }
@-ms-keyframes reveal-header { 0% { top: -5em; } 100% { top: 0; } }
@keyframes reveal-header { 0% { top: -5em; } 100% { top: 0; } }

/* ============================================================ */
/* 5. SKIP LINK */
/* ============================================================ */

.skip-link {
    position: absolute;
    left: -9999px;
    top: auto;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.skip-link:focus {
    position: absolute;
    left: 1.25em;
    top: 0.5em;
    width: auto;
    height: auto;
    padding: 0.5em 1em;
    background: var(--color-black);
    color: var(--color-white);
    z-index: 10001;
    clip: auto;
    white-space: normal;
    border-radius: 4px;
    text-decoration: none;
}

/* ============================================================ */
/* 6. HEADER (TECHNISCH) – position: fixed KOMMT HIERHER! */
/* ============================================================ */

#page-wrapper {
    padding-top: 3em;
}

body.landing #page-wrapper,
body.subpage #page-wrapper {
    padding-top: 0;
}

#header {
    height: 3.25em;
    left: 0;
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 10000;
}

#header #logo {
    position: absolute;
    top: 0;
    left: 1.25em;
    height: 3.25em;
    line-height: 3.25em;
    text-decoration: none;
}

#header nav {
    height: inherit;
    line-height: inherit;
    position: absolute;
    right: 0.75em;
    top: 0;
    vertical-align: middle;
}

#header nav > ul {
    list-style: none;
    margin: 0;
    padding-left: 0;
}

#header nav > ul > li {
    display: inline-block;
    padding-left: 0;
}

#header nav > ul > li > ul { display: none; }

#header nav > ul > li a {
    display: inline-block;
    height: 2em;
    line-height: 1.95em;
    padding: 0 1em;
    border-radius: 6px;
}

#header nav > ul > li a:not(.button) {
    display: inline-block;
    text-decoration: none;
    border: 0;
}

#header nav > ul > li a:not(.button).icon:before {
    margin-right: 0.5em;
}

#header nav > ul > li:first-child { margin-left: 0; }

#header nav > ul > li .button {
    margin: 0 0 0 0.5em;
    position: relative;
}

#header .container { position: relative; }
#header .container h1 { left: 0; }
#header .container nav { right: 0; }

#header.reveal {
    -moz-animation: reveal-header 0.5s;
    -webkit-animation: reveal-header 0.5s;
    -ms-animation: reveal-header 0.5s;
    animation: reveal-header 0.5s;
}

#header.alt {
    -moz-animation: none;
    -webkit-animation: none;
    -ms-animation: none;
    animation: none;
    position: absolute;
}

/* ============================================================ */
/* 7. DROPOTRON (TECHNISCH) */
/* ============================================================ */

.dropotron {
    list-style: none;
    margin: calc(-0.5em + 1px) 0 0 1px;
    padding: 0.5em 0;
    width: 11em;
}

.dropotron li { padding: 0; }

.dropotron li a, .dropotron li span {
    -moz-transition: none;
    -webkit-transition: none;
    -ms-transition: none;
    transition: none;
    border: 0;
    display: block;
    padding: 0.15em 1em;
}

.dropotron li:first-child > a,
.dropotron li:first-child > span {
    border-top: 0;
}

.dropotron.level-0 {
    font-size: 0.9em;
    margin: 1em 0 0 0;
}

.dropotron.level-0:before {
    -moz-transform: rotate(45deg);
    -webkit-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    transform: rotate(45deg);
    content: '';
    display: block;
    height: 0.75em;
    position: absolute;
    right: 1.25em;
    top: -0.375em;
    width: 0.75em;
    z-index: 0;
}

/* ============================================================ */
/* 8. BANNER (TECHNISCH) */
/* ============================================================ */

/* 
 * BANNER – Z-INDEX-STACK (VON UNTEN NACH OBEN)
 * 1. #banner                    → z-index: 1
 * 2. .banner .image.featured   → z-index: 0
 * 3. .banner::after             → z-index: 1
 * 4. .banner h1, h2, p, .box   → z-index: 2
 * 5. .banner .button            → z-index: 2
 * 6. #main                      → z-index: 3
 * 7. #header                    → z-index: 10000
 */

#banner {
    background-attachment: scroll, fixed;
    background-position: top left, center center;
    background-repeat: repeat, no-repeat;
    background-size: auto, cover;
    padding: 12em 0 20em 0;
    text-align: center;
    position: relative;
    z-index: 1;
}

#banner :last-child { margin-bottom: 0; }

#banner .inner {
    max-width: 80em;
    margin-left: auto;
    margin-right: auto;
    text-align: center;
}

.banner {
    position: relative;
    overflow: hidden;
    z-index: 0;
}

.banner .image.featured {
    position: absolute;
    inset: 0;
    z-index: 0;
}

.banner .image.featured img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.banner::after {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 90em;
    height: 100%;
    pointer-events: none;
    z-index: 1;
}

.banner h1, .banner h2, .banner h3, .banner h4, .banner h5, .banner h6,
.banner p, .banner .box {
    position: relative;
    z-index: 2;
}

.banner ul.actions,
.banner ul.actions li,
.banner ul.actions li .button,
.banner .button {
    position: relative;
    z-index: 2;
}

.banner ul.actions { margin-top: 2.5em; }

/* ============================================================ */
/* 9. MAIN (TECHNISCH) */
/* ============================================================ */

#main {
    padding: 4em 0;
    position: relative;
    z-index: 3;
}

#main > header {
    text-align: center;
    margin: 0 0 3em 0;
}

body.landing #main {
    margin-top: -14em;
    position: relative;
    z-index: 3;
}

body.subpage #main {
    margin-top: -10em;
    position: relative;
    z-index: 3;
}

body.subpage #banner {
    background-image: none !important;
    background-color: transparent !important;
    background-attachment: initial !important;
    background-repeat: initial !important;
    background-size: initial !important;
    padding: 6em 0 12em 0 !important;
}

body.subpage #banner:before {
    background: none !important;
}

/* ============================================================ */
/* 10. FOOTER (TECHNISCH) */
/* ============================================================ */

#footer {
    padding: 2em 0 2em 0;
    text-align: center;
    position: relative;
    z-index: 1;
}

#footer .footer-spacer {
    display: block;
    height: 1em;
    border-left: 0 !important;
    margin-left: 0 !important;
    padding-left: 0 !important;
}

#footer .footer-copy {
    display: inline-block;
    margin-top: 1.5em;
    font-size: 0.9em;
    line-height: 1em;
    padding: 0;
    text-align: center;
}

#footer .copyright {
    font-size: 0.9em;
    line-height: 1em;
    margin: 2em 0 0 0;
    padding: 0;
    text-align: center;
}

#footer .copyright li {
    display: inline-block;
    list-style: none;
    margin-left: 1em;
    padding-left: 1em;
}

#footer .copyright li:first-child {
    border-left: 0;
    margin-left: 0;
    padding-left: 0;
}

/* ============================================================ */
/* 11. CTA (TECHNISCH) */
/* ============================================================ */

#cta {
    padding: 3.5em 0 4em 0;
    text-align: center;
    width: 100%;
    display: block;
    position: relative;
    z-index: 1;
}

#cta ul.actions li {
    border-left: 0 !important;
    margin-left: 0 !important;
    padding-left: 0 !important;
    display: block !important;
}

#cta form {
    margin: 0 auto;
    max-width: 100%;
    width: 25em;
}

/* ============================================================ */
/* 12. MOBILE NAVIGATION (TECHNISCH) */
/* ============================================================ */

#navPanel, #navButton {
    display: none;
}

#navPanel {
    transform: translateX(14em);
    transition: transform 0.25s ease;
    z-index: 10001;
}

body.navPanel-visible #navPanel {
    transform: translateX(0);
}

#navButton {
    transition: opacity 0.25s ease;
    z-index: 10002;
}

body.navPanel-visible #navButton {
    opacity: 0.25;
}

@media screen and (max-width: 840px) {
    html, body {
        overflow-x: hidden;
    }
    #page-wrapper {
        padding-top: 0;
    }
    #header {
        display: none !important;
    }
    #navPanel, #navButton {
        display: block !important;
    }
}

/* ============================================================ */
/* 13. JS STATE CLASSES */
/* ============================================================ */

body.is-preload * {
    transition: none !important;
}

body.is-preload #main,
body.is-preload #header,
body.is-preload #footer {
    opacity: 0;
}

body.is-preload .fade-in,
body.is-preload .slide-up {
    opacity: 0;
    transform: none;
}

body.is-preload #header {
    transform: translateY(-2em);
    transition: opacity 0.75s ease, transform 0.75s ease;
}

body:not(.is-preload) #header {
    transform: translateY(0);
}

/* ============================================================ */
/* 14. EQUAL HEIGHT BOXES */
/* ============================================================ */

/*@media screen and (min-width: 841px) {
    .row {
        display: flex;
        align-items: stretch;
    }
    .row > div {
        display: flex;
    }
    .row > div .box.special {
        display: flex;
        flex-direction: column;
        height: 100%;
    }
}*/

/* ============================================================ */
/* 14. A   EQUAL HEIGHT BOXES – AB 950px 2 SPALTEN */
/* ============================================================ */

@media screen and (min-width: 950px) {
    .row {
        display: flex;
        align-items: stretch;
    }

    .row > div {
        display: flex;
        width: 50%;
    }

    .row > div .box.special {
        display: flex;
        flex-direction: column;
        height: 100%;
    }
}

@media screen and (max-width: 949px) {
    .row {
        display: block !important;
    }
    
    .row > div {
        display: block !important;
        width: 100% !important;
    }
    
    .row > div .box.special {
        display: block !important;
        height: auto !important;
    }
}



/* ============================================================ */
/* 15. MEDIA QUERIES (TECHNISCH) */
/* ============================================================ */

@media screen and (max-width: 1680px) {
    #banner { padding: 10em 0 18em 0; }
}

@media screen and (max-width: 1280px) {
    .dropotron.level-0 { font-size: 1em; }
    #banner { background-attachment: scroll; }
}

@media screen and (max-width: 840px) {
    html, body { overflow-x: hidden; }
    #page-wrapper { padding-top: 0; }
    #header { display: none; }
    #navPanel, #navButton { display: block; }
}

@media screen and (max-width: 736px) {
    body.landing #main { padding: 0; margin-top: 0; }
    body.subpage #main { padding: 0; margin-top: 0; }
}

@media screen and (max-width: 480px) {
    html, body { min-width: 320px; }
}