
:root {
    --custom-green-dark: oklch(30.3% .073 156.8);
    --custom-green: oklch(55.3% .154 149.5);
    --custom-green-light: oklch(84.9% .065 157.3);
    --custom-green-ultra-light: oklch(96.2% .017 156.9);
    --custom-violet: oklch(78.4% .1 271.9);
    --custom-violet-light: oklch(91.9% .036 275.4);
    --custom-light-green: oklch(84.7% .194 116.2);
    --custom-background: var(--custom-green-ultra-light);
    --custom-core-shape-background: oklch(100% 0 0 / .75);
    --custom-core-shape-background-dropdown: oklch(100% 0 0 / .9);
    --custom-core-shape-background-modal: oklch(100% 0 0 / 1);
    --custom-core-shape-border-color: oklch(30.3% .073 156.8 / .25);
    --custom-core-shape-border-radius: 4rem;
    --custom-core-shape-padding: 2.5rem;
    --custom-core-shape-padding-dropdown: 1rem;
    --custom-color-primary: var(--custom-green-dark);
    --custom-color-primary-hover: oklch(from var(--custom-green-dark) calc(l + .05) c h);
    --custom-color-success: var(--custom-green);
    --custom-color-success-hover: oklch(from var(--custom-green) calc(l - .05) c h);
    --custom-color-accent: var(--custom-light-green);
    --custom-color-accent-hover: oklch(from var(--custom-light-green) calc(l - .05) c h);
    --custom-color-accent-text: var(--custom-green-dark);
    --custom-color-text: oklch(18% 0 0);
    --custom-color-text-muted: oklch(52.4% 0 0);
    --custom-color-placeholder: oklch(52.4% 0 0);
    --custom-color-border: oklch(30.3% .073 156.8 / .25);
    --custom-color-border-focus: oklch(30.3% .073 156.8 / .5);
    --custom-color-white: oklch(100% 0 0);
    --custom-color-link: var(--custom-green-dark);
    --custom-color-input-bg: oklch(98.8% 0 0);
    --custom-color-error: oklch(35.4% .135 27.1);
    --custom-color-error-bg: oklch(94.9% .024 14.4);
    --custom-color-error-border: oklch(87% .04 14.4);
    --custom-color-alert-success-bg: var(--custom-green-ultra-light);
    --custom-color-alert-success-border: var(--custom-green-light);
    --custom-color-alert-success-text: var(--custom-green-dark);
    --custom-color-alert-info-bg: oklch(93.6% .02 238.7);
    --custom-color-alert-info-border: oklch(85% .04 238.7);
    --custom-color-alert-info-text: oklch(34.3% .062 242.3);
    --custom-color-alert-warning-bg: oklch(96.8% .042 90.8);
    --custom-color-alert-warning-border: oklch(88% .06 90.8);
    --custom-color-alert-warning-text: oklch(45.4% .09 86.5);
    --custom-color-alert-error-bg: oklch(94.9% .024 14.4);
    --custom-color-alert-error-border: oklch(87% .04 14.4);
    --custom-color-alert-error-text: oklch(35.4% .135 27.1);
    --custom-color-hint-bg: var(--custom-green-dark);
    --custom-color-hint-text: oklch(100% 0 0);
    --custom-input-height: 3rem;
    --custom-input-px: 1.75rem;
    --custom-input-py: 1.25rem;
    --custom-input-radius-default: 1rem;
    --custom-input-radius-squircle: 2.5rem;
    --custom-input-font-size: 1rem;
    --custom-btn-px: 2.25rem;
    --custom-btn-py: 1.5rem;
    --custom-btn-radius-default: .75rem;
    --custom-btn-radius-squircle: 2.5rem;
    --custom-btn-font-size: 1rem;
    --custom-section-gap: 1.5rem;
    --custom-green-ultra-light-hex: #eaf6ee
}

:root {
    --custom-curve-top: url("data:image/svg+xml,%3Csvg width='1729' height='812' viewBox='0 0 1729 812' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1729 806.422C1729 818.5 0 806.422 0 806.422V50.5751C575.233 -16.8754 1151.58 -16.8413 1729 50.5751V806.422Z' fill='black'/%3E%3C/svg%3E");
    --custom-curve-bottom: url("data:image/svg+xml,%3Csvg width='1729' height='807' viewBox='0 0 1729 807' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1729 755.847C1152.87 823.238 576.526 823.331 0 755.847V0H1729V755.847Z' fill='black'/%3E%3C/svg%3E");
    --custom-curve-both: url("data:image/svg+xml,%3Csvg width='1729' height='857' viewBox='0 0 1729 857' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1729 806.422C1152.87 873.813 576.526 873.906 0 806.422V50.5751C575.233 -16.8754 1151.57 -16.8413 1729 50.5751V806.422Z' fill='black'/%3E%3C/svg%3E")
}


:where(h1, .h1, h2, .h2, h3, .h3, h4, .h4):has(span:is(.fa, .far, .fas, .fa-solid)) > span:is(.fa, .far, .fas, .fa-solid) {
    display: none;
}

div.h1 {
    font-size: clamp(2rem,5vw,3.25rem);
}

div:has(.h1) {
    item-align: center;
}

h1.dashboard {
    font-weight: 500;
    font-size: clamp(24px, 5vw, 44px);

    + h2 {
        font-size: clamp(20px, 3vw, 32px);
        font-weight: 400 !important;
        margin-bottom: 2rem;
    }

    &:not(:has(+ h2)) {
        margin-bottom: 2rem !important;
    }

    & > strong {
        font-weight: 500 !important;
    }
}

.card-header {
    container-name: card-header;
    container-type: inline-size;

    @container card-header (width <= 576px) {
        button {
            & {
                font-size: 0 !important;
                gap: 0;
            }

            .fas {
                font-size: 1.25rem !important;
            }

            & + button {
                margin-right: 1rem;
            }
        }

        & > .d-flex {
            flex-direction: column;
            align-items: start !important;
            gap: .5rem;
        }
    }

    .d-inline-block {
        > * {
            margin-right: 0.25rem;
        }
    }
}

.pm-select-input-container {
    padding-block: 0 !important;
    background: var(--custom-color-input-bg) !important;

    & > * {
        background: none !important;
    }

    .has-selection {
        padding-block: .25rem !important;
    }

    & + .pm-select-dropdown {
        inset: unset !important;
        background: white !important;
        color: var(--custom-color-text) !important;
        font-size: 1rem !important;
        height: min-content !important;
        max-height: 10rem !important;
    }
}

.btn {
    border-radius: .75rem
}

@supports (corner-shape: squircle) {
    .btn {
        border-radius: 2.5rem;
        corner-shape: squircle
    }
}

.btn {
    font-weight: 600;
    gap: .625rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color .2s ease,transform .1s ease,border-color .2s ease
}

    .btn i {
        font-size: 1.25rem
    }

    .btn:active:not(:disabled) {
        transform: scale(.98)
    }

.btn-sm, .btn-group-sm > .btn {
    border-radius: .5rem
}

@supports (corner-shape: squircle) {
    .btn-sm, .btn-group-sm > .btn {
        border-radius: 1.75rem;
        corner-shape: squircle
    }
}

.btn-lg, .btn-group-lg > .btn {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .btn-lg, .btn-group-lg > .btn {
        border-radius: 3rem;
        corner-shape: squircle
    }
}

.btn-primary, .btn-secondary, .btn-success, .btn-danger, .btn-dark {
    color: var(--custom-color-white) !important
}

    .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active, .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-dark:hover, .btn-dark:focus, .btn-dark:active {
        color: var(--custom-color-white) !important
    }

.btn-warning {
    color: var(--custom-color-text)
}

.btn-light {
    color: var(--custom-color-text);
    border-color: var(--custom-color-border)
}

.btn-outline-primary:hover, .btn-outline-primary:focus, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-secondary:hover, .btn-outline-secondary:focus, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-success:hover, .btn-outline-success:focus, .btn-outline-success:active, .btn-outline-success.active {
    color: var(--custom-color-white) !important
}

.btn-outline-danger:hover, .btn-outline-danger:focus, .btn-outline-danger:active, .btn-outline-danger.active {
    color: var(--custom-color-white) !important
}

.btn-outline-dark:hover, .btn-outline-dark:focus, .btn-outline-dark:active, .btn-outline-dark.active {
    color: var(--custom-color-white) !important
}

.btn-outline-light {
    border-color: var(--custom-color-border);
    color: var(--custom-color-text)
}

.btn-group > .btn:first-child {
    border-radius: .75rem 0 0 .75rem
}

@supports (corner-shape: squircle) {
    .btn-group > .btn:first-child {
        border-radius: 2.5rem 0 0 2.5rem;
        corner-shape: squircle
    }
}

.btn-group > .btn:last-child {
    border-radius: 0 .75rem .75rem 0
}

@supports (corner-shape: squircle) {
    .btn-group > .btn:last-child {
        border-radius: 0 2.5rem 2.5rem 0;
        corner-shape: squircle
    }
}

.btn-group > .btn:not(:first-child):not(:last-child) {
    border-radius: 0
}

.form-control {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .form-control {
        border-radius: 2.5rem;
        corner-shape: squircle
    }
}

.form-control {
    padding: 1rem 1.5rem
}

    .form-control:focus {
        box-shadow: none;
        border-color: #00391f80
    }

.form-control-sm {
    border-radius: .75rem
}

@supports (corner-shape: squircle) {
    .form-control-sm {
        border-radius: 1.5rem;
        corner-shape: squircle
    }
}

.form-control-sm {
    padding: .625rem 1.25rem
}

.form-control-lg {
    border-radius: 1.25rem
}

@supports (corner-shape: squircle) {
    .form-control-lg {
        border-radius: 2.5rem;
        corner-shape: squircle
    }
}

.form-control-lg {
    padding: 1.25rem 1.75rem
}

.form-select {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .form-select {
        border-radius: 2.5rem;
        corner-shape: squircle
    }
}

.form-select {
    padding: 1rem 3rem 1rem 1.5rem
}

    .form-select:focus {
        box-shadow: none;
        border-color: #00391f80
    }

.form-floating > .form-control, .form-floating > .form-select {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .form-floating > .form-control, .form-floating > .form-select {
        border-radius: 2.5rem;
        corner-shape: squircle
    }
}

.form-floating > .form-control, .form-floating > .form-select {
    padding: 1.625rem 1.5rem .625rem;
    min-height: 3.75rem
}

.form-check-input[type=checkbox] {
    border-radius: .3125rem
}

@supports (corner-shape: squircle) {
    .form-check-input[type=checkbox] {
        border-radius: .75rem;
        corner-shape: squircle
    }
}

.form-check-input:checked {
    background-color: var(--custom-color-success);
    border-color: var(--custom-color-success)
}

.form-check-input:focus {
    box-shadow: none;
    border-color: #00391f80
}

.form-switch .form-check-input:checked {
    background-color: var(--custom-color-success);
    border-color: var(--custom-color-success)
}

.input-group > .form-control, .input-group > .form-select {
    border-radius: 0
}

    .input-group > .form-control:first-child, .input-group > .form-select:first-child {
        border-radius: 1rem 0 0 1rem
    }

@supports (corner-shape: squircle) {
    .input-group > .form-control:first-child, .input-group > .form-select:first-child {
        border-radius: 2.5rem 0 0 2.5rem;
        corner-shape: squircle
    }
}

.input-group > .form-control:last-child, .input-group > .form-select:last-child {
    border-radius: 0 1rem 1rem 0
}

@supports (corner-shape: squircle) {
    .input-group > .form-control:last-child, .input-group > .form-select:last-child {
        border-radius: 0 2.5rem 2.5rem 0;
        corner-shape: squircle
    }
}

.input-group-text {
    border-radius: 0
}

@supports (corner-shape: squircle) {
    .input-group-text {
        border-radius: 0;
        corner-shape: squircle
    }
}

.input-group-text {
    padding: 1rem 1.25rem;
    background-color: var(--custom-color-input-bg);
    border-color: var(--custom-color-border);
    color: var(--custom-color-text-muted)
}

    .input-group-text:first-child {
        border-radius: 1rem 0 0 1rem
    }

@supports (corner-shape: squircle) {
    .input-group-text:first-child {
        border-radius: 2.5rem 0 0 2.5rem;
        corner-shape: squircle
    }
}

.input-group-text:last-child {
    border-radius: 0 1rem 1rem 0
}

@supports (corner-shape: squircle) {
    .input-group-text:last-child {
        border-radius: 0 2.5rem 2.5rem 0;
        corner-shape: squircle
    }
}

.form-control.is-valid:focus, .form-control.is-invalid:focus {
    box-shadow: none
}

.card {
    border-radius: 2rem
}

@supports (corner-shape: squircle) {
    .card {
        border-radius: 4rem;
        corner-shape: squircle
    }
}

.card {
    border-color: var(--custom-color-border);
    overflow: visible
}

.pm-datepicker-container {
    z-index: 1050
}

.card:has(.pm-datepicker-container) {
    z-index: 1
}

.modal-content:has(.pm-datepicker-container) {
    overflow: visible
}

.card-header {
    padding: 1.25rem 1.75rem;
    border-bottom-color: var(--custom-color-border)
}

    .card-header:first-child {
        border-radius: 0
    }

.card-body {
    padding: 1.75rem
}

.card-footer {
    padding: 1.25rem 1.75rem;
    border-top-color: var(--custom-color-border)
}

.alert {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .alert {
        border-radius: 1.75rem;
        corner-shape: squircle
    }
}

.alert {
    padding: 1.25rem 1.5rem;
    line-height: 1.6
}

.table {
    --bs-table-hover-bg: oklch(from var(--custom-color-text) l c h / .025);
    color: var(--custom-color-text)
}

    .table > thead > tr > th {
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: var(--custom-color-success);
        padding: 1rem 1.25rem;
        border-bottom: 1px solid var(--custom-color-border);
        vertical-align: middle;
    }

    .table > tbody > tr > td {
        padding: 1rem 1.25rem;
        vertical-align: middle
    }

    .table > tbody > tr:last-child > td {
        border-bottom: none
    }

.table-responsive {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .table-responsive {
        border-radius: 2rem;
        corner-shape: squircle
    }
}

.table-responsive {
    border: 1px solid var(--custom-color-border);
    overflow-x: auto
}

.list-group {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .list-group {
        border-radius: 2rem;
        corner-shape: squircle
    }
}

.list-group {
    overflow: hidden
}

.list-group-item {
    padding: 1rem 1.25rem;
    border-color: var(--custom-color-border)
}

.accordion {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .accordion {
        border-radius: 2rem;
        corner-shape: squircle
    }
}

.accordion {
    overflow: hidden;
    border: 1px solid var(--custom-color-border)
}

.accordion-item {
    border-left: 0;
    border-right: 0;
    border-top: 0;
    border-bottom-color: var(--custom-color-border)
}

    .accordion-item:last-of-type {
        border-bottom: 0
    }

.accordion-button {
    padding: 1.25rem 1.5rem;
    font-weight: 600
}

    .accordion-button:focus {
        box-shadow: none;
        border-color: var(--custom-color-border)
    }

    .accordion-button:not(.collapsed) {
        background-color: var(--custom-green-ultra-light);
        color: var(--custom-color-primary);
        box-shadow: none
    }

.accordion-body {
    padding: 1.25rem 1.5rem
}

.modal-content {
    border-radius: 1.5rem;
    background-color: var(--custom-core-shape-background-modal);
}

@supports (corner-shape: squircle) {
    .modal-content {
        border-radius: 3rem;
        corner-shape: squircle
    }
}

.modal-content {
    border-color: var(--custom-color-border);
    overflow: hidden
}

.modal-header {
    padding: 1.5rem 1.75rem;
    border-bottom-color: var(--custom-color-border)
}

.modal-body {
    padding: 1.75rem
}

.modal-footer {
    padding: 1.25rem 1.75rem;
    border-top-color: var(--custom-color-border)
}

.offcanvas {
    border-color: var(--custom-color-border)
}

.offcanvas-header {
    padding: 1.5rem 1.75rem;
    border-bottom: 1px solid var(--custom-color-border)
}

.offcanvas-body {
    padding: 1.75rem
}

.pagination {
    gap: .25rem
}

.page-link {
    border-radius: .625rem
}

@supports (corner-shape: squircle) {
    .page-link {
        border-radius: 1.25rem;
        corner-shape: squircle
    }
}

.page-link {
    padding: .75rem 1rem;
    border-color: var(--custom-color-border);
    color: var(--custom-color-text)
}

    .page-link:hover {
        background-color: var(--custom-green-ultra-light);
        border-color: var(--custom-color-border);
        color: var(--custom-color-primary)
    }

    .page-link:focus {
        box-shadow: none
    }

.page-item.active .page-link {
    background-color: var(--custom-color-primary);
    border-color: var(--custom-color-primary);
    color: var(--custom-color-white)
}

.page-item:first-child .page-link, .page-item:last-child .page-link {
    border-radius: .625rem
}

@supports (corner-shape: squircle) {
    .page-item:first-child .page-link, .page-item:last-child .page-link {
        border-radius: 1.25rem;
        corner-shape: squircle
    }
}

.badge {
    border-radius: .5rem
}

@supports (corner-shape: squircle) {
    .badge {
        border-radius: 1rem;
        corner-shape: squircle
    }
}

.badge {
    padding: .4em .75em;
    font-weight: 600
}

.rounded-pill {
    border-radius: 50rem
}

@supports (corner-shape: squircle) {
    .rounded-pill {
        border-radius: 50rem;
        corner-shape: squircle
    }
}

.breadcrumb {
    padding: .75rem 0;
    font-size: .875rem
}

.progress {
    border-radius: .5rem
}

@supports (corner-shape: squircle) {
    .progress {
        border-radius: 1rem;
        corner-shape: squircle
    }
}

.progress {
    overflow: hidden
}

.progress-bar {
    font-weight: 600;
    font-size: .8125rem
}

.navbar {
    padding-block: .875rem;
    border-bottom: 1px solid var(--custom-color-border)
}

.navbar-brand {
    font-weight: 700;
    color: var(--custom-color-primary)
}

.nav-link {
    font-weight: 500;
    padding: .625rem 1rem;
    border-radius: .5rem
}

@supports (corner-shape: squircle) {
    .nav-link {
        border-radius: 1rem;
        corner-shape: squircle
    }
}

.nav-link.active {
    color: var(--custom-color-primary);
    font-weight: 600
}

.nav-link:hover {
    color: var(--custom-color-primary)
}

.dropdown-menu {
    border-radius: 1rem
}

@supports (corner-shape: squircle) {
    .dropdown-menu {
        border-radius: 2rem;
        corner-shape: squircle
    }
}

.dropdown-menu {
    border-color: var(--custom-color-border);
    box-shadow: 0 4px 16px #00000014;
    padding: .5rem
}

.dropdown-item {
    border-radius: .5rem
}

@supports (corner-shape: squircle) {
    .dropdown-item {
        border-radius: 1rem;
        corner-shape: squircle
    }
}

.dropdown-item {
    padding: .625rem 1rem
}

/* Action Dropdown - spezielles Styling für Button Group Dropdowns */
.dropdown-menu.action-dropdown {
    margin-top: 1px;
    border-top-left-radius: 1rem;
    border-top-right-radius: 1rem;
    border-bottom-left-radius: 1rem;
    border-bottom-right-radius: 1rem;
}

@supports (corner-shape: squircle) {
    .dropdown-menu.action-dropdown {
        border-top-left-radius: 2rem;
        border-top-right-radius: 2rem;
        border-bottom-left-radius: 2rem;
        border-bottom-right-radius: 2rem;
        corner-shape: squircle;
    }
}

.dropdown-menu.action-dropdown.show {
    margin-top: 1px;
    border-top-left-radius: 1rem;
    border-top-right-radius: 1rem;
    border-bottom-left-radius: 1rem;
    border-bottom-right-radius: 1rem;
    box-shadow: -2px 2px 8px #00000008, 2px 2px 8px #00000008, 0 4px 16px #00000014;
}

@supports (corner-shape: squircle) {
    .dropdown-menu.action-dropdown.show {
        border-top-right-radius: 2rem;
        border-bottom-left-radius: 2rem;
        border-bottom-right-radius: 2rem;
        corner-shape: squircle;
    }
}

.form-text {
    font-size: .8125rem;
    color: var(--custom-color-text-muted)
}

.valid-feedback, .invalid-feedback {
    font-size: .8125rem;
    margin-top: .5rem
}

.spinner-border.text-primary, .spinner-grow.text-primary {
    color: var(--custom-color-primary) !important
}

.spinner-border.text-secondary, .spinner-grow.text-secondary, .spinner-border.text-success, .spinner-grow.text-success {
    color: var(--custom-color-success) !important
}

header {
    background-color: var(--custom-color-white);
    border-bottom: 1px solid var(--custom-color-border)
}

@media(min-width:768px) {
    header {
        margin-bottom: 2rem
    }
}

header .custom-header-logo {
    object-fit: contain;
    object-position: center
}

@media(min-width:768px) {
    header .custom-header-logo {
        translate: 0 2rem
    }
}

@media(max-width:768px) {
    header .custom-header-logo {
        margin: 0 auto
    }
}

header .custom-nav-container {
    display: flex;
    justify-content: space-between;
    align-items: center
}

@media(min-width:768px) {
    header .custom-nav-container > div:last-child {
        margin-left: auto
    }
}

header nav {
    height: 100%;
    display: flex;
    align-items: center;
    gap: 1rem
}

    header nav ul {
        display: flex;
        flex-direction: row;
        gap: 1rem;
        list-style: none;
        margin: 0;
        padding: 0
    }

    header nav li a {
        text-decoration: none;
        color: var(--custom-color-text)
    }

        header nav li a:hover {
            color: var(--custom-color-text-muted);
            text-decoration: underline
        }

        header nav li a.active {
            color: var(--custom-color-primary)
        }

header .custom-nav-user {
    height: 100%;
    display: flex;
    align-items: center;
    gap: .5rem;
    text-decoration: none
}

    header .custom-nav-user .custom-nav-user-avatar {
        width: 40px;
        height: 40px;
        border-radius: 50%;
        overflow: hidden
    }

        header .custom-nav-user .custom-nav-user-avatar img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            object-position: center
        }

    header .custom-nav-user .custom-nav-user-name {
        font-size: .875rem;
        font-weight: 600;
        color: var(--custom-color-text-muted)
    }

body {
    background-color: var(--custom-background)
}

main > hr {
    display: none
}

.core-shape, .card {
    --_bg: var(--custom-core-shape-background);
    --_border-color: var(--custom-core-shape-border-color);
    --_radius: var(--custom-core-shape-border-radius);
    background-color: var(--_bg);
    border: 1px solid var(--_border-color);
    border-radius: 40px;
    padding: var(--custom-core-shape-padding);
    backdrop-filter: blur(5px);
}

@supports (corner-shape: squircle) {
    .core-shape, .card {
        corner-shape: squircle;
        border-radius: var(--_radius)
    }
}

.core-shape:is(.card .card), .card:is(.card .card) {
    background: none !important;
    border: none !important;
    padding: 0;
    border-radius: 0 !important
}

.core-shape .card-body, .card .card-body {
    padding: 0
}

.core-shape .card-header, .card .card-header {
    background: none;
    border: none;
    padding: 0
}

.dropdown-menu.show {
    --_bg: var(--custom-core-shape-background-dropdown);
    --_border-color: var(--custom-core-shape-border-color);
    --_radius: var(--custom-core-shape-border-radius);
    background-color: var(--_bg);
    border: 1px solid var(--_border-color);
    border-radius: 40px;
    padding: var(--custom-core-shape-padding-dropdown);
    backdrop-filter: blur(5px);
}

@supports (corner-shape: squircle) {
    .dropdown-menu.show {
        corner-shape: squircle;
        border-radius: var(--_radius)
    }
}

.dropdown-menu.show .dropdown-item {
    padding: .5rem 1rem
}

form:not(.card-body form):not(.modal-body form):not(.offcanvas-body form):not(.row) {
    display: flex;
    flex-direction: column;
    gap: var(--custom-section-gap);
    margin-inline: auto;
    padding-block: 2rem
}

.custom-form-actions {
    display: flex;
    justify-content: end;
    gap: 1rem;
    padding-top: .5rem
}

label:not(.form-label):not(.form-check-label):not(.btn):not(.input-group-text):not(.form-floating>label) {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    font-size: .8125rem;
    font-weight: 600;
    color: var(--custom-color-text);
    margin-bottom: .5rem
}

.custom-label-badge {
    font-size: .625rem;
    font-weight: 500;
    color: var(--custom-color-text-muted);
    text-transform: uppercase;
    letter-spacing: .06em
}

a:not(.btn,.nav-link,.navbar-brand,.dropdown-item,.dropdown-toggle,.page-link,.list-group-item,.accordion-button,.card-link) {
    color: var(--custom-color-link);
    font-weight: 600;
    text-decoration: underline;
    text-underline-offset: .15em;
    transition: text-decoration-thickness .15s ease
}

    a:not(.btn,.nav-link,.navbar-brand,.dropdown-item,.dropdown-toggle,.page-link,.list-group-item,.accordion-button,.card-link):hover {
        text-decoration-thickness: 2px
    }

button[popovertarget] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    background: none;
    border: none;
    font-size: .8125rem;
    color: var(--custom-color-text-muted);
    cursor: help;
    line-height: 1;
    translate: 0 .0625rem;
    transition: color .15s ease
}

    button[popovertarget]:hover {
        color: var(--custom-color-primary)
    }

[popover] {
    border: none;
    overflow: visible;
    padding: .625rem 1rem;
    background: var(--custom-color-hint-bg);
    color: var(--custom-color-hint-text);
    font-size: .8125rem;
    line-height: 1.5;
    border-radius: .625rem;
    box-shadow: 0 4px 16px #0000001f;
    width: max-content;
    max-width: 18rem;
    position-area: top;
    margin-bottom: .5rem;
    position-try-fallbacks: flip-block;
    transition: opacity .15s ease,transform .15s ease,overlay .15s ease allow-discrete,display .15s ease allow-discrete;
    opacity: 0;
    transform: translateY(.25rem)
}

    [popover]:popover-open {
        opacity: 1;
        transform: translateY(0)
    }

@starting-style {
    [popover]:popover-open {
        opacity: 0;
        transform: translateY(.25rem)
    }
}

[popover]:after {
    content: "";
    position: absolute;
    bottom: -.375rem;
    left: 50%;
    translate: -50% 0;
    border-width: .375rem .375rem 0;
    border-style: solid;
    border-color: var(--custom-color-hint-bg) transparent transparent
}

.custom-footer-wave {
    display: block;
    line-height: 0;
    margin-top: auto;
    height: 64px;
    width: 100%;
    background-color: var(--custom-green-dark);
    mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 80" preserveAspectRatio="none"><path d="M0,80 C400,0 800,0 1200,80 Z" fill="black"/></svg>');
    -webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 80" preserveAspectRatio="none"><path d="M0,80 C400,0 800,0 1200,80 Z" fill="black"/></svg>');
    mask-size: 100% 100%;
    -webkit-mask-size: 100% 100%;
    mask-repeat: no-repeat;
    -webkit-mask-repeat: no-repeat;
    mask-position: center;
    -webkit-mask-position: center;
    opacity: 1;
    transition: opacity 0.3s ease, height 0.3s ease
}

@media (max-width: 575px) {
    .custom-footer-wave {
        display: none
    }
}

.custom-footer {
    background-color: var(--custom-green-dark);
    color: var(--custom-color-white);
    padding: 4.5rem 0
}

    /* Auf Laptop-Breiten liegt der Container fast an den Bildschirmkanten (nur das
       schmale Bootstrap-Gutter-Padding) – im dunklen Footer-Block wirkt das gequetscht,
       daher dort mehr Innenabstand. Ab sehr breiten Fenstern sorgt bereits der
       zentrierte Container für Abstand, dann bleibt die Kante bündig zum Seiteninhalt. */
    @media (width <= 1600px) {
        .custom-footer .container {
            padding-inline: clamp(1.5rem, 3vw, 3rem);
        }
    }

    .custom-footer a {
        color: var(--custom-color-white)
    }

    .custom-footer .custom-footer-heading {
        font-family: Obviously, sans-serif;
        font-weight: 600;
        font-size: 2rem;
        color: var(--custom-color-accent);
        margin-bottom: 0.75rem
    }

    .custom-footer .custom-footer-text {
        font-size: 1rem;
        color: var(--custom-color-white);
        margin-bottom: 1.25rem;
        line-height: 1.6
    }

    .custom-footer .custom-footer-nav {
        display: flex;
        flex-wrap: wrap;
        gap: 0.25rem 1.25rem;
        list-style: none;
        padding: 0;
        margin: 0
    }

        .custom-footer .custom-footer-nav a {
            font-weight: bold;
            text-decoration: none
        }

            .custom-footer .custom-footer-nav a:hover {
                text-decoration: underline
            }

.custom-footer-logo {
    height: 80px;
    width: auto;
    margin-top: 1rem;
    display: inline-block
}

form {
    margin-inline: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important
}

:is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea,label:has(>input[type=file])) {
    --_bg: var(--custom-color-input-bg);
    --_border-color: var(--custom-color-border);
    --_radius: var(--custom-input-radius-default);
    display: block;
    width: 100%;
    font-size: var(--custom-input-font-size);
    font-family: inherit;
    color: var(--custom-color-text);
    background-color: var(--_bg);
    border: 1px solid var(--_border-color);
    border-radius: var(--_radius)
}

@supports (corner-shape: squircle) {
    :is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea,label:has(>input[type=file])) {
        border-radius: var(--custom-input-radius-squircle);
        corner-shape: squircle
    }
}

:is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea,label:has(>input[type=file])) {
    outline: none;
    transition: border-color .2s ease
}

    :is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea,label:has(>input[type=file])):focus {
        --_border-color: var(--custom-color-border-focus);
    }

:is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),textarea)::placeholder {
    color: var(--custom-color-placeholder)
}

:is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea):is(.is-invalid,:user-invalid) {
    --_border-color: var(--custom-color-error);
    --_bg: color-mix(in oklch, var(--custom-color-error) 4%, var(--custom-color-input-bg))
}

:is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea):is(:disabled,[readonly]) {
    --_bg: oklch(96% 0 0);
    cursor: default
}

input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]) {
    height: auto;
    padding: var(--custom-input-py) var(--custom-input-px)
}

.custom-input-group :is(input[type=date],input[type=time],input[type=datetime-local])::-webkit-calendar-picker-indicator {
    display: none
}

:is(input[type=date],input[type=time],input[type=datetime-local]) {
    height: auto;
    white-space: pre;
    max-width: -webkit-fill-available
}

.custom-input-group {
    position: relative
}

    .custom-input-group > input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]) {
        padding-left: 2.75rem
    }

    .custom-input-group > .custom-input-icon {
        position: absolute;
        left: var(--custom-input-px);
        top: 50%;
        translate: 0 -50%;
        width: 1.125rem;
        height: 1.125rem;
        color: var(--custom-color-placeholder);
        pointer-events: none
    }

    .custom-input-group:has(:focus) > .custom-input-icon {
        color: var(--custom-color-primary)
    }

.custom-input-group--end > input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]) {
    padding-left: var(--custom-input-px);
    padding-right: 2.75rem
}

.custom-input-group--end > :is(.custom-input-icon,.custom-input-addon) {
    left: auto;
    right: var(--custom-input-px)
}

.custom-input-group--end > .custom-input-addon {
    position: absolute;
    right: var(--custom-input-px);
    top: 50%;
    translate: 0 -50%;
    font-size: var(--custom-input-font-size);
    color: var(--custom-color-text-muted);
    pointer-events: none
}

textarea {
    padding: .875rem var(--custom-input-px);
    resize: vertical
}

.custom-field-hint {
    font-size: .75rem;
    color: var(--custom-color-text-muted);
    margin-top: .375rem
}

    .custom-field-hint strong {
        color: var(--custom-color-error);
        font-weight: 600
    }

select {
    appearance: none;
    cursor: pointer;
    background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23777' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    background-size: 1rem
}

select.form-control {
    height: calc(var(--custom-input-py) * 2 + 1.5em + 2px);
    padding: var(--custom-input-py) var(--custom-input-px);
}

label:has(>input[type=file]) {
    display: flex;
    align-items: center;
    gap: .75rem;
    height: var(--custom-input-height);
    padding: var(--custom-input-py) var(--custom-input-px);
    color: var(--custom-color-placeholder);
    cursor: pointer
}

    label:has(>input[type=file]) input[type=file] {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0,0,0,0)
    }

    label:has(>input[type=file]):hover {
        --_border-color: var(--custom-color-border-focus)
    }

.custom-file-icon {
    flex-shrink: 0;
    width: 1.25rem;
    height: 1.25rem;
    opacity: .45
}

.custom-file-item {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin-top: .625rem;
    font-size: .8125rem;
    color: var(--custom-color-primary);
    font-weight: 500
}

.custom-file-item-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    background-color: var(--custom-color-error);
    color: var(--custom-color-white);
    font-size: .5rem;
    font-weight: 700;
    line-height: 1
}

.input-group:not(:has(>*+*)) :is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea):first-child {
    border-radius: var(--_radius)
}

@supports (corner-shape: squircle) {
    .input-group:not(:has(>*+*)) :is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea):first-child {
        border-radius: var(--custom-input-radius-squircle);
        corner-shape: squircle
    }
}

.input-group:not(:has(>*+*)) :is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea):last-child {
    border-radius: var(--_radius)
}

@supports (corner-shape: squircle) {
    .input-group:not(:has(>*+*)) :is(input:not([type=checkbox],[type=radio],[type=file],[type=hidden],[type=submit],[type=reset],[type=button],[type=image],[type=range],[type=color]),select,textarea):last-child {
        border-radius: var(--custom-input-radius-squircle);
        corner-shape: squircle
    }
}

:is(label:has(>input[type=checkbox]),label:has(>input[type=radio])) {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    cursor: pointer;
    font-size: .875rem;
    line-height: 1.5;
    color: var(--custom-color-text)
}

    :is(label:has(>input[type=checkbox]),label:has(>input[type=radio])) input {
        --_size: 1.375rem;
        --_bg: var(--custom-color-white);
        --_border-color: var(--custom-color-border);
        --_radius: .3125rem;
        appearance: none;
        flex-shrink: 0;
        width: var(--_size);
        height: var(--_size);
        margin-top: .0625rem;
        background-color: var(--_bg);
        border: 1.5px solid var(--_border-color);
        border-radius: var(--_radius)
    }

@supports (corner-shape: squircle) {
    :is(label:has(>input[type=checkbox]),label:has(>input[type=radio])) input {
        --_radius: 1rem;
        corner-shape: squircle
    }
}

:is(label:has(>input[type=checkbox]),label:has(>input[type=radio])) input {
    cursor: pointer;
    transition: all .15s ease
}

    :is(label:has(>input[type=checkbox]),label:has(>input[type=radio])) input:checked {
        --_bg: var(--custom-color-success);
        --_border-color: var(--custom-color-success);
        background-image: var(--_check-icon);
        background-repeat: no-repeat;
        background-position: center;
        background-size: var(--_check-size, 70%)
    }

.custom-checkbox-group {
    display: flex;
    flex-direction: column;
    gap: .875rem
}

label:has(>input[type=checkbox]) input[type=checkbox] {
    --_check-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>")
}

label:has(>input[type=radio]) input[type=radio] {
    --_radius: 50%;
    --_check-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='5' fill='white'/></svg>");
    --_check-size: 100%
}

.custom-btn-group, .custom-btn-group-item {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .625rem
}

    .custom-btn-group:is(.custom-btn-group-item), .custom-btn-group-item:is(.custom-btn-group-item) {
        width: 100%;
        border-bottom: 1px solid var(--custom-color-text);
        padding-block: 2rem
    }

.custom-btn {
    --_bg: transparent;
    --_color: inherit;
    --_border: transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .625rem;
    padding: var(--custom-btn-py) var(--custom-btn-px);
    font-size: var(--custom-btn-font-size);
    font-weight: 600;
    font-family: inherit;
    line-height: 1;
    color: var(--_color);
    background-color: var(--_bg);
    border: 1px solid var(--_border);
    border-radius: var(--custom-btn-radius-default)
}

@supports (corner-shape: squircle) {
    .custom-btn {
        border-radius: var(--custom-btn-radius-squircle);
        corner-shape: squircle
    }
}

.custom-btn {
    cursor: pointer;
    transition: background-color .2s ease,transform .1s ease
}

    .custom-btn i {
        font-size: 1.25rem
    }

    .custom-btn:hover:not(:disabled) {
        background-color: var(--_bg-hover, var(--_bg))
    }

    .custom-btn:active:not(:disabled) {
        transform: scale(.98)
    }

    .custom-btn:disabled {
        opacity: .5;
        cursor: not-allowed
    }

.custom-btn--solid--default {
    --_bg: oklch(from var(--custom-color-text) l c h / .9);
    --_bg-hover: oklch(from var(--custom-color-text) l c h / 1);
    --_color: var(--custom-background);
    --_border: var(--custom-color-text)
}

.custom-btn--solid--primary {
    --_bg: var(--custom-color-primary);
    --_bg-hover: var(--custom-color-primary-hover);
    --_color: var(--custom-background);
    --_border: var(--custom-color-primary)
}

.custom-btn--solid--secondary {
    --_bg: var(--custom-color-success);
    --_bg-hover: var(--custom-color-success-hover);
    --_color: var(--custom-background);
    --_border: var(--custom-color-success)
}

.custom-btn--solid--accent {
    --_bg: var(--custom-color-accent);
    --_bg-hover: var(--custom-color-accent-hover);
    --_color: var(--custom-color-accent-text);
    --_border: var(--custom-color-accent)
}

.custom-btn--outline {
    --_bg: transparent
}

.custom-btn--outline--default {
    --_bg-hover: oklch(from var(--custom-color-text) l c h / .05);
    --_color: var(--custom-color-text);
    --_border: var(--custom-color-text)
}

.custom-btn--outline--primary {
    --_bg-hover: oklch(from var(--custom-color-primary) l c h / .05);
    --_color: var(--custom-color-primary);
    --_border: var(--custom-color-primary)
}

.custom-btn--outline--secondary {
    --_bg-hover: oklch(from var(--custom-color-success) l c h / .05);
    --_color: var(--custom-color-success);
    --_border: var(--custom-color-success)
}

.custom-btn--outline--accent {
    --_bg-hover: oklch(from var(--custom-color-accent) l c h / .05);
    --_color: var(--custom-color-accent);
    --_border: var(--custom-color-accent)
}

.custom-btn--ghost {
    --_bg: transparent
}

.custom-btn--ghost--default {
    --_bg-hover: oklch(from var(--custom-color-text) l c h / .05);
    --_color: var(--custom-color-text)
}

.custom-btn--ghost--primary {
    --_bg-hover: oklch(from var(--custom-color-primary) l c h / .05);
    --_color: var(--custom-color-primary)
}

.custom-btn--ghost--secondary {
    --_bg-hover: oklch(from var(--custom-color-success) l c h / .05);
    --_color: var(--custom-color-success)
}

.custom-btn--ghost--accent {
    --_bg-hover: oklch(from var(--custom-color-accent) l c h / .05);
    --_color: var(--custom-color-accent)
}

.btn-small {
    --custom-btn-px: 1.5rem;
    --custom-btn-py: .75rem
}

.btn-full-width {
    width: 100%
}

.custom-table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch
}

table {
    width: 100%;
    border-collapse: collapse;
    color: var(--custom-color-text);
    background: none
}

:has(> table.d-sm-table),
:has(> table.d-md-table),
:has(> table.d-lg-table),
:has(> table.d-xl-table),
:has(> table.table-hover),
:has(> table.panel-table) {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch
}

    table.panel-table.table.table-hover, table tr, table th, table td, table tbody {
        background-color: transparent !important;
        background: none !important
    }

    table th, table td {
        padding: 1rem 1.25rem;
        text-align: left;
        vertical-align: middle;
    }

    table thead th {
        font-size: .75rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: var(--custom-color-success);
        border-bottom: 1px solid var(--custom-color-border);
        white-space: nowrap;
    }

    table tbody td {
        min-width: 8rem
    }

    table td .input-group,
    table td input,
    table tfoot th .input-group,
    table tfoot th input {
        width: 100%;
    }

    table tbody tr {
        border-bottom: 1px solid var(--custom-color-border);
        transition: background-color .2s ease
    }

        table tbody tr:last-child {
            border-bottom: none
        }

        table tbody tr:hover {
            background-color: oklch(from var(--custom-color-text) l c h/.025)
        }

.custom-table-sortable button {
    all: unset;
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    cursor: pointer;
    font: inherit;
    color: inherit;
    text-transform: inherit;
    letter-spacing: inherit
}

.custom-table-sort-icon {
    font-size: .85rem;
    opacity: .5
}

.custom-table-cell--end {
    text-align: right;
    white-space: nowrap
}

.custom-table-cell--action {
    width: 1%;
    min-width: unset;
    text-align: center;
    padding-inline: .5rem;
    white-space: nowrap
}

.custom-btn--icon {
    padding: .625rem;
    border-radius: 50%
}

.custom-table-status-dot {
    display: inline-block;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background-color: var(--custom-color-border);
    margin-right: .5rem;
    vertical-align: middle
}

.custom-table-status-dot--success {
    background-color: var(--custom-color-success)
}

:is(.custom-error,.custom-alert,.custom-hint) {
    --_bg: transparent;
    --_border-color: transparent;
    --_color: inherit;
    --_radius: 1rem;
    --_gap: 1rem;
    --_py: 1.25rem;
    --_px: 1.5rem;
    --_font-size: .875rem;
    display: flex;
    align-items: flex-start;
    gap: var(--_gap);
    padding: var(--_py) var(--_px);
    color: var(--_color);
    background-color: var(--_bg);
    border: 1px solid var(--_border-color);
    font-size: var(--_font-size);
    line-height: 1.6;
    border-radius: var(--_radius)
}

@supports (corner-shape: squircle) {
    :is(.custom-error,.custom-alert,.custom-hint) {
        --_radius: 1.5rem;
        corner-shape: squircle
    }
}

:is(.custom-alert-icon,.custom-hint-icon,.custom-error-icon) {
    flex-shrink: 0;
    width: 1.25rem;
    height: 1.25rem;
    margin-top: .125rem
}

.custom-error {
    --_bg: var(--custom-color-error-bg);
    --_border-color: var(--custom-color-error-border);
    --_color: var(--custom-color-text);
    --_gap: .75rem;
    --_py: .875rem;
    --_px: 1rem;
    --_font-size: .8125rem;
    margin-top: .625rem;
    line-height: 1.55
}

    .custom-error strong {
        font-weight: 700
    }

.custom-error-icon {
    color: var(--custom-color-error)
}

.custom-alert--success {
    --_bg: var(--custom-color-alert-success-bg);
    --_border-color: var(--custom-color-alert-success-border);
    --_color: var(--custom-color-alert-success-text)
}

.custom-alert--info {
    --_bg: var(--custom-color-alert-info-bg);
    --_border-color: var(--custom-color-alert-info-border);
    --_color: var(--custom-color-alert-info-text)
}

.custom-alert--warning {
    --_bg: var(--custom-color-alert-warning-bg);
    --_border-color: var(--custom-color-alert-warning-border);
    --_color: var(--custom-color-alert-warning-text)
}

.custom-alert--error {
    --_bg: var(--custom-color-alert-error-bg);
    --_border-color: var(--custom-color-alert-error-border);
    --_color: var(--custom-color-alert-error-text)
}

.custom-hint {
    --_bg: var(--custom-color-hint-bg);
    --_border-color: transparent;
    --_color: var(--custom-color-hint-text)
}

@font-face {
    font-family: Geist;
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/geist-font-1.8.0/webfonts/Geist[wght].woff2") format("woff2")
}

@font-face {
    font-family: Geist;
    font-weight: 100 900;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/geist-font-1.8.0/webfonts/Geist-Italic[wght].woff2") format("woff2")
}

@font-face {
    font-family: Obviously Narrow;
    font-weight: 500;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Narrow Medium/Web/Obviously-NarrowMedium.woff2") format("woff2"),url("../fonts/Obviously Narrow Medium/Web/Obviously-NarrowMedium.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 100;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Thin.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Thin.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 100;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-ThinItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-ThinItalic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 300;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Light.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Light.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 300;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-LightItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-LightItalic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 400;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Regular.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Regular.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 400;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Italic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Italic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 500;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Medium.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Medium.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 500;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-MediumItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-MediumItalic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 600;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Semibold.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Semibold.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 600;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-SemiboldItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-SemiboldItalic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 700;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Bold.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Bold.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 700;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-BoldItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-BoldItalic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 900;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Black.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Black.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 900;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-BlackItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-BlackItalic.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 950;
    font-style: normal;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-Super.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-Super.woff") format("woff")
}

@font-face {
    font-family: Obviously;
    font-weight: 950;
    font-style: italic;
    font-display: swap;
    src: url("../fonts/Obviously Normal/Web/Obviously-SuperItalic.woff2") format("woff2"),url("../fonts/Obviously Normal/Web/Obviously-SuperItalic.woff") format("woff")
}

:root {
    --font-obviously: "Obviously", sans-serif;
    --font-obviously-narrow: "Obviously Narrow", sans-serif;
    --font-geist: "Geist", "Helvetica Neue", Helvetica, Arial, sans-serif;
    --font-heading: var(--font-obviously);
    --font-heading-narrow: var(--font-obviously-narrow);
    --font-sans: var(--font-geist)
}

.font-obviously {
    font-family: var(--font-obviously)
}

.font-obviously-narrow {
    font-family: var(--font-obviously-narrow)
}

.font-geist {
    font-family: var(--font-geist)
}

h1, .h1, h2, .h2, h3, .h3, .core-shape .card-header, .card .card-header, h4, .h4 {
    font-family: var(--font-heading);
    line-height: 1.2;
    margin: 0 0 1.25rem;
    color: var(--custom-color-primary)
}

h1, .h1, .custom-h1 {
    font-size: clamp(2.5rem,5vw,4.5rem);
    font-weight: 700
}

h2, .h2, .custom-h2 {
    font-size: clamp(1.5rem,4vw,2rem);
    font-weight: 700
}

h3, .h3, .core-shape .card-header, .card .card-header, .custom-h3 {
    font-size: clamp(1.25rem,3vw,1.75rem);
    font-weight: 600
}

h4, .h4, .custom-h4 {
    font-size: clamp(1.125rem,2vw,1.25rem);
    font-weight: 600
}

p {
    font-size: clamp(.875rem,2vw,1rem);
    font-weight: 400;
    line-height: 1.4;
    margin: 0 0 1.25rem
}

.large-text {
    font-size: clamp(1.125rem,2vw,1.25rem);
    font-weight: 400;
    line-height: 1.45;
    margin: 0 0 1.25rem
}

label:has(label+input,label+select,label+textarea,label+.custom-checkbox-group,label+label:has(>input[type=file])) {
    font-size: clamp(.875rem,2vw,1rem);
    font-weight: 600;
    line-height: 1.15
}

strong {
    font-weight: 700
}

.font-normal {
    font-weight: 400
}

.font-semibold {
    font-weight: 600
}

.font-bold {
    font-weight: 700
}

.font-extrabold {
    font-weight: 800
}

.font-black {
    font-weight: 900
}

.sidebar-concept {
    display: grid;
    grid-template-columns: 1fr 3fr;
    gap: 2rem;
    margin-inline: 2rem
}

.btn-history-back {
    margin-bottom: 1rem;
    background: var(--custom-core-shape-background);
    border: 1px solid oklch(from var(--custom-color-primary) l c h/.25);
    text-decoration: none !important
}

.custom-sidebar {
    padding-inline: 1rem;
    padding-block: 2.5rem
}

    .custom-sidebar ul {
        list-style: none;
        padding: 0;
        margin: 0 0 .5rem
    }

        .custom-sidebar ul li {
            margin-bottom: 1px
        }

            .custom-sidebar ul li.heading {
                font-size: .8125rem;
                font-weight: 600;
                color: var(--custom-green);
                text-transform: uppercase;
                letter-spacing: .06em;
                padding-inline: 2rem;
                margin-bottom: .25rem
            }

            .custom-sidebar ul li a {
                width: 100%;
                text-decoration: none;
                text-align: left;
                padding-inline: 2rem;
                padding-block: 1.5rem;
                justify-content: flex-start;
                font-weight: 400
            }

                .custom-sidebar ul li a.active {
                    background: oklch(from var(--custom-color-primary) l c h/.05);
                    color: var(--custom-color-primary);
                    font-weight: 800
                }

                    .custom-sidebar ul li a.active i {
                        color: var(--custom-green)
                    }


h1:focus {
    outline: none;
}

.h5 {
    color: var(--bs-primary);
}

.sortable-column-header {
    cursor: pointer;
}

.pm-async-loader {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    z-index: 1000;
}

#blazor-error-ui {
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.accordion-static::after {
    background-image: none !important;
}

.workflow .accordion-button {
    padding-left: 0.5rem !important;
}

.workflow .accordion-body {
    padding-left: 0.5rem !important;
}

.workflow .nav-link {
    padding-left: 0 !important;
}

#loading-in-progress circle {
    stroke: var(--custom-green) !important;
}

#loading-in-progress .loading-progress-text {
    inset: calc(20vh + 4.5rem) 0 auto 0.2rem !important;
}

.table-group-divider {
    border-top: calc(var(--bs-border-width)) solid currentcolor;
}

.wysiwyg-borderless-readonly.quill-editor-read-only .ql-container {
    border: none !important;
}

.btn-workflow-back {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
    margin-bottom: 0.75rem;
    padding-inline: 1.25rem;
    padding-block: 0.875rem;
    text-decoration: none !important;
    font-weight: 600;
    color: var(--custom-color-primary)
}

    .btn-workflow-back:hover {
        background: oklch(from var(--custom-color-primary) l c h / .05);
        color: var(--custom-color-primary)
    }

/* -----------------------------------------------------------
   Anpassungen P+M
   ----------------------------------------------------------- */

/* Viewtext-Inhalte im Footer erben das Footer-Styling,
   damit WYSIWYG-Elemente (h1–h4, p) nicht durch die
   globalen Heading-Regeln überschrieben werden. */
.custom-footer .custom-footer-heading h1,
.custom-footer .custom-footer-heading h2,
.custom-footer .custom-footer-heading h3,
.custom-footer .custom-footer-heading h4,
.custom-footer .custom-footer-heading p {
    font-family: inherit;
    font-weight: inherit;
    font-size: inherit;
    color: inherit;
    line-height: inherit;
    margin: 0
}

.custom-footer .custom-footer-text h1,
.custom-footer .custom-footer-text h2,
.custom-footer .custom-footer-text h3,
.custom-footer .custom-footer-text h4,
.custom-footer .custom-footer-text p {
    font-size: inherit;
    color: inherit;
    line-height: inherit;
    margin: 0
}

/* Allgemeine Korrekturen */
.alert p {
    margin: 0;
}

.navbar {
    overflow: visible;
}

.navbar-brand img {
    height: clamp(90px, 8vw, 105px);
    width: auto;
    z-index: 1;
}

@media (min-width: 992px) {
    .navbar-brand img {
        margin-bottom: -3rem;
    }
}

@media (max-width: 991.98px) {
    .navbar-right-group {
        margin-top: .5rem;
        padding-top: .5rem;
        border-top: 1px solid var(--custom-color-border);
    }
}

#workflowstrahl i[class*="text-"] {
    color: inherit !important;
}

.dashboard h1 {
    font-weight: 400;
    font-size: clamp(24px, 5vw, 44px);
}

.dashboard h1:not(:has(+ h2)) {
    margin-bottom: 2rem !important;
}

.dashboard h1 + h2 {
    font-size: clamp(20px, 3vw, 32px);
    font-weight: 400 !important;
    margin-bottom: 2rem;
}

.dashboard h1 > strong {
    font-weight: 500 !important;
}

.dashboard h2 {
    font-weight: 400;
    font-size: clamp(20px, 3vw, 32px);
    margin-bottom: 2rem;
}

.dashboard h4 {
    font-weight: 400;
}

.foerderprogramm-auswahl-card {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.875rem 1.25rem;
    border: 2px solid var(--custom-color-border);
    border-radius: var(--bs-card-border-radius, 0.375rem);
    cursor: pointer;
    transition: border-color .2s ease, background-color .2s ease;
}

    .foerderprogramm-auswahl-card:hover {
        border-color: oklch(from var(--custom-color-primary) l c h / .5);
        background: oklch(from var(--custom-color-primary) l c h / .03);
    }

    .foerderprogramm-auswahl-card.selected {
        border-color: var(--custom-color-primary);
        background: oklch(from var(--custom-color-primary) l c h / .05);
        color: var(--custom-color-primary);
    }

@media (min-width: 1400px) {
    .container,
    .container-xxl,
    .container-xl {
        max-width: 1650px;
    }
}

.dashboard .card {
    height: 100%;
}

#load-info-container > div {
    background-color: var(--custom-background) !important;
}

#loading-in-progress {
    position: relative;
}

.loading-progress-text {
    position: static !important;
    margin-top: -5.5rem !important;
    text-align: center !important;
}

.modal-header.bg-danger .modal-title,
.modal-header.bg-warning .modal-title,
.modal-header.bg-success .modal-title,
.modal-header.text-bg-danger .modal-title,
.modal-header.text-bg-warning .modal-title,
.modal-header.text-bg-success .modal-title,
.text-bg-danger .modal-header .modal-title,
.text-bg-warning .modal-header .modal-title,
.text-bg-success .modal-header .modal-title {
    color: var(--custom-color-white) !important;
}

.ingonitoInfo > div {
    margin-top: -1.5rem;
    background-color: var(--custom-background) !important;
}

.telefonnummer-list-form .card-header,
.address-list-form .card-header,
.email-list-form .card-header {
    font-size: clamp(1.125rem, 2vw, 1.25rem);
}

.btn:focus:not(:hover):not(:active) {
    color: var(--bs-btn-color) !important;
    background-color: var(--bs-btn-bg) !important;
    border-color: var(--bs-btn-border-color) !important;
}

.btn-accent {
    --bs-btn-bg: var(--custom-color-accent);
    --bs-btn-border-color: var(--custom-color-accent);
    --bs-btn-hover-bg: var(--custom-color-accent-hover);
    --bs-btn-hover-border-color: var(--custom-color-accent-hover);
    --bs-btn-active-bg: var(--custom-color-accent-hover);
    --bs-btn-active-border-color: var(--custom-color-accent-hover);
    --bs-btn-color: var(--custom-color-accent-text);
    color: var(--custom-color-accent-text) !important;
}

    .btn-accent:hover, .btn-accent:focus, .btn-accent:active {
        color: var(--custom-color-accent-text) !important;
    }

/* Startseite (nicht eingeloggt) */
body:has(.startseite-nicht-eingeloggt) {
    background: linear-gradient(
        90deg,
        oklch(98.3% 0.00744 151.9) 0%,
        oklch(98.3% 0.00744 151.9) 33%,
        oklch(96.3% 0.015703 154.5) 33%,
        oklch(96.3% 0.015703 154.5) 100%
    );
}

.startseite-nicht-eingeloggt {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 4rem;
    padding-block: 4rem;
    padding-inline: clamp(1rem, 5vw, 2rem);
    box-sizing: border-box;
    width: 100%;
}

.startseite-content-left {
    width: min(600px, 50%);
    flex-shrink: 0;
}

.login-image img {
    display: block;
    width: 100%;
    height: auto;
    object-fit: contain;
}

.startseite-content-right {
    flex: 1 1 40%;
    min-width: 0;
}

@media (max-width: 768px) {
    .startseite-nicht-eingeloggt {
        flex-direction: column;
        gap: 2rem;
        padding-block: 2rem;
        min-height: unset;
    }

    .startseite-content-left {
        width: 100%;
    }

    .startseite-content-right {
        flex: 1 1 100%;
    }
}

/* PM-Select Anpassungen */
.pm-select-input-container {
    position: relative;
    grid-auto-columns: 1fr auto;
    cursor: pointer;
    anchor-name: --pm-select-anchor;
    border: 1px solid var(--custom-color-border);
    border-radius: var(--custom-input-radius-default);
    transition: border-color .2s ease;
    min-height: calc(var(--custom-input-py) * 2 + 1rem);
}

@supports (corner-shape: squircle) {
    .pm-select-input-container {
        border-radius: var(--custom-input-radius-squircle);
        corner-shape: squircle;
    }
}

.pm-select-input-container:has(.pm-select-focused, input:focus) {
    color: var(--custom-color-text);
    background-color: var(--custom-color-input-bg) !important;
    border-color: var(--custom-color-border-focus) !important;
    outline: 0;
    box-shadow: none !important;
}

.pm-select-input {
    padding-left: 0 !important;
    padding-right: 2.5rem !important;
    outline: 0;
    width: 100%;
}

@supports (anchor-name: --a) {
    .pm-select-wrapper .pm-select-container .pm-select-dropdown {
        position: fixed !important;
        position-anchor: --pm-select-anchor !important;
        position-area: block-end !important;
        width: anchor-size(width) !important;
        min-width: unset !important;
        max-width: unset !important;
        margin-block-start: 2px !important;
        position-try-fallbacks: flip-block;
    }
}

.pm-select-options {
    padding: 0.25rem 0;
}

.pm-select-option {
    padding: 0.5rem 1rem;
    cursor: pointer;
    transition: background-color 0.1s ease;
}

.pm-select-option:hover {
    background-color: var(--custom-green-ultra-light);
    color: var(--custom-color-primary);
}

.pm-select-option.selected {
    background-color: var(--custom-color-success);
    color: var(--custom-color-white);
}

.pm-select-option.selected:hover {
    background-color: var(--custom-color-success-hover);
}

.pm-select-option.highlighted {
    background-color: var(--custom-green-ultra-light);
    color: var(--custom-color-primary);
}

.pm-select-option.highlighted:hover {
    background-color: var(--custom-green-light);
}

.pm-select-option.selected.highlighted {
    background-color: var(--custom-color-success-hover);
    color: var(--custom-color-white);
}

/* Button Group - Squircle-Support für Dropdown-Toggle (rechter Teil) */
.btn-group > .btn-group:last-child > .btn:first-child {
    border-radius: 0 .75rem .75rem 0;
}

@supports (corner-shape: squircle) {
    .btn-group > .btn-group:last-child > .btn:first-child {
        border-radius: 0 2.5rem 2.5rem 0;
        corner-shape: squircle;
    }
}

/* Version Info */
.version-info {
    margin-top: 0.5rem;
}

.dico-note {
    color: var(--custom-color-text-muted);
}

.list-group, .list-group-item {
    background: none;
}

/* PMInlineEditControl — Display-Mode rendert .input-group > b */
:is(.input-group, .form-control-plaintext):has(> b),
.form-control-plaintext:has(> p > b) {
    display: block;
    background: transparent;
    border: none;
    padding: 0;
    width: 100%;
}

:is(.input-group, .form-control-plaintext) > b,
.form-control-plaintext > p > b {
    font-weight: 400;
    display: block;
    border-bottom: 1px solid var(--custom-color-border);
    padding: 0.25rem 0 0.375rem;
    width: 100%;
}

:is(.input-group, .form-control-plaintext) > b:empty::before,
.form-control-plaintext > p > b:empty::before {
    content: '\00a0';
}

/* Kein Underline in Tabellenzellen oder Checkbox-Kontext */
td :is(.input-group, .form-control-plaintext) > b,
td .form-control-plaintext > p > b,
.form-control-plaintext:has(> i) > b {
    display: inline;
    border-bottom: none;
    padding: 0;
}

.table-col-end {
    text-align: end;
}

.table-responsive-stacked {
    width: 100%;
}

/* Table Responsive Stacked */
@media (width < 920px), (990px <= width <= 1400px) {
    .table-responsive-stacked .table-col-end {
        text-align: start;
    }

    .table-responsive-stacked tbody tr:last-child {
        border-bottom: 1px solid var(--custom-color-border);
    }

    .table-responsive-stacked,
    .table-responsive-stacked thead,
    .table-responsive-stacked tbody,
    .table-responsive-stacked tfoot,
    .table-responsive-stacked tr,
    .table-responsive-stacked th,
    .table-responsive-stacked td {
        display: block;
    }

    /* Header visuell verstecken, aber fuer Screen-Reader behalten */
    .table-responsive-stacked thead {
        position: absolute;
        inline-size: 1px;
        block-size: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }

    .table-responsive-stacked tr {
        margin-block-end: 1rem;
        padding: 1rem;
        border: 1px solid var(--custom-color-border);
        border-radius: 0.75rem;
        background: var(--custom-green-ultra-light);
    }

    .table-responsive-stacked td,
    .table-responsive-stacked th[data-label] {
        display: grid;
        grid-template-columns: minmax(8rem, 35%) 1fr;
        gap: 0.5rem 1rem;
        align-items: baseline;
        padding-block: 0.5rem;
        border: 0;
        border-block-end: 1px solid var(--custom-color-border);
    }

        .table-responsive-stacked td:last-child,
        .table-responsive-stacked th[data-label]:last-child {
            border-block-end: 0;
        }

        /* Pflicht: in der HTML jede <td>/<th> mit data-label="Spaltentitel" annotieren */
        .table-responsive-stacked td::before,
        .table-responsive-stacked th[data-label]::before {
            content: attr(data-label);
            font-weight: 700;
            color: var(--custom-color-success);
            font-size: 0.75rem;
            text-transform: uppercase;
            letter-spacing: 0.06em;
        }

        /* Zellen ohne data-label: nicht zweispaltig, sondern volle Breite */
        .table-responsive-stacked td:not([data-label]) {
            display: block;
        }

            .table-responsive-stacked td:not([data-label])::before {
                content: none;
            }
}

/* ===========================================================
   Local-Hero-Seiten (WLFP-131)
   Quelle: Kundenlieferung wlo-foerderportal dist/local-hero-pages.css
   (Stand 14.07.2026). Anpassungen an unsere Blazor-Struktur:
   - Scoping über Wrapper-<div class="local-hero"> im LocalHeroLayout
     statt body.local-hero (Body-Klasse ist in Blazor nicht pro Seite
     steuerbar); die Selektoren der Lieferung sind klassenbasiert und
     funktionieren unverändert.
   - Footer-Regeln (.local-hero-footer) entfallen: Es wird der normale
     WestLotto-Footer verwendet (Absprache 20.07.2026).
   - Lead-/Fineprint-Selektoren um Viewtext-Varianten ergänzt, da die
     Viewtext-Inhalte die Klasse .local-hero-lead nicht zwingend setzen.
   =========================================================== */
:root {
  /* Local-Hero-Rot – exakt das Rot aus dem Local-Hero-Bingo-Claim-Logo,
     Hover = dunklere Variante aus dem Logo-Verlauf. */
  --custom-color-bingo: #c23c2d;
  --custom-color-bingo-hover: #af3a32;
}

/* Bingo!-CTA – nutzt die .custom-btn-Form, tauscht nur die Farb-Variablen */
.custom-btn--solid--bingo {
  --_bg: var(--custom-color-bingo);
  --_bg-hover: var(--custom-color-bingo-hover);
  --_color: var(--custom-color-white);
  --_border: var(--custom-color-bingo);
}

.local-hero {
  overflow-x: clip;
}

/* ── Header: nur zentriertes Logo ─────────────────────── */
.local-hero .local-hero-header {
  margin-bottom: 0;
  padding-block: 1.25rem;
}

.local-hero .local-hero-header .container {
  display: flex;
  justify-content: center;
}

.local-hero .local-hero-logo {
  height: clamp(3rem, 5vw, 4.25rem);
  width: auto;
  display: block;
}

/* ── Keyvisual: volle Breite, unten gebogene Kante ────── */
.local-hero .local-hero-visual {
  width: 100vw;
  margin-inline: calc(50% - 50vw);
  overflow: hidden;
  /* Eigene Kurven-Maske mit preserveAspectRatio='none': das geteilte
     --custom-curve-bottom-Token skaliert die SVG mit dem Default
     'meet' und würde bei erzwungenem mask-size: 100% 100% (breites,
     flaches Keyvisual) mittig letterboxen → Bild wirkt schmal.
     'none' streckt die Maske über die volle Breite. */
  --_curve: url("data:image/svg+xml,%3Csvg width='1729' height='807' viewBox='0 0 1729 807' preserveAspectRatio='none' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1729 755.847C1152.87 823.238 576.526 823.331 0 755.847V0H1729V755.847Z' fill='black'/%3E%3C/svg%3E");
  -webkit-mask-image: var(--_curve);
  mask-image: var(--_curve);
  -webkit-mask-mode: alpha;
  mask-mode: alpha;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-position: bottom center;
  mask-position: bottom center;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
}

.local-hero .local-hero-visual img {
  display: block;
  width: 100%;
  height: clamp(13rem, 30vw, 25rem);
  object-fit: cover;
  /* 3:2-Motiv im flachen Banner: die Gesichter liegen zwischen ~29 % und
     ~50 % der Bildhöhe – Fokus nach oben verschieben, sonst schneidet der
     Cover-Crop auf breiten Viewports die Köpfe an. */
  object-position: 50% 36%;
}

/* ── Zentrierter Inhalt unter dem Keyvisual ───────────────
   Breite/Zentrierung kommen vom Bootstrap-Grid (.container/.row/.col);
   hier nur noch vertikaler Abstand + zentrierter Text. */
.local-hero .local-hero-body {
  padding-block: clamp(1.5rem, 4vw, 3rem) clamp(3rem, 6vw, 5rem);
  text-align: center;
}

.local-hero .local-hero-body h1 {
  margin-bottom: 0.75rem;
}

/* Erster Absatz der Intro-Viewtexte wirkt als Lead */
.local-hero :is(.local-hero-lead, .local-hero-intro > p:first-of-type) {
  font-family: var(--font-heading);
  font-weight: 700;
  color: var(--custom-color-primary);
  font-size: clamp(1.125rem, 2.4vw, 1.5rem);
  line-height: 1.3;
  margin-bottom: clamp(1.75rem, 4vw, 2.5rem);
}

/* ── Formular: schmaler & zentriert ───────────────────── */
.local-hero .local-hero-form {
  width: 100%;
  max-width: 34rem;
  /* schlägt das `form { margin-inline: 0 !important }`-Reset der Basis */
  margin-inline: auto !important;
  padding-block: 0;
  gap: 0.75rem;
}

/* Großes, mittig gesetztes Zahlenfeld – Ziffern per letter-spacing
   auseinandergezogen (gilt auch für den Platzhalter). Der Wrapper dient als
   Style-Hook, weil das Input von der PMInlineEditControl gerendert wird. */
.local-hero .local-hero-field input {
  text-align: center;
  text-indent: 0.35em; /* gleicht das nachlaufende letter-spacing aus */
  letter-spacing: 0.35em;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  font-size: clamp(1rem, 2.6vw, 1.375rem);
  padding-block: 1.15rem;
  padding-inline: 2.75rem;
}

.local-hero .local-hero-field input::placeholder {
  /* etwas heller als der Standard-Grauton */
  color: color-mix(in oklch, var(--custom-color-placeholder) 70%, white);
  font-weight: 500;
}

/* Footer immer an der Fensterunterkante andocken – bei wenig Inhalt (z. B. der
   Bestätigungsseite nach dem Vorschlag) würde er sonst mitten im Fenster schweben.
   Blazor rendert die Seite in einen anonymen Wrapper-<div> direkt unter <body>,
   daher hängt das Flex-Layout an diesem Wrapper. Der Lade-Platzhalter
   (#navbar-placeholder mit der Ladeansicht aus loading/localhero.html) ist
   ausgenommen: Er würde sonst auf volle Fensterhöhe gestreckt und schöbe den
   Ladekreis unter den sichtbaren Bereich. */
body > div:not(#navbar-placeholder):has(> .local-hero) {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

body > div:not(#navbar-placeholder):has(> .local-hero) > .local-hero {
  flex: 1 0 auto;
}

.local-hero .local-hero-actions {
  display: flex;
  justify-content: center;
  margin-top: 1.5rem;
}

.local-hero .local-hero-fineprint {
  max-width: 34rem;
  margin: clamp(2.5rem, 5vw, 3.5rem) auto 0;
  font-size: 0.75rem;
  line-height: 1.6;
  color: var(--custom-color-text-muted);
}

/* Viewtext-Absätze innerhalb des Fineprints ohne Zusatzabstand */
.local-hero .local-hero-fineprint p {
  font-size: inherit;
  line-height: inherit;
  color: inherit;
}

.local-hero .local-hero-fineprint p:last-child {
  margin-bottom: 0;
}

/* -----------------------------------------------------------
   Local-Hero "Vorschlag" (Schritt 2): Zweispalten-Layout,
   Intro links, Formular (core-shape-Cards) rechts. Teilt sich
   die Hülle (Header, Keyvisual) mit .local-hero – hier nur der
   zweispaltige Body. Scoping über Wrapper-<div class="local-hero-vorschlag">.
   ----------------------------------------------------------- */
.local-hero-vorschlag .lhv-main {
  padding-block: clamp(1.5rem, 4vw, 3rem) clamp(3rem, 6vw, 5rem);
}

/* Spalten oben ausrichten – Überschrift auf Höhe der ersten Card */
.local-hero-vorschlag .lhv-row {
  align-items: start;
}

/* Select-Höhe: die globale max-height-Kappung der Basis ist kleiner
   als die Zeilenhöhe und schneidet den Text ab → auf Auto-Höhe (wie die
   Text-Inputs). Nur hier, damit die anderen Seiten unberührt bleiben. */
.local-hero-vorschlag select {
  max-height: none;
}

/* Desktop: Formspalte zieht in den Hero hinein und überlappt ihn etwas.
   Fester rem-Wert = konstante Überlappung (das obere Padding ist ab dem
   Breakpoint gedeckelt, vw würde auf Ultrawide übertreiben). Die Intro-
   Spalte bleibt bewusst unter dem Hero – Text braucht den grünen Grund. */
@media (width >= 992px) {
  .local-hero-vorschlag .lhv-formcol {
    position: relative;
    z-index: 1;
    /* Overlap ~48–80px: skaliert mit der (vw-getriebenen) Hero-Höhe,
       gedeckelt bei -8rem, damit es auf Ultrawide nicht ausufert. */
    margin-top: clamp(-8rem, -7vw, -6rem);
  }
}

.local-hero-vorschlag .lhv-intro {
  padding-top: clamp(0.5rem, 3vw, 2rem);
}

.local-hero-vorschlag .lhv-intro h1 {
  color: var(--custom-color-primary);
  font-size: clamp(2rem, 4.5vw, 3.25rem);
  line-height: 1.05;
  margin-bottom: 1rem;
}

/* Fließtext gedämpft – der Lead (erster Absatz) bleibt farbig */
.local-hero-vorschlag .lhv-intro p {
  color: var(--custom-color-text-muted);
}

.local-hero-vorschlag .lhv-intro :is(.local-hero-lead, .local-hero-intro > p:first-of-type) {
  color: var(--custom-color-primary);
}

/* Top-Level-<form> bringt flex-column + --custom-section-gap zwischen den
   Cards schon mit; hier nur an die Spalte anpassen (volle Breite, oben
   bündig zur Überschrift). */
.local-hero-vorschlag .lhv-form {
  max-width: none;
  padding-block: 0;
}

.local-hero-vorschlag .lhv-hint {
  margin-top: 1.25rem;
}
