/* Wiederverwendbare Bedienelemente - auf den Tokens aus ui-tokens.css.
   ===================================================================

   Hier stehen die Bausteine, die in Navigation, Werkzeugleisten,
   Einstellungen, Mediathek und Dialogen dieselben sein sollen:
   Navigationszeile, Iconbutton, Auswahlgruppe, schwebende Fläche.

   Dieselbe Grenze wie bei den Tokens: Keine Regel hier fasst
   ``.satz``, ``.blatt`` oder ``.webseite`` an. Alle Selektoren sind
   klassengebunden - eine nackte ``button``- oder ``p``-Regel wirkte
   auch im publizierten Inhalt, und das fiele erst im fertigen Buch
   auf. */

/* ------------------------------------------------ Navigationszeile */

/* Eine Zeile aus drei Spuren: Symbol, Text, Aufklappaktion.
   ``minmax(0, 1fr)`` für den Text ist der Kern. Ohne die Null darf die
   Spur nicht unter ihre Inhaltsbreite schrumpfen, und dann greift
   keine Ellipse - der Name schiebt die Zeile auf. */
.ui-zeile {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--ui-abstand-2);
  min-height: var(--ui-zeile);
  min-inline-size: 0;
  padding: 0 var(--ui-abstand-3);
  border: 0; border-radius: var(--ui-radius);
  background: transparent;
  color: var(--text-leise);
  font-size: var(--ui-schrift);
  font-weight: var(--ui-gewicht);
  text-align: left; text-decoration: none;
  box-sizing: border-box;
}
.ui-zeile > .ui-zeilentext {
  min-inline-size: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ui-zeile > svg { inline-size: var(--ui-symbol); block-size: var(--ui-symbol); flex: none; }

.ui-zeile:hover { background: var(--flaeche); color: var(--text); }

/* Der aktive Zielpunkt: eine ruhige Flächenmarkierung.
   Ausdrücklich OHNE eigene Schriftstärke. Fetterer Text ist breiter;
   eine Zeile, die beim Aktivwerden ihre Maße ändert, verschiebt ihre
   Nachbarn. Gemessen am 24.09.2026: Der aktive Eintrag der
   Projektliste trug 600 gegen 400 der übrigen. */
.ui-zeile[aria-current],
.ui-zeile.ui-aktiv {
  background: var(--blau-flaeche);
  color: var(--akzent-text);
  font-weight: var(--ui-gewicht);
}

/* Eine geöffnete Gruppe ist kein zweiter Hauptpunkt. Sie bekommt
   deshalb nur die Schrift ihres Kopfes, nicht die Fläche der
   Auswahl - sonst stünden zwei konkurrierende Markierungen
   untereinander. */
.ui-zeile.ui-gruppenkopf {
  color: var(--text);
  font-weight: var(--ui-gewicht-kopf);
  background: transparent;
}
.ui-zeile.ui-gruppenkopf:hover { background: var(--flaeche); }

/* ------------------------------------------------------ Iconbutton */

.ui-icon {
  inline-size: var(--ui-knopf); block-size: var(--ui-knopf);
  flex: none;
  display: grid; place-items: center;
  padding: 0; border: 0; border-radius: var(--ui-radius);
  background: transparent; color: var(--text-leise);
  cursor: pointer;
}
.ui-icon svg {
  inline-size: var(--ui-symbol); block-size: var(--ui-symbol);
  display: block;
}
.ui-icon-klein { inline-size: var(--ui-knopf-klein); block-size: var(--ui-knopf-klein); }
.ui-icon-klein svg { inline-size: var(--ui-symbol-klein); block-size: var(--ui-symbol-klein); }
.ui-icon:hover { background: var(--flaeche); color: var(--text); }
.ui-icon[disabled] { opacity: .35; cursor: default; }
.ui-icon[disabled]:hover { background: transparent; color: var(--text-leise); }

/* ---------------------------------------------------- Auswahlgruppe */

/* Exklusive Auswahl aus mehreren Symbolen - Geräteprofile, Ansichten.
   Der aktive Zustand ist geometrisch stabil: Er ändert Fläche und
   Farbe, nicht Größe oder Schriftstärke. */
.ui-auswahl {
  display: inline-flex; align-items: center;
  gap: var(--ui-abstand-1);
  padding: var(--ui-abstand-1);
  border: var(--ui-linie) solid var(--rand);
  border-radius: var(--ui-radius-rund);
  background: var(--weiss);
}
.ui-auswahl > button {
  inline-size: var(--ui-knopf); block-size: var(--ui-knopf);
  display: grid; place-items: center;
  padding: 0; border: 0; border-radius: var(--ui-radius-rund);
  background: transparent; color: var(--text-leise);
  cursor: pointer;
}
.ui-auswahl > button svg {
  inline-size: var(--ui-symbol); block-size: var(--ui-symbol);
  display: block;
}
.ui-auswahl > button:hover { background: var(--flaeche); color: var(--text); }
.ui-auswahl > button[aria-pressed="true"] {
  background: var(--blau-flaeche); color: var(--akzent-text);
}

/* ------------------------------------------------- Schwebende Fläche */

/* Die eine erlaubte Ebenenabhebung: Menüs, Flyouts, Popover. Sie sagt
   "das schwebt über der Seite" und ist kein Zustand. */
.ui-schwebe {
  border: var(--ui-linie) solid var(--rand);
  border-radius: var(--ui-radius-gross);
  background: var(--weiss);
  box-shadow: var(--ui-schwebe);
}

/* ------------------------------------------------------------ Fokus */

/* Ein Ring nach außen, an jedem Bedienelement dieser Datei. ``:focus-
   visible`` und nicht ``:focus``: Ein Mausklick soll keinen Ring
   hinterlassen, eine Tabulatorreise sehr wohl. */
.ui-zeile:focus-visible,
.ui-icon:focus-visible,
.ui-auswahl > button:focus-visible {
  outline: var(--ui-fokus-breite) solid var(--ui-fokus-farbe);
  outline-offset: var(--ui-fokus-abstand);
}
