:root {
    --niu-accessibility-indicator-active-color: #000;
    --niu-accessibility-indicator-color: #5f5f5f;
}

.niu-accessibility-wrapper {
}

.niu-accessibility-tools-grid{
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap:1rem;

}

.niu-accessibility-btn{
    background: unset;
    border: 1px solid var(--gray-light);
    border-radius: 12px;
    aspect-ratio: 1 / 1;
    display: flex;
    flex-direction: column;
    justify-content: space-evenly;
    align-items: center;
    background: white;

}
.niu-accessibility-indicator-container > span {
    width: 16px;
    height: 8px;
    border-radius: 10px;
    border:1px solid var(--niu-accessibility-indicator-color);
    display: inline-block;
    margin: 0.125rem 2px;
    transition: width .1s ease-in-out , height .1s ease-in-out, background-color .1s ease-in-out;
}
.niu-accessibility-btn[data-niu-state="1"] .niu-accessibility-indicator-container > span:nth-child(1){
    background-color: var(--niu-accessibility-indicator-active-color);
    width:24px;
    height:10px;
    transition: width .1s ease-in-out , height .1s ease-in-out, background-color .1s ease-in-out;
    border:1px solid var(--niu-accessibility-indicator-active-color);
}
.niu-accessibility-btn[data-niu-state="2"] .niu-accessibility-indicator-container > span:nth-child(1),
.niu-accessibility-btn[data-niu-state="2"] .niu-accessibility-indicator-container > span:nth-child(2){
    background-color: var(--niu-accessibility-indicator-active-color);
    width:24px;
    height:10px;
    transition: width .1s ease-in-out , height .1s ease-in-out, background-color .1s ease-in-out;
    border:1px solid var(--niu-accessibility-indicator-active-color);
}
.niu-accessibility-btn[data-niu-state="3"] .niu-accessibility-indicator-container > span:nth-child(1),
.niu-accessibility-btn[data-niu-state="3"] .niu-accessibility-indicator-container > span:nth-child(2),
.niu-accessibility-btn[data-niu-state="3"] .niu-accessibility-indicator-container > span:nth-child(3){
    background-color: var(--niu-accessibility-indicator-active-color);
    width:24px;
    height:10px;
    transition: width .1s ease-in-out , height .1s ease-in-out, background-color .1s ease-in-out;
    border:1px solid var(--niu-accessibility-indicator-active-color);
}
.niu-accessibility-btn[data-niu-state="4"] .niu-accessibility-indicator-container > span:nth-child(1),
.niu-accessibility-btn[data-niu-state="4"] .niu-accessibility-indicator-container > span:nth-child(2),
.niu-accessibility-btn[data-niu-state="4"] .niu-accessibility-indicator-container > span:nth-child(3),
.niu-accessibility-btn[data-niu-state="4"] .niu-accessibility-indicator-container > span:nth-child(4){
    background-color: var(--niu-accessibility-indicator-active-color);
    width:24px;
    height:10px;
    transition: width .1s ease-in-out , height .1s ease-in-out, background-color .1s ease-in-out;
    border:1px solid var(--niu-accessibility-indicator-active-color);
}

.niu-accessibility-icon {
    margin-bottom:1rem;
    height:48px;
    display:flex;
    align-items:center;
    justify-content: center;
}

.niu-accessibility-palette{
    display: flex;
    gap: 0.25rem;
}
.niu-accessibility-palette > div{
    aspect-ratio: 1 / 1;
    flex-grow: 1;
    border-radius: 3px;
}

/* Theme v2 B3-2b (Audit Nr. 45): Barrierefreiheits-Panel.

   Diese Datei wird als <style id="niuAccessibilityCSS"> NACH #niuCriticalCSS
   ausgegeben und gewinnt deshalb jeden Spezifitaets-Gleichstand gegen die
   theme2-Generalregeln. Die Konvertierung muss hier stehen; eine Regel im
   SCSS-Partial kaeme zu frueh.

   Bewusst unter body.niu-theme2 statt als wortgleiche Quell-Konvertierung:
   ein blankes var(--s-bg, white) wuerde seinen Fallback NIE benutzen, weil
   --s-* an jeder Stelle unterhalb von <body> definiert ist (page-Root). Ohne
   aktives Theme lieferte die Kette also den Anker der page-Root - und der
   weicht hier an drei von vier Stellen ab: --s-border ist #606c6a gegen
   --gray-light #e4e7e7, --s-text ist #0a423d gegen #000, --s-text-muted ist
   #788785 gegen #5f5f5f. Nur `white` waere wortgleich. Mit der
   Aktivierungsklasse bleibt die Legacy-Optik exakt erhalten.

   Die beiden Indikator-Variablen werden am body neu belegt statt in jeder der
   vier Zustandsregeln einzeln - die Regeln unten lesen sie unveraendert weiter.
   Am :root duerfen sie NICHT auf --s-* zeigen: dort ist die Kette nicht
   definiert (guaranteed-invalid), der Wert waere leer.

   Die Diagnose-Werkzeuge weiter unten (Lesehilfe, Lesebox, rote Outlines,
   Label-Chips) bleiben unangetastet: das sind Werkzeug-Markierungen, keine
   Flaechen des Shops. */
body.niu-theme2 {
    --niu-accessibility-indicator-active-color: var(--s-text);
    --niu-accessibility-indicator-color: var(--s-text-muted);
}

body.niu-theme2 .niu-accessibility-btn {
    background: var(--s-bg);
    color: var(--s-text);
    border-color: var(--s-border);
}

body.niu-axs-cursor, body.niu-axs-cursor * {
    cursor: url('/templates/NIUplus/assets/cursor.svg'), auto !important;
}



.reading-line {
    position: fixed;
    width: 500px; /* Max. Breite z. B. 400px */
    height: 7px;
    background-color: black;
    border: 2px solid white;
    pointer-events: none;
    z-index: 99999;
    left: 50%; /* zentriert horizontal */
    transform: translateX(-50%);
    display: none;
}

.reading-line.show{
    display: block;
}

/* Lesebox */

.reading-box{
    display: none;
}
.reading-box.show{
    display: block;
}

.reading-box .top{
    position: fixed !important;
    z-index: 2147483647 !important;
    width: 100% !important;
    background: rgba(0, 0, 0, 0.6) !important;
    top: 0;
    height: 0;

}

.reading-box .bottom{
    position: fixed !important;
    z-index: 2147483647 !important;
    width: 100% !important;
    background: rgba(0, 0, 0, 0.6) !important;
    bottom: 0px;
    height: 0;

}


/* ADMIN TOOLS */
[data-niu-axs-heading] ,
[data-niu-axs-btn-txt-error] ,
[data-niu-axs-alt-error]
{
    position: relative;
}

/* Das "Label" via ::before erzeugen */
[data-niu-axs-heading]::before {
    content: attr(data-niu-axs-heading);
    position: absolute;
    top: -0.75em;
    left: -0.5em;
    background: #005f56;
    color: white;
    font-size: 0.65em;
    font-weight: bold;
    padding: 0.1em 0.4em;
    border-radius: 3px;
    z-index: 1;
    pointer-events: none;
}
[data-niu-axs-alt-error]::before,
[data-niu-axs-btn-txt-error]::before
{
    content:'';
    position: absolute;
    top: -0.75em;
    left: -0.5em;
    background: #005f56;
    color: white;
    font-size: 0.65em;
    font-weight: bold;
    padding: 0.1em 0.4em;
    border-radius: 3px;
    z-index: 1;
    pointer-events: none;
}

[data-niu-axs-heading-error],
[data-niu-axs-btn-txt-error],
[data-niu-axs-alt-error]
{
    outline: 3px solid red;
}
[data-niu-axs-heading-error]::before,
[data-niu-axs-btn-txt-error]::before,
[data-niu-axs-alt-error]::before
{
    background: crimson;
}

[data-niu-axs-heading-error="jump"]::before {
    content:attr(data-niu-axs-heading) ' Hierarchie nicht eingehalten'
}

[data-niu-axs-heading-error="multi"]::before {
    content:attr(data-niu-axs-heading) ' mehrfach vorhanden'
}

[data-niu-axs-alt-error="missing"]::before {
    content:'Alt Attribut fehlt'
}

[data-niu-axs-alt-error="empty"]::before {
    content:'Alt Attribut leer'
}

[data-niu-axs-btn-txt-error="missing"]::before {
    content:'Text oder Aria-Label fehlt'
}