@font-face { font-family: "Source Serif 4"; src: url("/assets/fonts/SourceSerif4-Variable.woff2") format("woff2"); font-weight: 200 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Source Serif 4"; src: url("/assets/fonts/SourceSerif4-Variable-Italic.woff2") format("woff2"); font-weight: 200 900; font-style: italic; font-display: swap; }
@font-face { font-family: "Mona Sans"; src: url("/assets/fonts/MonaSans-Variable.woff2") format("woff2"); font-weight: 200 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Mona Sans"; src: url("/assets/fonts/MonaSans-Variable-Italic.woff2") format("woff2"); font-weight: 200 900; font-style: italic; font-display: swap; }
@font-face { font-family: "Material Icons"; src: url("/assets/fonts/material-icons.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: block; }

.material-icons {
    font-family: "Material Icons"; font-weight: normal; font-style: normal; font-size: 1.5rem; line-height: 1;
    letter-spacing: normal; text-transform: none; display: inline-block; white-space: nowrap; word-wrap: normal;
    direction: ltr; -webkit-font-smoothing: antialiased; font-feature-settings: "liga";
}

:root {
    --font-hero: "Source Serif 4", Georgia, "Times New Roman", serif;
    --font-heading: "Source Serif 4", Georgia, "Times New Roman", serif;
    --font-body: "Mona Sans", "Segoe UI", system-ui, -apple-system, sans-serif;
    --accent: #7811A0;
    --accent-hover: #5E167E;
    --accent-inverse: #B586CE;
    --surface-inverse: #120F2C;
    --surface-tint: #F3E6FB;
    --plus: var(--accent);
    --radius: 0.5rem;

    --bs-body-font-family: var(--font-body);
    --bs-body-font-size: clamp(1.0625rem, 1rem + 0.2vw, 1.125rem);
    --bs-body-line-height: 1.556;
    --bs-body-color: #2A2A2A;
    --bs-body-color-rgb: 42, 42, 42;
    --bs-body-bg: #FFFFFF;
    --bs-heading-color: #120F2C;
    --bs-primary: #7811A0;
    --bs-primary-rgb: 120, 17, 160;
    --bs-link-color: #7811A0;
    --bs-link-color-rgb: 120, 17, 160;
    --bs-link-hover-color: #5E167E;
    --bs-link-hover-color-rgb: 94, 22, 126;
    --bs-secondary-color: #696A6A;
    --bs-secondary-color-rgb: 105, 106, 106;
    --bs-tertiary-bg: #F2F2F2;
    --bs-tertiary-bg-rgb: 242, 242, 242;
    --bs-border-color: #E6E6E6;
    --bs-border-radius: var(--radius);
    --bs-border-radius-sm: var(--radius);
    --bs-border-radius-lg: var(--radius);
    --bs-border-radius-xl: var(--radius);
    --bs-border-radius-xxl: var(--radius);
    --bs-highlight-bg: #E0C6F2;
}

[data-bs-theme="dark"] {
    color: var(--bs-body-color);
    --plus: var(--accent-inverse);
    --bs-body-color: #FFFFFF;
    --bs-body-color-rgb: 255, 255, 255;
    --bs-heading-color: #FFFFFF;
    --bs-link-color: #B586CE;
    --bs-link-color-rgb: 181, 134, 206;
    --bs-link-hover-color: #FFFFFF;
    --bs-link-hover-color-rgb: 255, 255, 255;
    --bs-secondary-color: #D9D9D9;
    --bs-secondary-color-rgb: 217, 217, 217;
    --bs-tertiary-bg: #424650;
    --bs-tertiary-bg-rgb: 66, 70, 80;
    --bs-border-color: #424650;
}

body { -webkit-font-smoothing: antialiased; }

a:not([class]), .link-text { color: var(--bs-link-color); text-decoration: none; }
a:not([class]):visited, a:not([class]):focus, .link-text:visited, .link-text:focus { color: var(--bs-link-color); }
a:not([class]):hover, .link-text:hover { color: var(--bs-link-color); text-decoration: underline; }

@media (min-width: 992px) {
    a[href^="tel:"], a[href^="tel:"]:hover, a[href^="tel:"]:focus, a[href^="tel:"]:visited {
        color: inherit; text-decoration: none; cursor: text; pointer-events: none;
    }
    .icon-text-link[href^="tel:"]:hover span { text-decoration: none !important; }
}
::selection { background: #E0C6F2; color: #120F2C; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
[data-bs-theme="dark"] :focus-visible { outline-color: var(--accent-inverse); }
.btn:focus-visible, .form-control:focus-visible, .form-check-input:focus-visible { box-shadow: none; }

h1, h2, h3, h4, h5, h6,
.h1-heading, .h2-heading, .h3-heading, .h4-heading, .h5-heading,
.hero-heading {
    text-wrap: balance;
}

h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); font-weight: 400; }
.hero-heading { font-family: var(--font-hero); font-size: clamp(2.125rem, 1.6rem + 3vw, 4rem); line-height: 1.1; font-weight: 380; letter-spacing: -0.015em; hyphens: auto; overflow-wrap: break-word; }
h1, .h1-heading { font-size: clamp(1.875rem, 1.4rem + 1.9vw, 3rem); line-height: 1.17; letter-spacing: -0.01em; hyphens: auto; overflow-wrap: break-word; }
h2, .h2-heading { font-size: clamp(1.75rem, 1.3rem + 1.2vw, 2.5rem); line-height: 1.2; letter-spacing: -0.01em; hyphens: auto; overflow-wrap: break-word; }
h3, .h3-heading { font-size: clamp(1.5rem, 1.3rem + 0.4vw, 1.75rem); line-height: 1.28; font-weight: 450; }
h4, .h4-heading { font-family: var(--font-body); font-size: clamp(1.125rem, 1.05rem + 0.3vw, 1.25rem); line-height: 1.4; font-weight: 600; }
h5, .h5-heading { font-family: var(--font-body); font-size: clamp(0.8125rem, 0.78rem + 0.1vw, 0.875rem); line-height: 1.2; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; }
.h1-heading, .h2-heading, .h3-heading, .h4-heading, .h5-heading, .hero-heading { color: var(--bs-heading-color); }

.lead { font-size: clamp(1.1875rem, 1.05rem + 0.3vw, 1.375rem); font-weight: 500; line-height: 1.45; text-wrap: balance; }
.small, small { font-size: clamp(0.8125rem, 0.78rem + 0.1vw, 0.875rem); }
.measure { max-width: 45rem; }
.measure-wide { max-width: 62.5rem; }

.section { padding-block: clamp(4rem, 3rem + 4vw, 6rem); }
.bg-inverse { background-color: var(--surface-inverse); }
.bg-tint { background-color: var(--surface-tint); }
.bg-footer { background-color: #424650; --bs-border-color: #696A6A; }

.eyebrow {
    display: inline-flex; align-items: center; gap: 0.625rem;
    font-size: clamp(0.75rem, 0.72rem + 0.1vw, 0.8125rem); line-height: 1.4; font-weight: 600;
    letter-spacing: 0.12em; text-transform: uppercase; color: var(--plus);
}
.eyebrow::before {
    content: ""; flex: none; width: 12px; height: 12px;
    background: linear-gradient(var(--plus), var(--plus)) center / 12px 2px no-repeat,
                linear-gradient(var(--plus), var(--plus)) center / 2px 12px no-repeat;
}

.btn {
    --bs-btn-border-radius: var(--radius);
    --bs-btn-padding-x: 1.5rem;
    --bs-btn-padding-y: 0.625rem;
    --bs-btn-font-size: clamp(0.9375rem, 0.9rem + 0.1vw, 1rem);
    --bs-btn-font-weight: 600;
    --bs-btn-border-width: 2px;
    --bs-btn-line-height: 1.5;
}
.btn-primary {
    --bs-btn-color: #FFFFFF; --bs-btn-bg: #7811A0; --bs-btn-border-color: #7811A0;
    --bs-btn-hover-color: #FFFFFF; --bs-btn-hover-bg: #5E167E; --bs-btn-hover-border-color: #5E167E;
    --bs-btn-active-color: #FFFFFF; --bs-btn-active-bg: #5E167E; --bs-btn-active-border-color: #5E167E;
}
.btn-outline-dark {
    --bs-btn-color: #120F2C; --bs-btn-border-color: #120F2C;
    --bs-btn-hover-color: #FFFFFF; --bs-btn-hover-bg: #120F2C; --bs-btn-hover-border-color: #120F2C;
    --bs-btn-active-color: #FFFFFF; --bs-btn-active-bg: #120F2C; --bs-btn-active-border-color: #120F2C;
}
[data-bs-theme="dark"] .btn-primary {
    --bs-btn-color: #120F2C; --bs-btn-bg: #B586CE; --bs-btn-border-color: #B586CE;
    --bs-btn-hover-color: #120F2C; --bs-btn-hover-bg: #FFFFFF; --bs-btn-hover-border-color: #FFFFFF;
    --bs-btn-active-color: #120F2C; --bs-btn-active-bg: #FFFFFF; --bs-btn-active-border-color: #FFFFFF;
}
.btn-outline-light {
    --bs-btn-color: #FFFFFF; --bs-btn-border-color: #FFFFFF;
    --bs-btn-hover-color: #120F2C; --bs-btn-hover-bg: #FFFFFF; --bs-btn-hover-border-color: #FFFFFF;
    --bs-btn-active-color: #120F2C; --bs-btn-active-bg: #FFFFFF; --bs-btn-active-border-color: #FFFFFF;
}

.navbar {
    --bs-navbar-color: #120F2C;
    --bs-navbar-hover-color: #7811A0;
    --bs-navbar-active-color: #7811A0;
    --bs-navbar-nav-link-padding-x: 0;
    --bs-navbar-padding-y: 1rem;
    min-height: 4.5rem;
}
.navbar .nav-link { font-weight: 500; font-size: clamp(0.9375rem, 0.9rem + 0.1vw, 1rem); }
.navbar-brand img { height: 3.25rem; width: auto; }
@media (min-width: 992px) {
    .navbar { min-height: 6.5rem; }
    .navbar-brand img { height: 4rem; }
}

.navbar .navbar-toggler { width: 2.5rem; height: 2.5rem; }
.navbar .navbar-toggler:hover { color: var(--bs-navbar-color); background-color: transparent; }
.navbar .navbar-toggler:focus { box-shadow: none; }
.navbar .navbar-toggler:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.burger { position: relative; display: block; width: 1.375rem; height: 1rem; }
.burger span {
    position: absolute; left: 0; width: 100%; height: 2px; border-radius: 2px;
    background-color: currentColor;
    transition: top 0.3s ease, transform 0.3s ease, opacity 0.2s ease;
}
.burger span:nth-child(1) { top: 0; }
.burger span:nth-child(2) { top: calc(50% - 1px); }
.burger span:nth-child(3) { top: calc(100% - 2px); }

.navbar-toggler[aria-expanded="true"] .burger span:nth-child(1) { top: calc(50% - 1px); transform: rotate(45deg); }
.navbar-toggler[aria-expanded="true"] .burger span:nth-child(2) { opacity: 0; }
.navbar-toggler[aria-expanded="true"] .burger span:nth-child(3) { top: calc(50% - 1px); transform: rotate(-45deg); }

.form-control {
    --bs-body-bg: #FFFFFF;
    --bs-body-color: #2A2A2A;
    --bs-secondary-color: #696A6A;
    --bs-border-color: #696A6A;
    --bs-border-radius: var(--radius);
    font-size: clamp(1rem, 0.95rem + 0.15vw, 1.0625rem);
}
.form-control:focus { border-color: var(--accent); box-shadow: none; outline: 2px solid var(--accent-inverse); outline-offset: 0; }
.form-control:focus::placeholder {
    color: transparent;
}
.form-label { font-weight: 600; font-size: clamp(0.875rem, 0.85rem + 0.1vw, 0.9375rem); }
.form-check-input { --bs-border-radius: 4px; border-radius: 4px; }
.form-check-input:checked { background-color: var(--accent-inverse); border-color: var(--accent-inverse); }

.footer-logo { height: 4.5rem; width: auto; }

@media (prefers-reduced-motion: reduce) {
    .burger span { transition: none; }
}

.icon-text-link:hover span:not(.material-icons) { text-decoration: underline; }

.link-sweep span {
    background: linear-gradient(currentColor, currentColor) left bottom / 0 1px no-repeat;
    padding-bottom: 2px;
    transition: background-size 0.3s ease;
}
.link-sweep:hover span, .link-sweep:focus-visible span { background-size: 100% 1px; }
@media (prefers-reduced-motion: reduce) { .link-sweep span { transition: none; } }

.link-sweep .bi { position: relative; top: -0.3em; }

.form-card button[type="submit"] .bi { display: inline-block; position: relative; top: 0.1em; transition: transform 0.25s ease; }
.form-card button[type="submit"]:hover .bi, .form-card button[type="submit"]:focus-visible .bi { transform: translate(0.2em, -0.15em) rotate(-45deg); }
@media (prefers-reduced-motion: reduce) { .form-card button[type="submit"] .bi { transition: none; } }

@media (min-width: 1200px) {
    .hero-stack { display: grid; }
    .hero-stack > * { grid-area: 1 / 1; }
    .hero-content { align-self: start; height: min(100%, max(calc(100svh - 6.5rem), 34rem)); }
}

.back-to-top {
    width: 3rem; height: 3rem; right: 2rem; bottom: 2rem;
    visibility: hidden;
    transform: translateY(calc(100% + 2rem));
    transition: transform 0.35s ease-in, visibility 0s linear 0.35s;
}
.back-to-top.is-visible {
    visibility: visible;
    transform: none;
    transition: visibility 0s;
    animation: back-to-top-bounce 0.7s ease-out;
}
@keyframes back-to-top-bounce {
    0% { transform: translateY(calc(100% + 2rem)); }
    55% { transform: translateY(-14px); }
    75% { transform: translateY(4px); }
    90% { transform: translateY(-3px); }
    100% { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    .back-to-top, .back-to-top.is-visible { transition: none; animation: none; }
}
.back-to-top .bi { line-height: 1; }

/* Soziale Schnellzugriffe über dem Back-to-top-Button */
.social-fab {
    position: fixed; right: 2rem; bottom: 5.75rem; z-index: 1030;
    display: flex; flex-direction: column; gap: 0.75rem;
}
.social-fab a {
    width: 3rem; height: 3rem;
    visibility: hidden;
    transform: translateY(16rem);
    transition: transform 0.35s ease-in, visibility 0s linear 0.35s;
}
.social-fab a:nth-child(3) { transition-delay: 0.04s, 0.39s; }
.social-fab a:nth-child(2) { transition-delay: 0.08s, 0.43s; }
.social-fab a:nth-child(1) { transition-delay: 0.12s, 0.47s; }
.social-fab.is-visible a {
    visibility: visible;
    transform: none;
    transition: visibility 0s;
    animation: social-fab-bounce 0.7s ease-out backwards;
}
.social-fab.is-visible a:nth-child(4) { animation-delay: 0.05s; }
.social-fab.is-visible a:nth-child(3) { animation-delay: 0.12s; }
.social-fab.is-visible a:nth-child(2) { animation-delay: 0.19s; }
.social-fab.is-visible a:nth-child(1) { animation-delay: 0.26s; }
@keyframes social-fab-bounce {
    0% { transform: translateY(16rem); }
    55% { transform: translateY(-14px); }
    75% { transform: translateY(4px); }
    90% { transform: translateY(-3px); }
    100% { transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
    .social-fab a, .social-fab.is-visible a { transition: none; animation: none; }
}
.social-fab .bi { line-height: 1; }

.logo-ref { max-width: 100%; max-height: 3rem; width: auto; height: auto; }

.step { position: relative; border-top: 2px solid var(--bs-heading-color); }
.step::before { content: ""; position: absolute; top: -9px; left: 0; width: 16px; height: 16px; background: var(--accent); border-radius: 4px; }
.step .eyebrow::before { display: none; }
.step-tag { border: 1px solid var(--accent-inverse); color: var(--accent); max-width: 100%; border-radius: 6px; }

.split-media { height: auto; }
@media (min-width: 992px) {
    .split-text { max-width: 50rem; margin: 0; padding: 0; }
    .split-col-media { flex: 0 0 auto; width: 40%; }
    .split-col-text { flex: 0 0 auto; width: 60%; padding-inline: clamp(4rem, 3rem + 4vw, 6rem); }
    .split-media { position: absolute; inset: 0; height: 100%; }
}

/* Unterseiten */
.navbar .nav-link { position: relative; display: inline-block; }
.navbar .nav-link::after { content: ""; position: absolute; left: 0; bottom: 0.25rem; width: 100%; height: 2px; background: currentColor; transform: scaleX(0); transform-origin: left center; transition: transform 0.3s ease; }
.navbar .nav-link:hover::after, .navbar .nav-link:focus-visible::after { transform: scaleX(1); }
.navbar .nav-link.active { color: var(--accent); }
.navbar .nav-link.active::after { transform: scaleX(1); }
@media (prefers-reduced-motion: reduce) { .navbar .nav-link::after { transition: none; } }

.img-placeholder { border-radius: var(--radius); background: #E6E6E6; color: #696A6A; font-size: clamp(0.8125rem, 0.78rem + 0.1vw, 0.875rem); font-weight: 600; text-align: center; }
.hero-page-bg { position: absolute; inset: 0; display: flex; align-items: flex-start; justify-content: flex-end; background: linear-gradient(135deg, #2A2F6B, #120F2C); color: #B586CE; font-size: 0.875rem; font-weight: 600; }
.hero-page-bg > span { padding: 1.5rem; }
.hero-page-overlay { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(18,15,44,.85), rgba(18,15,44,.35)); }
.hero-page-content { min-height: 650px; padding-block: 3rem; }
@media (min-width: 992px) { .hero-page-content { height: 650px; padding-block: 0; } }

.chip { border-radius: 6px; border: 1px solid var(--bs-heading-color); padding: 0.375rem 1rem; font-size: clamp(0.875rem, 0.85rem + 0.1vw, 0.9375rem); font-weight: 500; }
.chip-light { background: #FFFFFF; }

.card-guide { background: #FFFFFF; border: 1px solid var(--bs-border-color); border-radius: var(--radius); overflow: hidden; }

.ratio-3x2 { --bs-aspect-ratio: 66.6667%; }
.leistung-list > li { position: relative; padding: 1.5rem 0 1.5rem 1.75rem; border-bottom: 1px solid var(--bs-border-color); }
.leistung-list > li::before { content: ""; position: absolute; left: 0; top: 1.95rem; width: 0.75rem; height: 0.75rem; background: var(--accent); }
.leistung-list h4 { margin-bottom: 0.5rem; }
.leistung-list p { color: var(--bs-secondary-color); }

.leistungen-acc { border-bottom: 1px solid var(--accent); --peek: 12rem; }
.acc-inner { max-width: 50rem; display: flow-root; }
.acc-inner:has(.leistung-list) { max-width: none; }
.acc-head { margin: 0; font-family: var(--font-body); font-size: inherit; }
.acc-toggle { display: flex; align-items: center; justify-content: space-between; gap: 1rem; width: 100%; padding: 1.25rem 0; background: none; border: 0; color: var(--accent); font-size: clamp(0.75rem, 0.72rem + 0.1vw, 0.8125rem); font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; cursor: pointer; }
.acc-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.acc-toggle:hover .acc-label { text-decoration: underline; text-underline-offset: 0.35em; }
.acc-chevron { font-size: 1rem; transition: transform 0.3s ease; }
.acc-toggle[aria-expanded="true"] .acc-chevron { transform: rotate(180deg); }
.leistungen-acc.is-enhanced .acc-panel { overflow: hidden; height: var(--peek); transition: height 0.4s ease; }
.leistungen-acc.is-enhanced .acc-panel.is-closed { -webkit-mask-image: linear-gradient(#000 35%, transparent); mask-image: linear-gradient(#000 35%, transparent); }
.leistungen-acc.is-short .acc-toggle { display: none; }
.leistungen-acc.is-short { border-bottom: 0; }
@media (prefers-reduced-motion: reduce) { .leistungen-acc.is-enhanced .acc-panel, .acc-chevron { transition: none; } }
.eyebrow-heading { font-family: var(--font-body); font-weight: 600; margin: 0; letter-spacing: 0.12em; }

.info-box { background: var(--surface-tint); border-radius: var(--radius); padding: 1.5rem 1.75rem; margin-bottom: 3rem; }
.info-box-label { color: var(--accent); }

.pathway-list > li { color: var(--bs-primary); padding: 0.625rem 0; border-bottom: 1px solid var(--bs-border-color); }
.pathway-list > li:first-child { border-top: 1px solid var(--bs-border-color); }
.card-guide .h5-heading { color: var(--accent); }

.card-guide .img-placeholder { border-radius: 0; }
.rounded { border-radius: var(--radius) !important; }

.project-media { min-height: 16rem; border-radius: 0; }
.logo-project { max-width: 70%; max-height: 4.5rem; width: auto; height: auto; }
.img-placeholder-text { color: #696A6A; font-size: clamp(0.8125rem, 0.78rem + 0.1vw, 0.875rem); font-weight: 600; text-align: center; padding: 1rem; }
.tag-pill { background: var(--surface-tint); color: var(--accent); border-radius: 999px; padding: 0.25rem 0.75rem; font-size: clamp(0.8125rem, 0.78rem + 0.1vw, 0.875rem); font-weight: 500; }
.eyebrow-centered { justify-content: center; }

.ratio-5x2 { --bs-aspect-ratio: 40%; }
.ratio-3x4 { --bs-aspect-ratio: 133.3333%; }
.h5-heading-plain { font-family: var(--font-body); font-size: clamp(1rem, 0.95rem + 0.15vw, 1.0625rem); font-weight: 600; line-height: 1.3; }
.partner-logo { background: #FFFFFF; border-bottom: 1px solid var(--bs-border-color); }
.partner-logo-img { max-width: 100%; max-height: 85%; width: auto; height: auto; object-fit: contain; }
.cv-item { padding-block: 1.75rem; border-bottom: 1px solid var(--bs-border-color); }
.cv-item:first-child { border-top: 1px solid var(--bs-heading-color); }
.cv-date { font-family: var(--font-heading); font-size: clamp(1.0625rem, 1rem + 0.2vw, 1.1875rem); font-weight: 450; color: var(--accent); }
.fact-box { background: var(--bs-tertiary-bg); border-radius: var(--radius); padding: 1.5rem; }
.plus-mark { color: var(--plus); }
.value-card { background: var(--accent); color: #FFFFFF; border-radius: var(--radius); padding: 2rem 1.5rem; --bs-heading-color: #FFFFFF; }
.value-card h3 { color: #FFFFFF; margin-top: 0.75rem; }
.value-num { display: block; font-family: var(--font-heading); font-size: clamp(2.5rem, 2rem + 2vw, 3.5rem); line-height: 1; }
.acc-inner:has(.cv-list) { max-width: none; }

.contact-card { background: #FFFFFF; border: 1px solid var(--bs-border-color); border-radius: var(--radius); overflow: hidden; }
.contact-portrait { aspect-ratio: 3 / 4; width: 6rem; height: auto; border-radius: var(--radius); font-size: 0.75rem; text-align: center; }
.contact-sep { border-top: 1px solid var(--bs-border-color); }
.chip-link { color: var(--accent); border-color: var(--accent); background: #FFFFFF; }
.chip-link:hover { background: var(--accent); color: #FFFFFF; }
.contact-vcard { background: var(--accent); color: #FFFFFF; }
.contact-vcard .small { color: #FFFFFF; }
.qr-placeholder { background: #FFFFFF; color: #696A6A; font-size: 0.6875rem; font-weight: 600; text-align: center; border-radius: 6px; }
.form-card { background: var(--surface-tint); border-radius: var(--radius); padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); }
.form-select { --bs-border-color: #696A6A; border-color: #696A6A; border-radius: var(--radius); font-size: clamp(1rem, 0.95rem + 0.15vw, 1.0625rem); }
.form-select:focus { border-color: var(--accent); box-shadow: none; outline: 2px solid var(--accent-inverse); outline-offset: 0; }
.form-card .form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }
.captcha-placeholder { border: 1px dashed #696A6A; border-radius: var(--radius); padding: 1rem; font-size: 0.75rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; text-align: center; color: #696A6A; }
.form-check-label { font-size: clamp(0.875rem, 0.85rem + 0.1vw, 0.9375rem); line-height: 1.5; }

/* Heller Bereich innerhalb einer dunklen Sektion (z. B. Formularkarte) */
[data-bs-theme="light"] {
    color: var(--bs-body-color);
    --plus: var(--accent);
    --bs-body-color: #2A2A2A;
    --bs-body-color-rgb: 42, 42, 42;
    --bs-heading-color: #120F2C;
    --bs-link-color: #7811A0;
    --bs-link-color-rgb: 120, 17, 160;
    --bs-link-hover-color: #5E167E;
    --bs-link-hover-color-rgb: 94, 22, 126;
    --bs-secondary-color: #696A6A;
    --bs-secondary-color-rgb: 105, 106, 106;
    --bs-tertiary-bg: #F2F2F2;
    --bs-tertiary-bg-rgb: 242, 242, 242;
    --bs-border-color: #E6E6E6;
}
[data-bs-theme="light"] .btn-primary {
    --bs-btn-color: #FFFFFF; --bs-btn-bg: #7811A0; --bs-btn-border-color: #7811A0;
    --bs-btn-hover-color: #FFFFFF; --bs-btn-hover-bg: #5E167E; --bs-btn-hover-border-color: #5E167E;
    --bs-btn-active-color: #FFFFFF; --bs-btn-active-bg: #5E167E; --bs-btn-active-border-color: #5E167E;
}
[data-bs-theme="light"] :focus-visible { outline-color: var(--accent); }
[data-bs-theme="light"] .form-check-input:checked { background-color: var(--accent); border-color: var(--accent); }

.hero-page-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: var(--hero-pos-mobile, 65% center); }
@media (min-width: 768px) { .hero-page-img { object-position: var(--hero-pos, 65% center); } }

/* Auf schmalen Bildschirmen darf der große Spaltenabstand (g-5) nicht über den Container hinausragen */
@media (max-width: 575.98px) {
    .g-5, .gx-5 { --bs-gutter-x: 1.5rem; }
}

/* Mehr Rand links und rechts auf Handy und Tablet (Container-Innenabstand 1,5 rem statt 0,75 rem) */
@media (max-width: 991.98px) {
    .container { --bs-gutter-x: 3rem; }
}

.footer-social-link { display: inline-flex; line-height: 1; transition: transform 0.25s ease; }
.footer-social-link:hover, .footer-social-link:focus-visible { transform: translateY(-3px); }
@media (prefers-reduced-motion: reduce) { .footer-social-link { transition: none; } }

/* Mobil: Schnellzugriffe und Back-to-top höher setzen */
@media (max-width: 767.98px) {
    .back-to-top { bottom: calc(7.25rem + env(safe-area-inset-bottom)); }
    .social-fab { bottom: calc(11rem + env(safe-area-inset-bottom)); }
}

/* Ab Tablet: Schnellzugriffe mittig am rechten Rand, fahren seitlich ein */
@media (min-width: 768px) {
    .social-fab { top: 50%; bottom: auto; transform: translateY(-50%); }
    .social-fab a { transform: translateX(7rem); }
    .social-fab.is-visible a { transform: none; animation-name: social-fab-slide; }
    @keyframes social-fab-slide {
        0% { transform: translateX(7rem); }
        55% { transform: translateX(-14px); }
        75% { transform: translateX(4px); }
        90% { transform: translateX(-3px); }
        100% { transform: translateX(0); }
    }
}
@media (min-width: 768px) and (prefers-reduced-motion: reduce) {
    .social-fab.is-visible a { animation: none; }
}

/* Weicher Standard-Hover: Unterstreichung läuft von links nach rechts ein */
a:not([class]), .link-text, .bg-footer a.link-body-emphasis:not(.icon-text-link):not(.footer-social-link), .icon-text-link span:not(.material-icons) {
    background: linear-gradient(currentColor, currentColor) left bottom / 0 1px no-repeat;
    padding-bottom: 2px;
    transition: background-size 0.3s ease, color 0.2s ease;
}
a:not([class]):hover, a:not([class]):focus-visible, .link-text:hover, .link-text:focus-visible,
.bg-footer a.link-body-emphasis:not(.icon-text-link):not(.footer-social-link):hover,
.bg-footer a.link-body-emphasis:not(.icon-text-link):not(.footer-social-link):focus-visible,
.icon-text-link:hover span:not(.material-icons), .icon-text-link:focus-visible span:not(.material-icons) {
    background-size: 100% 1px;
    text-decoration: none !important;
}
.bg-footer a.link-body-emphasis:not(.icon-text-link):not(.footer-social-link) { text-decoration: none !important; }
@media (prefers-reduced-motion: reduce) {
    a:not([class]), .link-text, .bg-footer a.link-body-emphasis, .icon-text-link span { transition: none; }
}

/* Seite blendet beim Laden weich ein */
@keyframes page-fade-in { from { opacity: 0; } to { opacity: 1; } }
body { animation: page-fade-in 1s ease 0s 1; }
@media (prefers-reduced-motion: reduce) { body { animation: none; } }

.quote-serif { font-family: var(--font-heading); font-weight: 400; }

/* Lightbox (Pathway-Schaubild) */
.lightbox-trigger { position: relative; cursor: zoom-in; }
.lightbox-trigger img { display: block; }
.lightbox-trigger-icon {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    background: color-mix(in srgb, var(--bs-primary) 65%, transparent); color: #fff; border-radius: var(--radius);
    font-size: 3rem; opacity: 0; transition: opacity 0.3s ease;
}
.lightbox-trigger:hover .lightbox-trigger-icon, .lightbox-trigger:focus-visible .lightbox-trigger-icon { opacity: 1; }
@media (hover: none) {
    .lightbox-trigger-icon { inset: auto 0.75rem 0.75rem auto; width: 2.5rem; height: 2.5rem; border-radius: 999px; font-size: 1.125rem; background: var(--bs-primary); opacity: 1; }
}
.lightbox-body { position: relative; background: #fff; border-radius: var(--radius); }
.lightbox-img { display: block; width: 100%; height: auto; }
.lightbox-close { position: absolute; top: 0.75rem; right: 0.75rem; z-index: 2; background-color: #fff; border-radius: 999px; padding: 0.625rem; opacity: 1; box-shadow: 0 0 0 1px var(--bs-border-color); }
@media (prefers-reduced-motion: reduce) { .lightbox-trigger-icon { transition: none; } }
@media (max-width: 991.98px) {
    .lightbox-trigger { cursor: default; pointer-events: none; }
    .lightbox-trigger-icon { display: none; }
}

.footer-social-text { max-width: 16rem; }

.card-link { color: inherit; text-decoration: none; background-image: none; transition: transform 0.25s ease, border-color 0.25s ease; }
.card-link:hover, .card-link:focus-visible { color: inherit; text-decoration: none; transform: translateY(-6px); border-color: var(--accent); }
.card-link:visited { color: inherit; }
@media (prefers-reduced-motion: reduce) { .card-link { transition: none; } .card-link:hover, .card-link:focus-visible { transform: none; } }

/* Rückmeldung unter den Formularen */
.form-status { display: flex; align-items: flex-start; gap: 0.75rem; margin: 1rem 0 0; padding: 1rem 1.25rem; border: 1px solid; border-radius: var(--radius); line-height: 1.5; }
.form-status:empty { display: none; }
.form-status .bi { flex: 0 0 auto; font-size: 1.25rem; line-height: 1.5; }
.form-status.is-ok { background: #E7F4EC; border-color: #2E7D4F; color: #1B4D2E; }
.form-status.is-ok .bi { color: #2E7D4F; }
.form-status.is-error { background: #FBEAEA; border-color: #B23B3B; color: #7A2424; }
.form-status.is-error .bi { color: #B23B3B; }
.form-status.is-pending { background: #fff; border-color: #D9D9DE; color: #424650; }

/* reCAPTCHA-Badge ausgeblendet, Pflichthinweis steht unter den Formularen */
.grecaptcha-badge { visibility: hidden; }
