:root {
    --fvkgsw-orange: #e86027;
    --fvkgsw-navy: #083c5a;
    --fvkgsw-white: #ffffff;
    --fvkgsw-header-height: 5.5rem;
    --header-progress: 1;
}

.screen-reader-text {
    clip: rect(1px, 1px, 1px, 1px);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
}

.skip-link {
    background: var(--fvkgsw-white);
    color: var(--fvkgsw-navy);
    left: 1rem;
    padding: .75rem 1rem;
    position: fixed;
    top: -5rem;
    z-index: 1001;
}

.skip-link:focus {
    top: 1rem;
}

:where(a, button):focus-visible {
    outline: 3px solid var(--fvkgsw-orange);
    outline-offset: 3px;
}

.site-header {
    --desktop-logo-offset: 0px;
    --header-progress: 1;
    background: color-mix(in srgb, var(--surface, var(--fvkgsw-white)) calc(8% + 92% * var(--header-progress)), transparent);
    box-shadow: 0 1px 10px rgb(8 60 90 / calc(12% * var(--header-progress)));
    left: 0;
    position: fixed;
    right: 0;
    top: var(--admin-bar-offset, 0px);
    z-index: 1000;
}

.site-header__inner,
.site-footer__inner {
    align-items: center;
    display: flex;
    gap: 1.25rem;
    justify-content: space-between;
    margin: 0 auto;
    max-width: 82rem;
    min-height: var(--fvkgsw-header-height);
    padding: calc(.35rem + .65rem * (1 - var(--header-progress))) 1.25rem;
}

.site-branding {
    background: var(--surface-transparent);
    border-radius: .4rem;
    flex-shrink: 0;
    line-height: 0;
    padding: .35rem;
}

@media (width > 64rem) {
    .site-header--home .site-branding {
        transform: translateX(var(--desktop-logo-offset));
    }
}

.site-branding .custom-logo-link,
.site-branding__text {
    color: #173e30;
    display: inline-block;
    font-size: 1.125rem;
    font-weight: 700;
    line-height: 1.2;
    text-decoration: none;
}

.site-branding .custom-logo {
    display: block;
    height: auto;
    max-height: none;
    max-width: 100%;
    width: clamp(14rem, calc(20rem - 6rem * var(--header-progress)), 20rem);
}

.primary-navigation {
    margin-left: auto;
    min-width: 0;
}

.primary-menu,
.meta-menu {
    display: flex;
    gap: 1.25rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.primary-menu { flex-wrap: wrap; justify-content: flex-end; }

.primary-menu a,
.meta-menu a {
    color: var(--fvkgsw-navy);
    font-weight: 700;
    text-decoration: none;
}

.primary-menu a { overflow-wrap: anywhere; }

.menu-toggle {
    align-items: center;
    background: transparent;
    border: 0;
    color: var(--fvkgsw-navy);
    display: none;
    min-height: 2.75rem;
    min-width: 2.75rem;
    padding: .5rem;
}

.menu-toggle__icon,
.menu-toggle__icon::before,
.menu-toggle__icon::after {
    background: currentcolor;
    display: block;
    height: 2px;
    position: relative;
    width: 1.5rem;
}

.menu-toggle__icon::before,
.menu-toggle__icon::after {
    content: '';
    left: 0;
    position: absolute;
}

.menu-toggle__icon::before { top: -.45rem; }
.menu-toggle__icon::after { top: .45rem; }

.site-header--home .primary-menu {
    background: color-mix(in srgb, var(--surface, #fff) 90%, transparent);
    border-radius: .75rem;
    padding: .15rem .65rem;
}

.site-footer {
    background: #163c22;
    color: var(--fvkgsw-white);
}

.site-footer__copyright { margin: 0; }
.site-footer .meta-menu a { color: var(--fvkgsw-white); }

.home-hero {
    align-items: flex-end;
    background: #163c22;
    color: var(--fvkgsw-white);
    display: flex;
    justify-content: center;
    min-height: clamp(34rem, 72vh, 47.5rem);
    overflow: hidden;
    padding: calc(var(--fvkgsw-header-height) + 3rem) 1.25rem 9rem;
    position: relative;
    text-align: center;
}

.home-hero--has-image {
    background-image: none;
    background-position: center;
    background-size: cover;
}

.home-hero__content {
    max-width: 50rem;
    position: relative;
    z-index: 1;
}

.home-hero__slogan {
    font-size: clamp(2.25rem, 5vw, 4.25rem);
    line-height: 1.08;
    margin: 0;
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    justify-content: center;
    margin-top: 2rem;
}

.hero-actions a {
    border: 2px solid currentcolor;
    color: var(--fvkgsw-white);
    font-weight: 700;
    padding: .75rem 1.25rem;
    text-decoration: none;
}

.hero-actions__primary { background: var(--fvkgsw-orange); }
.hero-actions__secondary { background: rgb(255 255 255 / 12%); }

.home-hero__caption {
    bottom: clamp(5rem, 9vw, 7.5rem);
    font-size: .75rem;
    margin: 0;
    position: absolute;
    right: 1.25rem;
    text-shadow: 0 1px 2px rgb(0 0 0 / 65%);
    z-index: 1;
}

.home-hero__waves {
    position: absolute;
    left: 0;
    bottom: -1px;
    display: block;
    width: 100%;
    max-width: none;
    height: clamp(4.5rem, 8vw, 7rem);
}

.site-main { margin: 0 auto; max-width: 75rem; padding: 2rem 1.25rem; }

.content-shell {
    margin: 0 auto;
    max-width: 75rem;
    padding: 3rem 1.25rem;
}

.content-header { margin-bottom: 2rem; }

.content-header h1,
.entry__title,
.empty-state h1,
.empty-state h2 { color: var(--fvkgsw-navy); }

.entry,
.content-card,
.empty-state {
    background: var(--fvkgsw-white);
    border-radius: 1rem;
    box-shadow: 0 .75rem 2rem rgb(22 60 34 / 12%);
}

.entry { padding: clamp(1.5rem, 4vw, 3rem); }
.entry__header { margin-bottom: 1.5rem; }
.entry__title { margin: 0; }
.entry__meta,
.content-card__meta { color: #46604d; font-size: .9375rem; }
.entry__image { margin: 0 0 2rem; }
.entry__image img,
.content-card__image img { display: block; height: auto; max-width: 100%; width: 100%; }
.entry__content { max-width: 52rem; }
.entry__content > *:first-child { margin-top: 0; }
.entry__content > *:last-child { margin-bottom: 0; }

.card-grid {
    display: grid;
    gap: 1.5rem;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}

.content-card { overflow: hidden; }
.content-card__body { padding: 1.25rem; }
.content-card__meta { margin: 0 0 .5rem; }
.content-card__title { font-size: 1.35rem; margin: 0 0 .75rem; }
.content-card__title a { color: var(--fvkgsw-navy); text-decoration: none; }
.content-card__excerpt { margin: 0; }

.empty-state { max-width: 52rem; padding: clamp(1.5rem, 4vw, 3rem); }
.error-code { color: var(--fvkgsw-orange); font-size: clamp(3.5rem, 12vw, 7rem); font-weight: 700; line-height: 1; margin: 0; }

.search-form { max-width: 36rem; }
.search-form label { color: var(--fvkgsw-navy); display: block; font-weight: 700; margin-bottom: .5rem; }
.search-form__controls { display: flex; flex-wrap: wrap; gap: .75rem; }
.search-form input { border: 1px solid #789080; border-radius: .35rem; flex: 1 1 14rem; font: inherit; min-height: 2.75rem; padding: .5rem .75rem; }
.search-form button { background: var(--fvkgsw-orange); border: 0; border-radius: .35rem; color: var(--fvkgsw-white); font: inherit; font-weight: 700; min-height: 2.75rem; padding: .5rem 1rem; }

.nav-links { display: flex; gap: .75rem; margin-top: 2rem; }
.nav-links a { color: var(--fvkgsw-navy); }

/* Förderprojekte: Filterformular, Liste, Meta und Rückverweis. */
.project-filters { display: flex; flex-wrap: wrap; align-items: end; gap: 1rem; margin-block: 1.5rem; }
.project-filters__field { flex: 1 1 14rem; min-width: 0; }
.project-filters label { color: var(--fvkgsw-navy); display: block; font-weight: 700; margin-block-end: .4rem; }
.project-filters select { width: 100%; max-width: 100%; font: inherit; }
.project-filters__actions { display: flex; align-items: center; gap: 1rem; flex: 0 0 auto; }
.project-filters__apply { background: var(--fvkgsw-orange); border: 0; border-radius: .35rem; color: var(--fvkgsw-white); font: inherit; font-weight: 700; min-height: 2.75rem; padding: .5rem 1rem; }
.project-filters__reset { color: var(--fvkgsw-navy); }
.project-filters__invalid { background: var(--soft); border: 1px solid var(--line); border-radius: .5rem; color: var(--ink); padding: 1rem 1.25rem; }
.project-filters__empty { color: var(--ink); font-size: 1.1rem; }
.project-meta { display: grid; gap: .5rem; margin: 0 0 2rem; max-width: 52rem; }
.project-meta dt { color: var(--muted); font-size: .9375rem; font-weight: 700; }
.project-meta dd { margin: 0; overflow-wrap: anywhere; }
.project-archive-back { margin: 1rem 0 0; }
.project-archive-back a { color: var(--fvkgsw-navy); }
nav.pagination { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; margin-top: 2.5rem; }
nav.pagination .page-numbers { border: 1px solid var(--line); border-radius: .35rem; color: var(--fvkgsw-navy); display: inline-flex; align-items: center; justify-content: center; min-height: 2.5rem; min-width: 2.5rem; padding: .4rem .75rem; text-decoration: none; }
nav.pagination .page-numbers.current { background: var(--fvkgsw-orange); border-color: var(--fvkgsw-orange); color: var(--fvkgsw-white); }
nav.pagination .page-numbers:hover { text-decoration: underline; }

@media (max-width: 64rem) {
    .site-header__inner { min-height: 4.5rem; }

    .menu-toggle {
        color: var(--fvkgsw-navy);
        display: inline-flex;
        margin-left: auto;
        z-index: 2;
    }

    .primary-navigation {
        inset: 100% 0 auto;
        position: absolute;
        z-index: 2;
    }

    .primary-menu {
        background: var(--fvkgsw-white);
        box-shadow: 0 8px 12px rgb(8 60 90 / 12%);
        display: none;
        flex-direction: column;
        gap: 0;
        padding: .5rem 1.25rem 1rem;
    }

    #primary-menu.is-open .primary-menu { display: flex; }
    .primary-menu a { display: block; padding: .75rem 0; }

    .site-footer__inner {
        align-items: flex-start;
        flex-direction: column;
        gap: .75rem;
        padding-bottom: 1.25rem;
        padding-top: 1.25rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }

    .site-header,
    .site-branding,
    .primary-menu { transition: none; }
}

/* Heller Vereinsauftritt: shared palette, no image tinting. */
:root {
    color-scheme: light;
    --fvkgsw-navy: #173e30;
    --fvkgsw-orange: #28643b;
    --surface: #fff;
    --surface-transparent: rgb(255 255 255 / 50%);
    --soft: #f3f7ef;
    --ink: #24392e;
    --muted: #526457;
    --line: #cbd8c9;
    --accent: #28643b;
    --wave-start: #77b850;
    --wave-end: #c6df64;
    --admin-bar-offset: 0px;
    --fvkgsw-header-height: 5.5rem;
}
* { box-sizing: border-box; }
html { scroll-padding-top: 7rem; }
body { margin: 0; background: var(--surface); color: var(--ink); font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.7; }
img { max-width: 100%; height: auto; }
a { color: var(--accent); text-underline-offset: .2em; }
a:hover { text-decoration: underline; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
input, select, textarea { max-width: 100%; background: var(--surface); color: var(--ink); border: 1px solid var(--line); border-radius: .4rem; padding: .65rem; }
:where(a, button, input, select, textarea):focus-visible { outline: 3px solid var(--accent); outline-offset: 4px; }
:where(h1,h2,h3) { line-height: 1.2; letter-spacing: -.025em; text-wrap: balance; }
body:not(.home) { padding-top: var(--fvkgsw-header-height); }
.primary-menu { align-items: center; gap: 1.1rem; }
.primary-menu li { position: relative; max-width: 100%; }
.primary-menu a { display: inline-block; padding: .65rem .15rem; }
.primary-navigation { max-height: calc(100dvh - 9rem - var(--admin-bar-offset)); overflow: auto; }
.primary-menu .sub-menu { display: none; list-style: none; padding: .5rem 1rem; margin: 0; background: var(--soft); border-radius: .5rem; }
.primary-menu .sub-menu.is-open { display: block; }
.submenu-toggle { color: var(--ink); background: var(--soft); border: 1px solid var(--line); min-width: 2.75rem; min-height: 2.75rem; border-radius: .5rem; margin-left: .35rem; }
.primary-menu .sub-menu { position: relative; }
.home-hero { min-height: clamp(38rem, 88svh, 62rem); padding: 0 1.25rem 2.4rem; background: var(--soft); color: #153921; isolation: isolate; }
.home-hero__media { position: absolute; inset: 0 0 4rem; z-index: -2; }
.home-hero__media picture, .home-hero__media img { display: block; width: 100%; height: 100%; }
.home-hero__media img { object-fit: cover; object-position: center 46%; }
.home-hero__waves { height: clamp(12rem, 22vw, 19rem); z-index: -1; }
.wave-back { fill: #72b84d; opacity: .38; }
.wave-middle { fill: #a6d56d; opacity: .6; }
.wave-start { stop-color: var(--wave-start); }
.wave-end { stop-color: var(--wave-end); }
.home-hero__content { max-width: 70rem; }
.home-hero__slogan { font-size: clamp(2rem, 4.6vw, 4.6rem); font-weight: 750; }
.home-hero__caption { bottom: clamp(13rem, 23vw, 20rem); right: 1rem; padding: .3rem .65rem; border-radius: .35rem; background: rgb(255 255 255 / 94%); color: #173e30; text-shadow: none; max-width: calc(100% - 2rem); }
.hero-label--dark, .home-hero__media--dark-only { display: none; }
.home-intro { text-align: center; margin: 0 auto 3rem; }
.home-intro__lead { font-size: clamp(1.25rem, 2vw, 1.7rem); font-weight: 600; }
.hero-actions { margin: 1.5rem 0 2.5rem; }
.hero-actions a { border-radius: 999px; padding: .75rem 1.6rem; }
.hero-actions__primary { background: var(--accent); color: var(--surface) !important; border-color: var(--accent) !important; }
.hero-actions__secondary { background: transparent; color: var(--accent) !important; }
.site-main { max-width: 65rem; padding: 2.5rem 1.5rem 5rem; font-size: 1.1rem; }
.content-shell { min-height: 65vh; }
.entry, .content-card, .empty-state { background: var(--surface); border: 1px solid var(--line); box-shadow: 0 .4rem 1.5rem #173e3009; }
.entry__meta, .content-card__meta { color: var(--muted); }
.entry__content, .site-main { overflow-wrap: anywhere; }
.entry__content { max-width: 52rem; }
.site-footer { background: var(--soft); color: var(--ink); border-top: 1px solid var(--line); padding: 1.5rem 0; }
.site-footer .meta-menu a { color: var(--accent); }
.meta-menu { flex-wrap: wrap; }
.search-form button { background: var(--accent); color: var(--surface); }
.skip-link { background: var(--surface); color: var(--ink); }
.admin-bar { --admin-bar-offset: 32px; }
@media (max-width: 782px) { .admin-bar { --admin-bar-offset: 46px; } }
@media (max-width: 64rem) {
    :root { --fvkgsw-header-height: 4.5rem; }
    .site-header__inner { position: relative; }
    .site-header--home .site-branding {
        transform: translateX(calc((100vw - 2.5rem - 100%) / 2 * (1 - var(--header-progress))));
    }
    .site-header--home .custom-logo {
        width: min(calc(14rem + 9rem * (1 - var(--header-progress))), calc(50vw + 4vw * (1 - var(--header-progress))));
    }
    .menu-toggle { color: var(--fvkgsw-navy); flex-shrink: 0; justify-content: center; position: absolute; right: .5rem; }
    .primary-menu { align-items: stretch; background: var(--surface); }
    .primary-navigation { max-height: calc(100dvh - 8rem - var(--admin-bar-offset)); }
    .primary-menu { flex-wrap: nowrap; }
}
@media (max-width: 40rem) {
    .home-hero { min-height: 38rem; padding-bottom: 2.1rem; }
    .home-hero__media img { object-position: 51% center; }
    .home-hero__waves { height: 13rem; }
    .home-hero__slogan { font-size: clamp(1.9rem, 7.6vw, 3rem); }
    .home-hero__caption { bottom: 14rem; font-size: .7rem; }
}
@media (prefers-color-scheme: dark) {
    :root { color-scheme: dark; --surface: #14221c; --surface-transparent: rgb(20 34 28 / 50%); --soft: #1e3127; --ink: #e9f0e7; --muted: #b6c8b9; --line: #486050; --accent: #c1df85; --fvkgsw-navy: #e1eedc; --fvkgsw-orange: #c1df85; --wave-start: #5d9841; --wave-end: #a4c754; }
    .hero-label--standard { display: none; }
    .hero-label--dark, .home-hero__media--dark-only { display: block; }
    .wave-back { fill: #5b9348; }
    .wave-middle { fill: #86b65b; }
    .menu-toggle { color: var(--fvkgsw-navy); }
}
@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { transition: none !important; animation: none !important; }
}
/* Without scripting navigation stays available, including nested pages. */
html:not(.js) .menu-toggle { display: none !important; }
html:not(.js) .primary-menu, html:not(.js) .primary-menu .sub-menu { display: flex !important; flex-direction: column; }
html:not(.js) .site-header { position: static; }
html:not(.js) body:not(.home) { padding-top: 0; }
html:not(.js) .site-header--home .site-branding { transform: none; }
html:not(.js) .primary-navigation { max-height: none; position: static; }
