/* BUILD = "2026-08-22.15" */
/* LOGISCHE STATT PHYSISCHER RICHTUNGEN

   margin-inline-start statt margin-left und so fort. Der Browser
   setzt sie bei dir="ltr" nach links, bei dir="rtl" nach rechts -
   ohne dass irgendwo eine Sonderregel fuer Arabisch stehen muss.

   Fuer die zwoelf Sprachen mit ltr aendert sich dadurch nichts. Wer
   hier etwas ergaenzt, sollte bei den logischen Formen bleiben; die
   physischen sind nicht falsch, aber sie muessen fuer jede neue
   Sprache mit anderer Leserichtung von Hand nachgezogen werden.
*/

/**
 * 90-hegel-theme.css - das Farbschema und die Typografie von hegel.net
 *
 * Destillat aus assets/css/hegel.css (rund 1200 Zeilen, gewachsen seit
 * 1997). Uebernommen ist, was traegt; weggelassen ist Bootstrap 4,
 * Shariff (ersetzt durch components/social-share.njk), Font Awesome
 * 5.11 mit .eot-Schriften fuer den Internet Explorer, und das
 * PNG-Icon-Sprite.
 *
 * DIE GRUNDIDEE DES SCHEMAS
 *
 * Dunkler Rahmen, warmes Papier innen. Die Dreiecke bringen Rot, Blau,
 * Gruen, Magenta und Gelb mit - auf weissem Grund streiten die
 * miteinander, auf dem dunklen Blauviolett stehen sie ruhig. Der
 * Lesetext bekommt dagegen Cremeweiss statt Weiss, weil man ihn
 * laenger liest.
 *
 * Das Ebenen-Farbschema der Dreiecke (91-levels.css) gilt NUR fuer die
 * Dreiecke. Es ist Bedeutungstraeger - gleiche Farbe heisst gleiche
 * Systemebene - und hat mit der Seitengestaltung nichts zu tun.
 *
 * NICHT UEBERNOMMENE FEHLER
 * In der Vorlage stehen vier Regeln, die schon heute nichts tun:
 *   ´.article {...}                    Akut statt Punkt
 *   .posterpage{ position: relative, } Komma statt Semikolon
 *   color: #ffd700; !important;        !important auf eigener Zeile
 *   .article img { loading: lazy }     kein CSS-Attribut, gehoert ins HTML
 * Dazu ein verwaistes Kommentarende hinter .triangle-right a.
 */

:root {
  /* --- Das Schema ------------------------------------------------ */
  --hegel-ground: #3a3c69;        /* Seitengrund, dunkles Blauviolett */
  --hegel-chrome: #616387;        /* Navigation, Fusszeile, Reiter    */
  --hegel-chrome-hover: #454766;  /* Abdunklung bei Hover - heller Grund*/
  --hegel-accent: #f1f227;        /* Navigationsschrift, Gelbgruen    */
  --hegel-accent-hover: #ffe766;  /* Gold                             */
  --hegel-link-dark: #f0e59e;     /* Verweise auf dunklem Grund       */
  --hegel-active: #ffe0d8;        /* aktiv, helles Rose - Tomate trug    */
  --hegel-ink: #2c2c2c;           /* Schrift auf Papier - war bis
                                     19.8. nur als Ersatzwert da */
  --hegel-paper: hsl(45, 50%, 94%); /* Artikelflaeche, warmes Creme   */

  /* --- Anbindung an die Namen der base-website -------------------- */
  --color-primary-800: var(--hegel-ground);
  --color-primary-900: #2b2d4e;
  --color-secondary-800: var(--hegel-chrome);
  --color-bg-subtle: var(--hegel-paper);
}

body {
  background: var(--hegel-ground);
  color: var(--color-gray-900, #1a1a1a);
}

/* --- Navigation und Fusszeile ------------------------------------ */

.site-header,
.site-footer {
  background: var(--hegel-chrome);
  color: var(--hegel-accent);
}

.site-header a,
.site-footer a {
  color: var(--hegel-accent);
}

.site-header a:hover,
.site-header a:focus,
.site-footer a:hover,
.site-footer a:focus {
  color: var(--hegel-accent-hover);
  background: var(--hegel-chrome-hover);
}

.site-header a[aria-current="page"] {
  color: var(--hegel-active);
}

/* --- Lesetext ----------------------------------------------------- */
/* Cremegrund, begrenzte Zeilenlaenge, Silbentrennung und Ligaturen.
   Bei einem Nachschlagewerk mit langen Fachbegriffen ist hyphens:auto
   kein Schmuck - ohne das reissen 'Selbstvermittlung' und
   'Wissenschaftlichkeit' die Zeilen auseinander. */

/* Alle Inhaltsflaechen bekommen den Papiergrund - nicht nur
   .page-content. Die Dreiecksseiten heissen .triangle-page und sassen
   sonst direkt auf dem dunklen Blauviolett; die Linkfarbe der Basis
   ist fuer hellen Grund gedacht und wurde dort unsichtbar. */
.page-content,
.article,
.triangle-page,
.termini-table,
main > article,
main > .container {
  background: var(--hegel-paper);
  padding: 1.5rem;
  border-radius: var(--rounded-md, 4px);
}

/* --- Verweise ------------------------------------------------------ */
/* Zwei Umgebungen, zwei Farbwelten:
     auf Papier      dunkles Blau, wie gewohnt
     auf dunklem Grund  helles Gold (--hegel-link-dark)
   Ohne diese Trennung erbt der Verweis die Farbe fuer hellen Grund und
   verschwindet auf dem Seitengrund. */

.page-content a,
.article a,
.triangle-page a,
.termini-table a {
  color: #1a4b8c;
  text-decoration-color: rgba(26, 75, 140, 0.4);
}

.page-content a:hover,
.article a:hover,
.triangle-page a:hover,
.termini-table a:hover,
.page-content a:focus,
.article a:focus,
.triangle-page a:focus,
.termini-table a:focus {
  color: var(--hegel-active);
  text-decoration-color: currentColor;
}

.page-content a:visited,
.article a:visited,
.triangle-page a:visited,
.termini-table a:visited {
  color: #5c3d8c;
}

/* Ausserhalb der Inhaltsflaeche - Kopf, Fuss, Uebergaenge */
body > a,
.menu-overlay a {
  color: var(--hegel-link-dark);
}

/* Der Code-Marker traegt die Ebenenfarbe (91-levels.css) und braucht
   deshalb keine eigene Linkfarbe. */
.triangle-page .triangle-code a,
.triangle-children .code,
.triangle-fallback .code {
  color: inherit;
}

.article {
  max-width: 40em;
  margin-inline: auto;
  hyphens: auto;
  -webkit-hyphens: auto;
  letter-spacing: 0.03em;
  font-variant-ligatures: common-ligatures;
  text-align: justify;
}

.article h2,
.article h3 {
  hyphens: none;
  text-align: start;
}

/* --- Schriftstapel je Schriftsystem -------------------------------- */
/* Ohne diese Regeln setzt der Browser CJK und Devanagari mit einer
   Ersatzschrift, die fuer Latein gewaehlt wurde - das Ergebnis ist
   uneinheitlich und teils unleserlich. Aus der Vorlage uebernommen. */

:lang(zh-Hans), :lang(zh) {
  font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
               "Source Han Sans SC", "Noto Sans CJK SC", sans-serif;
}
:lang(zh-Hant) {
  font-family: "PingFang TC", "Hiragino Sans CNS", "Microsoft JhengHei",
               "Source Han Sans TC", "Noto Sans CJK TC", sans-serif;
}
:lang(ja) {
  font-family: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic",
               "Meiryo", "Source Han Sans JP", "Noto Sans CJK JP", sans-serif;
}
:lang(ko) {
  font-family: "Apple SD Gothic Neo", "Malgun Gothic", "Nanum Gothic",
               "Source Han Sans KR", "Noto Sans CJK KR", sans-serif;
}
:lang(hi) {
  font-family: "Noto Sans Devanagari", "Mangal", "Kohinoor Devanagari",
               sans-serif;
}
:lang(ar) {
  font-family: "Noto Naskh Arabic", "Geeza Pro", "Traditional Arabic",
               serif;
}

/* CJK und Devanagari nicht trennen - die Regeln dafuer sind andere
   als bei lateinischer Schrift, und Browser trennen dort falsch. */
:lang(zh), :lang(ja), :lang(ko), :lang(hi), :lang(ar) {
  hyphens: none;
  -webkit-hyphens: none;
}

/* --- Ankerversatz -------------------------------------------------- */
/* Die Navigationsleiste steht fest oben. Ohne diesen Versatz
   verschwindet das Sprungziel darunter. Aus der Vorlage; heute
   ginge auch scroll-margin-top, aber die alte Loesung wirkt auch
   in aelteren Browsern. */

:target::before {
  content: "";
  display: block;
  height: 4em;
  margin-top: -4em;
  visibility: hidden;
  pointer-events: none;
}

@supports (scroll-margin-top: 4em) {
  :target { scroll-margin-top: 4em; }
  :target::before { display: none; }
}

/* --- Druck ---------------------------------------------------------- */
/* Fuer ein Nachschlagewerk relevanter als bei den meisten Sites: die
   Dreiecke werden ausgedruckt und an die Wand gehaengt. */

@media print {
  @page { margin: 2cm; }

  body {
    background: #fff;
    color: #000;
    font-size: 11pt;
    /* Serifen auf Papier: bei laengeren Texten fuehren die
       Serifen das Auge in der Zeile, was auf dem Bildschirm bei
       niedriger Aufloesung nachteilig war, auf Papier aber nicht.
       hegel.net wird fuer akademische Arbeiten ausgedruckt. */
    font-family: "Source Serif Pro", Georgia, "Times New Roman", serif;
  }

  .page-content,
  .article {
    background: none;
    padding: 0;
    max-width: none;
  }

  .site-header,
  .site-footer,
  .language-switcher,
  .social-share,
  .datatable-filters,
  .datatable-pagination,
  .triangle-nav,
  .no-print {
    display: none !important;
  }

  p, li { orphans: 2; widows: 2; }
  h1, h2, h3 { page-break-after: avoid; }

  /* Verweisziel ausschreiben - auf Papier ist ein Link sonst wertlos.
     Interne Anker und javascript: bleiben aussen vor. */
  a[href^="http"]::after {
    content: " <" attr(href) "> ";
    font-size: 90%;
    word-break: break-all;
  }
  a[href^="#"]::after,
  a[href^="javascript:"]::after { content: ""; }

  .triangle-svg { max-width: 100%; page-break-inside: avoid; }

  /* Auf der Artikelseite gehoert nur der Text aufs Papier. Das
     zugehoerige Dreieck ist ein Navigationsmittel und auf einem
     Ausdruck nutzlos - ebenso der senkrechte Trennstrich, der die
     beiden Spalten teilt. */
  .article-triangle,
  .crumbs { display: none !important; }

  .article-layout {
    display: block !important;
    border: none !important;
  }

  .article { border-inline-start: none !important; padding-inline-start: 0 !important; }

  /* Die Fusszeile der Seite wird nicht gedruckt - damit ist die
     Copyright-Zeile AM ARTIKEL die einzige Rechteangabe auf dem
     Papier. Sie muss also bleiben. */
  .article-footer {
    display: block !important;
    border-top: 1pt solid #000;
    page-break-inside: avoid;
  }
}

/* --- Flaggenmenue -------------------------------------------------- */
/* Die Klappliste hat hellen Grund, sitzt aber in der dunklen
   Kopfleiste. Ohne diese Regeln erbt sie deren goldene Linkfarbe und
   ist auf Weiss praktisch unlesbar. */

/* AUFKLAPPEN AUCH OHNE JAVASCRIPT

   Die base-website oeffnet das Menue ueber .open bzw.
   aria-expanded="true" - beides setzt language-switcher.js. Faellt
   das Skript aus, laesst sich die Sprache mit der Maus gar nicht
   mehr wechseln; man muss die Adresszeile bearbeiten.

   Reflexivity Press hat dafuer einen Rueckfall, hegel.net nicht.
   Hier ist er, plus :focus-within fuer die Tastatur - damit
   funktioniert der Umschalter auch, wenn wieder einmal ein Skript
   an einem Import scheitert.

   Nur bei Zeigergeraeten: auf dem Handy gibt es kein Schweben, dort
   uebernimmt der Fingertipp und damit das Skript. */
@media (hover: hover) {
  .language-switcher:hover .language-menu,
  .language-switcher:focus-within .language-menu {
    max-height: 400px;
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
    display: block;
  }
}

.language-switcher .language-menu {
  background: var(--hegel-paper);
  border: 1px solid var(--hegel-chrome);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.language-switcher .language-option {
  color: var(--color-gray-900, #1a1a1a);
}

.language-switcher .language-option:hover,
.language-switcher .language-option:focus {
  background: var(--hegel-chrome);
  color: var(--hegel-accent);
  outline: none;
}

/* Der Knopf selbst steht auf der Kopfleiste und bleibt hell. */
.language-switcher .language-current {
  background: var(--hegel-paper);
  color: var(--color-gray-900, #1a1a1a);
  border: 1px solid var(--hegel-chrome-hover);
}

.language-switcher .language-current:hover {
  background: #fff;
}

/* Die Flaggen-Emoji brauchen eine Schrift, die sie farbig zeigt -
   sonst erscheinen auf manchen Linux-Systemen nur Buchstabenpaare
   wie 'DE' statt der Flagge. */
.language-switcher .flag {
  font-family: "Noto Color Emoji", "Apple Color Emoji",
               "Segoe UI Emoji", sans-serif;
  font-size: 1.1em;
  line-height: 1;
}

/* --- Dreieck und Ebenen-Reiter ------------------------------------- */
/* Das SVG hat viewBox 530x409 bzw. 1030x808 bzw. 2030x1606 und wuerde
   sonst die volle Breite einnehmen. Auf hegel.net steht daneben Platz
   fuer Beitraege, Hegeltexte und Querverweise - deshalb hoechstens die
   halbe Breite, ab Tablet nebeneinander. */

.triangle-figure {
  max-width: 34rem;
  margin: 0 0 1.5rem;
}

.triangle-figure svg {
  width: 100%;
  height: auto;
  display: block;
}

/* Zweispaltig ab Tablet: Dreieck links, Beitraege rechts.
   Auf dem Telefon untereinander - dort hat ein Dreieck neben Text
   keinen Platz. */
@media (min-width: 62em) {
  .triangle-page .container {
    display: grid;
    grid-template-columns: minmax(0, 34rem) minmax(0, 1fr);
    gap: 2rem;
    align-items: start;
  }
  .triangle-page .breadcrumb,
  .triangle-page .page-header,
  .triangle-page .triangle-nav {
    grid-column: 1 / -1;
  }
  .triangle-figure { grid-column: 1; grid-row: span 3; max-width: none; }
  .triangle-children,
  .triangle-articles { grid-column: 2; }
}

.tab-buttons {
  display: flex;
  gap: 0.25rem;
  margin-bottom: 0.5rem;
  border-bottom: 2px solid var(--hegel-chrome);
}

/* DIE REITER DUERFEN NICHT UNTER IHREN TEXT SCHRUMPFEN.
 *
 * Flex-Elemente haben flex-shrink: 1. Wird der Platz knapp, schrumpfen
 * sie - und weil der Text nicht mitschrumpft, endet der Rahmen vor dem
 * Wort. Das sah aus wie ein abgeschnittener Reiter und war eines: der
 * Kasten war zu klein, nicht der Text zu lang.
 *
 * Getroffen hat es den letzten Reiter am staerksten, weil der
 * Schrumpfanteil sich nach der Ausgangsbreite bemisst. Auf Deutsch
 * heisst er 'Uebersicht' und ist der breiteste; auf Englisch
 * 'Outline' und passte deshalb.
 *
 * min-width: max-content zieht die Untergrenze bei der Textbreite ein.
 * Damit ist der Fehler behoben, unabhaengig von der Sprache - und ohne
 * eine Zahl, die jemand pflegen muesste.
 *
 * FREIER PLATZ GEHT AN DIE EBENEN-REITER, nicht an alle vier. Der
 * letzte behaelt genau seine Textbreite, die drei anderen teilen sich
 * den Rest zu gleichen Teilen (flex-basis: 0 statt auto - sonst
 * behielte jeder seinen eigenen Vorsprung und sie blieben ungleich).
 *
 * flex-wrap als Notnagel: reicht es auch dafuer nicht, bricht die
 * Leiste um, statt die Reiter zu quetschen. */
.tab-buttons { flex-wrap: wrap; }

.tab-button {
  flex: 1 1 0;
  min-width: max-content;
  padding: 0.35em 0.9em;
  border: 1px solid var(--hegel-chrome);
  border-bottom: none;
  border-radius: 4px 4px 0 0;
  background: var(--hegel-chrome);
  color: var(--hegel-accent);
  cursor: pointer;
  font: inherit;
}

/* Den Uebersicht-Reiter ueber seine Kennung ansprechen, nicht ueber
   :last-child. Er erscheint nur, wenn ein Baum vorliegt; fehlt er,
   traefe :last-child den Reiter 'Ebene 3', der dann nicht mitwuechse
   und die Leiste rechts offen liesse. */
#treeview-tab { flex-grow: 0; }

.tab-button:hover { background: var(--hegel-chrome-hover); }

.tab-button.active {
  background: var(--hegel-paper);
  color: var(--hegel-ground);
  font-weight: 600;
}

.tab-button:focus-visible {
  outline: 2px solid var(--hegel-accent-hover);
  outline-offset: -2px;
}

/* Verstecken uebernimmt das Skript ueber [hidden] - ohne JavaScript
   bleiben alle Ebenen sichtbar, was weniger uebersichtlich, aber
   nicht kaputt ist. */
.tab-panel[hidden] { display: none; }

/* --- Flaggenmenue: Hoehe ------------------------------------------- */
/* Zwoelf Eintraege passen nicht in die voreingestellte Hoehe - im Test
   fehlten Japanisch und Hindi am unteren Rand. */

.language-switcher .language-menu {
  /* Zwoelf Eintraege sollen ohne Bildlauf hineinpassen. Die
     Voreinstellung der base-website ist auf sechs Sprachen ausgelegt;
     Japanisch und Hindi fielen unten heraus.
     Der Bildlauf bleibt als Notnagel fuer sehr niedrige Fenster. */
  max-height: min(85vh, 40rem);
  overflow-y: auto;
  padding-block: 0.25rem;
}

.language-switcher .language-option {
  padding: 0.3em 0.8em;
  white-space: nowrap;
}

/* --- Hamburger in die Ecke gegenueber dem Logo -------------------- */
/*
   Im Quelltext steht der Knopf zwischen Suchfeld und Navigation, weil
   er dort logisch hingehoert: erst der Inhalt, dann das Mittel, ihn
   aufzuklappen. Sichtbar wirkt das eigenwillig - die Erwartung ist
   die Ecke gegenueber dem Logo, das zur Startseite fuehrt.

   'order' aendert nur die Anzeige, nicht die Vorlesereihenfolge:
   Vorleseprogramme und die Tabulatortaste folgen weiter dem
   Quelltext. Deshalb wird hier umgeordnet und nicht die Vorlage
   umgebaut.

   FUER ARABISCH GESCHIEHT DAS VON SELBST. .header-content ist ein
   Flex-Behaelter in Zeilenrichtung; bei dir=rtl kehrt der Browser die
   Hauptachse um, und was in ltr rechts aussen sitzt, sitzt in rtl
   links aussen. Eine eigene rtl-Regel waere nicht nur ueberfluessig,
   sondern falsch - sie wuerde die Umkehr ein zweites Mal vornehmen.
   Aus demselben Grund steht hier margin-inline-start, nicht
   margin-left. */
.header-content .mobile-menu-toggle {
  order: 99;
}

/* Frueher stand hier: 'KEIN margin-inline-start: auto'. Diese
   Warnung ist ueberholt - sie steht weiter unten richtiggestellt, bei
   der Safari-Behebung. Sie hier stehenzulassen hiesse, dass die
   naechste Instanz die Behebung wieder herausnimmt, weil zwei
   Kommentare sich widersprechen. */

/* NACH OBEN KLAPPEN, WENN UNTEN KEIN PLATZ IST.

   Zwoelf Sprachen ergeben rund 30rem. Sitzt der Knopf weit unten -
   im Hamburger-Feld auf dem Handy der Regelfall -, faellt die Liste
   aus dem Bild und der Leser sieht nur die oberen Eintraege.
   language-switcher.js misst beim Oeffnen und setzt die Klasse. */
.language-switcher .language-menu.nach-oben {
  top: auto;
  bottom: calc(100% + 0.5rem);
  transform: translateY(10px);
}

.language-current[aria-expanded="true"] + .language-menu.nach-oben,
.language-menu.nach-oben.open {
  transform: translateY(0);
}

/* NUR FAHNEN, WENN AUCH DAS NICHT REICHT.

   Zwoelf Fahnen in vier Spalten sind drei Zeilen statt zwoelf. Der
   Name faellt weg; das Kuerzel bleibt als title und aria-label am
   Verweis, und die Fahne allein ist fuer den Wechsel genug - wer die
   Sprache sucht, erkennt sie am Bild.

   Die Fahnen werden groesser gesetzt, weil sie jetzt allein tragen
   und mit dem Finger getroffen werden muessen: 44px ist das gaengige
   Mindestmass fuer Beruehrflaechen. */
.language-switcher .language-menu.kompakt {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  min-width: 0;
  width: max-content;
  max-width: min(90vw, 20rem);
}

.language-switcher .language-menu.kompakt li { display: contents; }

.language-switcher .language-menu.kompakt .language-option {
  justify-content: center;
  min-width: 44px;
  min-height: 44px;
  padding: 0.4em;
}

.language-switcher .language-menu.kompakt .language-name {
  /* Nicht display:none - Vorleseprogramme sollen den Namen weiter
     finden. Nur aus dem Bild nehmen. */
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.language-switcher .language-menu.kompakt .flag {
  font-size: 1.6em;
  margin: 0;
}

/* Die Klappliste darf aus der Kopfleiste herausragen - sonst schneidet
   deren Hoehe sie ab, egal wie gross max-height ist. */
.header-actions,
.main-navigation,
.header-content,
.site-header { overflow: visible; }

/* --- Knopf zum Ergaenzungstext ------------------------------------- */
/* Blaues Kaestchen mit weissem Fragezeichen, oben rechts neben der
   Ueberschrift. Springt zum Erlaeuterungstext am Seitenende.
   Nur drei Dreiecke haben einen. */

.page-header { position: relative; }

.btn-extra {
  position: absolute;
  top: 0;
  right: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  background: var(--hegel-ground);
  /* Gelb wie die Menuepunkte - das '!important' bleibt,
     weil eine Regel der base-website dagegensteht. */
  color: var(--hegel-accent) !important;
  border-radius: var(--rounded, 3px);
  font-weight: 700;
  text-decoration: none;
  line-height: 1;
}

.btn-extra:hover,
.btn-extra:focus {
  background: var(--hegel-chrome);
  color: var(--hegel-accent) !important;
}

.triangle-extra {
  grid-column: 1 / -1;
  margin-top: 2rem;
  padding-top: 1.5rem;
  border-top: 2px solid var(--hegel-chrome);
  max-width: 40em;
  hyphens: auto;
}

.triangle-extra .anchor { display: block; }

/* --- Seitenleiste --------------------------------------------------- */

.triangle-sidebar > section { margin-bottom: 1.5rem; }
.triangle-sidebar h2 { font-size: 1.15rem; margin-bottom: 0.4rem; }
.triangle-sidebar ul { margin: 0; padding-inline-start: 1.2em; }
.triangle-sidebar li { margin-bottom: 0.35em; line-height: 1.4; }

.triangle-sidebar .author,
.triangle-sidebar .year,
.triangle-sidebar .note,
.triangle-sidebar .subtitle {
  color: var(--color-gray-600, #666);
  font-size: 0.9em;
}

.triangle-sidebar .typ {
  font-size: 0.75em;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--hegel-ground);
}

.triangle-sidebar .mehr a { font-style: italic; }
.triangle-sidebar .code {
  font-variant-numeric: tabular-nums;
  color: var(--color-gray-600, #666);
  margin-inline-end: 0.3em;
}

/* --- Baumansicht (vierter Reiter) ---------------------------------- */
/* Einrueckung ueber --tv-depth statt verschachtelter Listen: der Baum
   kommt als flache Liste mit Tiefenangabe, weil er ohnehin nur EINEN
   Pfad zeigt und keine echte Verschachtelung braucht. */

.treeview ul {
  list-style: none;
  margin: 0;
  padding: 0;
  font-size: 0.95rem;
  line-height: 1.5;
}

.treeview li {
  padding-inline-start: calc(var(--tv-depth, 0) * 1.2rem);
  padding-block: 0.15em;
  border-inline-start: 2px solid transparent;
}

/* Der Weg von der Wurzel bis hierher wird hervorgehoben - damit sieht
   man auf einen Blick, wo man steht. */
.treeview .tv-path { border-inline-start-color: var(--hegel-chrome-hover); }

.treeview .tv-current {
  border-inline-start-color: var(--level, var(--hegel-active));
  background: rgba(0, 0, 0, 0.04);
}

.treeview .code {
  display: inline-block;
  min-width: 4.5em;
  font-variant-numeric: tabular-nums;
  color: var(--color-gray-600, #666);
}

.treeview .tv-current .code {
  background: var(--level, var(--hegel-ground));
  color: var(--level-text, #fff);
  padding: 0 0.35em;
  border-radius: var(--rounded, 3px);
  min-width: 0;
  margin-inline-end: 0.3em;
}

/* --- Suche im Kopf -------------------------------------------------- */
/* Neben dem Logo, wie im Original. Bei einem Nachschlagewerk ist die
   Suche die Hauptfunktion und gehoert nicht ins Menue. */

.header-search {
  flex: 1 1 auto;
  max-width: 22rem;
  margin-inline: 1rem;
  position: relative;
}

.header-search .search-input {
  width: 100%;
  padding: 0.35em 2.2em 0.35em 0.6em;
  border: 1px solid var(--hegel-chrome-hover);
  border-radius: var(--rounded, 3px);
  background: var(--hegel-paper);
  color: var(--color-gray-900, #1a1a1a);
  font: inherit;
}

.header-search .search-button {
  position: absolute;
  right: 0.2em;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  /* Der Knopf sitzt AUF dem hellen Eingabefeld, nicht auf der dunklen
     Kopfleiste - mit der Akzentfarbe waere er gelb auf gelb und
     praktisch unsichtbar. */
  color: var(--hegel-ground);
  cursor: pointer;
  padding: 0.2em;
  display: flex;
  align-items: center;
}

.header-search .search-button:hover {
  color: var(--hegel-active);
}

.header-search .search-results {
  position: absolute;
  top: calc(100% + 0.3rem);
  left: 0;
  right: 0;
  z-index: 50;
  background: var(--hegel-paper);
  border: 1px solid var(--hegel-chrome);
  border-radius: var(--rounded, 3px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  max-height: min(70vh, 28rem);
  overflow-y: auto;
}

.header-search .results-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.header-search .result-link {
  display: block;
  padding: 0.35em 0.6em;
  color: var(--color-gray-900, #1a1a1a) !important;
  text-decoration: none;
}

.header-search .result-link:hover,
.header-search .result-link:focus {
  background: var(--hegel-chrome);
  color: var(--hegel-accent) !important;
}

.header-search .result-code {
  display: inline-block;
  min-width: 4em;
  font-variant-numeric: tabular-nums;
  color: var(--color-gray-600, #666);
}

.header-search .search-results-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0.3em 0.6em;
  border-bottom: 1px solid var(--hegel-chrome-hover);
  font-size: 0.85em;
  color: var(--color-gray-600, #666);
}

.header-search .search-close {
  background: none;
  border: none;
  font-size: 1.2em;
  cursor: pointer;
  line-height: 1;
}

/* Auf schmalen Bildschirmen unter das Logo statt daneben */
@media (max-width: 48em) {
  .header-search { order: 10; flex-basis: 100%; margin: 0.5rem 0 0; }
}

/* --- Fusszeile ------------------------------------------------------ */

/* Alle Zeilen auf dieselbe Mitte. Vorher richtete sich jede an ihrem
   eigenen Elternelement aus, wodurch 'nach oben' und die Verweisliste
   sichtbar gegeneinander verschoben waren. */
/* Kleinere Schrift als im Fliesstext - die Fusszeile ist Beiwerk,
   nicht Inhalt. Im Original war sie ebenfalls deutlich kleiner. */
.site-footer { font-size: 0.8rem; }

.site-footer .footer-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding-block: 1.5rem;
  gap: 0.3rem;
}

.site-footer p { margin: 0; }

.site-footer .footer-top a {
  display: inline-block;
  padding: 0.2em 0.6em;
  text-decoration: none;
}

.site-footer .footer-license a {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.4em;
  text-decoration: none;
}

/* Das Signet ist ein SVG mit dunkler Schrift auf durchsichtigem Grund -
   auf der dunklen Fusszeile waere es kaum zu erkennen. */
.site-footer .cc-badge {
  background: #fff;
  padding: 0.15em 0.3em;
  border-radius: 3px;
}

.site-footer .footer-nav {
  width: 100%;
  margin-top: 0.5rem;
}

.site-footer .footer-nav ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.2rem;
  margin: 0;
  padding: 0;
}

/* --- Artikelseiten -------------------------------------------------- */

/* Pfeil-Breadcrumb.
   Im Original ein Bildstreifen; hier CSS mit clip-path. Vorteil neben
   der Dateigroesse: der Pfad ist echter Text, also vorlesbar,
   uebersetzbar und durchsuchbar. */

.crumbs {
  background: var(--hegel-chrome);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.crumbs ol {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  min-width: max-content;
  font-size: 0.85rem;
}

.crumbs li { display: flex; }

.crumbs li > a,
.crumbs li > span {
  display: flex;
  align-items: center;
  gap: 0.35em;
  padding: 0.5em 1.6em 0.5em 1.4em;
  color: var(--hegel-accent);
  text-decoration: none;
  white-space: nowrap;
  /* Die Pfeilform: rechts eine Spitze, links eine passende Kerbe. */
  clip-path: polygon(0 0, calc(100% - 0.8em) 0, 100% 50%,
                     calc(100% - 0.8em) 100%, 0 100%, 0.8em 50%);
  margin-inline-start: -0.7em;
}

.crumbs li:first-child > a { margin-inline-start: 0; }

.crumbs li > a:hover,
.crumbs li > a:focus {
  background: var(--hegel-chrome-hover);
  color: var(--hegel-accent-hover);
}

/* Die aktuelle Seite hebt sich ab - heller Grund, dunkle Schrift. */
.crumbs li[aria-current="page"] > span {
  background: var(--hegel-paper);
  color: var(--hegel-ground);
  font-weight: 600;
}

.crumbs .crumb-home { font-size: 1.1em; }

/* Zweispaltig ab Tablet: das zugehoerige Dreieck links, der Text
   rechts. Auf dem Telefon untereinander - dort hat ein Dreieck neben
   Fliesstext keinen Platz. */
.article-layout { padding-block: 1.5rem; }

@media (min-width: 62em) {
  /* NUR mit Dreieck zweispaltig. Ohne die Zusatzklasse blieb das
     Raster auch dann stehen, wenn die Seite gar kein Dreieck hat -
     und der Text stand in der 12rem-Spalte, also rund
     fuenfunddreissig Zeichen breit. Betroffen waren die
     Rechtsseiten und die Infoseite in allen zwoelf Sprachen.

     Zusaetzlich :has() fuer den Fall, dass die Vorlage einmal ohne
     die Klasse ausgeliefert wird - dann greift wenigstens das. */
  .article-layout--mit-dreieck,
  .article-layout:has(> .article-triangle) {
    display: grid;
    grid-template-columns: 12rem minmax(0, 1fr);
    gap: 2rem;
    align-items: start;
  }
}

.article-triangle a {
  display: block;
  text-decoration: none;
  color: inherit;
}

.article-triangle svg {
  width: 100%;
  max-width: 12rem;
  height: auto;
  display: block;
}

.article-triangle-label {
  display: block;
  font-size: 0.8rem;
  line-height: 1.3;
  margin-top: 0.3em;
  color: var(--color-gray-700, #444);
}

.article-triangle a:hover .article-triangle-label {
  color: var(--hegel-active);
}

.article-header h1 { margin-top: 0; }

.article-meta {
  font-size: 0.9rem;
  color: var(--color-gray-600, #666);
  display: flex;
  gap: 1rem;
  margin-top: -0.3em;
}

.article-footer {
  margin-top: 2.5rem;
  padding-top: 1rem;
  border-top: 1px solid var(--color-gray-300, #ccc);
  font-size: 0.8rem;
  color: var(--color-gray-600, #666);
}

.article-footer .cc-badge {
  background: none;
  vertical-align: middle;
  margin-inline-start: 0.4em;
}

/* --- Untermenü-Trenner ---------------------------------------------- */
/* Gruppiert die Systemgliederung: Logik und Natur sind Geschwister,
   die Geist-Punkte liegen eine Ebene tiefer. */

.submenu-divider {
  height: 1px;
  margin: 0.35em 0.6em;
  background: var(--hegel-chrome-hover);
  list-style: none;
  padding: 0;
}

/* --- Untermenüs und Vorschlagslisten: dunkle Schrift ---------------- */
/* Beide haben hellen Grund, sitzen aber in der dunklen Kopfleiste und
   erbten deren goldene Schrift - gelb auf weiss ist praktisch
   unlesbar. Die Regel muss spezifischer sein als die Vererbung. */

/* DAS AUFGEKLAPPTE HAMBURGERMENUE.

   Auf schmalen Schirmen klappt die Navigation als weisse Flaeche auf,
   die Punkte erben aber die goldene Linkfarbe der Kopfleiste - Gold
   auf Weiss, kaum zu lesen. Dieselbe Ursache wie bei den
   Suchergebnissen und beim Sprachmenue, dritte Stelle.

   Der aktive Punkt behaelt seinen dunklen Grund und braucht deshalb
   helle Schrift. */
.main-navigation.is-open,
.main-navigation[aria-expanded="true"],
.nav-open .main-navigation {
  /* Dunkel wie die Kopfleiste: das aufgeklappte Menue ist
     ihre Fortsetzung, keine Flaeche eigener Art. */
  background: var(--hegel-chrome);
}

.main-navigation.is-open a,
.main-navigation.is-open .menu-toggle,
.nav-open .main-navigation a,
.nav-open .main-navigation .menu-toggle {
  color: var(--hegel-accent);
}

.main-navigation .is-active > a,
.main-navigation [aria-expanded="true"] {
  color: var(--hegel-paper, #fff);
}

.submenu,
.nav-submenu,
.search-results,
.language-menu {
  background: var(--hegel-paper);
  border: 1px solid var(--hegel-chrome);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.submenu a,
.submenu-link,
.nav-submenu a,
.search-results a,
.result-link,
.language-option {
  color: var(--color-gray-900, #1a1a1a) !important;
}

/* AUCH DIE KINDER DER TREFFER.
   Die Regel oben faerbt das <a>. Ein <span class="result-title"> oder
   <mark> darin erbt aber weiter von der Kopfleiste - Gold auf Weiss,
   praktisch unlesbar. Deshalb alles im Ergebnisfeld. */
.search-results,
.search-results * {
  color: var(--color-gray-900, #1a1a1a);
}

.search-results mark,
.search-results .result-highlight {
  background: var(--hegel-chrome, #e8e0c8);
  color: var(--color-gray-900, #1a1a1a);
}

.submenu a:hover,
.submenu-link:hover,
.nav-submenu a:hover,
.search-results a:hover,
.result-link:hover,
.language-option:hover,
.submenu a:focus,
.submenu-link:focus,
.result-link:focus,
.language-option:focus {
  background: var(--hegel-chrome);
  color: var(--hegel-accent) !important;
}

/* --- Tabellen im Fliesstext ----------------------------------------- */
/* Impressum, Nutzungsbedingungen und Datenschutz stammen aus der Zeit
   des Tabellenlayouts und bestehen aus einer einzigen Spalte. Ohne
   diese Regel bemisst der Browser die Spaltenbreite am laengsten Wort
   und macht daraus eine schmale Saeule.
   Bei einer Spalte also die volle Lesebreite. */

/* HUELLENBILDER EINHEITLICH

   audio.md und e-audio.md reihen CD-Huellen aneinander. Die Vorlagen
   sind verschieden gross, und die Vorverarbeitung entfernt die
   Groessenangaben aus dem Markdown - zu Recht, sie waren teils
   fehlerhaft geschrieben und gehoeren ohnehin ins CSS.

   Hier stehen sie also. Ein Bild in einem eigenen Absatz, das neben
   anderen steht, bekommt eine feste Hoehe; die Breite ergibt sich.
   So stehen die Huellen auf einer Linie, unabhaengig davon, wie das
   Original beschnitten war.

   Nur bis 12rem Breite: groessere Abbildungen - Faksimiles, Portraits,
   die Urkunden in memberships.md - sind Inhalt und keine Huellen. */
.article p > img[src*="/assets/bilder/"] {
  max-width: 100%;
  height: auto;
}

/* AN DER SEITE FESTMACHEN, NICHT AM DATEINAMEN.

   Erst habe ich die Huellen an '*-mp3.jpg' erkannt. Das traf die
   meisten und eine nicht: 'philosophie der geschichte.jpg'. Die
   blieb in Originalgroesse und nahm den halben Bildschirm ein,
   waehrend die anderen bei 9rem standen - zwei Groessen statt einer.

   Auf audio.htm und e-audio.htm sind ALLE Abbildungen Huellen. Also
   die Seite ansprechen, nicht die Datei. article.njk setzt dafuer
   data-seite.

   30rem: bei 12rem war der Titel der CD nicht zu entziffern. Die
   Huellen sind hochformatig, deshalb ueber die Hoehe gesetzt; die
   Breite ergibt sich und wird bei schmalen Schirmen gedeckelt.

   Das CC-Zeichen am Seitenende ist ausgenommen. Es steht ebenfalls
   in einem Absatz und wurde mitvergroessert - ein Lizenzabzeichen
   von dreissig Zeilen Hoehe. */
[data-seite="audio"] .article p img:not(.cc-badge),
[data-seite="e-audio"] .article p img:not(.cc-badge),
.article .cover-reihe img {
  height: 30rem;
  width: auto;
  max-width: none;
  margin-inline-end: 0.75rem;
  margin-block-end: 0.75rem;
  vertical-align: top;
}

/* DIE BLAETTERLEISTE DER REIHEN

   article.njk benutzt die Bootstrap-Klassen .pagination, .page-item
   und .page-link - die gab es im alten System, im neuen Aufbau nicht
   mehr. Ohne Regeln bleibt eine nackte Aufzaehlung uebrig, mit
   Punkten untereinander. Auf gallery.htm sah das aus wie 1998.

   Waagerecht, ohne Aufzaehlungszeichen, mit Rahmen um die Ziffern -
   so wie es die Live-Seite zeigt. */
.serie-nav .pagination {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  list-style: none;
  margin: 0.75rem 0;
  padding: 0;
  align-items: center;
}

.serie-nav .page-item { margin: 0; }

.serie-nav .page-link {
  display: inline-block;
  min-width: 2.25rem;
  padding: 0.3rem 0.6rem;
  text-align: center;
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 3px;
  text-decoration: none;
  color: var(--color-gray-900, #1a1a1a);
  background: var(--hegel-paper, #fff);
}

.serie-nav a.page-link:hover,
.serie-nav a.page-link:focus {
  background: var(--hegel-chrome, #e8e0c8);
}

.serie-nav .page-item.active .page-link {
  font-weight: 700;
  background: var(--hegel-chrome, #e8e0c8);
}

.serie-nav .page-item.disabled .page-link {
  opacity: 0.45;
  border-style: dashed;
}

/* Die Auslassung zwischen den Ziffern ist keine Schaltflaeche. */
.serie-nav .page-item.gap .page-link,
.serie-nav .page-item .page-link.gap {
  border: none;
  background: none;
  min-width: 1rem;
}

/* KNOEPFE IN DEN BEITRAEGEN

   ml.md hat einen 'btn btn-primary' zur Diskussionsliste. Die Farbe
   kam aus Bootstrap und ist hier nicht definiert - dunkelblau auf
   dem lila Grund der Seite, kaum zu lesen.

   Die Klassen bleiben, damit die Quelltexte unveraendert bleiben
   koennen; nur ihr Aussehen kommt jetzt von hier. */
.article .btn,
.article a.btn {
  display: inline-block;
  padding: 0.45rem 1rem;
  border-radius: 4px;
  text-decoration: none;
  border: 1px solid var(--hegel-ink, #2c2c2c);
  background: var(--hegel-paper, #fff);
  color: var(--hegel-ink, #2c2c2c) !important;
}

.article .btn-primary,
.article a.btn-primary {
  background: var(--hegel-ink, #2c2c2c);
  color: var(--hegel-paper, #fff) !important;
  border-color: var(--hegel-ink, #2c2c2c);
}

.article .btn:hover,
.article .btn:focus {
  background: var(--hegel-chrome, #e8e0c8);
  color: var(--hegel-ink, #2c2c2c) !important;
}

/* ZENTRIERTE ABSAETZE

   In zitate.md steht jedes Zitat in <p align="center">. Das Attribut
   gibt es seit HTML5 nicht mehr, und der <p>-Block verhinderte
   ausserdem, dass markdown-it den Inhalt liest - Verweise und
   Kursivsatz blieben woertlich stehen.

   Die Vorverarbeitung macht daraus <div class="zentriert">. Die
   Ausrichtung steht damit hier, wo sie hingehoert. */
.article .zentriert,
.article .zentriert p {
  text-align: center;
}

.article .zentriert p {
  margin-block: 0.75rem;
}

/* DAS SUCHSPIEL

   Das Dreieck ist die Bedienflaeche, nicht eine Abbildung daneben.
   quiz.js bindet das SVG ein und faengt die Klicks auf den
   vorhandenen Flaechen ab - deshalb brauchen sie hier nur noch
   einen Zeiger und eine sichtbare Reaktion.

   Ohne die Rueckmeldung beim Ueberfahren waere nicht zu erkennen,
   dass man ins Dreieck klicken kann. Das war am alten Spiel die
   groesste Huerde. */
.quiz-dreieck {
  width: 100%;
  max-width: 34rem;
  height: auto;
  display: block;
  margin: 1rem auto;
}

.quiz-dreieck a.quiz-zug {
  cursor: pointer;
}

.quiz-dreieck a.quiz-zug polygon {
  transition: opacity 0.12s ease;
}

.quiz-dreieck a.quiz-zug:hover polygon,
.quiz-dreieck a.quiz-zug:focus polygon {
  opacity: 0.72;
}

.quiz-dreieck a.quiz-zug:focus {
  outline: 2px solid var(--hegel-ink, #2c2c2c);
  outline-offset: -2px;
}

/* Das Dreieck, in dem man gerade steht, ist kein Zug. */
.quiz-dreieck a.quiz-selbst {
  cursor: default;
  pointer-events: none;
}

.quiz-frage {
  font-size: 1.3rem;
  font-weight: 600;
  margin-block: 0.5rem 1rem;
}

.quiz-stand {
  font-variant-numeric: tabular-nums;
  color: var(--color-gray-700, #555);
  margin-block: 0.25rem;
}

/* Rueckfall, wenn kein SVG vorliegt - am untersten Ende eines
   Astes gibt es keines mehr. */
.quiz-wahl {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-block: 0.75rem;
}

.quiz-knopf,
.quiz-steuerung button {
  padding: 0.5rem 0.9rem;
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 4px;
  background: var(--hegel-paper, #fff);
  color: var(--hegel-ink, #2c2c2c);
  cursor: pointer;
  font: inherit;
}

.quiz-knopf:hover,
.quiz-steuerung button:hover {
  background: var(--hegel-chrome, #e8e0c8);
}

.quiz-meldung {
  min-height: 1.5rem;
  margin-block: 0.75rem;
}

.quiz-richtig { color: #1a6b2a; font-weight: 600; }
.quiz-falsch  { color: #8b2020; }

.quiz-erklaerung {
  color: var(--hegel-ink, #2c2c2c);
  font-weight: 400;
  margin-block-start: 0.5rem;
}

.quiz-steuerung {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-block-start: 1rem;
}

.quiz-zaehler {
  margin-inline-start: auto;
  font-variant-numeric: tabular-nums;
  color: var(--color-gray-700, #555);
}

/* DIE FRAGENLISTE

   Nach der Gebietswahl stehen die Fragen zum Aussuchen da, statt
   einer vorgegebenen Folge. Wer selbst waehlt, geht dem nach, was
   ihn gerade beschaeftigt.

   Schon Gespieltes bleibt sichtbar, aber zurueckgenommen - man soll
   sehen, was noch aussteht, ohne dass es verschwindet. */
.quiz-liste {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-block: 1rem;
}

.quiz-fragenknopf {
  padding: 0.45rem 0.85rem;
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 4px;
  background: var(--hegel-paper, #fff);
  color: var(--hegel-ink, #2c2c2c);
  cursor: pointer;
  font: inherit;
}

.quiz-fragenknopf:hover,
.quiz-fragenknopf:focus {
  background: var(--hegel-chrome, #e8e0c8);
}

.quiz-fragenknopf.quiz-schon {
  opacity: 0.5;
  border-style: dashed;
}

.quiz-modus {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-block: 0.75rem;
}

.quiz-modus button {
  padding: 0.4rem 0.9rem;
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 4px;
  background: var(--hegel-paper, #fff);
  color: var(--hegel-ink, #2c2c2c);
  cursor: pointer;
  font: inherit;
}

.quiz-modus button[aria-pressed="true"] {
  background: var(--hegel-ink, #2c2c2c);
  color: var(--hegel-paper, #fff);
  border-color: var(--hegel-ink, #2c2c2c);
}

/* Die Gebietswahl auf dem Startbild. */
.quiz-gebiete {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-block: 1rem;
}

.quiz-gebiet {
  padding: 0.4rem 0.8rem;
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 999px;
  background: var(--hegel-paper, #fff);
  cursor: pointer;
  font: inherit;
}

.quiz-gebiet[aria-pressed="true"] {
  background: var(--hegel-ink, #2c2c2c);
  color: var(--hegel-paper, #fff);
  border-color: var(--hegel-ink, #2c2c2c);
}

.quiz-gebiet .quiz-anzahl {
  opacity: 0.6;
  margin-inline-start: 0.35rem;
}

/* DER PFEIL AM BLATTDREIECK

   Am Ende eines Astes gibt es sonst nur den Weg zurueck. Der Pfeil
   fuehrt weiter in der Reihenfolge des Systems und traegt Code und
   Namen des Ziels - man soll sehen, wohin man geht, bevor man
   klickt.

   Oben, weil er dorthin gehoert: der naechste Begriff steht im
   System nicht unter dem jetzigen. */
.triangle-page .weiter {
  margin-block: 0 0.75rem;
  text-align: center;
}

.weiter-pfeil {
  display: inline-flex;
  align-items: baseline;
  gap: 0.45rem;
  padding: 0.35rem 0.9rem;
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 999px;
  background: var(--hegel-paper, #fff);
  text-decoration: none;
  font-size: 0.94rem;
}

.weiter-pfeil:hover,
.weiter-pfeil:focus {
  background: var(--hegel-chrome, #e8e0c8);
}

.weiter-zeichen {
  font-size: 1.1rem;
  line-height: 1;
}

.weiter-code {
  font-variant-numeric: tabular-nums;
  opacity: 0.7;
}

@media print {
  .triangle-page .weiter { display: none; }
}

/* DAS INHALTSVERZEICHNIS

   Es steht ueber dem Text und soll ihn nicht verdraengen: abgesetzt
   durch einen Rahmen, in kleinerer Schrift, ohne die Aufzaehlungs-
   punkte der uebrigen Listen.

   Beim Drucken faellt es weg - auf Papier blaettert man, statt zu
   springen, und die Sprungmarken sind dort wertlos. */
.article .inhalt {
  border: 1px solid var(--hegel-chrome, #c9c2a8);
  border-radius: 4px;
  background: var(--hegel-paper, #fff);
  padding: 0.75rem 1.25rem;
  margin-block: 1rem 1.75rem;
  font-size: 0.94rem;
  /* Nicht ueber die halbe Seite: ein Verzeichnis, das den Artikel
     verdeckt, hat seinen Zweck verfehlt. */
  max-width: 34rem;
}

.article .inhalt-titel {
  font-size: 1rem;
  font-weight: 700;
  margin: 0 0 0.5rem;
  border: none;
  padding: 0;
}

.article .inhalt ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.article .inhalt ul ul {
  margin-inline-start: 1.1rem;
  margin-block: 0.15rem;
}

.article .inhalt li {
  margin-block: 0.2rem;
}

.article .inhalt a {
  text-decoration: none;
}

.article .inhalt a:hover,
.article .inhalt a:focus {
  text-decoration: underline;
}

@media print {
  .article .inhalt { display: none; }
}

.article table,
.page-content table,
.triangle-extra table {
  width: 100%;
  border-collapse: collapse;
  margin-block: 1em;
  table-layout: auto;
}

.article table td,
.page-content table td,
.triangle-extra table td {
  padding: 0.4em 0.6em;
  vertical-align: top;
  /* Die Zeilenlaenge begrenzen wie beim uebrigen Text - nicht die
     Spalte. Bei mehrspaltigen Tabellen verteilt der Browser dann
     selbst. */
  max-width: 40em;
}

/* Einspaltige Tabellen sind gar keine: sie als Fliesstext setzen. */
.article table tr > td:only-child,
.page-content table tr > td:only-child,
.triangle-extra table tr > td:only-child {
  display: block;
  max-width: 40em;
  padding-inline: 0;
}

.article table th,
.page-content table th {
  padding: 0.4em 0.6em;
  text-align: start;
  border-bottom: 2px solid var(--hegel-chrome);
}

/* --- Ankerfilter ---------------------------------------------------- */
/* Zeigt an, wonach gefiltert wurde - eine gekuerzte Tabelle ohne
   Hinweis wirkt wie ein Fehler. */

.anchor-filter-note {
  margin: 0.5em 0;
  padding: 0.3em 0.7em;
  background: var(--hegel-chrome);
  color: var(--hegel-accent);
  border-radius: var(--rounded, 3px);
  display: inline-block;
  font-size: 0.9em;
}

.anchor-filter-reset {
  color: var(--hegel-accent-hover) !important;
  text-decoration: none;
  margin-inline-start: 0.5em;
  font-weight: 700;
}

/* --- Farbauszeichnungen in den Kommentaren -------------------------- */
/* Lutz Hansen und Martin Grimsmann zeichnen ihre Kommentare farbig
   aus. Die Farben tragen Bedeutung - sie unterscheiden Hegels
   Wortlaut von den Kommentarebenen -, deshalb bekommt jede zusaetzlich
   ein typografisches Merkmal: Farbe allein ist fuer Farbenblinde und
   auf Schwarzweiss-Ausdrucken keine Information.

   Die Toene sind gegenueber reinem Rot und Gruen abgedunkelt: auf dem
   cremefarbenen Lesegrund braucht es Kontrast, nicht Leuchtkraft. */

.article .redtext,
.triangle-extra .redtext {
  color: #a3161f;
  font-weight: 600;
}

.article .greentext,
.triangle-extra .greentext {
  color: #1d6b1d;
}

.article .bluetext,
.triangle-extra .bluetext {
  color: #1a4b8c;
  font-style: italic;
}

@media print {
  /* Auf Papier bleibt nur das typografische Merkmal - die meisten
     Ausdrucke sind schwarzweiss. */
  .redtext { color: #000; font-weight: 700; }
  .greentext { color: #333; }
  .bluetext { color: #000; font-style: italic; }
}
/* ======================================================================
   FILTERLEISTE IN EINER ZEILE
   ======================================================================

   Die Leiste der base-website setzt jedes Feld untereinander: auf
   einem breiten Bildschirm drei Zeilen fuer vier Felder, die
   nebeneinander passen. Uebernommen aus der Loesung von Reflexivity
   Press, wo Autor, Sprache, Jahr und Suchwort in einer Reihe stehen.

   'flex-wrap' laesst sie auf schmalen Geraeten umbrechen - dort
   werden es wieder mehrere Zeilen, aber erst dann.

   Das Suchfeld bekommt doppeltes Wachstum: es traegt den laengsten
   Inhalt, und ein Auswahlfeld mit 'Alle Jahre' braucht keine 350
   Pixel. */

.datatable-filters {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3, .75rem);
  align-items: stretch;
  margin-bottom: var(--space-4, 1rem);
}

.datatable-filters select,
.datatable-filters input[type="text"],
.datatable-filters input[type="search"] {
  flex: 1 1 150px;
  min-width: 120px;
  max-width: 250px;
}

.datatable-filters .datatable-search {
  flex: 2 1 200px;
  max-width: 350px;
}

.datatable-filters .datatable-page-size {
  flex: 0 0 auto;
  min-width: 80px;
  max-width: 120px;
}

/* Die Beschriftungen sind in den Feldern selbst ('Alle Jahre'),
   danebengesetzt waeren sie doppelt. */
.datatable-filters label { display: none; }

@media (max-width: 600px) {
  .datatable-filters { flex-direction: column; }
  .datatable-filters select,
  .datatable-filters input { max-width: none; }
}

/* SORTIERBARE SPALTEN ZEIGEN ES AN.
   Ohne Zeichen probiert man es aus oder laesst es bleiben. */
.datatable th[data-sortable="true"] { cursor: pointer; }
.datatable th[data-sortable="true"]::after {
  content: "⇅";
  margin-left: .4em;
  opacity: .35;
  font-size: .85em;
}
.datatable th[aria-sort="ascending"]::after { content: "▲"; opacity: .8; }
.datatable th[aria-sort="descending"]::after { content: "▼"; opacity: .8; }

/* ======================================================================
   ANGEHAENGTE ANGABEN BRAUCHEN EINEN ABSTAND
   ======================================================================

   'Das Wahre ist das GanzeG/H' - so stand es in der Seitenleiste, weil
   Titel und Autor als zwei <span> ohne Zwischenraum aufeinanderfolgen.
   Dasselbe in der Verweisliste zwischen Name und Beschreibung, in den
   Tabellen zwischen Titel und Untertitel.

   Ein Leerzeichen in der Vorlage waere die naheliegende Behebung und
   die schlechtere: es steht dann in zehn Vorlagen, und die elfte
   vergisst es. Hier steht es einmal.

   Gedankenstrich statt blossem Abstand, weil zwei Angaben ohne
   Trennzeichen wie eine aussehen - 'Das Wahre ist das Ganze G/H' liest
   sich als Titel mit Anhaengsel, 'Das Wahre ist das Ganze — G/H' als
   zwei Angaben.

   ::before statt eines Zeichens im Text: es laesst sich beim
   Markieren nicht mitkopieren, und wo die Angabe fehlt, faellt auch
   der Strich weg. */

/* Auch wenn der Name ein Verweis ist: seit die Autorennamen auf
   Autorenseiten fuehren, traegt mal das span die Klasse, mal der
   Verweis darin. Beide brauchen den Strich. */
.triangle-sidebar .author::before,
.triangle-sidebar a.author::before,
.triangle-articles .author::before,
.triangle-books .author::before,
.triangle-sidebar .note::before,
.triangle-sidebar .year::before,
/* NICHT '.subtitle' allgemein: in termini-table.njk ist das der
   Untertitel der SEITE, unter der Ueberschrift. Ein Gedankenstrich
   davor waere dort falsch. Nur der in der Seitenleiste ist eine
   angehaengte Angabe. */
.triangle-sidebar li .subtitle::before,
.triangle-sidebar .uebersetzer::before,
.datatable .untertitel::before,
.datatable .band::before,
.links-liste .beschreibung::before {
  content: " — ";
  color: var(--color-gray-400, #999);
}

/* In der Zeile eines Buches folgt der Band unmittelbar auf den Titel -
   'Band 2' ist keine zweite Angabe, sondern Teil derselben. Dort
   genuegt der Abstand. */
.datatable .band::before { content: " "; }

/* ======================================================================
   SAFARI: DER HAMBURGER-KNOPF UND DAS SPRACHMENUE
   ======================================================================

   ZWEI FEHLER, EINE URSACHENFAMILIE.

   1. DER KNOPF SITZT IN DER MITTE.

   .header-content ist ein Flex-Behaelter mit justify-content:
   space-between und drei Kindern: Logo, Suchfeld, Knopf. Der Knopf
   traegt 'order: 99' und sollte damit ans Ende ruecken.

   Safari wendet 'order' an, verteilt den Raum aber nach der
   Quelltextreihenfolge - der Knopf landet zwischen Logo und Suchfeld.
   Andere Browser rechnen erst um, dann verteilen sie.

   'margin-inline-start: auto' loest es unabhaengig von 'order': der
   Knopf schiebt allen freien Raum vor sich her und sitzt am Rand.
   Frueher stand hier ausdruecklich, das duerfe NICHT gesetzt werden,
   weil es den Raum aufsauge und Logo und Suchfeld zusammenruecken
   liess. Nachgesehen: '.header-search' hat in der base-website
   ueberhaupt keine Regel, kann also nicht wachsen, und
   '.site-branding' steht auf flex-shrink: 0. Der freie Raum liegt
   ohnehin nur zwischen Suchfeld und Knopf - genau dort, wo 'auto' ihn
   hinschiebt.

   Die alte Warnung galt einer aelteren Fassung des Kopfbereichs. Ich
   habe sie geprueft statt sie zu glauben; sonst haette sie die
   Behebung fuer immer verhindert.

   Bei dir=rtl kehrt der Browser die Hauptachse um, und
   margin-inline-start folgt der Schreibrichtung - deshalb 'inline'
   und nicht 'left'.

   2. DAS SPRACHMENUE KLAPPT NICHT AUF.

   Auf iOS loest ein Klick auf ein Element, das kein Knopf und kein
   Verweis ist, kein 'click' aus - es sei denn, das Element ist als
   anklickbar erkennbar. Die Flagge ist ein <span> in einem <button>;
   der Button traegt den Zuhoerer, die Flagge faengt die Beruehrung
   ab.

   'pointer-events: none' auf dem Inhalt gibt die Beruehrung an den
   Button weiter. Das ist die uebliche Behebung und aendert an
   anderen Browsern nichts.

   'touch-action: manipulation' nimmt die 300ms-Verzoegerung, die iOS
   vor dem Klick auf Doppeltipp wartet. Ohne sie wirkt der Knopf
   traege, auch wo er funktioniert. */

.header-content .mobile-menu-toggle {
  margin-inline-start: auto;
  touch-action: manipulation;
}

.language-switcher button > *,
.language-switcher .flag,
.mobile-menu-toggle > * {
  pointer-events: none;
}

.language-switcher button {
  touch-action: manipulation;
  cursor: pointer;
}

/* ======================================================================
   TABELLENFUSS UNTER DIE BLAETTERLEISTE
   ======================================================================

   datatable.js haengt die Blaetterleiste per appendChild an den
   Behaelter der Tabelle. Der Copyright-Vermerk steht im Markup
   davor - also erscheint er darueber, zwischen Tabelle und
   Blaetterleiste. Wer blaettert, liest bei jedem Klick einen
   Rechtevermerk.

   Die Reihenfolge im Markup zu aendern hilft nicht: appendChild
   setzt die Leiste immer ans Ende. 'order' loest es, ohne dass das
   Skript etwas wissen muss.

   Und kleiner: der Vermerk ist eine Fussnote, kein Text. In
   derselben Groesse wie die Tabelle beansprucht er eine
   Aufmerksamkeit, die ihm nicht zusteht. */

/* NUR DER BEHAELTER DER TABELLENSEITE.
   Erst stand hier 'article > .container' - das haette JEDE Seite auf
   Flex umgestellt, auch die Artikel, und dort ordnet der normale
   Fluss richtig. Eine Layoutumstellung fuer alle, um zwei Elemente
   zu tauschen, waere ein schlechter Tausch.

   'has()' trifft genau die Behaelter, in denen eine Datentabelle
   steht - und nur dort haengt datatable.js etwas an. */
.container:has(> table.datatable),
.container:has(> .datatable-wrapper) {
  display: flex;
  flex-direction: column;
}

/* Die Reihenfolge am Fuss, wie im Artikel:
   Blaetterleiste, Teilen, Copyright. Die obere Leiste bleibt oben -
   sie steht im Markup vor der Tabelle und braucht keine Ordnung. */
.container:has(> table.datatable) > .datatable-pagination,
.container:has(> .datatable-wrapper) > .datatable-pagination { order: 90; }
.container:has(> table.datatable) > .page-share,
.container:has(> .datatable-wrapper) > .page-share { order: 95; }
.container:has(> table.datatable) > .table-footer,
.container:has(> .datatable-wrapper) > .table-footer { order: 99; }
/* DIE OBERE LEISTE BLEIBT OBEN.
 *
 * Die Regel darueber gibt jeder '.datatable-pagination' im
 * Container 'order: 90'. Ein einfacher Klassenwaehler kommt
 * dagegen nicht an - er hat geringere Spezifitaet, und beide
 * Leisten landen unten.
 *
 * Also derselbe zusammengesetzte Waehler, mit kleinerer
 * Ordnungszahl. */
.container:has(> table.datatable) > .datatable-pagination-oben,
.container:has(> .datatable-wrapper) > .datatable-pagination-oben,
.datatable-pagination-oben { order: -1; }

.table-copyright {
  font-size: 0.8em;
  color: var(--color-gray-600, #666);
  margin-top: var(--space-3, .75rem);
}

/* Die Auslassungspunkte der Blaetterleiste sind keine Schaltflaeche -
   sie sollen auch nicht wie eine aussehen. */
.pagination-luecke {
  padding: 0 .4em;
  color: var(--color-gray-500, #888);
  user-select: none;
}

/* Sprachkennzeichnung in der Seitenleiste: kleiner als der Titel,
   damit sie ihn nicht ueberlagert, aber lesbar. Kein Gedankenstrich
   davor - die Fahne trennt schon. */
.triangle-sidebar .fremdsprache {
  font-size: 0.8em;
  margin-inline-start: .4em;
  white-space: nowrap;
  opacity: .85;
}

/* ======================================================================
   VERWANDTE ARTIKEL
   ======================================================================
   Das Gegenstueck zum 'Siehe auch' der Dreiecke. Zurueckhaltender als
   die Serienleiste: die fuehrt den Leser weiter, dies bietet nur an. */

.verwandte-artikel {
  margin-block-start: var(--space-5, 1.5rem);
  padding-block-start: var(--space-3, .75rem);
  border-top: 1px solid var(--color-gray-300, #ddd);
}

.verwandte-artikel h2 {
  font-size: 1rem;
  margin-block-end: var(--space-2, .5rem);
}

.verwandte-artikel ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

.verwandte-artikel li {
  margin-block-end: var(--space-1, .25rem);
}

/* Das Zeichen hinter dem Titel, nicht davor: es sagt etwas ueber die
   Beziehung, und die versteht man erst, wenn man weiss, wohin es
   geht. */
.verweisart {
  display: inline-block;
  vertical-align: -.2em;
  margin-inline-start: .35em;
  color: var(--color-gray-600, #666);
}

/* ======================================================================
   AUTORENBILDER IN EINHEITSGROESSE
   ======================================================================
   Die Bilder kommen aus verschiedenen Quellen und haben verschiedene
   Seitenverhaeltnisse - Portraits, Ausschnitte aus Gruppenbildern,
   Stiche des 19. Jahrhunderts. Ohne Vorgabe springt die Ueberschrift
   je nach Bild an eine andere Stelle.

   'object-fit: cover' schneidet zu, statt zu verzerren, und
   'object-position: top' behaelt den Kopf, wenn hochkant
   beschnitten wird. */

.autor-foto {
  width: 160px;
  height: 160px;
  object-fit: cover;
  object-position: center top;
  border-radius: 3px;
  background: var(--color-gray-100, #f4f4f2);
  flex-shrink: 0;
}

@media (max-width: 480px) {
  .autor-foto { width: 110px; height: 110px; }
}

/* ======================================================================
   TAGWOLKE UND TAGSEITEN
   ======================================================================
   Alphabetisch geordnet, Groesse nach Haeufigkeit. Fuenf Stufen, nicht
   stufenlos: bei stufenloser Groesse sieht man Unterschiede von einem
   Eintrag, die nichts bedeuten. */

.tag-wolke {
  display: flex;
  flex-wrap: wrap;
  gap: .5em .8em;
  align-items: baseline;
  margin-block: var(--space-4, 1rem);
}

.tag-wolke .tag {
  text-decoration: none;
  border-bottom: 1px solid transparent;
  white-space: nowrap;
}

.tag-wolke .tag:hover { border-bottom-color: currentColor; }

.tag-1 { font-size: .95rem; }
.tag-2 { font-size: 1.1rem; }
.tag-3 { font-size: 1.3rem; }
.tag-4 { font-size: 1.6rem; }
.tag-5 { font-size: 2rem; }

/* Die Zahl klein und blass: sie sagt, wieviel einen erwartet, soll
   aber den Namen nicht ueberlagern. */
.tag-anzahl {
  font-size: .7em;
  vertical-align: super;
  margin-inline-start: .2em;
  color: var(--color-gray-500, #888);
}

.tag-zurueck { margin-block-end: var(--space-3, .75rem); }

.tag-personen ul,
.tag-artikel ul { list-style: none; padding: 0; }

.tag-personen li,
.tag-artikel li { margin-block-end: var(--space-1, .25rem); }

.tag-personen .lebensdaten::before {
  content: " — ";
  color: var(--color-gray-400, #999);
}

/* ======================================================================
   ZWEISTUFIGE BLAETTERLEISTE
   ======================================================================
   Bei 105 Abschnitten sagt eine einzige Kette nicht, wo man ist. Zwei
   Ebenen: oben das Kapitel, unten der Abschnitt darin.

   Die Marke links ('Kapitel', 'Abschnitt') macht ohne Zaehlen
   deutlich, welche Ebene gemeint ist - bei zwei Reihen von Zahlen
   waere das sonst zu raten. */

.blaetter-zwei {
  margin-block: var(--space-4, 1rem);
  font-size: .9rem;
}

.blaetter-stufe {
  display: flex;
  align-items: center;
  gap: .4em;
  flex-wrap: wrap;
  margin-block-end: .3rem;
}

.blaetter-marke {
  min-width: 5.5em;
  color: var(--color-gray-500, #888);
  font-size: .85em;
}

.blaetter-stufe ol {
  display: flex;
  gap: .25em;
  list-style: none;
  margin: 0;
  padding: 0;
  flex-wrap: wrap;
}

.blaetter-stufe li a,
.blaetter-stufe li span {
  display: inline-block;
  min-width: 1.9em;
  padding: .15em .35em;
  text-align: center;
  border: 1px solid var(--color-gray-300, #ccc);
  border-radius: 2px;
  text-decoration: none;
}

/* Der laufende Abschnitt: gefuellt statt umrandet. Ein Rahmen allein
   unterscheidet sich zu wenig, wenn zwoelf Kaestchen nebeneinander
   stehen. */
.blaetter-stufe li.hier span {
  background: var(--color-gray-200, #e4e4e2);
  border-color: var(--color-gray-500, #888);
  font-weight: 600;
}

.blaetter-stufe li.punkte {
  border: 0;
  padding-inline: .2em;
  color: var(--color-gray-400, #999);
}

.blaetter-pfeil {
  padding: .15em .4em;
  text-decoration: none;
}

.blaetter-pfeil.aus { color: var(--color-gray-300, #ccc); }

/* Die Kapitelebene etwas blasser: sie ist der Rahmen, nicht der Ort. */
.blaetter-kapitel { opacity: .85; }

.blaetter-wo {
  margin-block-start: .4rem;
  color: var(--color-gray-500, #888);
  font-size: .85em;
}

.blaetter-wo .kapiteltitel { font-style: italic; }

@media (max-width: 480px) {
  .blaetter-marke { min-width: 0; }
  .blaetter-wo .kapiteltitel { display: none; }
}

/* ======================================================================
   GLOSSAR
   ======================================================================
   Das Zeichen am Verweis ist ein hochgestelltes G, kein Emoji: Emojis
   sehen auf jedem Geraet anders aus und lassen sich nicht einfaerben. */

.glossar-verweis { text-decoration: none; border-bottom: 1px dotted; }

.glossar-zeichen {
  font-size: .65em;
  vertical-align: super;
  margin-inline-start: .1em;
  color: var(--color-gray-500, #888);
  font-weight: 600;
}

.glossar-typ { color: var(--color-gray-500, #888); font-size: .9em; }

.glossar-feld { margin-block-end: var(--space-3, .75rem); }

.glossar-feld h2 {
  font-size: 1rem;
  margin-block-end: .2rem;
  color: var(--color-gray-600, #666);
}

/* 'Nicht gemeint' abgesetzt: bei Hegel ist die Abwehr einer
   naheliegenden Fehldeutung oft wichtiger als die Herleitung. */
.glossar-nicht {
  border-inline-start: 3px solid var(--color-gray-300, #ccc);
  padding-inline-start: .8em;
}

.glossar-abc {
  display: flex;
  flex-wrap: wrap;
  gap: .5em;
  margin-block: var(--space-3, .75rem);
  font-weight: 600;
}

.glossar-liste dt.glossar-buchstabe {
  margin-block-start: var(--space-3, .75rem);
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--color-gray-500, #888);
}

.glossar-liste dd { margin-inline-start: 1em; }

.glossar-bereich {
  font-size: .8em;
  color: var(--color-gray-500, #888);
}

.glossar-bereich::before { content: " — "; }

.glossar-quelle {
  margin-block-start: var(--space-4, 1rem);
  font-size: .85em;
  color: var(--color-gray-500, #888);
}

/* Hinweis auf ein fremdes Angebot: abgesetzt, aber nicht laut. Er
   steht am Anfang, weil er nach den Preisen nichts mehr nuetzt. */
.hinweis-fremd {
  border-inline-start: 3px solid var(--color-gray-400, #999);
  padding: .5em .8em;
  margin-block-end: var(--space-3, .75rem);
  background: var(--color-gray-100, #f4f4f2);
  font-size: .9em;
}

/* Verweise zwischen den Werkstattberichten: unaufdringlich, weil sie
   den Text nicht fortsetzen, sondern nebenherlaufen. */
.werkstatt-verwandt {
  margin-block-start: var(--space-4, 1rem);
  padding-block-start: var(--space-2, .5rem);
  border-block-start: 1px solid var(--color-gray-300, #ccc);
  font-size: .9em;
}

.werkstatt-verwandt h3 {
  font-size: .95rem;
  margin-block-end: .2rem;
  color: var(--color-gray-600, #666);
}

.werkstatt-verwandt ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .3em 1.2em;
}

/* Der Zweck der Werkstattberichte: abgesetzt, weil er auf allen fünf
   gleich steht und der eigentliche Text danach beginnt. */
.werkstatt-zweck {
  background: var(--color-gray-100, #f4f4f2);
  border-inline-start: 3px solid var(--color-gray-400, #999);
  padding: .6em .9em;
  margin-block-end: var(--space-3, .75rem);
  font-size: .95em;
}

/* ---- Aufklappbare Menuepunkte ------------------------------------
 *
 * Sie sind <button>, nicht <a>: ein Hauptpunkt mit Untermenue hat
 * kein eigenes Ziel, und ein leeres href fuehrt auf dieselbe Seite
 * zurueck.
 *
 * ER MUSS AUSSEHEN WIE SEIN NACHBAR.
 *
 * Mein erster Versuch nahm 'padding: inherit' und 'font: inherit' -
 * aber ein Knopf erbt vom <li>, nicht vom <a> daneben. Die Folge
 * waren ungleiche Abstaende im Hauptmenue.
 *
 * Und ein Knopf hat beim Ueberfahren einen hellen Grund, solange
 * man ihn nicht abschaltet: gelbe Schrift auf Weiss.
 */
.nav-link,
.nav-aufklapp {
  font-family: inherit;
  font-size: 1rem;
  font-weight: normal;
  line-height: inherit;
  letter-spacing: inherit;
}

.nav-aufklapp {
  background: transparent;
  border: 0;
  margin: 0;
  color: var(--hegel-accent);
  cursor: pointer;
  /* Dieselben Abstaende wie beim Verweis daneben. */
  padding: 0.35rem 0.6rem;
  display: inline-block;
}

.nav-aufklapp:hover,
.nav-aufklapp:focus-visible,
.nav-link:hover,
.nav-link:focus-visible {
  /* Kein heller Grund: die Browservorgabe fuer Knoepfe wuerde
     Gelb auf Weiss ergeben. */
  background: transparent;
  color: var(--hegel-accent-hover);
}

/* ---- Die Fussleiste ----------------------------------------------
 *
 * Eine Farbe, dieselbe wie das Hauptmenue. Zwei Zeilen, beide
 * zentriert: der Pfeil nach oben, darunter die Rechtsseiten.
 *
 * Was frueher hier stand - Copyright, Lizenz, Rechtevorbehalt -,
 * gehoert unter den Gegenstand, den es schuetzt.
 */
.site-footer {
  background: var(--hegel-chrome);
  color: var(--hegel-accent);
  text-align: center;
  padding: 1.2rem 0;
}

.site-footer .footer-top,
.site-footer .footer-nav {
  text-align: center;
  margin: 0.3rem 0;
}

.site-footer a {
  color: var(--hegel-accent);
  margin: 0 0.6rem;
}

.site-footer a:hover,
.site-footer a:focus-visible {
  color: var(--hegel-accent-hover);
}

/* ---- Copyright der Dreiecksseite ---------------------------------
 *
 * Ueber die ganze Breite, unter Dreieck UND Seitenleiste - nicht
 * neben dem einen und wiederholt in der anderen.
 *
 * Drei Zeilen, alle zentriert: der Vermerk, die Lizenz, ihr
 * Abzeichen. Was er schuetzt, steht darueber; der
 * Erlaeuterungstext darunter hat seinen eigenen.
 */
.triangle-footer {
  clear: both;
  width: 100%;
  text-align: center;
  margin: 2rem 0 1rem;
  padding-top: 1rem;
  border-top: 1px solid var(--hegel-chrome-hover);
}

.triangle-footer p {
  margin: 0.3rem 0;
  text-align: center;
}

.triangle-copyright {
  font-size: 0.9rem;
}

.triangle-lizenz,
.triangle-abzeichen {
  font-size: 0.85rem;
}

/* Der Erlaeuterungstext hat seinen eigenen Vermerk - ebenso
   zentriert, damit beide als dasselbe erkennbar sind. */
.extra-copyright,
.extra-lizenz {
  text-align: center;
  margin: 0.3rem 0;
  font-size: 0.9rem;
}

/* ---- Editorische Vorbemerkung ------------------------------------
 *
 * Grau hinterlegt, damit auf einen Blick zu sehen ist, wo der
 * Einschub der Redaktion endet und der Text des Autors beginnt.
 *
 * Auf audio.htm ist der Text von Grimsmann und Hansen, die
 * Vorbemerkung von Kai Froeb - ohne Absetzung liest sich beides
 * wie eine Stimme.
 */
.vorbemerkung {
  background: var(--color-bg-subtle, #f0efe9);
  border-left: 3px solid var(--hegel-chrome);
  padding: 0.8rem 1.2rem;
  margin: 1.2rem 0 1.6rem;
  font-size: 0.95rem;
}

.vorbemerkung-marke {
  font-variant: small-caps;
  letter-spacing: 0.04em;
  margin: 0 0 0.4rem;
  opacity: 0.75;
}

.vorbemerkung p:last-child {
  margin-bottom: 0;
}

/* ---- Das Hamburger-Menue -----------------------------------------
 *
 * Auf dem Telefon klappt das ganze Menue in eine Liste. Die Regel
 * fuer '.submenu' setzt dort einen hellen Grund - richtig fuer den
 * Kasten am Schreibtisch, falsch fuer die Liste: die Schrift behaelt
 * das Gelb der Kopfleiste, und Gelb auf Hellgelb liest niemand.
 *
 * Ausserdem behielten Punkte OHNE Untermenue - FAQ, PDF - die
 * Vorgabe des Browsers: schwarz und linksbuendig, waehrend die
 * uebrigen gelb und rechtsbuendig standen. Derselbe Fall wie beim
 * aufklappbaren Knopf: ein Punkt ohne Regel.
 */
@media (max-width: 900px) {
  .main-nav .submenu,
  .main-nav .nav-submenu {
    /* Kein eigener Kasten: die Liste steht im Menuegrund. */
    background: transparent;
    border: 0;
    box-shadow: none;
  }

  .main-nav .submenu a,
  .main-nav .submenu-link,
  .main-nav .nav-submenu a {
    color: var(--hegel-accent) !important;
  }

  /* ALLE Punkte gleich, ob mit Untermenue oder ohne. */
  .main-nav .nav-link,
  .main-nav .nav-aufklapp,
  .main-nav .submenu a,
  .main-nav .submenu-link {
    display: block;
    width: 100%;
    text-align: left;
    color: var(--hegel-accent);
  }

  .main-nav .nav-link:hover,
  .main-nav .nav-aufklapp:hover,
  .main-nav .submenu a:hover {
    color: var(--hegel-accent-hover);
    background: transparent;
  }
}

/* ---- Marke fuer den experimentellen Zweig ------------------------
 *
 * 'Jenseits Hegels' ist von uns geordnet. Die Marke sagt es und
 * fuehrt dorthin, wo steht, wie es zustande kam.
 *
 * Sichtbar, aber nicht aufdringlich: sie soll nicht den Eindruck
 * erwecken, hier stimme etwas nicht - sie sagt, woher die Ordnung
 * kommt.
 */
.versuch-marke {
  text-align: right;
  font-size: 0.85rem;
  margin: 0.6rem 0 0;
  opacity: 0.8;
}

.versuch-marke a {
  border: 1px solid var(--hegel-chrome-hover);
  border-radius: 1rem;
  padding: 0.15rem 0.7rem;
  text-decoration: none;
}

.versuch-marke a::before {
  content: "\26A0\FE0F";
  margin-right: 0.35rem;
}

/* ---- 'Was ist neu?' auf der Startseite ---------------------------
 *
 * Ein Kreis neben dem Nullerdreieck. Das Dreieck ist die Figur des
 * Systems, der Kreis die Figur dessen, was Hegel am Ende der Logik
 * darueber sagt: ein Kreis von Kreisen.
 *
 * Er sitzt oben rechts, wo nichts anderes steht, und dreht sich
 * leicht - genug, um aufzufallen, nicht genug, um zu stoeren.
 *
 * Gesetzt August 2026. Kann weg, sobald die Neuigkeiten keine mehr
 * sind: diesen Block und den Abschnitt in triangle.njk loeschen.
 */
.was-neu {
  /* UNTER DIE KOPFLEISTE, LINKS VOM HILFEZEICHEN.
   *
   * Vorher stand er bei 'top: 1rem' und wurde zur Haelfte von der
   * Menuleiste verdeckt. Jetzt beginnt er, wo das Fragezeichen
   * beginnt, und laesst rechts ein Wort Abstand. */
  /* NICHT UEBER DAS FRAGEZEICHEN.
   *
   * 'right: 5.5rem' war zu knapp - der Kreis lag darauf. Ein
   * Wort Abstand heisst hier: die Breite des Zeichens plus
   * seinen Rand, also gut das Doppelte. */
  position: absolute;
  top: 4.5rem;
  right: 9rem;
  z-index: 1;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 6.5rem;
  height: 6.5rem;
  border-radius: 50%;
  background: var(--hegel-accent);
  color: var(--hegel-ground);
  text-align: center;
  font-size: 0.95rem;
  line-height: 1.2;
  text-decoration: none;
  transform: rotate(-8deg);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  transition: transform 0.2s ease;
}

.was-neu:hover,
.was-neu:focus-visible {
  transform: rotate(0deg) scale(1.05);
  color: var(--hegel-ground);
}

.was-neu-text {
  padding: 0 0.5rem;
  font-weight: 600;
}

/* Auf dem Telefon kleiner und im Fluss, nicht ueber dem Dreieck. */
@media (max-width: 700px) {
  .was-neu {
    position: static;
    width: auto;
    height: auto;
    border-radius: 1rem;
    padding: 0.4rem 1rem;
    margin: 0 auto 1rem;
    transform: none;
  }
}

/* ---- Copyright und Fussleiste, zusammengelegt --------------------
 *
 * Kai: 'Der doppelte Copyright-Text ist verwirrend und nimmt
 * zuviel Screen Estate weg... Die Fusszeile ist viel zu breit, sie
 * darf maximal so hoch sein wie die Menuzeile.'
 *
 * Beides zusammen: der Vermerk zentriert und klein, die Leiste in
 * einer Zeile und in der Farbe der Kopfleiste.
 */
.triangle-footer,
.extra-copyright,
.extra-lizenz {
  text-align: center;
  font-size: 0.8rem;
  line-height: 1.4;
  margin: 0.2rem 0;
}

.triangle-footer {
  margin: 1.2rem 0 0.4rem;
  padding-top: 0.6rem;
  border-top: 1px solid var(--hegel-chrome-hover);
}

/* KEINE LEERE ZONE DARUNTER.
 *
 * Zwischen Copyright und Fussleiste stand ein dunkler Streifen
 * ohne Inhalt. Er kam aus einem Abstand, den niemand gesetzt
 * hatte - dem Vorgabewert des <main>. */
.triangle-page > :last-child,
main > :last-child {
  margin-bottom: 0;
}

/* DIE FUSSLEISTE: EINE ZEILE, WIE DIE MENULEISTE. */
.site-footer,
footer.site-footer {
  background: var(--hegel-chrome);
  padding: 0.35rem 1rem;
  min-height: 0;
}

.site-footer p,
.site-footer ul,
.site-footer li {
  margin: 0;
  padding: 0;
  display: inline;
  font-size: 0.9rem;
  line-height: 1.6;
}

.site-footer a {
  font-size: 0.9rem;
  padding: 0 0.4rem;
}

/* Die Schaltflaeche nach oben: sichtbar, aber nicht laut. */
.nach-oben {
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
  opacity: 0.75;
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.nach-oben:hover,
.nach-oben:focus-visible {
  opacity: 1;
  transform: translateY(-2px);
}

/* ---- Die Fussleiste, schmaler und ohne Vorzone ------------------
 *
 * Kai: 'die Fusszeile kann am oberen und unteren Rand noch etwa
 * 10-12 Pixel schmaler werden' und 'die Zeile mit dem
 * tiefdunkelblauen Ton ueber der helllila Fusszeile ist immer
 * noch da, muss weg'.
 *
 * Der dunkle Streifen kommt nicht von der Fussleiste, sondern von
 * dem, was DAVOR steht: <main> hat einen unteren Abstand, und der
 * Seitenhintergrund scheint durch.
 */
body > main,
main.site-main,
.site-main {
  margin-bottom: 0;
  padding-bottom: 0;
}

.site-footer,
footer.site-footer {
  padding: 0.15rem 1rem;
  margin-top: 0;
  border-top: 0;
}

.site-footer p,
.site-footer ul,
.site-footer li,
.site-footer a {
  line-height: 1.4;
}

/* ---- Nachbesserungen vom 19. August ------------------------------ */

/* DER KREIS: kleiner und links vom Fragezeichen.
 *
 * Auf dem Bildschirmfoto ueberdeckt er die Ueberschrift. Kleiner
 * und weiter links loest beides. */
.was-neu {
  width: 6.5rem;
  height: 6.5rem;
  font-size: 0.85rem;
  top: 3.2rem;
  right: 7.5rem;
}

/* DIE FUSSLEISTE: so hoch wie die Kopfzeile, nicht hoeher.
 *
 * Der Umbruch machte sie hoch: drei Verweise nebeneinander
 * brauchen keine drei Zeilen. */
.site-footer,
footer.site-footer {
  padding: 0 1rem;
  min-height: 2.6rem;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.site-footer > * {
  margin: 0;
}

/* DAS HAMBURGER-MENUE: gleiche Farbe fuer alle Punkte.
 *
 * Kai: 'schon wieder gelb auf beige, mit der Ausnahme in
 * Ausrichtung und Farbe von FAQ und PDF (die beiden ohne
 * Untermenue)'.
 *
 * Die Ursache: Punkte MIT Untermenue sind <button>, Punkte OHNE
 * sind <a>. Beide brauchen dieselbe Farbe und Ausrichtung. */
.mobile-nav a,
.mobile-nav button,
.mobile-menu a,
.mobile-menu button,
nav[aria-label] .menu-item > a,
nav[aria-label] .menu-item > button {
  color: var(--hegel-ink);
  text-align: start;
  font: inherit;
  background: none;
  border: 0;
  width: 100%;
  display: block;
  padding: 0.6rem 1rem;
}

/* DAS COPYRIGHT: ueber die ganze Breite, in kleinerer Schrift.
 *
 * Auf dem Bildschirmfoto steht es NEBEN den Teilen-Schaltflaechen,
 * weil beide in einem Flex-Kasten liegen. Beide sollen die volle
 * Breite haben, untereinander. */
.triangle-footer {
  width: 100%;
  flex-basis: 100%;
  clear: both;
}

.triangle-footer,
.triangle-copyright,
.extra-copyright,
.triangle-abzeichen {
  text-align: center;
  font-size: 0.8rem;
  line-height: 1.45;
}

.teilen,
.share-buttons,
.social-sharing {
  width: 100%;
  flex-basis: 100%;
  justify-content: center;
  margin-top: 0.6rem;
}

/* DIE SPALTENTITEL IN EINER REIHE.
 *
 * Kai: die Titel und Sortierknoepfe stehen nicht auf gleicher
 * Hoehe. Der Grund: lange Titel brechen um, und ohne
 * vertical-align richtet der Browser sie an der Grundlinie aus -
 * bei zwei Zeilen sitzt der Knopf dann tiefer.
 */
.datatable thead th {
  vertical-align: top;
  white-space: nowrap;
}

.datatable thead th > * {
  vertical-align: middle;
}

.datatable thead th button,
.datatable thead th .sort-indicator {
  vertical-align: middle;
  margin-inline-start: 0.3rem;
}

/* ---- Copyright und Teilen untereinander --------------------------
 *
 * Beide sassen nebeneinander, weil ihr Elternkasten sie in eine
 * Zeile legt. 'width: 100%' allein genuegt nicht: in einem Grid
 * teilen sie sich die Spalten, in einem Flex-Kasten passen sie
 * nebeneinander, solange Platz ist.
 *
 * Beide Angaben zusammen erzwingen den Umbruch, gleich welcher
 * Kasten es ist.
 */
.page-share,
.triangle-footer {
  grid-column: 1 / -1;
  flex-basis: 100%;
  width: 100%;
  max-width: 100%;
  float: none;
}

/* Erst teilen, dann der Vermerk: das Copyright gehoert ans Ende. */
.page-share { order: 90; }
.triangle-footer { order: 95; }

.page-share ul,
.page-share .teilen {
  justify-content: center;
  flex-wrap: wrap;
}

/* ---- Das aufgeklappte Hauptmenue ---------------------------------
 *
 * ALLE Regeln hier gelten NUR im aufgeklappten Zustand.
 *
 * Meine erste Fassung sprach '.nav-menu .nav-link' ohne
 * Bedingung an - und traf damit auch die Kopfleiste, wo
 * dieselbe Liste waagerecht und gelb steht.
 */

/* DIE FARBE. Im aufgeklappten Menue steht die Schrift auf hellem
 * Grund; das Gelb der Kopfleiste ist dort unlesbar. */
.main-navigation.is-open .nav-link,
.main-navigation.is-open .nav-aufklapp,
.main-navigation.is-open .nav-item > a,
.main-navigation.is-open .nav-item > button,
.main-navigation[data-open] .nav-link,
.main-navigation.active .nav-link,
body.nav-open .main-navigation .nav-link,
body.menu-open .main-navigation .nav-link {
  color: var(--hegel-ink, #1a1a1a);
}

/* KEINE TRENNSTRICHE im aufgeklappten Menue. */
.main-navigation.is-open .nav-item,
.main-navigation[data-open] .nav-item,
.main-navigation.active .nav-item,
body.nav-open .main-navigation .nav-item,
body.menu-open .main-navigation .nav-item {
  border-top: 0;
  border-bottom: 0;
}

/* ENGER GESETZT - neun Punkte plus Untermenues. */
.main-navigation.is-open .nav-link,
.main-navigation[data-open] .nav-link,
body.nav-open .main-navigation .nav-link,
body.menu-open .main-navigation .nav-link {
  padding-block: 0.45rem;
  line-height: 1.3;
}

/* DAS HAMBURGER-ZEICHEN.
 * Ueblich sind 1,5 bis 1,75rem; unseres war deutlich groesser. */
.hamburger-icon {
  font-size: 1.6rem;
  line-height: 1;
}

.mobile-menu-toggle {
  padding: 0.3rem 0.5rem;
  line-height: 1;
}

/* DIE UNTERMENUES EINGEKLAPPT, bis der Knopf sie oeffnet -
 * aber nur im aufgeklappten Hauptmenue. In der Kopfleiste
 * oeffnen sie beim Ueberfahren. */
.main-navigation.is-open .nav-item .submenu,
.main-navigation[data-open] .nav-item .submenu,
body.nav-open .main-navigation .submenu,
body.menu-open .main-navigation .submenu {
  display: none;
}

.main-navigation.is-open [aria-expanded="true"] + .submenu,
.main-navigation[data-open] [aria-expanded="true"] + .submenu,
body.nav-open [aria-expanded="true"] + .submenu,
body.menu-open [aria-expanded="true"] + .submenu {
  display: block;
}

/* ---- iPhone: vier Kleinigkeiten ---------------------------------- */

/* 1. DAS FRAGEZEICHEN ist weiter oben geaendert (Zeile 617).
 *    Dort steht '!important', und eine zweite Regel hier haette
 *    nichts bewirkt - genau das war der Fehler. */

/* 2. DIE REITER IN EINER REIHE.
 *
 *    'flex-wrap: wrap' liess den letzten Reiter umbrechen. Die
 *    frueher gewollte Aufteilung: die Ebenen-Reiter teilen sich
 *    den Platz gleichmaessig, der letzte - 'Uebersicht' - nimmt
 *    nur, was sein Text braucht.
 *
 *    'flex: 0 0 auto' fuer den letzten, 'flex: 1 1 0' fuer die
 *    uebrigen, und kein Umbruch. */
.tab-buttons {
  flex-wrap: nowrap;
}

.tab-button {
  flex: 1 1 0;
  min-width: 0;          /* darf schrumpfen */
}

.tab-button:last-child {
  flex: 0 0 auto;        /* so breit wie sein Text */
  min-width: max-content;
}

/* Auf sehr schmalen Geraeten lieber kleinere Schrift als
 * Umbruch. */
@media (max-width: 30rem) {
  .tab-button {
    font-size: 0.9rem;
    padding-inline: 0.5rem;
  }
}

/* 3. DAS HAMBURGER-ZEICHEN.
 *
 *    ZUGEKLAPPT weiss: es sitzt auf dem dunklen Grund der
 *    Kopfleiste, und Weiss ist dort der staerkste Kontrast -
 *    Gelb konkurriert mit den Menuepunkten.
 *
 *    AUFGEKLAPPT dunkel: dann liegt darunter das helle Beige des
 *    Menues, und Weiss auf Beige ist nicht zu sehen.
 *
 *    Den Zustand traegt der Knopf selbst - 'hamburger.js' setzt
 *    'aria-expanded' auf ihm. Das ist verlaesslicher als eine
 *    Klasse am Menue: das Merkmal gehoert zum Knopf und wird von
 *    der Bedienungshilfe ohnehin gebraucht. */
.hamburger-icon,
.mobile-menu-toggle {
  color: #fff;
}

/* Das Zeichen bleibt weiss, auch aufgeklappt: der Grund ist
 * jetzt dunkel wie die Kopfleiste (siehe unten). */

/* 4. DIE VERSUCHSMARKE ALS KNOPF.
 *
 *    Sie war ein umrandeter Text und brach auf dem iPhone in die
 *    zweite Zeile, wobei die Umrandung mitwanderte. Als Knopf
 *    bleibt sie zusammen. */
.versuch-marke {
  margin: 0.5rem 0 1rem;
  text-align: center;
}

.versuch-marke a {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.9rem;
  border-radius: 999px;
  background: var(--hegel-chrome);
  color: var(--hegel-accent);
  text-decoration: none;
  font-size: 0.9rem;
  line-height: 1.25;
  /* Kein Umbruch mitten im Text - lieber schmaler werden. */
  max-width: 100%;
}

.versuch-marke a:hover,
.versuch-marke a:focus-visible {
  background: var(--hegel-chrome-hover);
  color: var(--hegel-accent-hover);
}

/* ---- Das aufgeklappte Menue: ein Stueck der Kopfleiste --------- */

/* DER GRUND WIE OBEN.
 *
 * Kai: „Das wuerde mehr signalisieren, dass das alles zum Menue
 * dazugehoert und es farblich von dem Text im Hintergrund
 * absetzen."
 *
 * Damit ist das aufgeklappte Menue keine Flaeche eigener Art
 * mehr, sondern die Kopfleiste, die sich nach unten fortsetzt. */
.main-navigation.is-open,
.main-navigation[data-open],
body.menu-open .main-navigation,
body.nav-open .main-navigation {
  background: var(--hegel-chrome);
}

.main-navigation.is-open .nav-link,
.main-navigation.is-open .nav-aufklapp,
.main-navigation.is-open .nav-item > a,
.main-navigation.is-open .nav-item > button,
.main-navigation[data-open] .nav-link,
body.menu-open .main-navigation .nav-link,
body.nav-open .main-navigation .nav-link {
  color: var(--hegel-accent);
}

/* KEINE QUERSTRICHE.
 *
 * Der verbliebene stammt aus der base-website:
 *
 *     .nav-item { border-bottom: 1px solid var(--color-gray-200) }
 *
 * Meine frueheren Regeln setzten ihn nur im aufgeklappten
 * Zustand zurueck und schlugen den Basiswaehler nicht sicher.
 * Ein einfacher Klassenwaehler genuegt und gilt ueberall. */
.nav-item,
.nav-menu > li,
.main-navigation li {
  border-bottom: 0;
  border-top: 0;
}

/* ALLES RECHTSBUENDIG.
 *
 * Vorher standen 'PDF' und 'FAQ' links, weil sie kein Untermenue
 * haben - ein Unterschied, den niemand als solchen liest. */
.main-navigation.is-open .nav-menu,
.main-navigation[data-open] .nav-menu,
body.menu-open .nav-menu,
body.nav-open .nav-menu {
  text-align: end;
}

.main-navigation.is-open .nav-link,
.main-navigation.is-open .nav-aufklapp,
.main-navigation[data-open] .nav-link,
body.menu-open .main-navigation .nav-link,
body.nav-open .main-navigation .nav-link {
  display: block;
  width: 100%;
  text-align: end;
  padding-inline-end: 1rem;
}

/* DAS DREIECK ZEIGT DAS UNTERMENUE AN.
 *
 * Das ist die Zeichensprache, die Leser kennen - und v2 hielt es
 * ebenso. Es steht RECHTS vom Text, weil dort das Auge nach dem
 * Lesen ankommt.
 *
 * 'has-submenu' steht schon im Markup: header.njk setzt die
 * Klasse, wo ein Punkt Unterpunkte hat. */
.main-navigation.is-open .has-submenu > .nav-link::after,
.main-navigation.is-open .has-submenu > .nav-aufklapp::after,
.main-navigation[data-open] .has-submenu > .nav-link::after,
body.menu-open .has-submenu > .nav-link::after,
body.nav-open .has-submenu > .nav-link::after {
  content: "\25BE";          /* kleines Dreieck nach unten */
  display: inline-block;
  margin-inline-start: 0.45rem;
  /* 1em, damit es so hoch ist wie die Buchstaben daneben. Bei
     0,8em war es ein Klecks, dem man die Form nur ahnte. */
  font-size: 1em;
  transition: transform 0.15s;
}

/* Aufgeklappt zeigt es nach oben - dann ist es zugleich der
 * Hinweis, wie man wieder zumacht. */
.main-navigation .has-submenu [aria-expanded="true"]::after,
.main-navigation .has-submenu.is-open > .nav-link::after {
  transform: rotate(180deg);
}

/* ---- Kein Leerraum zwischen Trennlinie und Reitern ------------- */

/* Die Ueberschrift traegt einen Abstand nach unten UND die
 * Reiterleiste einen nach oben - zusammen eine Luecke, die im
 * breiten Fenster auffaellt und beim Verkleinern springt.
 *
 * Die Trennlinie gehoert zur Ueberschrift; darunter beginnen die
 * Reiter unmittelbar. */
.triangle-figure {
  margin-top: 0;
}

.triangle-figure > .tab-buttons {
  margin-top: 0;
}

.page-header + .triangle-figure,
h1 + .triangle-figure,
hr + .triangle-figure {
  margin-top: 0.25rem;
}

/* ---- Die Fusszeile gehoert ans Ende ---------------------------- */

/* DER FUELLRAUM GEHOERT DEM ARTIKEL.
 *
 * 'body' traegt das dunkle Blau; wo der Inhalt kuerzer ist als
 * das Fenster, sah man es unter der Fusszeile stehen - als
 * haenge dort noch etwas nach.
 *
 * Statt die Farbe zu wechseln: die Seite so hoch machen wie das
 * Fenster und den ueberschuessigen Platz dem Hauptteil geben.
 * Dann waechst die Artikelflaeche, und die Fusszeile sitzt am
 * unteren Rand. */
body {
  min-height: 100vh;
  min-height: 100dvh;      /* auf Mobilgeraeten ohne Adressleiste */
  display: flex;
  flex-direction: column;
}

body > main,
body > .site-main,
body > #main-content {
  flex: 1 0 auto;
  background: var(--hegel-paper);
}

body > footer,
body > .site-footer {
  flex: 0 0 auto;
  margin-top: 0;
}

/* Etwas flacher, wie gewuenscht. */
.site-footer,
body > footer {
  padding-block: 1.25rem;
}

/* ---- Das Bildnisalbum ------------------------------------------ */

/* Der Hinweis ueber dem Album. Ohne ihn sieht ein Album wie ein
 * Bilderteppich aus, und niemand kommt auf den Gedanken zu
 * klicken. */
.galerie-hinweis {
  font-size: 0.9em;
  color: var(--color-gray-600, #666);
  margin-bottom: 1rem;
}

/* EIN RASTER, DAS SICH SELBST EINTEILT.
 *
 * 'auto-fill' mit Mindestbreite: auf dem Telefon zwei Spalten,
 * am Schirm vier - ohne Umbruchpunkte, die man pflegen muss. */
.galerie-album {
  display: grid;
  /* Schmaler als zuerst: die Uebersicht soll ohne Rollen
     zu ueberblicken sein. */
  grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
  gap: 1.5rem 1rem;
  margin: 1.5rem 0 2rem;
}

.galerie-album figure {
  margin: 0;
}

.galerie-bild {
  display: block;
  text-decoration: none;
  color: inherit;
  transition: transform 0.15s;
}

/* GLEICH HOHE BILDER TROTZ VERSCHIEDENER FORMATE.
 *
 * Standbild hochkant, Medaille rund, Relief quer. 'cover'
 * schneidet, statt zu verzerren - ein verzerrtes Gesicht faellt
 * sofort auf, ein beschnittener Rand nicht. */
.galerie-bild img {
  width: 100%;
  /* Niedriger als zuerst: acht Bilder zu 14rem passten nicht
     auf einen Bildschirm, und eine Uebersicht, die man nicht
     ueberblickt, ist keine. */
  height: 9rem;
  object-fit: cover;
  object-position: top center;
  border-radius: var(--rounded, 3px);
  background: var(--hegel-paper);
}

.galerie-bild figcaption {
  margin-top: 0.5rem;
  line-height: 1.3;
}

.galerie-was {
  display: block;
  font-weight: 600;
}

/* Der Kuenstlername steht kleiner darunter: was man sieht,
 * kommt zuerst; wer es machte, danach. */
.galerie-wer {
  display: block;
  font-size: 0.85em;
  color: var(--color-gray-600, #666);
}

/* Beim Ueberfahren hebt sich das Bild - der zweite Hinweis, dass
 * es anklickbar ist. */
.galerie-bild:hover,
.galerie-bild:focus-visible {
  transform: translateY(-2px);
}

.galerie-bild:hover .galerie-was,
.galerie-bild:focus-visible .galerie-was {
  text-decoration: underline;
}

/* Wer die Bewegung nicht will, bekommt sie nicht. */
@media (prefers-reduced-motion: reduce) {
  .galerie-bild { transition: none; }
  .galerie-bild:hover { transform: none; }
}

/* ---- Sprachumschalter: schmal neben, breit in der Navigation --- */

/* ZWEI ORTE, EINER SICHTBAR.
 *
 * Der Umschalter steht zweimal im Kopf: einmal neben dem
 * Hamburgerknopf, einmal in der Navigation. Hier entscheidet
 * sich, welcher gilt.
 *
 * Der Grund ist nicht Gestaltung, sondern ein Fehler: innerhalb
 * der Navigation streiten Umschalter und Hamburgermenue um
 * dieselbe Hoehe. Der eine klappt aus, der andere rechnet neu,
 * die Leiste rutscht weg - auf dem Pixel 8 flackert es, und man
 * trifft nichts. */

/* Auf breiten Schirmen: der in der Navigation. */
.header-sprachen-mobil {
  display: none;
}

@media (max-width: 48em) {
  .header-sprachen-mobil {
    display: flex;
    align-items: center;
    /* Vor den Hamburgerknopf, der 'margin-inline-start: auto'
       traegt und alles vor sich herschiebt. */
    margin-inline-start: auto;
    margin-inline-end: 0.5rem;
  }

  /* Und der in der Navigation verschwindet. */
  .header-sprachen-breit {
    display: none;
  }

  /* Die aufgeklappte Fahnenleiste haengt jetzt am Kopf, nicht
     an der Navigation - sonst schoebe sie das Menue auf. */
  .header-sprachen-mobil .language-switcher {
    position: relative;
  }

  /* UNTEREINANDER, WIE EINE LISTE ES TUT.
   *
   * Hier stand 'flex-wrap: wrap' mit einer Breitenbegrenzung -
   * der Versuch, dreizehn Fahnen nebeneinander unterzubringen.
   * Das Problem bestand gar nicht: '<ul>' ist eine Liste, und
   * untereinander ist ihr natuerliches Verhalten.
   *
   * Dreizehn Eintraege zu je gut 2rem sind knapp 29rem. Die
   * allgemeine Regel begrenzt auf 'min(85vh, 40rem)' mit
   * Bildlauf als Notnagel; auf einem Telefon von etwa 50rem
   * Hoehe passen sie ohne. */
  .header-sprachen-mobil .language-menu {
    position: absolute;
    inset-block-start: 100%;
    inset-inline-end: 0;
    z-index: 1100;
    background: var(--hegel-chrome);
    border-radius: var(--rounded, 3px);
    padding-block: 0.4rem;
    box-shadow: 0 2px 8px rgb(0 0 0 / 0.3);
  }
}

/* ================================================================
   KOPFLEISTE UND HAMBURGERMENUE - Wiederherstellung 21.8.
   ================================================================

   Kai hat den Stand auf dem Server angesehen: „Im Prinzip ist das
   ganze CSS in den früheren Zustand zurückgekommen." Das stimmt -
   die fehlgeschlagene Wiederherstellung hat neun Tage alte
   Fassungen zurückgeholt.

   Vier Dinge, die dabei verlorengingen, hier neu. Sie stehen am
   Ende der Datei, damit sie gewinnen, ohne dass ich an fünf
   Stellen suchen muss, welche Regel gerade obenauf liegt. */

/* ---- 1. Das Hamburgerzeichen ist weiss ------------------------
 *
 * Es sitzt auf der dunklen Kopfleiste. Schwarz auf Dunkelblau ist
 * kaum zu sehen - auf Kais Bildschirmfoto verschwindet es fast.
 *
 * Auch im aufgeklappten Zustand weiss: der Menuegrund ist jetzt
 * so dunkel wie die Kopfleiste (Punkt 2). */
.header-content .mobile-menu-toggle,
.header-content .mobile-menu-toggle .hamburger-icon,
.mobile-menu-toggle[aria-expanded="true"],
.mobile-menu-toggle[aria-expanded="true"] .hamburger-icon {
  color: #fff;
  background: transparent;
  border: 0;
}

/* ---- 2. Das aufgeklappte Menue traegt die Kopffarbe -----------
 *
 * Auf dem Foto ist es beige und hebt sich nicht von der Seite ab;
 * man sieht nicht, wo das Menue aufhoert. Dieselbe Farbe wie die
 * Kopfleiste macht es zu deren Fortsetzung nach unten. */
@media (max-width: 48em) {
  .main-navigation.is-open,
  .main-navigation[data-open],
  body.nav-open .main-navigation,
  body.menu-open .main-navigation {
    background: var(--hegel-chrome);
    color: #fff;
  }

  .main-navigation.is-open a,
  .main-navigation[data-open] a,
  body.nav-open .main-navigation a,
  body.menu-open .main-navigation a {
    color: #fff;
  }

  /* Rechtsbuendig, wie es war. */
  .main-navigation.is-open .nav-list,
  .main-navigation[data-open] .nav-list,
  body.nav-open .main-navigation .nav-list,
  body.menu-open .main-navigation .nav-list {
    text-align: end;
    align-items: flex-end;
  }

  /* ---- 3. Das Dreieck an Punkten mit Untermenue --------------
   *
   * Die alte Loesung hatte ein zu kleines Zeichen. Groesser und
   * nach unten zeigend: es sagt, dass sich hier etwas oeffnet.
   *
   * Als CSS-Dreieck, nicht als Schriftzeichen - ein '▾' ist in
   * jeder Schrift anders gross, und genau daran ist die alte
   * Loesung gescheitert. */
  .main-navigation .nav-item.has-submenu > a::after,
  .main-navigation .nav-item:has(.submenu) > a::after {
    content: "";
    display: inline-block;
    margin-inline-start: 0.5em;
    vertical-align: 0.15em;
    border-inline-start: 0.38em solid transparent;
    border-inline-end: 0.38em solid transparent;
    border-block-start: 0.42em solid currentColor;
  }

  /* ---- 4. Der Sprachumschalter NICHT im Menue ----------------
   *
   * Kai: „Wenn die Fahne jetzt neben dem Hamburgermenü steht,
   * dann braucht sie nicht noch mal zusätzlich im Hamburgermenü
   * drin sein."
   *
   * Zutreffend, und im Menue lag sie ausserdem waagerecht - die
   * Leiste, die auf dem Pixel flackerte. Zwei Bedienelemente für
   * dieselbe Sache sind eines zu viel. */
  .main-navigation .header-actions,
  .main-navigation .language-switcher {
    display: none;
  }
}

/* ---- 5. Die Fahne wechselt den Platz nicht -------------------
 *
 * Kai: „Wenn nicht genügend Platz da ist, dann sollte eben das DE
 * verschwinden... aber oben im Button sollte dann noch die Fahne
 * zu sehen sein."
 *
 * Die Reihenfolge bleibt immer: Logo, Suchfeld, Fahne,
 * Hamburgerknopf. Was bei Enge weicht, ist der Sprachcode neben
 * der Fahne - nicht die Fahne, und nicht ihr Platz. Ein Element,
 * das je nach Breite woanders steht, ist schwerer zu finden als
 * eines, das kleiner wird. */
@media (max-width: 30rem) {
  /* NUR IM KNOPF, NICHT IN DER LISTE.
   *
   * '.header-sprachen-mobil .language-name' trifft jeden Namen
   * im Kasten - auch die dreizehn in der Liste. Gemeint war
   * immer nur der eine neben der Fahne. */
  .header-sprachen-mobil > .language-switcher
    > .language-current > .language-name,
  .header-sprachen-mobil .language-current::after {
    display: none;
  }

  .header-sprachen-mobil .language-current {
    padding-inline: 0.45rem;
  }
}

/* ---- 6. Die Reiter in EINER Zeile ----------------------------
 *
 * Kai: „Die hatten wir schon mal so gehabt, dass sie alle in
 * einer Zeile sind. Man orientiert sich da an dem rechten Button
 * und macht ihn gerade so, dass er vom Inhalt her passt. Dann
 * dividiert man den restlichen Platz durch drei."
 *
 * Genau das steht hier:
 *
 *     Übersicht    flex: 0 0 auto   - so breit wie sein Inhalt
 *     Ebene 1-3    flex: 1 1 0      - teilen den Rest zu dritt
 *
 * Warum es vorher umbrach: '.tab-button' trug
 * 'min-width: max-content'. Damit kann kein Knopf schmaler
 * werden als sein Text, und bei vier Knöpfen auf einem Telefon
 * reicht die Zeile nicht - 'flex-wrap: wrap' schob den letzten
 * nach unten.
 *
 * Die Ebenen dürfen jetzt schrumpfen; ihre Beschriftungen sind
 * kurz und gleich lang, da fällt es nicht auf. Der letzte Knopf
 * behält seine Breite, weil 'Übersicht' in manchen Sprachen
 * deutlich länger ist und gestaucht unschön aussieht. */
.tab-buttons {
  flex-wrap: nowrap;
}

.tab-button {
  flex: 1 1 0;
  min-width: 0;
  white-space: nowrap;
}

/* Der letzte behält die Breite seines Inhalts. */
.tab-button:last-child {
  flex: 0 0 auto;
}

/* Bei sehr schmalen Schirmen darf die Schrift mitgehen, bevor
 * etwas abgeschnitten wird. */
@media (max-width: 26rem) {
  .tab-button {
    padding-inline: 0.5em;
    font-size: 0.94em;
  }
}

/* ---- 7. Das Quizbild sagt es mit ------------------------------
 *
 * Kai: „Du zeigst ja schon den falschen Teil an. Den könntest du
 * eventuell da die Farben grau machen... mit einem unglücklichen
 * Smiley daneben... und bei dem Gewinn statt einem Smiley eine
 * Trophäe."
 *
 * Der Gedanke wirkt OHNE LESEN. Wer auf einen falschen Ast
 * tippt, sieht es am Bild - nicht erst, wenn er die Zeile
 * darunter gefunden hat.
 *
 * Das Ausgrauen ist die eigentliche Auskunft: dieser Ast ist
 * tot, hier geht es nicht weiter. Es nimmt dem Bild die
 * Aufforderung, weiterzuklicken.
 *
 * Das Zeichen daneben ist die Beigabe - es fällt auch dem auf,
 * der Farbunterschiede nicht sieht. Ein Zwölftel der Männer
 * unterscheidet Rot und Grün nicht; Graustufen sieht jeder. */
.quiz-bild {
  position: relative;
  transition: filter 0.25s ease, opacity 0.25s ease;
}

.quiz-bild--falsch {
  filter: grayscale(1) contrast(0.85);
  opacity: 0.65;
}

.quiz-bild--falsch::after,
.quiz-bild--richtig::after {
  position: absolute;
  inset-block-start: 0.5rem;
  inset-inline-end: 0.5rem;
  font-size: clamp(1.8rem, 8vw, 3rem);
  line-height: 1;
  /* Der Filter des Elternteils faerbt auch das Zeichen grau -
     hier wieder aufgehoben, sonst wäre das Gesicht kaum zu
     sehen. */
  filter: grayscale(0);
}

.quiz-bild--falsch::after {
  content: "🙁";
}

.quiz-bild--richtig::after {
  content: "🏆";
}

@media (prefers-reduced-motion: reduce) {
  .quiz-bild {
    transition: none;
  }
}

/* ---- 8. Die Fußzeile bleibt einzeilig ------------------------
 *
 * Kai: „Du siehst, dass da zu wenig Platz ist, sodass die drei
 * Sachen in der Fußzeile umbrechen. Stattdessen sollte einfach
 * die Schrift kleiner sein und der Platz zwischen ihnen weniger
 * sein."
 *
 * Drei Rechtstexte, die auf jeder Seite stehen. Umbrechend
 * nehmen sie zwei Zeilen und wirken wie eine Liste; einzeilig
 * sind sie, was sie sind - eine Fußnote.
 *
 * 'clamp' statt fester Größe: die Schrift geht mit der Breite
 * mit und hört bei 0.72rem auf, damit sie lesbar bleibt. */
.site-footer .footer-nav {
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  gap: clamp(0.4rem, 2.5vw, 1.5rem);
}

.site-footer .footer-nav a {
  white-space: nowrap;
  font-size: clamp(0.72rem, 3.1vw, 1rem);
}

/* ---- 9. Werkverweise sind sichtbar Verweise ------------------
 *
 * Kai: „Es ist überhaupt nicht farblich gekennzeichnet, dass man
 * da draufklicken kann... Vielleicht macht man das
 * unterstrichen."
 *
 * Die Verweise auf '§86-88' trugen keine Klasse und erbten die
 * Grundfarbe des Textes. Man sieht nicht, dass dort etwas zu
 * holen ist.
 *
 * WARUM UNTERSTRICHEN UND NICHT NUR FARBIG
 *
 * Kai fragt, welche Farbe es sein könnte. Die bessere Antwort
 * ist: nicht nur Farbe. Ein Zwölftel der Männer unterscheidet
 * Rot und Grün nicht, und auf dem beigen Grund müßte jede Farbe
 * kräftig genug sein, um zu wirken - dann sticht sie aus dem
 * Fließtext heraus.
 *
 * Ein Unterstrich sagt dasselbe ohne Farbe. Er ist die älteste
 * Auszeichnung für einen Verweis und wird von jedem verstanden.
 * Die Farbe kommt dazu, muß aber nicht allein tragen.
 *
 * 'text-underline-offset' hält ihn von den Unterlängen frei -
 * ein Unterstrich, der durch das 'g' läuft, macht die Schrift
 * schwerer lesbar statt den Verweis deutlicher. */
a.werkverweis {
  color: var(--hegel-link, #1a3a8f);
  text-decoration: underline;
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.16em;
}

a.werkverweis:hover,
a.werkverweis:focus-visible {
  text-decoration-thickness: 0.14em;
}

/* Im Glossar und in den Erläuterungen stehen sie mitten im Satz;
 * dort soll der Unterstrich nicht schwerer wiegen als die
 * Schrift selbst. */
.glossar-eintrag a.werkverweis,
.artikel-text a.werkverweis {
  text-decoration-thickness: 0.07em;
}

/* ================================================================
   KOPFLEISTE - Nachbesserung nach Kais Bericht vom PC
   ================================================================ */

/* ---- 10. Die Reihenfolge wird erzwungen ----------------------
 *
 * Kai: „Das Languageswitcher-Menü ist auf meinem PC wieder
 * zwischen Logo und Suchleiste statt zwischen Suchleiste und
 * Hamburgermenü."
 *
 * Im Markup steht es richtig - Logo, Suche, Fahne, Hamburger.
 * Aber die base-website setzt eigene Reihenfolgen, und wer
 * zuletzt kommt, gewinnt.
 *
 * Also ausdrücklich: 'order' sagt es unabhängig davon, wo die
 * Elemente im Quelltext stehen und was andere Regeln wollen. */
.header-content {
  display: flex;
  align-items: center;
}

.header-content .site-logo-link,
.header-content .site-logo { order: 1; }
.header-content .search-box,
.header-content .searchbox,
.header-content form[role="search"] { order: 2; flex: 1 1 auto; }
.header-content .header-sprachen-mobil { order: 3; }
.header-content .mobile-menu-toggle { order: 4; }

/* ---- 11. Fahne und Hamburger erscheinen zusammen -------------
 *
 * Kai: „Wenn man das Fenster etwas breiter macht, verschwindet
 * das Languageswitcher-Menü, aber das Hamburgermenü-Logo bleibt
 * zu sehen."
 *
 * Zwei Umbruchpunkte, die nicht zusammenpassen: die Fahne
 * verschwand bei 48em, der Hamburgerknopf blieb länger. Dazwischen
 * ist die Fahne nur noch im Menü - genau der Zustand, den wir
 * abgeschafft haben.
 *
 * Der einfachste Weg: die Fahne zeigen, solange der
 * Hamburgerknopf sichtbar ist. Beide hängen jetzt am selben
 * Punkt. */
.header-sprachen-mobil { display: none; }

@media (max-width: 64em) {
  .header-content .header-sprachen-mobil {
    display: flex;
    align-items: center;
    margin-inline-end: 0.5rem;
  }
  /* Und der im Menü verschwindet, solange der obere da ist. */
  .main-navigation .header-actions,
  .main-navigation .language-switcher { display: none; }
}

/* ---- 12. Die Fahnenliste ist ein Untermenü -------------------
 *
 * Kai: „Die Flaggen des Language-Switchers sind eher ein
 * Untermenü und sollen daher wie alle anderen Untermenüs auch
 * cremefarben sein. Andernfalls ist auch die schwarze Schrift
 * nicht gut erkennbar."
 *
 * Zutreffend - und der zweite Satz ist der Grund. Die Liste hatte
 * die Farbe des Hamburgermenüs geerbt, weil sie im selben Kasten
 * lag; ihre Schrift ist aber dunkel. Dunkel auf Lila ist kaum zu
 * lesen. */
.header-sprachen-mobil .language-menu {
  background: var(--hegel-paper, #f7f3e8);
  color: var(--hegel-ink, #1a1a1a);
}

.header-sprachen-mobil .language-menu a,
.header-sprachen-mobil .language-option {
  color: var(--hegel-ink, #1a1a1a);
}

/* ---- 13. Der Sprachcode weicht, die Fahne bleibt -------------
 *
 * Kai: „Der Sprachswitcher hat auch immer noch die beiden
 * Sprach-ID-Zeichen neben der Flagge, die wollen wir wegmachen,
 * wenn nicht genug Platz da ist."
 *
 * Der Punkt lag bei 30rem und griff auf seinem Gerät nicht. Wenn
 * der Hamburgerknopf erscheint, ist es eng genug - dann geht der
 * Code, und die Fahne bleibt. Ein Element, das kleiner wird, ist
 * leichter zu finden als eines, das den Platz wechselt. */
@media (max-width: 64em) {
  /* NUR IM KNOPF, NICHT IN DER LISTE.
   *
   * '.header-sprachen-mobil .language-name' trifft jeden Namen
   * im Kasten - auch die dreizehn in der Liste. Gemeint war
   * immer nur der eine neben der Fahne. */
  .header-sprachen-mobil > .language-switcher
    > .language-current > .language-name,
  .header-sprachen-mobil .language-current::after {
    display: none;
  }
  .header-sprachen-mobil .language-current {
    padding-inline: 0.45rem;
  }
}

/* ---- 14. Der Weg zurück bleibt farbig ------------------------
 *
 * Kai: „Das mittlere Dreieck mit dem Weg zurück bleibt farbig,
 * das kann man anklicken, es ist gleichbedeutend mit dem Knopf
 * ein Schritt zurück."
 *
 * Der Graufilter liegt auf dem ganzen Bild. Damit die Mitte
 * herausfällt, wird sie wieder aufgehellt — sie ist der einzige
 * Weg, der noch offensteht, und muß als solcher zu sehen sein.
 *
 * Das mittlere Dreieck ist im SVG das letzte Polygon mit einem
 * Verweis; es trägt den Titel 'zurück zu'. Bis svg_triangle.py
 * eigene Klassen vergibt, greift die Regel darüber. */
.quiz-bild--falsch svg a:last-of-type,
.quiz-bild--falsch svg a[*|href*="."]:last-of-type {
  filter: grayscale(0) saturate(1.4);
}

/* Und der Zeiger sagt, daß dort noch etwas geht. */
.quiz-bild--falsch svg a:last-of-type polygon {
  cursor: pointer;
}

/* ================================================================
   KOPFLEISTE - dritter Anlauf, nach Kais Bildschirmfotos
   ================================================================

   Die Fotos zeigen bei jeder Breite etwas anderes, und zwei
   Fehler waren meine:

   SCHMAL   Logo · Fahne · Hamburger · Suchfeld
            Die Reihenfolge stimmt nicht. Meine 'order'-Regel
            zielte auf '.search-box' - das Suchfeld steckt aber
            in '.header-search', und auf ein Kind wirkt 'order'
            nicht.

   1250px   Logo · Suchfeld · Hamburger, keine Fahne
            Mein Umbruchpunkt lag bei 64em (1024px), der des
            Hamburgerknopfs liegt höher. Dazwischen ist die Fahne
            wieder nur im Menü.

   Beides kommt daher, daß ich Punkte geraten habe, statt die
   Sache zu regeln. */

/* ---- 15. Die Reihenfolge an den wirklichen Kindern -----------
 *
 * '.header-content' hat genau vier Kinder:
 *
 *     .site-branding        das Logo
 *     .header-search        das Suchfeld
 *     .header-sprachen-mobil  die Fahne
 *     .mobile-menu-toggle   der Hamburgerknopf
 *     .main-navigation      das Menü
 *
 * Auf die wirkt 'order'. Auf ihre Kinder nicht. */
.header-content > .site-branding { order: 1; }
.header-content > .header-search { order: 2; flex: 1 1 12rem; }
.header-content > .main-navigation { order: 3; }
.header-content > .header-sprachen-mobil { order: 4; }
.header-content > .mobile-menu-toggle { order: 5; }

/* ---- 16. Die Fahne steht immer neben dem Hamburgerknopf ------
 *
 * Kein Umbruchpunkt mehr. Sie ist bei jeder Breite an derselben
 * Stelle - das ist der ganze Sinn der Sache: „Man sollte nicht
 * den Platz wechseln."
 *
 * Auf breiten Schirmen steht sie hinter dem waagerechten Menü
 * und vor dem Hamburgerknopf, der dort ohnehin verschwindet.
 * Damit sieht es aus wie auf Kais letztem Foto, nur ohne die
 * Verdopplung. */
.header-content > .header-sprachen-mobil {
  display: flex;
  align-items: center;
  margin-inline-start: 0.5rem;
}

/* Und die im Menü verschwindet - überall, nicht nur schmal. */
.main-navigation .header-actions,
.main-navigation .header-sprachen-breit,
.main-navigation .language-switcher {
  display: none !important;
}

/* ---- 17. Der Sprachcode weicht nur, wenn es eng wird ---------
 *
 * Nicht an einem geratenen Punkt, sondern dort, wo das Suchfeld
 * sonst zu schmal würde. 34rem ist die Breite, unter der es
 * seinen Text nicht mehr zeigt. */
/* Die 34rem-Regel stand hier und ist entfallen: sie blendete
 * den Sprachcode aus, wenn noch Platz war, und traf ausserdem
 * die Namen im Untermenue mit. Ersetzt durch Punkt 19 und 20
 * weiter unten. */

/* ================================================================
   KOPFLEISTE - die drei letzten Punkte
   ================================================================ */

/* ---- 18. Kein Abstand zwischen Fahne und Hamburgerknopf ------
 *
 * Kai: „Der Languageswitcher bewegt sich unmotiviert beim
 * Fenster-Verkleinern nach links. Er sollte einfach immer genau
 * rechts von dem Hamburgermenü sein, ohne Abstand."
 *
 * Die Ursache steht weiter oben in dieser Datei:
 * '.header-content .mobile-menu-toggle { margin-inline-start:
 * auto; }'. Der Auto-Rand schiebt den Knopf ans rechte Ende und
 * läßt alles davor stehen — die Lücke wächst, je schmaler das
 * Fenster wird.
 *
 * Damals war er nötig, weil der Knopf sonst am Suchfeld klebte.
 * Heute übernimmt das die Reihenfolge, und das Suchfeld nimmt
 * mit 'flex' den Platz. Der Auto-Rand ist überflüssig geworden
 * und richtet nur noch Schaden an. */
.header-content > .mobile-menu-toggle {
  margin-inline-start: 0;
}

.header-content > .header-sprachen-mobil {
  /* Kein linker Rand: das Suchfeld nimmt den Platz, und beide
     stehen zusammen am rechten Ende. */
  margin-inline-start: 0;
  margin-inline-end: 0.35rem;
}

.header-content > .header-search {
  /* Es nimmt, was zwischen Logo und Fahne bleibt - und gibt es
     wieder her, wenn es eng wird. Deshalb muß nichts anderes
     ausblenden. */
  flex: 1 1 6rem;
  min-width: 0;
}

/* ---- 19. Der Sprachcode bleibt, solange er kann --------------
 *
 * Kai: „Der Language-Switcher verliert bereits unmotiviert sein
 * Sprachattribut, obwohl noch genug Platz da ist."
 *
 * Mein Punkt lag bei 34rem — wieder geraten. Er wird gar nicht
 * gebraucht: das Suchfeld schrumpft zuerst, weil es
 * 'flex-shrink' hat und die Fahne nicht. Erst wenn auch das
 * nichts mehr hergibt, wird es eng.
 *
 * 22rem ist die Breite, unter der ein Telefon hochkant nicht
 * mehr geht. Bis dahin bleibt 'EN' stehen. */
@media (max-width: 22rem) {
  .header-sprachen-mobil > .language-switcher
    > .language-current > .language-name {
    display: none;
  }
}

/* ---- 20. Im Untermenü stehen die Sprachnamen ----------------
 *
 * Kai: „Der Languageswitcher verliert auch den Text seiner
 * Flaggen im Submenu. Da ist ja immer genug Platz, da braucht
 * nichts versteckt werden."
 *
 * Mein Fehler: '.header-sprachen-mobil .language-name' trifft
 * auch die Namen IN der Liste. Gemeint war nur der eine neben
 * der Fahne im Knopf.
 *
 * Eine Liste aus dreizehn Fahnen ohne Namen ist ein Rätsel -
 * wer die Flagge Brasiliens von der Portugals unterscheidet,
 * ist in der Minderheit. */
.header-sprachen-mobil .language-menu .language-name,
.header-sprachen-mobil .language-option .language-name {
  display: inline !important;
}