/* UpCode ONE BarrierScan — Assist-Toolbar + Modul-Effektklassen. */

.uc-bs-assist {
    --uc-bs-assist-accent: var(--bs-primary, #1f9dcb);
    --uc-bs-assist-bg: var(--bs-body-bg, #fff);
    --uc-bs-assist-fg: var(--bs-body-color, #212529);
    --uc-bs-assist-border: var(--bs-border-color, #dee2e6);
    --uc-bs-assist-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    --uc-bs-assist-z: 10050;
    position: fixed;
    z-index: var(--uc-bs-assist-z);
    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

.uc-bs-assist--bottom-right { right: 1rem; bottom: 1rem; }
.uc-bs-assist--bottom-left { left: 1rem; bottom: 1rem; }
.uc-bs-assist--top-right { right: 1rem; top: 1rem; }
.uc-bs-assist--top-left { left: 1rem; top: 1rem; }

@media (max-width: 767.98px) {
    .uc-bs-assist-mobile--bottom-right { left: auto; right: 1rem; top: auto; bottom: 1rem; }
    .uc-bs-assist-mobile--bottom-left { right: auto; left: 1rem; top: auto; bottom: 1rem; }
    .uc-bs-assist-mobile--top-right { left: auto; right: 1rem; bottom: auto; top: 1rem; }
    .uc-bs-assist-mobile--top-left { right: auto; left: 1rem; bottom: auto; top: 1rem; }
}

.uc-bs-assist__toggle {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.65rem 0.9rem;
    border: 2px solid var(--uc-bs-assist-accent);
    border-radius: 999px;
    background: var(--uc-bs-assist-bg);
    color: var(--uc-bs-assist-fg);
    box-shadow: var(--uc-bs-assist-shadow);
    cursor: pointer;
    font-weight: 600;
}

.uc-bs-assist__toggle:focus-visible {
    outline: 3px solid var(--uc-bs-assist-accent);
    outline-offset: 2px;
}

.uc-bs-assist__hide {
    position: absolute;
    top: -0.5rem;
    right: -0.5rem;
    width: 1.4rem;
    height: 1.4rem;
    padding: 0;
    line-height: 1.3rem;
    text-align: center;
    border: 1px solid var(--uc-bs-assist-border);
    border-radius: 50%;
    background: var(--uc-bs-assist-bg);
    color: var(--uc-bs-assist-fg);
    box-shadow: var(--uc-bs-assist-shadow);
    cursor: pointer;
    font-size: 0.95rem;
    opacity: 0;
    transition: opacity 0.15s ease;
}

.uc-bs-assist:hover .uc-bs-assist__hide,
.uc-bs-assist__hide:focus-visible {
    opacity: 1;
}

.uc-bs-assist--bottom-left .uc-bs-assist__hide,
.uc-bs-assist--top-left .uc-bs-assist__hide {
    right: auto;
    left: -0.5rem;
}

.uc-bs-assist__hide:focus-visible {
    outline: 3px solid var(--uc-bs-assist-accent);
    outline-offset: 2px;
}

.uc-bs-assist__toggle-icon {
    width: 1.1rem;
    height: 1.1rem;
    border-radius: 50%;
    background: var(--uc-bs-assist-accent);
    position: relative;
}

.uc-bs-assist-icon--eye .uc-bs-assist__toggle-icon {
    border-radius: 50% 50% 50% 50% / 60% 60% 40% 40%;
    box-shadow: inset 0 0 0 0.22rem var(--uc-bs-assist-bg);
}

.uc-bs-assist-icon--universal .uc-bs-assist__toggle-icon {
    border-radius: 0.2rem;
    background:
        linear-gradient(var(--uc-bs-assist-accent), var(--uc-bs-assist-accent)) center / 0.2rem 70% no-repeat,
        linear-gradient(var(--uc-bs-assist-accent), var(--uc-bs-assist-accent)) center / 70% 0.2rem no-repeat,
        var(--uc-bs-assist-accent);
}

.uc-bs-assist__panel {
    position: absolute;
    width: min(22rem, calc(100vw - 2rem));
    max-height: min(70vh, 32rem);
    overflow: auto;
    margin-top: 0.5rem;
    padding: 0.75rem 0.9rem 1rem;
    border: 1px solid var(--uc-bs-assist-border);
    border-radius: 0.75rem;
    background: var(--uc-bs-assist-bg);
    color: var(--uc-bs-assist-fg);
    box-shadow: var(--uc-bs-assist-shadow);
}

.uc-bs-assist--bottom-right .uc-bs-assist__panel,
.uc-bs-assist--top-right .uc-bs-assist__panel { right: 0; }

.uc-bs-assist--bottom-left .uc-bs-assist__panel,
.uc-bs-assist--top-left .uc-bs-assist__panel { left: 0; }

.uc-bs-assist--bottom-right .uc-bs-assist__panel,
.uc-bs-assist--bottom-left .uc-bs-assist__panel {
    bottom: calc(100% + 0.5rem);
    margin-top: 0;
}

.uc-bs-assist__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

.uc-bs-assist__title { margin: 0; font-size: 1.05rem; }

.uc-bs-assist__close,
.uc-bs-assist__reset,
.uc-bs-assist__chip {
    cursor: pointer;
    border: 1px solid var(--uc-bs-assist-border);
    background: transparent;
    color: inherit;
    border-radius: 0.4rem;
    padding: 0.35rem 0.55rem;
}

.uc-bs-assist__close:focus-visible,
.uc-bs-assist__reset:focus-visible,
.uc-bs-assist__chip:focus-visible,
.uc-bs-assist__tts:focus-visible,
.uc-bs-assist__statement a:focus-visible,
.uc-bs-assist__module input:focus-visible {
    outline: 3px solid var(--uc-bs-assist-accent);
    outline-offset: 2px;
}

.uc-bs-assist__tts {
    cursor: pointer;
    border: 1px solid var(--uc-bs-assist-border);
    background: transparent;
    color: inherit;
    border-radius: 0.4rem;
    padding: 0.4rem 0.6rem;
    font-size: 0.9rem;
    width: 100%;
}

.uc-bs-assist__tts[aria-pressed="true"] {
    background: var(--uc-bs-assist-accent);
    color: #fff;
    border-color: var(--uc-bs-assist-accent);
}

.uc-bs-assist__statement {
    margin-top: 0.75rem;
    padding-top: 0.6rem;
    border-top: 1px solid var(--uc-bs-assist-border);
    font-size: 0.85rem;
}

.uc-bs-assist__statement-standard { display: block; margin-bottom: 0.3rem; opacity: 0.85; }

.uc-bs-assist__statement a {
    color: var(--uc-bs-assist-accent);
    text-decoration: underline;
}

.uc-bs-assist__section { margin-bottom: 0.85rem; }

.uc-bs-assist__section-title {
    margin: 0 0 0.4rem;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    opacity: 0.8;
}

.uc-bs-assist__profiles { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.uc-bs-assist__chip { font-size: 0.85rem; }
.uc-bs-assist__modules { list-style: none; margin: 0; padding: 0; }

.uc-bs-assist__module {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.35rem 0;
    cursor: pointer;
}

.uc-bs-assist__footer { display: flex; justify-content: flex-end; margin-top: 0.5rem; }

.uc-bs-assist__credit {
    margin-top: 0.75rem;
    padding-top: 0.6rem;
    border-top: 1px solid var(--uc-bs-assist-border);
    font-size: 0.78rem;
    text-align: center;
    opacity: 0.75;
}

.uc-bs-assist__credit-link {
    color: var(--uc-bs-assist-accent);
    text-decoration: none;
    font-weight: 600;
}

.uc-bs-assist__credit-link:hover { text-decoration: underline; }

.uc-bs-assist__credit-link:focus-visible {
    outline: 3px solid var(--uc-bs-assist-accent);
    outline-offset: 2px;
}

/* Modul-Effekte auf documentElement */
html.uc-bs-font-lg { font-size: 125% !important; }
html.uc-bs-line-tall, html.uc-bs-line-tall body { line-height: 1.8 !important; }
html.uc-bs-letter-wide, html.uc-bs-letter-wide body { letter-spacing: 0.06em !important; }
html.uc-bs-font-bold, html.uc-bs-font-bold body { font-weight: 700 !important; }
html.uc-bs-readable-font, html.uc-bs-readable-font body { font-family: Arial, Helvetica, sans-serif !important; }

html.uc-bs-highlight-links a {
    text-decoration: underline !important;
    outline: 2px solid currentColor;
    outline-offset: 2px;
}

html.uc-bs-contrast-light { filter: contrast(1.15) brightness(1.08); }
html.uc-bs-contrast-high { filter: contrast(1.45); }
html.uc-bs-monochrome { filter: grayscale(1); }

html.uc-bs-big-cursor,
html.uc-bs-big-cursor * {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' stroke='%23fff' stroke-width='1' d='M4 2l12 9.5-5 1.5 2.5 7.5-2.5 1-2.5-7.5L4 17z'/%3E%3C/svg%3E") 0 0, auto !important;
}

html.uc-bs-stop-animations *,
html.uc-bs-stop-animations *::before,
html.uc-bs-stop-animations *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
}

html.uc-bs-hide-images img,
html.uc-bs-hide-images picture,
html.uc-bs-hide-images video,
html.uc-bs-hide-images svg:not(.uc-bs-assist *) {
    visibility: hidden !important;
}

.uc-bs-assist-reading-line {
    position: fixed;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--bs-primary, #1f9dcb);
    z-index: 1050;
    pointer-events: none;
    transform: translateY(-50%);
}

.uc-bs-assist-reading-mask {
    --uc-bs-mask-y: 50%;
    position: fixed;
    inset: 0;
    z-index: 1045;
    pointer-events: none;
    background:
        linear-gradient(
            to bottom,
            rgba(0, 0, 0, 0.55) 0,
            rgba(0, 0, 0, 0.55) calc(var(--uc-bs-mask-y) - 3rem),
            transparent calc(var(--uc-bs-mask-y) - 3rem),
            transparent calc(var(--uc-bs-mask-y) + 3rem),
            rgba(0, 0, 0, 0.55) calc(var(--uc-bs-mask-y) + 3rem),
            rgba(0, 0, 0, 0.55) 100%
        );
}

html.uc-bs-force-focus :focus,
html.uc-bs-force-focus :focus-visible {
    outline: 3px solid var(--uc-bs-focus-color, #1d4ed8) !important;
    outline-offset: 2px !important;
}

.uc-bs-skip-link {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 1056;
    margin: 0.5rem;
    padding: 0.6rem 1rem;
    background: #fff;
    color: #111;
    border: 2px solid currentColor;
    border-radius: 0.4rem;
    font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    font-weight: 600;
    text-decoration: none;
    transform: translateY(-150%);
    transition: transform 0.15s ease;
}

.uc-bs-skip-link:focus {
    transform: translateY(0);
    outline: 3px solid var(--uc-bs-focus-color, #1d4ed8);
    outline-offset: 2px;
}
