/* Basis von Stil A: Reset, Typografie, Fokus, Bewegung. Nur semantische Tokens. */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
    font-family: var(--bt-schrift); font-size: var(--bt-text-md); line-height: 1.45;
    color: var(--bt-text); background: var(--bt-grund);
    -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}
a { color: var(--bt-akzent); }
h1, h2, h3, h4 { margin: 0; font-weight: 600; }
::selection { background: var(--bt-akzent-hell); }

/* Sichtbarer Fokus für alles Bedienbare; Eingaben setzen zusätzlich --bt-fokus (unten). */
:focus-visible { outline: 2px solid var(--bt-akzent); outline-offset: 2px; }

/* Nur für Vorleseprogramme sichtbar. */
.bt-nur-vorleser {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Scroll-Sperre hinter modalen Ebenen, gesetzt von bt-ui.js. */
.bt-gesperrt, .bt-gesperrt body { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

/* Eingabefelder: gemeinsam für BtTextfeld, BtZahlfeld, BtDatum, BtZeit, BtAuswahl und BtFilterleiste (sie setzen die Klassen selbst). */
.bt-eingabe, .bt-auswahl { width: 100%; min-height: 2.5rem; padding: 0.45rem 0.75rem; border: 1px solid var(--bt-rand-stark); border-radius: var(--bt-radius-m); font: inherit; color: var(--bt-text); background: var(--bt-flaeche); transition: border-color var(--bt-dauer), box-shadow var(--bt-dauer); }
.bt-eingabe::placeholder { color: var(--bt-text-schwach); }
.bt-eingabe:focus, .bt-auswahl:focus { outline: none; border-color: var(--bt-akzent); box-shadow: var(--bt-fokus); }
.bt-eingabe:disabled, .bt-auswahl:disabled { background: var(--bt-flaeche-2); color: var(--bt-text-schwach); }
.bt-eingabe[aria-invalid="true"], .bt-auswahl[aria-invalid="true"], .bt-eingabe.invalid, .bt-auswahl.invalid { border-color: var(--bt-schlecht); }

@media (pointer: coarse) {
    .bt-eingabe, .bt-auswahl { min-height: 2.75rem; font-size: max(1rem, 16px); }
}
