/**
 * @file welle-0.css — Feb 2026 Bootstrap sub-theme
 *
 * Kleine, additive Korrekturen aus der Reparaturwelle 0 (August 2026).
 *
 * Bewusst eine eigene, handgeschriebene CSS-Datei und kein SCSS-Partial:
 * css/style.min.css wird laut css/style.scss lokal mit der VS-Code-
 * Erweiterung "Live Sass" kompiliert. Auf dem Server steht keine
 * Sass-Toolchain zur Verfuegung, eine Aenderung im SCSS wuerde also erst
 * beim naechsten lokalen Build wirksam und bis dahin auseinanderlaufen.
 * Diese Datei wird nach style.min.css geladen und ueberschreibt daher
 * gezielt einzelne Regeln.
 */

/* -----------------------------------------------------------------------
 * Utility-Leiste im Header (Aufgabe 6d)
 *
 * .brm-header__utility-inner ist ein Flex-Container mit
 * `justify-content: space-between`. Er war auf zwei Bloecke ausgelegt:
 * links der Fusszeilen-Menueblock, rechts der Sprachumschalter. Der
 * Menueblock war jedoch eine Doppelplatzierung (derselbe Block steht
 * korrekt im Footer) und ist jetzt deaktiviert.
 *
 * Bleibt nur ein Block uebrig, wuerde `space-between` ihn an den linken
 * Rand ruecken. Diese Regel haelt den Sprachumschalter dort, wo er war -
 * rechts. Kommt spaeter wieder ein zweiter Block in die Region, greift
 * :only-child nicht mehr und das urspruengliche Layout stellt sich von
 * selbst wieder her.
 * -------------------------------------------------------------------- */
.brm-header__utility-inner > :only-child {
  margin-inline-start: auto;
}

/* -----------------------------------------------------------------------
 * Icon-Font-Absicherung (Aufgabe 5)
 *
 * Die Navigation nutzt Material Symbols als Ligatur-Font. Im Markup stehen
 * die Ligaturwoerter im Klartext (expand_more, precision_manufacturing ...).
 * Der @font-face liegt im kompilierten css/style.min.css und hat dort
 * bereits `font-display: block` - der Text bleibt also waehrend des Ladens
 * unsichtbar. Faellt der Font komplett aus (404, Proxy, Blocker), zeigt der
 * Browser nach dem Block-Zeitraum jedoch das Ligaturwort im Fliesstext.
 *
 * Screenreader sind davon nicht betroffen: alle Icon-Spans tragen
 * aria-hidden="true" und jedes zugehoerige Bedienelement hat eine sichtbare
 * oder visually-hidden Beschriftung.
 *
 * Die folgenden Regeln entschaerfen den Rest:
 * 1. Ligatursubstitution explizit und unpraefixiert anfordern (im
 *    kompilierten CSS steht nur -webkit-font-feature-settings) und gegen
 *    ein globales `font-variant-ligatures: none` absichern.
 * 2. Icon-Boxen der Navigation auf Icon-Breite klemmen, damit ein
 *    ausgefallener Font das Header-Layout nicht sprengt. `overflow: clip`
 *    mit `overflow-clip-margin` schneidet nur horizontal ueberstehenden
 *    Ersatztext ab und laesst Ober-/Unterlaengen der Glyphe sichtbar.
 *    Bewusst nur fuer die Navigations-Icons, deren Elternelemente
 *    nachweislich Flex-Container sind - dort aendert `overflow` die
 *    Baseline-Berechnung nicht.
 * -------------------------------------------------------------------- */
.material-symbols-outlined {
  font-variant-ligatures: normal;
  font-feature-settings: "liga";
}

/* Einziger Icon-Button ohne Flex-Layout - normalisiert, damit die
   Clip-Regel unten die Baseline nicht verschiebt. */
.offcanvas-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

@supports (overflow-clip-margin: 0.5em) {
  .brm-header__chevron,
  .offcanvas-chevron,
  .mega-icon,
  .offcanvas-icon,
  .brm-header__icon-btn .material-symbols-outlined,
  .offcanvas-close .material-symbols-outlined,
  .brm-back-to-top .material-symbols-outlined {
    max-width: 1em;
    overflow: clip;
    overflow-clip-margin: 0.5em;
  }
}

/* -----------------------------------------------------------------------
 * Offcanvas-Schublade aus dem Tab-Fluss nehmen (Aufgabe 5)
 *
 * #offcanvasNav wird nur ueber transform: translateX(100%) aus dem Bild
 * geschoben. Die enthaltenen Links und Chevron-Buttons (17 der 37
 * Icon-Spans einer Seite) blieben dadurch auf jeder Breite fokussierbar -
 * auch ab 992px, wo der Hamburger-Button per display:none verschwindet und
 * die Schublade gar nicht mehr geoeffnet werden kann. Zusammen mit dem
 * bereits gesetzten aria-hidden="true" ist das der klassische
 * "aria-hidden-focus"-Verstoss: Tastaturfokus laeuft in einen Bereich, den
 * Screenreader ausblenden.
 *
 * visibility: hidden nimmt den geschlossenen Zustand aus Tab-Reihenfolge
 * und Accessibility-Tree. js/global.js setzt beim Oeffnen
 * aria-hidden="false", der Selektor greift dann nicht mehr. Die
 * visibility-Transition laeuft diskret, das Zuschieben bleibt sichtbar.
 * -------------------------------------------------------------------- */
.brm-offcanvas {
  transition: transform 0.3s ease-out, visibility 0.3s ease-out;
}

.brm-offcanvas[aria-hidden="true"] {
  visibility: hidden;
}
