/* =========================================================
   HS ACCESSIBILITY 1.1 – FRONTEND
   ========================================================= */

:root {
    --hsa11y-z: 2147483000;
    --hsa11y-bg: #ffffff;
    --hsa11y-card: #f5f6f7;
    --hsa11y-text: #101114;
    --hsa11y-muted: #666b73;
    --hsa11y-border: rgba(16, 17, 20, .12);
    --hsa11y-border-strong: rgba(16, 17, 20, .22);
    --hsa11y-focus: #005fcc;
    --hsa11y-radius: 22px;
    --hsa11y-font: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, Helvetica, sans-serif;
}

.hsa11y-ui,
.hsa11y-ui * {
    box-sizing: border-box;
}

.hsa11y-ui {
    position: relative;
    z-index: var(--hsa11y-z);
    font-family: var(--hsa11y-font) !important;
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

.hsa11y-ui :where(button, input, output, a, p, span, h2, h3, label) {
    font-family: inherit !important;
}

/* =========================================================
   PAGE LOCK WHILE DIALOG IS OPEN
   ========================================================= */

html.hsa11y-dialog-open,
html.hsa11y-dialog-open body {
    overflow: hidden !important;
    overscroll-behavior: none !important;
}

html.hsa11y-dialog-open {
    scrollbar-gutter: stable;
}

/* =========================================================
   LAUNCHER
   ========================================================= */

.hsa11y-launcher {
    position: fixed;
    bottom: 24px;
    z-index: var(--hsa11y-z);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 50px;
    padding: 11px 16px;
    border: 1px solid rgba(255,255,255,.16) !important;
    border-radius: 999px;
    background: #101114 !important;
    color: #ffffff !important;
    box-shadow: 0 14px 38px rgba(0,0,0,.24);
    cursor: pointer;
    font: inherit;
    font-size: 14px !important;
    font-weight: 750 !important;
    line-height: 1 !important;
    transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.hsa11y-launcher:hover {
    transform: translateY(-2px);
    background: #000000 !important;
    box-shadow: 0 18px 42px rgba(0,0,0,.28);
}

.hsa11y-left .hsa11y-launcher { left: 24px; }
.hsa11y-right .hsa11y-launcher { right: 24px; }

.hsa11y-launcher svg {
    width: 24px;
    height: 24px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.hsa11y-launcher:focus-visible,
.hsa11y-close:focus-visible,
.hsa11y-stepper button:focus-visible,
.hsa11y-reset:focus-visible,
.hsa11y-statement:focus-visible,
.hsa11y-switch input:focus-visible + span {
    outline: 3px solid var(--hsa11y-focus) !important;
    outline-offset: 3px !important;
}

/* =========================================================
   DIALOG / SCROLL MODEL
   ========================================================= */

.hsa11y-dialog {
    width: min(470px, calc(100vw - 28px));
    max-width: none;
    height: min(88dvh, 820px);
    max-height: min(88dvh, 820px);
    margin: auto;
    padding: 0;
    border: 0;
    border-radius: var(--hsa11y-radius);
    background: transparent !important;
    color: var(--hsa11y-text) !important;
    box-shadow: 0 28px 90px rgba(0,0,0,.34);
    overflow: hidden;
}

.hsa11y-dialog::backdrop {
    background: rgba(6, 8, 12, .58);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.hsa11y-panel {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    min-height: 0;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.42);
    border-radius: inherit;
    background: var(--hsa11y-bg) !important;
    color: var(--hsa11y-text) !important;
}

.hsa11y-header {
    position: relative;
    z-index: 2;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    flex: 0 0 auto;
    padding: 22px 22px 18px;
    border-bottom: 1px solid var(--hsa11y-border);
    background: rgba(255,255,255,.98) !important;
}

.hsa11y-header-copy {
    min-width: 0;
}

.hsa11y-eyebrow {
    margin: 0 0 6px !important;
    color: var(--hsa11y-muted) !important;
    font-size: 11px !important;
    font-weight: 800 !important;
    letter-spacing: .095em !important;
    line-height: 1.2 !important;
    text-transform: uppercase;
}

.hsa11y-title-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 9px;
}

.hsa11y-header h2 {
    margin: 0 !important;
    color: var(--hsa11y-text) !important;
    font: inherit !important;
    font-size: 25px !important;
    font-weight: 800 !important;
    line-height: 1.08 !important;
    letter-spacing: -.02em !important;
}

.hsa11y-active-count {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 4px 8px;
    border: 1px solid var(--hsa11y-border);
    border-radius: 999px;
    background: var(--hsa11y-card) !important;
    color: var(--hsa11y-muted) !important;
    font-size: 11px !important;
    font-weight: 750 !important;
    line-height: 1 !important;
}

.hsa11y-intro {
    max-width: 330px;
    margin: 9px 0 0 !important;
    color: var(--hsa11y-muted) !important;
    font-size: 12px !important;
    line-height: 1.45 !important;
}

.hsa11y-close {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    flex: 0 0 auto;
    padding: 0;
    border: 1px solid var(--hsa11y-border) !important;
    border-radius: 50%;
    background: var(--hsa11y-card) !important;
    color: var(--hsa11y-text) !important;
    cursor: pointer;
}

.hsa11y-close:hover {
    background: #eceef0 !important;
}

.hsa11y-close svg {
    width: 19px;
    height: 19px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
}

/* THIS is the only scrollable area. */
.hsa11y-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    scrollbar-gutter: stable;
    padding: 8px 22px 22px;
    background: #ffffff !important;
    color: var(--hsa11y-text) !important;
}

.hsa11y-content::-webkit-scrollbar {
    width: 10px;
}

.hsa11y-content::-webkit-scrollbar-track {
    background: transparent;
}

.hsa11y-content::-webkit-scrollbar-thumb {
    border: 3px solid #fff;
    border-radius: 999px;
    background: #b9bec5;
}

/* =========================================================
   SECTIONS / SETTINGS
   ========================================================= */

.hsa11y-section {
    padding: 18px 0 7px;
    border-bottom: 1px solid var(--hsa11y-border);
}

.hsa11y-section h3 {
    margin: 0 0 8px !important;
    color: var(--hsa11y-text) !important;
    font: inherit !important;
    font-size: 13px !important;
    font-weight: 800 !important;
    line-height: 1.3 !important;
    letter-spacing: .01em !important;
}

.hsa11y-setting {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    min-height: 68px;
    padding: 10px 0;
}

.hsa11y-setting-copy,
.hsa11y-setting > div:first-child {
    min-width: 0;
}

.hsa11y-setting-title {
    display: block;
    margin: 0 0 4px !important;
    color: var(--hsa11y-text) !important;
    font-size: 14px !important;
    font-weight: 740 !important;
    line-height: 1.3 !important;
}

.hsa11y-setting-help {
    display: block;
    max-width: 305px;
    color: var(--hsa11y-muted) !important;
    font-size: 11.5px !important;
    font-weight: 450 !important;
    line-height: 1.45 !important;
}

.hsa11y-stepper {
    display: grid;
    grid-template-columns: 42px 62px 42px;
    align-items: center;
    flex: 0 0 auto;
    overflow: hidden;
    border: 1px solid var(--hsa11y-border-strong);
    border-radius: 999px;
    background: #fff !important;
}

.hsa11y-stepper button,
.hsa11y-stepper output {
    min-height: 40px;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: #fff !important;
    color: #101114 !important;
    font: inherit !important;
    font-weight: 800 !important;
    box-shadow: none !important;
}

.hsa11y-stepper button {
    cursor: pointer;
    font-size: 15px !important;
}

.hsa11y-stepper button:hover {
    background: #f0f1f2 !important;
}

.hsa11y-stepper output {
    display: grid;
    place-items: center;
    border-left: 1px solid var(--hsa11y-border) !important;
    border-right: 1px solid var(--hsa11y-border) !important;
    font-size: 11px !important;
}

.hsa11y-switch {
    position: relative;
    display: inline-flex;
    flex: 0 0 auto;
    cursor: pointer;
}

.hsa11y-switch input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
}

.hsa11y-switch span {
    position: relative;
    display: block;
    width: 50px;
    height: 30px;
    border: 1px solid rgba(0,0,0,.08);
    border-radius: 999px;
    background: #d9dde1 !important;
    cursor: pointer;
    transition: background-color .18s ease, border-color .18s ease;
}

.hsa11y-switch span::after {
    content: '';
    position: absolute;
    top: 4px;
    left: 4px;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #ffffff !important;
    box-shadow: 0 2px 6px rgba(0,0,0,.25);
    transition: transform .18s ease;
}

.hsa11y-switch input:checked + span {
    border-color: #101114;
    background: #101114 !important;
}

.hsa11y-switch input:checked + span::after {
    transform: translateX(20px);
}

/* =========================================================
   CONTRAST MODE CONTROL
   ========================================================= */

.hsa11y-contrast-setting {
    min-width: 0;
    margin: 8px 0 4px !important;
    padding: 12px 0 16px !important;
    border: 0 !important;
}

.hsa11y-contrast-setting legend {
    padding: 0 !important;
}

.hsa11y-contrast-setting .hsa11y-setting-help {
    margin-bottom: 12px !important;
}

.hsa11y-segmented {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 4px;
    width: 100%;
    padding: 4px;
    border: 1px solid var(--hsa11y-border-strong);
    border-radius: 14px;
    background: #eef0f2 !important;
}

.hsa11y-segmented label {
    position: relative;
    min-width: 0;
    margin: 0 !important;
    cursor: pointer;
}

.hsa11y-segmented input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
}

.hsa11y-segmented span {
    display: grid;
    place-items: center;
    min-height: 39px;
    padding: 8px 7px;
    border-radius: 10px;
    background: transparent !important;
    color: #4c5158 !important;
    font: inherit !important;
    font-size: 12px !important;
    font-weight: 750 !important;
    line-height: 1 !important;
    text-align: center;
    transition: background-color .16s ease, color .16s ease, box-shadow .16s ease;
}

.hsa11y-segmented input:checked + span {
    background: #101114 !important;
    color: #ffffff !important;
    box-shadow: 0 2px 8px rgba(0,0,0,.16);
}

.hsa11y-segmented input:focus-visible + span {
    outline: 3px solid var(--hsa11y-focus) !important;
    outline-offset: 2px !important;
}

/* =========================================================
   FOOTER / STATEMENT LINK
   ========================================================= */

.hsa11y-footer {
    display: grid;
    gap: 10px;
    padding-top: 20px;
}

.hsa11y-ui .hsa11y-reset,
.hsa11y-ui .hsa11y-statement {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    width: 100% !important;
    min-height: 48px !important;
    margin: 0 !important;
    padding: 11px 15px !important;
    border-radius: 13px !important;
    font: inherit !important;
    font-size: 13px !important;
    font-weight: 760 !important;
    line-height: 1.25 !important;
    text-align: center !important;
    text-decoration: none !important;
    box-shadow: none !important;
}

.hsa11y-ui .hsa11y-reset {
    border: 1px solid var(--hsa11y-border-strong) !important;
    background: #f3f4f5 !important;
    color: #101114 !important;
    cursor: pointer;
}

.hsa11y-ui .hsa11y-reset:hover {
    background: #e9ebed !important;
}

.hsa11y-ui a.hsa11y-statement,
.hsa11y-ui a.hsa11y-statement:link,
.hsa11y-ui a.hsa11y-statement:visited,
.hsa11y-ui a.hsa11y-statement:hover,
.hsa11y-ui a.hsa11y-statement:active {
    border: 1px solid #101114 !important;
    background: #101114 !important;
    color: #ffffff !important;
    opacity: 1 !important;
    visibility: visible !important;
    text-decoration: none !important;
}

.hsa11y-ui a.hsa11y-statement:hover {
    background: #000000 !important;
}

.hsa11y-statement svg {
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.hsa11y-note {
    margin: 5px 2px 4px !important;
    color: #6b7078 !important;
    font-size: 10.5px !important;
    font-weight: 450 !important;
    line-height: 1.5 !important;
}

.hsa11y-status {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
}

/* =========================================================
   SKIP LINK
   ========================================================= */

.hsa11y-skip-link {
    position: fixed;
    top: 10px;
    left: 10px;
    z-index: calc(var(--hsa11y-z) + 20);
    transform: translateY(-170%);
    padding: 12px 16px;
    border: 2px solid #fff;
    border-radius: 9px;
    background: #000 !important;
    color: #fff !important;
    font-family: var(--hsa11y-font) !important;
    font-size: 16px !important;
    font-weight: 750 !important;
    line-height: 1.2 !important;
    text-decoration: none !important;
    box-shadow: 0 8px 30px rgba(0,0,0,.3);
}

.hsa11y-skip-link:focus {
    transform: translateY(0);
}

/* =========================================================
   USER MODES
   ========================================================= */

/*
 * CSS fallback for readable font. JS also applies inline !important
 * so even Elementor custom CSS with !important is overridden.
 */
html.hsa11y-readable-font body h1,
html.hsa11y-readable-font body h2,
html.hsa11y-readable-font body h3,
html.hsa11y-readable-font body h4,
html.hsa11y-readable-font body h5,
html.hsa11y-readable-font body h6,
html.hsa11y-readable-font body .elementor-heading-title,
html.hsa11y-readable-font body [role="heading"],
html.hsa11y-readable-font body p,
html.hsa11y-readable-font body li,
html.hsa11y-readable-font body a,
html.hsa11y-readable-font body label,
html.hsa11y-readable-font body button,
html.hsa11y-readable-font body input,
html.hsa11y-readable-font body textarea,
html.hsa11y-readable-font body select,
html.hsa11y-readable-font body td,
html.hsa11y-readable-font body th,
html.hsa11y-readable-font body blockquote,
html.hsa11y-readable-font body figcaption {
    font-family: Arial, Helvetica, ui-sans-serif, system-ui, sans-serif !important;
}

html.hsa11y-line-spacing body :where(p, li, a, span, h1, h2, h3, h4, h5, h6, label, button, td, th, blockquote, figcaption) {
    line-height: 1.75 !important;
}

html.hsa11y-letter-spacing body :where(p, li, a, span, h1, h2, h3, h4, h5, h6, label, button, input, textarea, select, td, th, blockquote, figcaption) {
    letter-spacing: .08em !important;
}

html.hsa11y-word-spacing body :where(p, li, a, span, h1, h2, h3, h4, h5, h6, label, button, input, textarea, select, td, th, blockquote, figcaption) {
    word-spacing: .16em !important;
}

html.hsa11y-highlight-links body a:not(.hsa11y-launcher):not(.hsa11y-statement):not(.hsa11y-skip-link) {
    text-decoration: underline !important;
    text-decoration-thickness: .14em !important;
    text-underline-offset: .18em !important;
}

html.hsa11y-strong-focus body :focus-visible {
    outline: 4px solid #005fcc !important;
    outline-offset: 4px !important;
}

html.hsa11y-grayscale body > :not(.hsa11y-ui),
html.hsa11y-grayscale .elementor-location-header,
html.hsa11y-grayscale .elementor-location-footer {
    filter: grayscale(1) !important;
}

/* =========================================================
   HIGH CONTRAST 2.0
   ========================================================= */

html.hsa11y-contrast-light {
    --hsa11y-contrast-bg: #ffffff;
    --hsa11y-contrast-fg: #000000;
    --hsa11y-contrast-link: #003b73;
    --hsa11y-contrast-button-bg: #000000;
    --hsa11y-contrast-button-fg: #ffffff;
    --hsa11y-contrast-focus: #005fcc;
}

html.hsa11y-contrast-dark {
    --hsa11y-contrast-bg: #000000;
    --hsa11y-contrast-fg: #ffffff;
    --hsa11y-contrast-link: #ffe36b;
    --hsa11y-contrast-button-bg: #ffffff;
    --hsa11y-contrast-button-fg: #000000;
    --hsa11y-contrast-focus: #ffe36b;
}

html.hsa11y-contrast-light body,
html.hsa11y-contrast-dark body {
    background-color: var(--hsa11y-contrast-bg) !important;
    color: var(--hsa11y-contrast-fg) !important;
}

/*
 * Nur Elemente, die im Original tatsächlich eine sichtbare
 * Hintergrundfarbe hatten, werden neutralisiert. Transparente
 * Elementor-Innencontainer bleiben transparent und verdecken
 * deshalb keine Bilder oder Formen.
 */
html.hsa11y-contrast-light body [data-hsa11y-contrast-surface="true"]:not(.hsa11y-ui *):not(.hsa11y-keep-colors):not(.hsa11y-keep-colors *),
html.hsa11y-contrast-dark body [data-hsa11y-contrast-surface="true"]:not(.hsa11y-ui *):not(.hsa11y-keep-colors):not(.hsa11y-keep-colors *) {
    background-color: var(--hsa11y-contrast-bg) !important;
    color: var(--hsa11y-contrast-fg) !important;
    border-color: var(--hsa11y-contrast-fg) !important;
    box-shadow: none !important;
}

/* Dekorative Gradients werden entfernt, echte URL-Bilder bleiben. */
html.hsa11y-contrast-light body [data-hsa11y-contrast-gradient="true"]:not(.hsa11y-ui *),
html.hsa11y-contrast-dark body [data-hsa11y-contrast-gradient="true"]:not(.hsa11y-ui *) {
    background-image: none !important;
}

/* Pseudo-Elemente wie Kreise, Flächen oder dekorative Bögen. */
html.hsa11y-contrast-light body [data-hsa11y-contrast-before-surface="true"]::before,
html.hsa11y-contrast-dark body [data-hsa11y-contrast-before-surface="true"]::before,
html.hsa11y-contrast-light body [data-hsa11y-contrast-after-surface="true"]::after,
html.hsa11y-contrast-dark body [data-hsa11y-contrast-after-surface="true"]::after {
    background-color: var(--hsa11y-contrast-bg) !important;
    border-color: var(--hsa11y-contrast-fg) !important;
    box-shadow: none !important;
}

html.hsa11y-contrast-light body [data-hsa11y-contrast-before-gradient="true"]::before,
html.hsa11y-contrast-dark body [data-hsa11y-contrast-before-gradient="true"]::before,
html.hsa11y-contrast-light body [data-hsa11y-contrast-after-gradient="true"]::after,
html.hsa11y-contrast-dark body [data-hsa11y-contrast-after-gradient="true"]::after {
    background-image: none !important;
}

/*
 * Typografie wird bewusst eindeutig. Dadurch gibt es keine
 * weiß-auf-weiß bzw. schwarz-auf-schwarz-Sonderfälle mehr.
 */
html.hsa11y-contrast-light body :where(h1, h2, h3, h4, h5, h6, p, li, span, strong, b, em, i, small, label, legend, td, th, blockquote, figcaption, time, address):not(.hsa11y-ui *):not(.hsa11y-keep-colors *),
html.hsa11y-contrast-dark body :where(h1, h2, h3, h4, h5, h6, p, li, span, strong, b, em, i, small, label, legend, td, th, blockquote, figcaption, time, address):not(.hsa11y-ui *):not(.hsa11y-keep-colors *) {
    color: var(--hsa11y-contrast-fg) !important;
    text-shadow: none !important;
    -webkit-text-stroke: 0 !important;
}

/* Links bleiben zusätzlich ohne Farbe unterscheidbar. */
html.hsa11y-contrast-light body a:not(.hsa11y-ui *):not(.hsa11y-keep-colors *),
html.hsa11y-contrast-dark body a:not(.hsa11y-ui *):not(.hsa11y-keep-colors *) {
    color: var(--hsa11y-contrast-link) !important;
    text-decoration: underline !important;
    text-decoration-thickness: .12em !important;
    text-underline-offset: .16em !important;
}

html.hsa11y-contrast-light body a:not(.hsa11y-ui *) :where(span, strong, b, em, i),
html.hsa11y-contrast-dark body a:not(.hsa11y-ui *) :where(span, strong, b, em, i) {
    color: inherit !important;
}

/* Buttons und typische Elementor-Buttons erhalten ein eindeutiges Schema. */
html.hsa11y-contrast-light body :where(button, .elementor-button, input[type="button"], input[type="submit"], input[type="reset"]):not(.hsa11y-ui *),
html.hsa11y-contrast-dark body :where(button, .elementor-button, input[type="button"], input[type="submit"], input[type="reset"]):not(.hsa11y-ui *) {
    background: var(--hsa11y-contrast-button-bg) !important;
    color: var(--hsa11y-contrast-button-fg) !important;
    border: 2px solid var(--hsa11y-contrast-button-bg) !important;
    box-shadow: none !important;
    text-shadow: none !important;
}

html.hsa11y-contrast-light body :where(button, .elementor-button):not(.hsa11y-ui *) *,
html.hsa11y-contrast-dark body :where(button, .elementor-button):not(.hsa11y-ui *) * {
    color: var(--hsa11y-contrast-button-fg) !important;
    text-shadow: none !important;
}

/* Formulare */
html.hsa11y-contrast-light body :where(input, textarea, select):not([type="button"]):not([type="submit"]):not([type="reset"]):not(.hsa11y-ui *),
html.hsa11y-contrast-dark body :where(input, textarea, select):not([type="button"]):not([type="submit"]):not([type="reset"]):not(.hsa11y-ui *) {
    background: var(--hsa11y-contrast-bg) !important;
    color: var(--hsa11y-contrast-fg) !important;
    border: 2px solid var(--hsa11y-contrast-fg) !important;
    box-shadow: none !important;
}

html.hsa11y-contrast-light body :where(input, textarea)::placeholder,
html.hsa11y-contrast-dark body :where(input, textarea)::placeholder {
    color: var(--hsa11y-contrast-fg) !important;
    opacity: .75 !important;
}

/* Tabellen und Trennlinien */
html.hsa11y-contrast-light body :where(table, th, td, hr):not(.hsa11y-ui *),
html.hsa11y-contrast-dark body :where(table, th, td, hr):not(.hsa11y-ui *) {
    border-color: var(--hsa11y-contrast-fg) !important;
}

/*
 * Texte über echten Hintergrundbildern erhalten zusätzlich eine
 * kontrastierende Textfläche. Das Bild selbst bleibt unangetastet.
 */
html.hsa11y-contrast-light body [data-hsa11y-contrast-image-host="true"] :where(h1, h2, h3, h4, h5, h6, p, li, a, label):not(.hsa11y-ui *):not(.hsa11y-keep-colors *),
html.hsa11y-contrast-dark body [data-hsa11y-contrast-image-host="true"] :where(h1, h2, h3, h4, h5, h6, p, li, a, label):not(.hsa11y-ui *):not(.hsa11y-keep-colors *) {
    background-color: var(--hsa11y-contrast-bg) !important;
    color: var(--hsa11y-contrast-fg) !important;
    box-decoration-break: clone;
    -webkit-box-decoration-break: clone;
    padding-inline: .12em;
}

/* Sichtbarer Fokus in beiden Modi. */
html.hsa11y-contrast-light body :focus-visible:not(.hsa11y-ui *),
html.hsa11y-contrast-dark body :focus-visible:not(.hsa11y-ui *) {
    outline: 4px solid var(--hsa11y-contrast-focus) !important;
    outline-offset: 4px !important;
}

/* Das Accessibility-Tool selbst bleibt immer in seinem eigenen Design. */
html.hsa11y-contrast-light .hsa11y-ui,
html.hsa11y-contrast-dark .hsa11y-ui,
html.hsa11y-contrast-light .hsa11y-aria-layer,
html.hsa11y-contrast-dark .hsa11y-aria-layer,
html.hsa11y-contrast-light .hsa11y-skip-link,
html.hsa11y-contrast-dark .hsa11y-skip-link {
    filter: none !important;
}

/* Optionaler Opt-out für Sondergrafiken:
 * Elementor CSS-Klasse: hsa11y-keep-colors
 */
html.hsa11y-contrast-light .hsa11y-keep-colors,
html.hsa11y-contrast-light .hsa11y-keep-colors *,
html.hsa11y-contrast-dark .hsa11y-keep-colors,
html.hsa11y-contrast-dark .hsa11y-keep-colors * {
    forced-color-adjust: none;
}

/* =========================================================
   ARIA LABEL OVERLAY
   ========================================================= */

.hsa11y-aria-layer {
    position: fixed;
    inset: 0;
    z-index: calc(var(--hsa11y-z) - 50);
    pointer-events: none;
    overflow: hidden;
}

.hsa11y-aria-layer[hidden] {
    display: none !important;
}

.hsa11y-aria-badge {
    position: fixed;
    display: block;
    max-width: min(240px, calc(100vw - 16px));
    padding: 5px 8px;
    border: 1px solid rgba(255,255,255,.28);
    border-radius: 7px;
    background: rgba(10, 12, 16, .94) !important;
    color: #ffffff !important;
    box-shadow: 0 5px 18px rgba(0,0,0,.22);
    font-family: var(--hsa11y-font) !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    line-height: 1.25 !important;
    letter-spacing: 0 !important;
    word-spacing: 0 !important;
    white-space: normal;
}

.hsa11y-aria-badge::before {
    content: 'ARIA';
    display: inline-block;
    margin-right: 5px;
    color: #b9c8ff;
    font-size: 9px;
    font-weight: 850;
    letter-spacing: .06em;
}

/* =========================================================
   REDUCED MOTION – current EGS GSAP classes included
   ========================================================= */

html.hsa11y-reduce-motion,
html.hsa11y-reduce-motion body {
    scroll-behavior: auto !important;
}

html.hsa11y-reduce-motion body *:not(.hsa11y-ui):not(.hsa11y-ui *),
html.hsa11y-reduce-motion body *:not(.hsa11y-ui):not(.hsa11y-ui *)::before,
html.hsa11y-reduce-motion body *:not(.hsa11y-ui):not(.hsa11y-ui *)::after {
    animation-duration: 0.001ms !important;
    animation-delay: 0s !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    transition-delay: 0s !important;
}

html.hsa11y-reduce-motion :where(
    .egs-anim-left,
    .egs-anim-right,
    .egs-anim-up,
    .egs-anim-down,
    .egs-anim-fade
) {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
}

html.hsa11y-reduce-motion .egs-bg-parallax-media {
    transform: none !important;
    will-change: auto !important;
}

/* =========================================================
   MOBILE
   ========================================================= */

@media (max-width: 640px) {
    .hsa11y-launcher-label {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        clip-path: inset(50%);
        white-space: nowrap;
    }

    .hsa11y-launcher {
        width: 52px;
        height: 52px;
        justify-content: center;
        padding: 0;
    }

    .hsa11y-left .hsa11y-launcher { left: 14px; }
    .hsa11y-right .hsa11y-launcher { right: 14px; }
    .hsa11y-launcher { bottom: 14px; }

    .hsa11y-dialog {
        width: calc(100vw - 12px);
        height: min(94dvh, 900px);
        max-height: min(94dvh, 900px);
        border-radius: 18px;
    }

    .hsa11y-header {
        padding: 18px 17px 15px;
    }

    .hsa11y-content {
        padding: 6px 17px 18px;
    }

    .hsa11y-header h2 {
        font-size: 22px !important;
    }

    .hsa11y-intro {
        font-size: 11px !important;
    }

    .hsa11y-setting {
        align-items: flex-start;
        gap: 14px;
    }

    .hsa11y-text-size-setting {
        display: grid;
    }

    .hsa11y-text-size-setting .hsa11y-stepper {
        margin-top: 4px;
    }
}

@media (max-height: 650px) {
    .hsa11y-dialog {
        height: calc(100dvh - 16px);
        max-height: calc(100dvh - 16px);
    }

    .hsa11y-header {
        padding-top: 14px;
        padding-bottom: 12px;
    }

    .hsa11y-intro {
        display: none;
    }
}
