/* ==========================================================================
   intern.css – Anmeldung und interner Bereich (Einsatz- und Benutzerpflege)
   ========================================================================== */

.anmeldung {
    max-width: 420px;
    margin: 0 auto;
    padding: var(--abstand-l);
    background-color: var(--farbe-hell);
    border: 1px solid var(--farbe-linie);
    border-radius: var(--radius);
    box-shadow: var(--schatten);
}

.anmeldung h1 {
    font-size: 26px;
    margin-bottom: var(--abstand-l);
}

/* --- Hinweisleiste für angemeldete Benutzer ------------------------------ */

.intern-leiste {
    background-color: var(--farbe-primaer-dunkel);
    color: var(--farbe-hell);
    font-size: 14px;
}

.intern-leiste__inner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--abstand-m);
    max-width: var(--breite-inhalt);
    margin: 0 auto;
    padding: 8px var(--abstand-m);
}

/* Eine Reihe von Aktionen, kein Satz. Sie waren 22 Pixel hoch und liegen
   dicht beieinander - hier verliert man sich leicht. */
.intern-leiste a,
.intern-leiste button {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
}

.intern-leiste a {
    color: var(--farbe-hell);
    text-decoration: underline;
}

.intern-leiste__aktionen {
    display: flex;
    flex-wrap: wrap;
    gap: var(--abstand-m);
    align-items: center;
}

.intern-leiste form {
    display: inline;
}

.intern-leiste button {
    border: 0;
    background: none;
    color: var(--farbe-hell);
    font: inherit;
    text-decoration: underline;
    cursor: pointer;
}

/* --- Kacheln im internen Bereich ----------------------------------------- */

.intern-kacheln {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--abstand-m);
}

.intern-kachel {
    display: block;
    padding: var(--abstand-l) var(--abstand-m);
    background-color: var(--farbe-flaeche);
    border: 1px solid var(--farbe-linie);
    border-radius: var(--radius);
    color: var(--farbe-text);
    text-align: center;
    text-decoration: none;
    transition: background-color var(--transition), box-shadow var(--transition);
}

.intern-kachel:hover {
    background-color: var(--farbe-hell);
    box-shadow: var(--schatten-hoch);
    color: var(--farbe-primaer);
    text-decoration: none;
}

.intern-kachel__titel {
    display: block;
    margin-bottom: var(--abstand-xs);
    font-family: var(--schrift-headline);
    font-size: 19px;
    color: var(--farbe-primaer);
}

.intern-kachel__text {
    font-size: 14px;
    color: var(--farbe-text-leise);
}

/* --- Verwaltungstabelle -------------------------------------------------- */

/* Der Titel in einer Zeile fuehrt zur Bearbeitungsmaske und war 18 Pixel hoch -
   das flachste Ziel der ganzen Anwendung. Knoepfe sind ausgenommen, sie
   bringen ihren Innenabstand selbst mit. */
.verwaltung-tabelle td a:not(.button) {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
}

.verwaltung-tabelle {
    width: 100%;
    border-collapse: collapse;
    font-size: 15px;
}

.verwaltung-tabelle th,
.verwaltung-tabelle td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--farbe-linie);
    text-align: left;
    vertical-align: middle;
}

.verwaltung-tabelle thead th {
    border-bottom: 2px solid var(--farbe-linie);
    font-size: 13px;
    font-weight: 400;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--farbe-text-leise);
}

.verwaltung-tabelle tbody tr:hover {
    background-color: var(--farbe-flaeche);
}

.verwaltung-tabelle__aktionen {
    display: flex;
    flex-wrap: wrap;
    gap: var(--abstand-xs);
    justify-content: flex-end;
}

.verwaltung-tabelle form {
    display: inline;
}

/* Schluesselfeld samt Knopf zum Kopieren: Der Knopf steht daneben, nicht
   darunter, und behaelt seine Breite - schrumpfen soll allein das Feld. */
.schluessel-feld {
    display: flex;
    align-items: center;
    gap: var(--abstand-xs);
}

.schluessel-feld .button {
    flex: 0 0 auto;
}

/* Schluessel der Einsatz-Schnittstelle: Der Wert soll zeichengenau ablesbar
   sein - in einer Proportionalschrift sind 0 und O kaum zu unterscheiden.

   Die Mindestbreite ist in ch angegeben, also in Zeichenbreiten der eigenen
   Schrift: So passt der ganze Schluessel hinein, ohne dass eine Zahl geraten
   werden muesste. Ein Schluessel ist 43 Zeichen lang (32 Zufallsbytes als
   base64url); die restlichen Zeichenbreiten decken Innenabstand und Rahmen ab,
   die wegen box-sizing: border-box in der Breite stecken.

   Wird die Tabelle dadurch breiter als das Fenster, scrollt sie in ihrem
   .tabelle-wrapper - abgeschnitten wird der Wert nie. */
.schluessel-wert {
    width: 100%;
    min-width: 48ch;
    padding: var(--abstand-xs) var(--abstand-s);
    border: 1px solid var(--farbe-linie);
    border-radius: var(--radius);
    background-color: var(--farbe-flaeche-alt);
    color: var(--farbe-text);
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 13px;
}

/* Eingabefeld fuer HTML im Abschnittseditor einer Textseite.

   Feste Zeichenbreite, weil hier Auszeichnung getippt wird und nicht Prosa:
   In einer Proportionalschrift verschwimmen die spitzen Klammern, und eine
   Einrueckung ist nicht zu erkennen. Zeilen werden nicht umgebrochen, damit
   ein langer Verweis nicht mitten im href aufgeteilt erscheint - stattdessen
   scrollt das Feld waagrecht.

   Der Selektor nennt `.feld textarea` mit, obwohl die Klasse allein den
   Gegenstand schon beschreibt: components.css setzt dort `font-family:
   inherit` und `font-size: 16px`, und `.feld textarea` (Klasse + Element)
   ist spezifischer als `.eingabe--code` allein. Ohne das Vorangestellte
   bliebe es bei der Proportionalschrift. */
.feld textarea.eingabe--code {
    font-family: ui-monospace, "Cascadia Mono", "Consolas", monospace;
    font-size: 13px;
    line-height: 1.5;
    white-space: pre;
    overflow-x: auto;
}

/* --- Bildliste eines Sliders im Editor ---------------------------------- */

/* Je Bild eine Zeile: Vorschau links, Felder in der Mitte, Werkzeuge rechts -
   dieselbe Anordnung wie ein Datenfeld einer Fahrzeugseite, nur mit Bild. */

.slider-liste {
    margin: var(--abstand-s) 0 0;
    padding: 0;
    list-style: none;
    counter-reset: sliderbild;
}

.slider-liste__platz {
    display: grid;
    grid-template-columns: 96px minmax(0, 1fr) auto;
    gap: var(--abstand-s);
    align-items: start;
    margin-bottom: var(--abstand-s);
    padding: var(--abstand-s);
    border: 1px solid var(--farbe-linie);
    border-radius: var(--radius);
    background-color: var(--farbe-hell);
}

.slider-liste__vorschau {
    display: block;
    width: 96px;
    height: 72px;
    object-fit: cover;
    border-radius: var(--radius);
    background-color: var(--farbe-flaeche-alt);
}

/* Die Nummer sagt der Redaktion, an welcher Stelle das Bild im Slider steht -
   sonst waere beim Verschieben nicht zu sehen, was sich bewegt hat. */
.slider-liste__felder {
    min-width: 0;
    counter-increment: sliderbild;
}

.slider-liste__felder::before {
    content: "Bild " counter(sliderbild);
    display: block;
    margin-bottom: var(--abstand-xs);
    font-size: 13px;
    font-weight: 600;
    color: var(--farbe-text-leise);
}

.slider-liste__felder .feld {
    margin-bottom: var(--abstand-xs);
}

.slider-liste__werkzeuge {
    display: flex;
    flex-direction: column;
    gap: var(--abstand-xs);
}

@media (max-width: 767px) {
    /* Am Telefon ist fuer drei Spalten kein Platz: Vorschau und Werkzeuge
       nebeneinander, die Felder darunter. */
    .slider-liste__platz {
        grid-template-columns: 96px auto;
    }

    .slider-liste__felder {
        grid-column: 1 / -1;
    }

    .slider-liste__werkzeuge {
        flex-direction: row;
        align-items: flex-start;
    }
}

@media (max-width: 767px) {
    .intern-kacheln { grid-template-columns: minmax(0, 1fr); }
    .anmeldung { padding: var(--abstand-m); }
}

/* --- Tippziele auf Geraeten mit Finger ----------------------------------- */
/* Begruendung steht in components.css. */

@media (pointer: coarse) {
    .intern-leiste a,
    .intern-leiste button,
    .verwaltung-tabelle td a:not(.button) {
        min-height: 44px;
    }

    /* Das Feld steht nicht in einem .feld und faellt damit nicht unter die
       Regel dort. Mit 25 Pixeln war es zu flach, um den Schluessel am Telefon
       zu markieren - und es steht neben einem 44 Pixel hohen Knopf. */
    .schluessel-wert {
        min-height: 44px;
    }
}
