/* ==================================================================
   KEROLINA – Lesekomfort (kerolina-lesekomfort.css)
   ------------------------------------------------------------------
   DIE EINZIGE STELLE IM PROJEKT, an der die Lesegroesse gesteuert wird.

   Zielgruppe: 44–75 Jahre. Lesedauer einer Rundreiseseite: 21–27
   Minuten bei rund 4.150 Woertern. Ziel ist nicht grosse Schrift,
   sondern muehelose Schrift – die Seite soll nach der Aenderung
   nicht groesser wirken, sondern nur angenehmer zu lesen sein.

   ------------------------------------------------------------------
   DER BEFUND, DER DIESE DATEI AUSLOEST

   Die Detailseiten setzen `body { font-size: 17px }`. Praktisch jeder
   Baustein bemisst sich darunter aber in `rem`: .9rem, .92rem, .94rem,
   .98rem, .82rem. `rem` bezieht sich auf die Wurzel <html> – und die
   wurde nie gesetzt, steht also auf der Browservorgabe von 16 px.

   Gemessen am 18.08.2026 (Apache-Container, 607 Textstellen, 12 Breiten):

       Wurzel <html>            16 px   (nie gesetzt)
       body                     17 px
       17 px erreichen           4,3 % der Textmasse
       unter 16 px              84,2 % der Textmasse
       haeufigste Lesegroesse   15,2 px
       verschiedene Groessen    34

   Jede krumme Zahl der Seiten ist damit erklaert:
   14,72 = 0,92 × 16 · 15,04 = 0,94 × 16 · 15,68 = 0,98 × 16.

   Am 24-Zoll-Schirm in 62 cm Abstand liegt 15,04 px bei 15,4
   Bogenminuten Versalhoehe – unter der Lesbarkeitsschwelle von 16'
   nach ISO 9241-303. Es ist kein Handy-, sondern ein Desktopproblem.

   ------------------------------------------------------------------
   LADEREIHENFOLGE – DER WICHTIGSTE PUNKT DIESER DATEI

   Diese Datei MUSS nach dem seitenlokalen <style>-Block stehen.
   `includes/kerolina-assets.php` laedt vor dem Block; von dort aus
   verliert jede gleich spezifische Regel gegen das Inline-CSS.
   Einbindung deshalb ueber `includes/kerolina-lesekomfort.php`,
   unmittelbar nach `</style>`.

   Und: Gleiche Dokumentreihenfolge genuegt nur bei GLEICHER
   Spezifitaet. Wo das Inline-CSS zwei Klassen verwendet, muss diese
   Datei das auch – `.help` verliert gegen `.field .help` und bleibt
   still wirkungslos. Beim ersten Entwurf ist genau das passiert
   (gemessen: 15,12 px statt der beabsichtigten 16,2 px).
   ================================================================== */


/* ------------------------------------------------------------------
   1. DER EINE HEBEL

   Ein Wert hebt die gesamte Lesetypografie, weil sich alles in rem
   bemisst. 112,5 % von 16 px = 18 px, also +12,5 % Sehwinkel.
   Damit erreicht die haeufigste Lesegroesse 17,1 px und liegt am
   24-Zoll-Schirm erstmals ueber der Lesbarkeitsschwelle.

   Prozent und nicht 18px: Wer im Browser eine groessere Grundschrift
   eingestellt hat, behaelt sie relativ. Eine feste Pixelangabe wuerde
   diese Einstellung ueberschreiben – bei dieser Zielgruppe der
   schlechtestmoegliche Nebeneffekt.
   ------------------------------------------------------------------ */
html {
    font-size: calc(112.5% * var(--kerolina-schriftskala, 1));
}


/* ------------------------------------------------------------------
   1a. DIE DREI SCHRIFTSTUFEN (Benutzerwahl)

   Ohne gesetztes Attribut ist die Skala 1, und calc(112.5% * 1)
   ergibt exakt die 112,5 % von vorher – der Standardzustand aendert
   sich nicht (nachgemessen ueber 5 Breiten, keine Abweichung).

   Warum 1,08 / 1,16 und nicht 1,10 / 1,20, warum drei Stufen und
   nicht vier, und welche Messwerte dahinterstehen:
   .claude/docs/06-accessibility.md, Abschnitt 12.5
   („Die drei Schriftstufen").

   Die beiden Hilfsfaktoren stehen als fertige Zahlen da und werden
   NICHT zur Laufzeit dividiert: calc() kann das zwar, faellt in
   aelteren Browsern aber still aus – und ein ausgefallenes
   font-size mitten in einer clamp()-Kette ist eine zerbrochene
   Ueberschrift. Wer eine Stufe aendert, rechnet beide Faktoren neu;
   die Formeln stehen daneben.
   ------------------------------------------------------------------ */
:root {
    --kerolina-schriftskala: 1;
    --kerolina-anzeige: 1;   /* Anzeigegroessen: halbes Mitwachsen.
                                (1 + (skala - 1) x 0,5) / skala */
    --kerolina-fest: 1;      /* gar kein Mitwachsen.  1 / skala */
}
html[data-schriftgroesse="gross"] {
    --kerolina-schriftskala: 1.08;
    --kerolina-anzeige: 0.96296;   /* 1,04 / 1,08 */
    --kerolina-fest: 0.92593;      /* 1    / 1,08 */
}
html[data-schriftgroesse="sehr-gross"] {
    --kerolina-schriftskala: 1.16;
    --kerolina-anzeige: 0.93103;   /* 1,08 / 1,16 */
    --kerolina-fest: 0.86207;      /* 1    / 1,16 */
}


/* ------------------------------------------------------------------
   2. ANZEIGEGROESSEN EINFRIEREN

   Nur Groessen, die im Befund bereits als richtig bewertet wurden.
   Sie mitwachsen zu lassen verlaengert die Seite, ohne das Lesen zu
   erleichtern – und laesst die Seite "aufgeblasen" wirken. Genau das
   soll nicht passieren.

   Die rem-Werte sind so gerechnet, dass der heutige Pixelwert exakt
   erhalten bleibt:  alter rem-Wert × 16 / 18.

   Bewusst NICHT eingefroren: h3, legend, .lead, .route-kapitel und
   die Etappentitel. Das sind Lesegroessen, keine Anzeigegroessen –
   sie sollen wachsen.
   ------------------------------------------------------------------ */
.hero h1,
h1 {
    /* war clamp(2rem, 4.6vw, 3.2rem) gegen 16px  ->  32…51,2px

       `.hero h1` und nicht nur `h1`: Das Inline-CSS setzt die
       Hero-Ueberschrift mit Klasse und Element (Spezifitaet 0-1-1).
       Ein blankes `h1` (0-0-1) verliert dagegen und laesst die
       Ueberschrift auf 57,6 px wachsen – gemessen, nicht vermutet. */
    font-size: clamp(calc(1.778rem * var(--kerolina-anzeige, 1)), 4.6vw,
                     calc(2.844rem * var(--kerolina-anzeige, 1)));
}
h2 {
    /* war clamp(1.6rem, 3vw, 2.15rem) gegen 16px  ->  25,6…34,4px */
    font-size: clamp(calc(1.422rem * var(--kerolina-anzeige, 1)), 3vw,
                     calc(1.911rem * var(--kerolina-anzeige, 1)));
}
.paket-card__preis {
    font-size: calc(1.511rem * var(--kerolina-anzeige, 1));   /* bleibt 27,2 px */
}
.hero__sub,
.site-footer__claim {
    font-size: calc(1.111rem * var(--kerolina-anzeige, 1));   /* bleibt 20 px */
}
.hero__claim {
    font-size: calc(1.067rem * var(--kerolina-anzeige, 1));   /* bleibt 19,2 px */
}


/* ------------------------------------------------------------------
   3. WAS NACH DEM HEBEL NOCH ZU KLEIN IST

   Nach Schritt 1 liegen einige Lesetexte weiter unter 16 px, weil ihr
   Ausgangswert sehr klein war. Angehoben wird nur, was gelesen wird.
   Auszeichnungszeilen und Marken bleiben klein – sie werden erkannt,
   nicht gelesen (siehe Abschnitt 4).

   Spezifitaet beachtet: `.field .help` steht im Inline-CSS mit zwei
   Klassen. Eine einfache `.help`-Regel verliert dagegen.
   ------------------------------------------------------------------ */
.etappe__hotel {
    font-size: .95rem;     /* 13,76 -> 17,1 px · Hotelname ist Inhalt */
}
.field .help,
.field__help {
    font-size: .9rem;      /* 13,44 -> 16,2 px */
    opacity: 1;            /* Die 85 % Deckkraft schwaechten den ohnehin
                              kleinsten Text der Seite ein zweites Mal.
                              Die Hierarchie traegt die Groesse allein. */
}
.paket-card__pos {
    font-size: .9rem;      /* 14,08 -> 16,2 px */
}
.site-footer__legal {
    font-size: .9rem;      /* 13,60 -> 16,2 px */
}
.entwurf__hinweis,
.paketwahl__fussnote,
.paketwahl-card__preis,
.submit-note {
    font-size: .89rem;     /* 13,1…13,4 -> 16,0 px */
}


/* ------------------------------------------------------------------
   4. AUSZEICHNUNGEN UND MARKEN

   Diese Stellen bleiben absichtlich unter der Lesegroesse. Sie tragen
   keine Satzinformation, sondern markieren. Angehoben wird nur so
   weit, dass sie fuer ein 65-jaehriges Auge erkennbar werden –
   nicht so weit, dass sie mitreden.

   Kategoriemarken standen bei 11,52 px in Versalien und gesperrt.
   Nach dem Hebel sind es 12,96 px; der Zielkorridor liegt bei
   13,5–14 px.
   ------------------------------------------------------------------ */
.etappe__kat {
    font-size: .765rem;    /* 12,96 -> 13,8 px */
}
.hero__legende {
    font-size: .7rem;      /* 13,68 -> 12,6 px

       Zurueckgenommen, nicht angehoben: Die Bildunterschrift am Hero
       lief bei 13,68 px in eine zweite Zeile und brach rechtsbuendig
       ueber dem Foto um. Sie benennt das Bild, sie wird nicht
       gelesen. 12,6 px ist knapp ueber dem Ausgangswert von
       12,16 px und bleibt einzeilig. */
}


/* ------------------------------------------------------------------
   4a. NAVIGATION

   Die Hauptnavigation traegt elf Punkte. Gemessen ohne Layer bricht
   sie bereits heute von 1081 bis 1366 px in zwei Zeilen um und wird
   erst ab 1440 px einzeilig.

   Bei 16,2 px haette der Hebel diesen Umbruch auf 1440 px ausgedehnt –
   also auf die haeufigste Desktopbreite. Das waere eine Regression
   gewesen, und eine zweizeilige Kopfzeile widerspricht der Ruhe der
   Seite.

   0,82rem = 14,76 px reproduziert das heutige Verhalten exakt
   (zweizeilig bis 1366, einzeilig ab 1440) und liegt dabei knapp
   ueber dem Ausgangswert von 14,4 px. Navigationspunkte werden
   ueberflogen, nicht gelesen – hier ist die Geometrie wichtiger
   als der Sehwinkel.

   OFFEN / DEM BETREIBER VORZULEGEN: Dass die Navigation zwischen
   1081 und 1366 px zweizeilig laeuft, ist Bestand und nicht Folge
   dieser Aenderung. Es zu beheben hiesse, die Navigationsstruktur
   anzufassen – das ist eine Entscheidung des Betreibers
   (10-agent-workflow.md, §5).
   ------------------------------------------------------------------ */
.main-nav a {
    /* --kerolina-fest haelt die Navigation ueber alle Schriftstufen
       hinweg auf exakt diesem Wert. Begruendung in Abschnitt 9.4. */
    font-size: calc(.82rem * var(--kerolina-fest, 1));
}
.paket-card__empfehlung,
.paketwahl-card__badge {
    font-size: .74rem;     /* 11,9…12,6 -> 13,3 px */
}


/* ------------------------------------------------------------------
   5. ZEILENLAENGE

   Gemessen liefen bis zu 121 Zeichen pro Zeile, die Rechtszeile der
   Fusszeile sogar 151. Ab etwa 90 Zeichen findet das Auge beim
   Zeilenwechsel den naechsten Zeilenanfang nicht mehr zuverlaessig –
   die haeufigste Ermuedungsursache auf langen Seiten.

   Bewusst NUR auf echte Lesetexte. Tabellen, Navigation, Preiszeilen,
   Formularelemente und Kartenraster bleiben unberuehrt; eine
   Breitenbegrenzung wuerde dort das Raster zerschneiden.
   `ch` und nicht `px`, damit die Grenze bei geaenderter Schriftgroesse
   mitwandert.
   ------------------------------------------------------------------ */
#faq details p,
.field .help,
.field__help,
.fit-card__not,
.paket-nichtenthalten,
.paket-grundlage,
.paket-hinweis,
.entwurf__hinweis,
.submit-note,
.pa49-hinweis__fuss,
.site-footer__legal,
.legal-box p,
.submit-steps li {
    max-width: 68ch;
}
/* .legal-box und .submit-steps sind nach der ersten Messrunde
   dazugekommen: Sie liefen mit 98 bzw. 92 Zeichen weiter ueber der
   Grenze, weil ihre Ausgangsbreite groesser war als die der uebrigen
   Bloecke. Beides ist echter Lesetext an einer Stelle, an der genau
   gelesen wird – Absicherungshinweis und die Schritte unmittelbar
   vor dem Absenden. */


/* ------------------------------------------------------------------
   6. ABSATZLUFT IM HAUPTLESETEXT

   Die 61 Tagespunkte des Reiseverlaufs standen mit 7 px Abstand bei
   24,3 px Zeilenhoehe – 0,29 Zeilen. Der Block liest sich dadurch als
   Flaeche statt als Folge einzelner Gedanken.

   Der Zielwert stammt aus dem Bestand: Die Machbarkeitsliste steht
   bereits bei 0,79 Zeilen und ist der einzige Listenblock der Seite
   ohne Beanstandung. 0,45 em liegt bewusst darunter – die Etappen
   sind laenger, und zu viel Luft loest die Karte auf.
   ------------------------------------------------------------------ */
#route .etappe li + li,
#pakete .paket-card li + li {
    margin-top: .45em;
}
#faq details p {
    margin-top: .5em;
}


/* ------------------------------------------------------------------
   7. AUSWAHLFELDER

   KORREKTUR ZUM ERSTEN BEFUND: Die bedienbare Flaeche war nie zu
   klein. `.radio-row label` und `.paketwahl-card` tragen bereits
   `min-height: 48px`, die Checkbox-Labels sind durch ihren langen
   Text ohnehin hoch. Gemessen wurde faelschlich das <input>, nicht
   das umschliessende <label>.

   Zu klein ist allein das sichtbare Kaestchen: 18 × 18 px, explizit
   gesetzt in `.check-label input`, `.radio-row input` und
   `.paketwahl-card input`. Fuer eine 65-jaehrige Hand am Trackpad
   ist das knapp – und an einem dieser Kaestchen haengt die
   Einwilligung zum kostenpflichtigen Auftrag.

   24 px in rem, damit die Kaestchen mit der Schrift mitwandern statt
   bei einer spaeteren Aenderung stehenzubleiben.
   ------------------------------------------------------------------ */
.check-label input,
.radio-row input,
.paketwahl-card input {
    width: 1.333rem;       /* 24 px */
    height: 1.333rem;
    flex: 0 0 auto;        /* verhindert Stauchen in der Flexzeile */
}
.check-label input {
    margin-top: .15em;     /* Optischer Ausgleich zur ersten Textzeile.
                              Der Bestandswert 4px war auf 18px Kaestchen
                              und 14,4px Text gerechnet. */
}


/* ------------------------------------------------------------------
   8. BEWERTUNGSSTERNE

   Gemessen: --gold-deep (#bca572) auf Weiss = 2,4:1. Als sichtbares
   Vertrauenssignal zu schwach; fuer ein 65-jaehriges Auge kaum
   vorhanden.

   Geprueft wurden drei Wege:
     A  Pflaume  --plum-mid #3e2a4a   -> 12,84:1
     B  dunklerer Goldton             -> ein Gold, das auf Weiss 4,5:1
        erreicht, liegt bei 35 % Helligkeit (#7d6b36). Das ist Oliv,
        kein Gold mehr, und waere ausserdem ein neues CI-Token.
     C  Gold auf Pflaumenflaeche      -> verlangt eine zusaetzliche
        Flaeche in den Bewertungskarten; das ist ein Umbau, keine
        Reparatur, und macht den Block schwerer statt ruhiger.

   B scheitert an sich selbst, C am Auftrag. Gewaehlt ist A – zugleich
   die Loesung, die die projekteigene Farbregel ohnehin vorschreibt:
   CI-Gold traegt Linien, nicht Text auf hellem Grund. Die Sternform
   traegt die Bedeutung, nicht die Farbe.
   ------------------------------------------------------------------ */
.review-card__stars {
    color: var(--plum-mid);
}


/* ==================================================================
   9. BARRIEREFREIHEIT – ZENTRALE SCHICHT (Accessibility 2027)
   ------------------------------------------------------------------
   Gilt fuer JEDE Seite mit diesem Include – also fuer jede kuenftige
   Rundreise, ohne eine Zeile Handarbeit.

   WARUM HIER UND NICHT IN EINER EIGENEN DATEI: Diese Regeln muessen
   das seitenlokale <style> ueberschreiben. Dafuer gibt es genau EINE
   Ladeposition – die dieser Datei. Eine zweite Datei daneben waere
   ein zweiter Pflegeort und eine zusaetzliche blockierende Anfrage.

   Vollstaendige Herleitung, Messwerte und Pruefverfahren:
   .claude/docs/06-accessibility.md, „Accessibility Architecture 2027".
   ================================================================== */


/* --- 9.1 Sichtbarer Fokus an Skript-Sprungzielen (WCAG 2.4.7, AA) ---

   Seiteneigene Regeln wie `.paketwahl:focus{outline:none}` (0-2-0)
   schlagen die globale Fokusregel `:focus-visible` (0-1-0) und
   entfernen den Rahmen AUCH bei Tastaturbedienung. Gemessen an
   W-1335: :focus-visible traf zu, outlineStyle war trotzdem "none".

   Der Selektor unten kommt auf exakt 0-2-0 und gewinnt bei
   Gleichstand, weil diese Datei spaeter laedt.

   FALLE: :not() UEBERNIMMT die Spezifitaet seines Arguments. Die
   Ausnahmeliste MUSS deshalb in :where() stehen – sonst zaehlt jeder
   Elementname mit und die Regel verliert wieder.

   Die Liste unterdrueckt keinen Rahmen. Sie sorgt dafuer, dass an
   Landmarken NICHTS geaendert wird: <main> und die Formularsektion
   sind Skip-Link-Ziele und bekommen ihren Rahmen seit jeher von der
   globalen Seitenregel. Das ist richtig und bleibt. */
[tabindex="-1"]:focus-visible:not(:where(main, body, section, article, aside, nav, form)) {
    outline: 3px solid var(--plum);
    outline-offset: 2px;
}
[tabindex="-1"]:focus:not(:focus-visible) {
    outline: none;   /* nach Mausklick kein Rahmen: der Zeiger ist gefolgt */
}


/* --- 9.2 Fokus nicht unter den Leisten (WCAG 2.4.11, AA) ---

   Gemessen an W-1335 vor dieser Regel: zwei Bedienelemente beim
   Vorwaertstabben VOLLSTAENDIG von der Reiseleiste verdeckt, sechs
   weitere teilweise. Rueckwaerts war der Durchlauf sauber – die
   frueher eingebaute Reparatur kannte nur die Kopfzeile, die untere
   Leiste kam spaeter dazu und hatte kein Gegenstueck.

   124 px = Kopfzeile 71 + klebende Kapitelmarke 44 + Reserve.
   76 px  = Reiseleiste 59 + Luft.   Mobil: Kopfzeile allein, dafuer
   der hoehere Sticky-CTA unten.

   :where() haelt die Spezifitaet bei 0. Genauere Seitenregeln
   gewinnen weiterhin – etwa `#route-liste summary`, das seine
   Markenhoehe per JavaScript bekommt. Deren Wert bleibt unberuehrt;
   nur scroll-margin-bottom, das dort fehlt, kommt von hier. */
:where(a[href], button, input, select, textarea, summary, [tabindex]) {
    scroll-margin-top: 124px;
    scroll-margin-bottom: 76px;
}
@media (max-width: 860px) {
    :where(a[href], button, input, select, textarea, summary, [tabindex]) {
        scroll-margin-top: 84px;
        scroll-margin-bottom: 104px;
    }
}


/* --- 9.3 Links im Fliesstext ohne Farbe erkennbar (WCAG 1.4.1, A) ---

   Vier Links unterschieden sich vom umgebenden Text allein im
   Farbton: Fusszeile 1,53:1, Beraterin-Kanaele 1,05:1 – noetig
   waeren 3:1 oder ein zweites Merkmal. 1,05:1 heisst gleich hell,
   nur anderer Ton; wer Farben nicht unterscheidet, sieht dort keinen
   Link. Fettschrift traegt das nicht.

   Die Farben bleiben unveraendert, es kommt nur die Unterstreichung
   dazu. text-underline-offset haelt die Linie aus den Unterlaengen. */
.site-footer__legal a,
.beraterin__kanaele a {
    text-decoration: underline;
    text-underline-offset: .18em;
    text-decoration-thickness: 1px;
}


/* --- 9.4 Was bei groesserer Schrift NICHT mitwaechst ---

   Hauptnavigation: Sie bleibt stehen. Elf Punkte, die nach dem
   Schriftwechsel neu umbrechen, kosten Layoutstabilitaet (CLS 0,029
   gegen 0,001) und machen die klebende Kopfzeile dauerhaft 9 px
   hoeher. Abschnitt 4a friert sie ohne die Stufen bereits mit
   derselben Begruendung ein.

   Reiseleiste: ebenfalls eingefroren, aber NICHT hier – ihr CSS
   liegt im Body und laedt spaeter als diese Datei. Die Umsetzung
   steht in includes/reise-conversion-leiste.php, samt Messwerten.
   Ein Versuch an dieser Stelle blieb wirkungslos.

   Beide Faelle in .claude/docs/06-accessibility.md, Abschnitt 12.5
   („Was mitwaechst und was nicht"). */


/* --- 9.5 Die Schriftwahl in der Fusszeile ---

   Markup: includes/footer.php, nur bei geladenem Lesekomfort-Layer.

   Sie soll nicht auffallen: dieselbe Goldlinie wie die Rechtszeile
   darunter, keine Kachel, kein Schatten, kein Symbol. Kein
   Rollstuhlsymbol – die Funktion ist eine Schriftgroesse, und das
   Piktogramm wuerde die groesste Nutzergruppe (Weitsichtigkeit ab
   etwa 45) gar nicht ansprechen.

   Sie waechst mit der gewaehlten Stufe mit; sonst waere ausgerechnet
   das Bedienelement der kleinste Text der Seite.

   Der Fokusring kommt von der bestehenden Regel
   `.site-footer :focus-visible { outline-color: var(--gold) }`. */
.darstellung {
    /* Verborgen, bis das Kopf-Skript `kerolina-js` gesetzt hat – also
       nur dort, wo die Auswahl auch wirken kann. Die Entscheidung
       faellt vor dem ersten Paint. Der erste Entwurf blendete statt-
       dessen per JS ein und erzeugte damit CLS 0,236. */
    display: none;
}
.kerolina-js .darstellung {
    display: block;
    border-top: 1px solid var(--gold-25);
    padding-top: 22px;
    margin-bottom: 26px;
}
.darstellung__feld {
    border: 0;
    padding: 0;
    margin: 0;
    /* background MUSS sein: Das Anfrageformular gibt jedem <fieldset>
       eine weisse Karteiflaeche – auch diesem in der dunklen
       Fusszeile. Gemessen ergab das 1,12:1. */
    background: transparent;
    min-width: 0;   /* sonst erzwingt der Inhalt eine Mindestbreite */
}
.darstellung__legende {
    padding: 0;
    font-size: .9rem;
    font-weight: 600;
    color: var(--cream);
    margin-bottom: 12px;
}
.darstellung__optionen {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 26px;
}
.darstellung__option {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;   /* Trefferflaeche nach 06-accessibility.md */
    color: var(--cream-80);
    cursor: pointer;
}
.darstellung__option input {
    width: 1.333rem;    /* wie die uebrigen Auswahlfelder,
                           Abschnitt 7 DIESER Datei */
    height: 1.333rem;
    flex: 0 0 auto;
    accent-color: var(--gold);
    margin: 0;
}
.darstellung__option:hover,
.darstellung__option:has(input:checked) {
    color: var(--cream);
}
.darstellung__hinweis {
    margin-top: 10px;
    font-size: .85rem;
    color: var(--cream-80);
    max-width: 68ch;
}
.darstellung__status {
    /* Nur fuer Vorlesesoftware. Bewusst nicht ueber die seiteneigene
       .sr-only: Die steht im Inline-CSS jeder Seite und koennte in
       einer kuenftigen Rundreise fehlen. clip-path statt display:none,
       damit der Text angesagt wird. */
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}
@media (max-width: 560px) {
    .darstellung__optionen {
        /* Nebeneinander beruehren sich die 44-px-Flaechen. */
        flex-direction: column;
        gap: 2px;
    }
}


/* --- 9.6 Schnellzugang zur Schriftgroesse (Reisewegzeile) ---

   Markup: includes/reise-breadcrumb.php. Zustand: window.kerolinaSchrift.
   Dies ist NUR die Darstellung eines zweiten Einstiegs in dieselbe
   Funktion – keine zweite Logik. Begruendung der Position und die
   Messwerte der verworfenen Alternativen stehen dort im Kopf.

   ZWEI DINGE HALTEN DIE ZEILE RUHIG:
   1. font-size wie .reiseweg__liste (.8rem). Ohne diese Zeile erbt der
      <button> die 17 px des Body und macht die Zeile 7 px hoeher –
      gemessen, bevor die Angabe hier stand.
   2. Das Panel liegt absolut ueber der Flaeche. Es oeffnet nach unten,
      ohne den Reiseweg oder den Inhalt darunter zu verschieben. */
.reiseweg__zeile {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.schriftzugang {
    position: relative;
    flex: 0 0 auto;
    /* display:flex, damit der Wrapper exakt so hoch wird wie der Knopf.
       Als Blockelement erbte er die Zeilenhoehe des Body (28 px) und
       machte die Reisewegzeile 7 px hoeher – der Knopf selbst war da
       schon korrekt bei 21 px. */
    display: flex;
    align-items: center;
}
.schriftzugang__knopf {
    font-family: inherit;
    font-size: .8rem;          /* exakt wie .reiseweg__liste */
    /* 1.45 wie die Liste – und NICHT `inherit`: inherit uebernimmt den
       BERECHNETEN Pixelwert des Elternteils (28,05 px vom Body), nicht
       den Faktor. Gemessen machte das den Knopf 24 statt 21 px hoch und
       die Zeile 7 px hoeher. */
    line-height: 1.45;
    /* Farbe explizit wie die Reiseweg-Stufen. `inherit` holte die
       dunkle Body-Farbe auf die Pflaumenflaeche – gemessen 1,13:1
       und damit praktisch unsichtbar. */
    color: var(--cream-80);
    background: none;
    border: 0;
    padding: 0 2px;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: .2em;
    text-decoration-thickness: 1px;
    position: relative;
}
.schriftzugang__knopf:hover,
.schriftzugang__knopf[aria-expanded="true"] {
    color: var(--cream);
}
.schriftzugang__knopf::after {
    /* Trefferflaeche auf 44 px, ohne die Zeilenhoehe anzufassen
       (06-accessibility.md, Trefferziele). */
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: max(44px, 100%);
    height: 44px;
}
.schriftzugang__panel {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    z-index: 60;
    min-width: 200px;
    padding: 14px 16px;
    background: var(--plum-deep, #1e1122);
    border: 1px solid var(--gold-25);
    border-radius: var(--radius-sm, 8px);
    box-shadow: 0 10px 28px rgba(30, 17, 34, .28);
}
.schriftzugang__feld {
    border: 0;
    padding: 0;
    margin: 0;
    /* wie in der Fusszeile: das Formular-CSS der Seite gibt jedem
       <fieldset> sonst eine weisse Flaeche */
    background: transparent;
    min-width: 0;
}
.schriftzugang__legende {
    /* Das Formular-CSS der Seite gibt <legend> eine eigene Flaeche –
       im dunklen Panel waere das ein heller Kasten. */
    background: transparent;
    padding: 0;
    margin-bottom: 10px;
    font-size: .8rem;
    font-weight: 600;
    color: var(--cream);
}
.schriftzugang__option {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    font-size: .85rem;
    color: var(--cream-80);
    cursor: pointer;
}
.schriftzugang__option input {
    width: 1.2rem;
    height: 1.2rem;
    flex: 0 0 auto;
    accent-color: var(--gold);
    margin: 0;
}
.schriftzugang__option:hover,
.schriftzugang__option:has(input:checked) {
    color: var(--cream);
}
@media (max-width: 560px) {
    .schriftzugang__panel {
        /* Rechtsbuendig wuerde das Panel auf schmalen Geraeten aus dem
           Bild laufen; hier spannt es stattdessen die Restbreite. */
        right: 0;
        left: auto;
        min-width: min(240px, calc(100vw - 44px));
    }
}
