/* ============================================================
   KEROLINA – kalender/assets/kalender.css

   ZWECK
     Das zentrale Aussehen des Terminbereichs. Gilt für JEDE
     Rundreise, die kalender/includes/termin-block.php einbindet.

   EINBINDUNG
     <link rel="stylesheet" href="/kalender/assets/kalender.css">

   BESONDERHEITEN
     - Bewusst kurz. Die Eingabefelder, Auswahlfelder und Radios
       übernehmen die Formularklassen der jeweiligen Rundreisenseite
       (.field, .field-row, .radio-row, .check-label). Hier steht
       ausschließlich das, was es dort nicht schon gibt.
     - Alle Farben kommen aus den Variablen der Seite, jeweils mit
       einem Ersatzwert. Bindet eine künftige Seite den Block ohne
       diese Variablen ein, sieht er trotzdem richtig aus.
     - Gold erscheint nur als Linie, nie als Textfarbe auf hellem
       Grund (09-brand-guidelines.md).
   ============================================================ */


/* ------------------------------------------------------------
   1. Einleitung über dem Schalter
   ------------------------------------------------------------ */
.termin-block__intro {
    margin: 0 0 18px;
    font-size: .96rem;
    line-height: 1.65;
    color: var(--ink, #2b2b30);
}


/* ------------------------------------------------------------
   2. Der Schalter
   ------------------------------------------------------------
   Etwas kräftiger als eine gewöhnliche Zeile mit Häkchen: Er
   entscheidet, ob ein ganzer Abschnitt gebraucht wird, und soll
   beim Überfliegen des Formulars auffallen. */
.termin-block__schalter {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 16px;
    border: 1.5px solid var(--field-border, #cfc9c0);
    border-radius: var(--radius-sm, 6px);
    background: var(--gold-12, rgba(210, 196, 133, .12));
    font-weight: 600;
    cursor: pointer;
    min-height: 48px;
}

.termin-block__schalter input {
    inline-size: 20px;
    block-size: 20px;
    flex: 0 0 auto;
    margin: 0;
    cursor: pointer;
}


/* ------------------------------------------------------------
   3. Der aufklappbare Teil
   ------------------------------------------------------------
   Ohne JavaScript ist dieser Bereich immer sichtbar – deshalb steht
   die Zuklapp-Regel hinter .js-termin. Diese Klasse setzt das Skript
   selbst auf <html>. Wer kein JavaScript hat, bekommt den ganzen
   Abschnitt zu sehen und kann ihn ausfüllen. */
.termin-block__details {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px solid var(--gold-45, rgba(210, 196, 133, .45));
}

.js-termin .termin-block__details[hidden] {
    display: none;
}

/* Die Aussage, dass der Zeitpunkt noch nicht verbindlich ist.
   Sie steht in Lesegröße, nicht im Kleingedruckten: Wer sie überliest,
   hält einen unbezahlten Termin für zugesagt. Deshalb bekommt sie auch
   keinen Farbakzent — sie soll ruhig wirken und trotzdem gelesen werden,
   und im Formular gibt es bereits genug Betontes. */
.termin-block__vorbehalt {
    margin: 6px 0 0;
    font-size: .94rem;
    line-height: 1.65;
    color: var(--ink, #2b2b30);
}

.termin-block__vorbehalt strong {
    color: var(--plum, #2a1c33);
}

.termin-block__fuss {
    margin: 10px 0 0;
    font-size: .84rem;
    line-height: 1.6;
    color: var(--plum, #2a1c33);
    opacity: .8;
}


/* ------------------------------------------------------------
   4. Rückmeldung nach dem Absenden
   ------------------------------------------------------------
   Wird von send-tour-inquiry-2026.php auf der Bestätigungsseite
   und von der Absageseite verwendet. */
.termin-meldung {
    margin: 0 0 20px;
    padding: 16px 18px;
    border-radius: var(--radius-sm, 6px);
    border-left: 4px solid var(--gold-deep, #bca572);
    background: var(--gold-12, rgba(210, 196, 133, .12));
    font-size: .96rem;
    line-height: 1.6;
    color: var(--ink, #2b2b30);
}

.termin-meldung--fehler {
    border-left-color: #a32020;
    background: #fbeaea;
}

.termin-meldung strong {
    color: var(--plum, #2a1c33);
}


/* ------------------------------------------------------------
   5. Die Terminwahl – gemeinsame Bausteine
   ------------------------------------------------------------
   Uhrzeiten, Terminübersicht und Fehlerhinweis gelten auf JEDER
   Breite. Sie standen bis zum 15.08.2026 im Breakpoint darunter und
   damit nur auf Telefonen; seither bedient auch der Desktop die
   Uhrzeit über dieselben Schaltflächen.

   Was sich zwischen den Breiten unterscheidet, ist ausschließlich
   die Wahl des TAGES:
     bis 640px  – Monatsansicht (Abschnitt 6)
     ab  641px  – das bestehende Auswahlfeld (Abschnitt 7)

   Deshalb steht hier kein einziger Wert doppelt. Wer die Optik der
   Zeitschaltflächen ändert, ändert sie für beide Darstellungen.

   ZWEI BEDINGUNGEN, BEIDE NÖTIG:
   .js-termin-picker setzt kalender.js erst, wenn die Ansicht fertig
   im Dokument steht. Ohne JavaScript und bei einem Abbruch während
   des Aufbaus bleiben die Auswahlfelder sichtbar und bedienbar.

   DER BREAKPOINT IST NICHT NEU: 640px ist die Breite, bei der die
   Rundreisenseite .field-row ohnehin einspaltig umbricht. Genau dort,
   wo Tag und Uhrzeit aufhören nebeneinander zu stehen, übernimmt die
   Monatsansicht. Ein eigener Wert wäre ein zweiter Pflegeort. */

/* Ohne JavaScript unsichtbar – dann tragen die Auswahlfelder alles. */
.termin-picker {
    display: none;
}

.js-termin-picker .termin-picker {
    display: block;
}

.termin-picker [hidden] {
    display: none;
}

/* touch-action nimmt iOS die Wartezeit auf den zweiten Tipp: Ohne
   diese Zeile prüft der Browser nach jedem Antippen erst 300ms lang,
   ob ein Doppeltipp zum Zoomen folgt. Die ganze Auswahl fühlt sich
   dadurch träge an.

   tabular-nums hält die Ziffern gleich breit. Ohne sie stehen 1 und 4
   in einer Rasterspalte sichtbar versetzt. */
.termin-picker button {
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    font-variant-numeric: tabular-nums;
}


/* ----- Uhrzeiten ----- */

.termin-picker__zeitlabel {
    margin: 0 0 12px;
    font-size: .9rem;
    font-weight: 600;
    line-height: 1.4;
    color: var(--plum, #2a1c33);
}

/* Spalten- und Zeilenabstand getrennt: Die Spaltenbreite bestimmt,
   wie viele Zeiten nebeneinander passen – daran wird nur je Breite
   gerührt. Der Zeilenabstand darf großzügiger sein, damit die Zeiten
   als Reihen lesbar bleiben und nicht als Block. */
.termin-picker__zeitraster {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(84px, 1fr));
    column-gap: 8px;
    row-gap: 10px;
}

.termin-zeit {
    min-block-size: 48px;
    padding: 0 6px;
    /* Die Zeit darf nie umbrechen: Eine höhere Schaltfläche würde
       die ganze Zeile verspringen lassen. */
    white-space: nowrap;
    font: inherit;
    font-size: 1rem;
    font-weight: 600;
    color: var(--plum, #2a1c33);
    background: var(--paper, #fcfaf5);
    border: 1.5px solid var(--field-border, rgba(42, 28, 51, .50));
    border-radius: var(--radius-sm, 8px);
    cursor: pointer;
}

.termin-zeit[aria-pressed="true"] {
    color: var(--cream, #fdf1d1);
    background: var(--plum, #2a1c33);
    border-color: var(--plum, #2a1c33);
}

/* Zweites, farbunabhängiges Zeichen für die gewählte Zeit. Rein
   schmückend – die Auswahl steht bereits in aria-pressed. */
.termin-zeit[aria-pressed="true"]::before {
    content: "\2713\00a0";
}


/* ----- Übersicht des Gewählten ----- */

/* Dieselbe Bildsprache wie .termin-meldung weiter oben: goldene
   Linie an der Seite, sehr helle Goldfläche. Gold bleibt Linie,
   Text steht in Pflaume (09-brand-guidelines.md). */
.termin-picker__uebersicht {
    margin-top: 20px;
    padding: 15px 16px 16px;
    border-left: 4px solid var(--gold-deep, #bca572);
    border-radius: 0 var(--radius-sm, 8px) var(--radius-sm, 8px) 0;
    background: var(--gold-12, rgba(210, 196, 133, .12));
}

.termin-picker__uebersichttitel {
    margin: 0 0 7px;
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1.3;
    text-transform: uppercase;
    color: var(--plum, #2a1c33);
    opacity: .75;
}

.termin-picker__uebersichtdatum {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--plum, #2a1c33);
}

.termin-picker__uebersichtzeit {
    margin: 3px 0 0;
    font-size: .96rem;
    line-height: 1.45;
    color: var(--ink, #2b2b30);
}

/* Die Zeitspanne darf nie in sich umbrechen: "10:00 –" über der
   Zeile und "11:00 Uhr" darunter wäre für einen Moment eine ganz
   andere Aussage. */
.termin-picker__uebersichtspanne {
    white-space: nowrap;
}

/* Der Trenner steht im CSS, damit er zusammen mit dem Umbruch
   verschwinden kann (siehe schmale Geräte weiter unten). */
.termin-picker__uebersichtart::before {
    content: " · ";
}

/* Die Zeitzone ist eine Fußnote zur Uhrzeit, keine vierte Angabe:
   kleiner, ruhiger, aber gewöhnlicher Text – lesbar, auswählbar,
   für Screenreader vorhanden. Kein ::before und kein title, sonst
   stünde die entscheidende Auskunft für jemanden im Ausland
   ausgerechnet dort, wo man sie nicht bekommt. */
.termin-picker__uebersichtzone {
    margin: 7px 0 0;
    font-size: .84rem;
    line-height: 1.4;
    color: var(--plum, #2a1c33);
    opacity: .8;
}

.termin-picker__zonenkennung {
    white-space: nowrap;
}


/* ----- Fehlerhinweis ----- */

/* Bewusst dieselbe Form wie .field-error der Rundreisenseite,
   aber mit eigenen Werten: Der Terminbaustein soll auch auf einer
   Seite richtig aussehen, die diese Klasse nicht kennt. */
.termin-picker__fehler {
    margin: 12px 0 0;
    padding: 8px 12px;
    font-size: .88rem;
    font-weight: 600;
    color: var(--plum, #2a1c33);
    background: var(--gold-12, rgba(210, 196, 133, .12));
    border-left: 3px solid var(--gold-deep, #bca572);
    border-radius: 0 var(--radius-sm, 8px) var(--radius-sm, 8px) 0;
}


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

/* Der Versatz legt den Ring auf die Fläche neben der Schaltfläche.
   Ohne ihn verschwände er auf einem gewählten Tag, der bereits
   pflaumenfarben ist.

   Die zweite Regel ist kein Schmuck: Nach einem Absendeversuch ohne
   Termin führt das Skript den Fokus auf die fehlende Auswahl. Wer
   den Absendeknopf mit dem Finger oder der Maus gedrückt hat, gilt
   dem Browser dabei nicht als Tastaturnutzer – :focus-visible
   griffe nicht, und der Fokus säße unsichtbar irgendwo im Raster. */
.termin-picker button:focus-visible,
.termin-picker--fehler button:focus {
    outline: 3px solid var(--plum, #2a1c33);
    outline-offset: 2px;
}

/* Nur für Maus und Stift. Auf einem Touchscreen bliebe der
   Überfahren-Zustand nach dem Antippen kleben und sähe aus wie
   eine zweite Auswahl. */
@media (hover: hover) {
    .termin-zeit:hover:not([aria-pressed="true"]) {
        border-color: var(--plum, #2a1c33);
        background: var(--gold-12, rgba(210, 196, 133, .12));
    }
}

/* Im Kontrastmodus von Windows werden Hintergrundfarben verworfen.
   Ohne diese Regel wäre die gewählte Zeit nicht mehr vom Rest zu
   unterscheiden. */
@media (forced-colors: active) {
    .termin-zeit[aria-pressed="true"] {
        border-width: 3px;
    }
}


/* ------------------------------------------------------------
   6. Nur schmale Bildschirme: die Monatsansicht
   ------------------------------------------------------------
   Sie tritt an die Stelle der beiden Auswahlfelder Tag und Uhrzeit.
   Grund: Ein <select> öffnet auf dem Telefon ein bildschirmfüllendes
   Auswahlfenster des Betriebssystems – bei über fünfzig buchbaren
   Tagen eine Rolliste ohne Überblick und optisch ein Fremdkörper.

   Beide Darstellungen bleiben im Dokument. Ein Drehen des Geräts
   wechselt deshalb ohne Neuaufbau, und die Auswahlfelder tragen in
   jedem Fall die abgesendeten Werte. */

@media (max-width: 640px) {

    .js-termin-picker .termin-picker {
        margin-bottom: 18px;
        padding: 16px 12px 18px;
        border: 1.5px solid var(--field-border, rgba(42, 28, 51, .50));
        border-radius: var(--radius-sm, 8px);
        background: var(--card-bg, #fff);
    }

    /* Die Auswahlfelder bleiben im Formular stehen und senden weiter
       ihre Werte. display:none nimmt sie aus der Tabreihenfolge und
       aus dem Screenreader – sonst gäbe es jedes Feld doppelt. */
    .js-termin-picker .termin-block__auswahl {
        display: none;
    }

    /* Die Uhrzeiten stehen hier unter dem Kalender und brauchen die
       Trennlinie. Auf dem Desktop stehen sie unter dem Auswahlfeld
       und bekommen dort ihren eigenen Abstand (Abschnitt 7). */
    .termin-picker__zeiten {
        margin-top: 20px;
        padding-top: 16px;
        border-top: 1px solid var(--gold-45, rgba(210, 196, 133, .45));
    }

    /* ----- Monatskopf ----- */

    .termin-picker__kopf {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-bottom: 14px;
        padding-bottom: 12px;
        border-bottom: 1px solid var(--gold-45, rgba(210, 196, 133, .45));
    }

    .termin-picker__monat {
        flex: 1 1 auto;
        margin: 0;
        text-align: center;
        font-size: 1.02rem;
        font-weight: 700;
        color: var(--plum, #2a1c33);
    }

    .termin-picker__pfeil {
        flex: 0 0 44px;
        inline-size: 44px;
        block-size: 44px;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        font: inherit;
        font-size: 1.5rem;
        line-height: 1;
        color: var(--plum, #2a1c33);
        background: var(--paper, #fcfaf5);
        border: 1.5px solid var(--field-border, rgba(42, 28, 51, .50));
        border-radius: var(--radius-sm, 8px);
        cursor: pointer;
    }

    .termin-picker__pfeil[disabled] {
        opacity: .3;
        cursor: default;
    }

    /* ----- Wochentagsleiste und Tagesraster ----- */

    /* Spalten- und Zeilenabstand bewusst getrennt. Waagerecht ist der
       Platz bei sieben Spalten knapp und jeder Pixel geht von der
       Breite eines Tages ab; senkrecht kostet Luft nichts als etwas
       Scrollweg. Ein gemeinsames gap würde beides aneinanderketten und
       die Wochen so eng stapeln, dass das Raster als Block wirkt. */
    .termin-picker__wochentage,
    .termin-picker__raster {
        display: grid;
        grid-template-columns: repeat(7, 1fr);
        column-gap: 4px;
        row-gap: 6px;
    }

    .termin-picker__wochentage {
        margin-bottom: 8px;
    }

    .termin-picker__wochentage span {
        text-align: center;
        font-size: .72rem;
        font-weight: 700;
        letter-spacing: .04em;
        text-transform: uppercase;
        color: var(--plum, #2a1c33);
        opacity: .65;
    }

    .termin-tag {
        display: flex;
        align-items: center;
        justify-content: center;
        min-block-size: 44px;
        padding: 0;
        font: inherit;
        font-size: .95rem;
        font-weight: 600;
        font-variant-numeric: tabular-nums;
        border-radius: var(--radius-sm, 8px);
    }

    button.termin-tag {
        color: var(--plum, #2a1c33);
        background: var(--paper, #fcfaf5);
        border: 1.5px solid var(--field-border, rgba(42, 28, 51, .50));
        cursor: pointer;
    }

    /* Der gewählte Tag kehrt Vorder- und Hintergrund um. Das ist auch
       in Graustufen und bei erzwungenen Farben erkennbar – die Auswahl
       hängt nicht an der Farbe allein (06-accessibility.md). */
    button.termin-tag[aria-pressed="true"] {
        color: var(--cream, #fdf1d1);
        background: var(--plum, #2a1c33);
        border-color: var(--plum, #2a1c33);
    }

    /* Nicht buchbar: sichtbar als Kalendertag, aber ohne Rahmen und
       ohne Fläche – nichts, was zum Antippen einlädt.

       Den Unterschied trägt die Form, nicht die Blässe: Rahmen und
       Fläche fehlen, das genügt. Die Zahl selbst bleibt deshalb über
       3:1 lesbar – sonst wäre das Raster für ältere Augen kein
       Kalender mehr, sondern eine Reihe heller Flecken, in der sich
       die freien Tage nicht mehr verorten lassen. */
    .termin-tag--zu {
        font-weight: 400;
        color: var(--ink, #1e1122);
        opacity: .5;
    }

    .termin-tag--luecke {
        min-block-size: 0;
    }


    /* ----- Zeigegeräte mit echtem Überfahren ----- */

    /* Nur für Maus und Stift. Auf einem Touchscreen bliebe der
       Überfahren-Zustand nach dem Antippen kleben und sähe aus wie
       eine zweite Auswahl. */
    @media (hover: hover) {
        button.termin-tag:hover:not([aria-pressed="true"]),
        .termin-zeit:hover:not([aria-pressed="true"]),
        .termin-picker__pfeil:hover:not([disabled]) {
            border-color: var(--plum, #2a1c33);
            background: var(--gold-12, rgba(210, 196, 133, .12));
        }
    }

    /* ----- Sehr schmale Geräte ----- */

    /* Sieben Spalten nebeneinander sind bei 320px die engste Stelle der
       ganzen Seite. Weniger Innenabstand und ein schmalerer Spalt geben
       jedem Tag rund vier Pixel mehr Breite – der Unterschied zwischen
       einem Kalender und einer Reihe von Strichen.

       Verengt wird ausschließlich waagerecht. Der Zeilenabstand von
       oben bleibt unangetastet: Gerade auf dem schmalsten Gerät ist die
       Luft zwischen den Wochen das, was das Raster lesbar hält.

       DIE GRENZE LIEGT BEI 374px UND NICHT BEI 360px. Bei 360 endete
       sie eine Idee zu früh: Zwischen 361 und 374 fielen die engen
       Polster weg, die Übersicht bekam dadurch acht Pixel WENIGER
       Inhalt als bei 360, und Datum wie Uhrzeit brachen wieder um –
       ein Gerät mit 361px hätte schlechter ausgesehen als eines mit
       360px. 375px ist die schmalste heute gebaute iPhone-Breite und
       damit die richtige Kante. */
    @media (max-width: 374px) {
        .js-termin-picker .termin-picker {
            padding-left: 8px;
            padding-right: 8px;
        }
        .termin-picker__wochentage,
        .termin-picker__raster {
            column-gap: 3px;
        }
        .termin-picker__zeitraster {
            column-gap: 6px;
        }
        .termin-tag {
            font-size: .9rem;
        }

        /* Weniger Polster gibt der Übersicht sechs Pixel zurück –
           genug, damit das Langdatum einzeilig bleibt. */
        .termin-picker__uebersicht {
            padding-left: 11px;
            padding-right: 11px;
        }

        /* Hier passt "10:00 – 11:00 Uhr · Telefonisch" nicht mehr in
           eine Zeile. Die Gesprächsart bekommt deshalb eine eigene,
           und der Trenner entfällt – sonst hinge er allein am Ende
           der Zeile darüber. */
        .termin-picker__uebersichtart {
            display: block;
        }
        .termin-picker__uebersichtart::before {
            content: none;
        }
    }

    /* ----- Erzwungene Farben ----- */

    /* Im Kontrastmodus von Windows werden Hintergrundfarben verworfen.
       Ohne diese Regel wäre der gewählte Tag nicht mehr vom Rest zu
       unterscheiden. */
    @media (forced-colors: active) {
        button.termin-tag[aria-pressed="true"] {
            border-width: 3px;
        }
    }
}


/* ------------------------------------------------------------
   7. Ab 641px: Auswahlfeld für den Tag, Schaltflächen für die Zeit
   ------------------------------------------------------------
   Der Tag bleibt ein <select>. Bei rund fünfzig buchbaren Tagen ist
   das mit Maus und Tastatur die schnellste Bedienung, und ein
   Auswahlfenster ist auf dem Desktop ein kleines Menü und kein
   bildschirmfüllender Fremdkörper wie auf dem Telefon.

   Die UHRZEIT dagegen bekommt dieselben Schaltflächen wie dort. Ein
   Auswahlfeld zeigt immer nur eine Zeit; wer zwischen elf freien
   Zeiten wählt, will sie nebeneinander sehen. Es ist buchstäblich
   dieselbe Komponente – gebaut von derselben Funktion, gestylt von
   denselben Regeln aus Abschnitt 5.

   Damit fällt auch die frühere Zweispaltigkeit „Tag links, Uhrzeit
   rechts": Die Zeiten brauchen die volle Breite, und die Reihenfolge
   Gesprächsart → Tag → Uhrzeit → Übersicht liest sich als ein Weg. */

@media (min-width: 641px) {

    /* Die Monatsansicht gehört zum Telefon. Hier wählt das
       Auswahlfeld den Tag, also bleibt ihr Kopf mitsamt Pfeilen und
       Raster aus dem Dokumentfluss – und aus dem Screenreader. */
    .js-termin-picker .termin-picker__kopf,
    .js-termin-picker .termin-picker__wochentage,
    .js-termin-picker .termin-picker__raster {
        display: none;
    }

    /* Das Uhrzeit-Auswahlfeld tritt hinter die Schaltflächen zurück.
       Es bleibt im Formular stehen und trägt weiterhin den
       abgesendeten Wert; display:none nimmt nur die doppelte
       Bedienung aus Tabreihenfolge und Screenreader. Die Klasse
       setzt kalender.js auf das Feld, das es ersetzt hat. */
    .js-termin-picker .termin-block__zeitfeld {
        display: none;
    }

    /* Ohne das zweite Feld bleibt eine leere Rasterspalte übrig.
       Einspaltig, aber mit Deckel: Ein Auswahlfeld über die volle
       Formularbreite wirkt wie ein Eingabefehler. Die Breite
       entspricht der bisherigen linken Spalte. */
    .js-termin-picker .termin-block__auswahl {
        grid-template-columns: 1fr;
    }

    .js-termin-picker .termin-block__tagfeld {
        max-inline-size: 26rem;
    }

    /* Die Uhrzeiten stehen hier direkt unter dem Auswahlfeld und
       brauchen keine Trennlinie – nur Abstand. */
    .termin-picker__zeiten {
        margin-top: 4px;
    }

    /* Vier Spalten fest statt auto-fit: Bei der vollen Formularbreite
       ergäbe minmax() sieben bis neun Spalten, und elf freie Zeiten
       zerfielen in eine lange Reihe mit vier Nachzüglern. Vier Spalten
       teilen elf Zeiten in 4/4/3 – ruhig und ohne einzelne
       Restschaltfläche.

       Der Deckel hält die Schaltflächen bei der Größe, die sie auf dem
       Telefon haben. Ohne ihn wären sie auf 1440px fast zweihundert
       Pixel breit und läsen sich wie Handlungsaufrufe. */
    .termin-picker__zeitraster {
        grid-template-columns: repeat(4, 1fr);
        column-gap: 10px;
        row-gap: 12px;
        max-inline-size: 34rem;
    }

    /* Die Übersicht folgt der Breite der Zeiten, statt über das ganze
       Formular zu laufen. */
    .termin-picker__uebersicht {
        max-inline-size: 34rem;
    }
}


/* ------------------------------------------------------------
   8. Schmale Bildschirme
   ------------------------------------------------------------
   Die Zweispaltigkeit von .field-row löst die Seite selbst bei
   640px auf. Hier bleibt nur die Einleitung, die auf sehr schmalen
   Geräten sonst zu gedrängt wirkt. */
@media (max-width: 480px) {
    .termin-block__intro {
        font-size: .92rem;
    }
    .termin-block__schalter {
        align-items: flex-start;
        padding: 13px 14px;
    }
}


/* ------------------------------------------------------------
   9. Bewegung nur, wenn sie gewünscht ist
   ------------------------------------------------------------ */
@media (prefers-reduced-motion: no-preference) {
    .termin-block__details {
        animation: termin-auf .18s ease-out;
    }
    @keyframes termin-auf {
        from { opacity: 0; transform: translateY(-4px); }
        to   { opacity: 1; transform: none; }
    }
}


/* ------------------------------------------------------------
   10. „Warum wir unsere Gesprächstermine bewusst planen"
   ------------------------------------------------------------
   Inhaltlich gehört dieser Kasten zu Abschnitt 3 – er steht als
   letztes Element im aufklappbaren Teil. Er hängt hier hinten an,
   weil die Nummern 3 bis 7 im ganzen Dokument gegenseitig
   aufeinander verweisen; eine Umnummerierung wäre ein größerer
   Eingriff als der Kasten selbst.

   FORM: heller Papiergrund, eine feine Goldlinie ringsum, sonst
   nichts. Bewusst NICHT die Bildsprache von .termin-meldung und
   .termin-picker__uebersicht (breiter Goldbalken links, goldene
   Fläche): Die beiden sagen „hier steht etwas über IHREN Termin".
   Dieser Kasten sagt „hier steht etwas über UNS" und darf ihnen
   deshalb nicht ähnlich sehen – erst recht nicht wie ein Hinweis-
   oder Warnfeld.

   Kein Schatten, keine zweite Farbwelt, keine Animation. Das
   Aufklappen macht der Browser; ein eigenes Skript hätte hier
   nichts zu tun, was er nicht schon kann.

   Alle Werte mit Ersatzwert: Der Baustein soll auch auf einer
   Rundreisenseite richtig aussehen, welche die Variablen der
   Designsprache nicht kennt (siehe Dateikopf). */

.termin-block__warum {
    margin: 18px 0 0;
    border: 1px solid var(--gold-45, rgba(210, 196, 133, .45));
    border-radius: var(--radius-sm, 8px);
    background: var(--paper, #fcfaf5);
}

/* list-style und ::-webkit-details-marker: dasselbe Paar wie bei den
   Etappen der Rundreisenseite. Beide werden gebraucht – Firefox und
   Chrome hören auf list-style, ältere WebKit-Fassungen nur auf das
   eigene Pseudoelement.

   48px Mindesthöhe ist die Fingergröße aus 06-accessibility.md.
   overflow-wrap hält auch eine künftige, längere Überschrift bei
   320px im Kasten, ohne dass die Seite waagerecht rutscht. */
.termin-block__warum > summary {
    display: flex;
    align-items: center;
    gap: 12px;
    min-block-size: 48px;
    padding: 13px 15px;
    list-style: none;
    cursor: pointer;
    font-size: .95rem;
    font-weight: 600;
    line-height: 1.45;
    overflow-wrap: break-word;
    color: var(--plum, #2a1c33);
}

.termin-block__warum > summary::-webkit-details-marker {
    display: none;
}

/* Das Zeichen ist reine Dekoration: Ob der Kasten offen ist, meldet
   <details> dem Screenreader bereits selbst. Die Schreibweise
   content:"+" / "" setzt den Vorlesetext auf leer; Browser, die sie
   nicht kennen, verwerfen genau diese eine Zeile und behalten die
   darüber. Deshalb stehen beide.

   --ink-70 statt Gold: In --gold-deep erreicht das Zeichen auf
   hellem Grund nur 2,4 : 1 und wäre für viele nicht erkennbar –
   dieselbe Korrektur wie bei den Etappen der Rundreisenseite. */
.termin-block__warum > summary::after {
    content: "+";
    content: "+" / "";
    margin-left: auto;
    flex: 0 0 auto;
    font-family: var(--font-display, Georgia, serif);
    font-size: 1.3rem;
    line-height: 1;
    color: var(--ink-70, rgba(30, 17, 34, .70));
}

.termin-block__warum[open] > summary::after {
    content: "–";
    content: "–" / "";
}

/* Der Ring liegt innen. Nach außen versetzt läge er über der
   Goldlinie des Kastens und wäre an der Oberkante angeschnitten. */
.termin-block__warum > summary:focus-visible {
    outline: 3px solid var(--plum, #2a1c33);
    outline-offset: -3px;
}

/* Nur für Maus und Stift – auf dem Touchscreen bliebe der Zustand
   nach dem Antippen kleben. Dieselbe Regel wie bei den Zeiten. */
@media (hover: hover) {
    .termin-block__warum > summary:hover {
        background: var(--gold-12, rgba(210, 196, 133, .12));
    }
}

.termin-block__warumtext {
    padding: 0 15px 16px;
}

.termin-block__warumtext p {
    margin: 0 0 11px;
    font-size: .92rem;
    line-height: 1.7;
    color: var(--ink, #2b2b30);
}

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

/* Etwas mehr Gewicht und die dunklere Hausfarbe – mehr nicht.
   Ein Kasten im Kasten würde aus dem Schlusssatz einen zweiten
   Handlungsaufruf machen, und der Abschnitt hat bereits einen. */
.termin-block__warumfazit {
    font-weight: 600;
    color: var(--plum, #2a1c33);
}

/* Derselbe Deckel wie bei Zeitraster und Übersicht in Abschnitt 7 –
   und aus demselben Grund. Ohne ihn ist der Kasten auf 1440px 842px
   breit und damit BREITER als die Terminübersicht darüber, die bei
   34rem endet. Ein Informationskasten, der die ganze Formularspalte
   einnimmt, liest sich als Systemmeldung; hier soll er der ruhigste
   Baustein des Abschnitts sein.

   Der Deckel sitzt am Kasten und nicht am Text: Läge er innen, bliebe
   rechts im aufgeklappten Kasten ein handbreiter leerer Streifen. */
@media (min-width: 641px) {
    .termin-block__warum {
        max-inline-size: 34rem;
    }
}

/* Auf sehr schmalen Geräten dieselbe Verengung wie bei der
   Monatsansicht: waagerecht knapper, senkrecht unverändert. */
@media (max-width: 374px) {
    .termin-block__warum > summary {
        gap: 8px;
        padding: 13px 11px;
        font-size: .92rem;
    }
    .termin-block__warumtext {
        padding: 0 11px 14px;
    }
    .termin-block__warumtext p {
        font-size: .89rem;
    }
}
